VPN(OpenVPN)을 통해 Steam의 홈 스트리밍을 사용하시겠습니까?

VPN(OpenVPN)을 통해 Steam의 홈 스트리밍을 사용하시겠습니까?

질문에서 알 수 있듯이 Steam에 내장된 게임 스트리밍 기능을 용이하게 하기 위해 TAP 모드를 사용하여 OpenVPN 서버를 설정하여 Windows 7 게임기에서 직장이나 학교의 외부에 있는 Ubuntu 14.04 노트북으로 스트리밍하고 싶습니다. 이를 통해 Ubuntu 사용자는 Windows 컴퓨터에서 Steam 계정에 연결하고 Linux가 아닌 게임을 Ubuntu 하드웨어로 스트리밍할 수 있습니다!

내가 달성하고 싶은 것에 대한 일반적인 아이디어는 다음과 같습니다.


*******************인터넷********************인터넷******** **************
Ubuntu 노트북(Steam) <---> Ubuntu OpenVPN 서버 <---> Windows 머신(Steam)

OpenVPN을 사용하여 Ubuntu 노트북과 Windows 클라이언트가 모두 연결할 수 있는 서버에 VPN 네트워크를 생성하려고 합니다. Steam의 홈 스트리밍 서비스는 IP 터널(TUN)에서는 제대로 작동하지 않으므로 전체 이더넷 프레임 데이터를 전달하려면 TAP를 사용해야 합니다. 두 컴퓨터가 모두 VPN에 연결되면 라이브러리를 스트리밍에 사용할 수 있다는 브로드캐스트가 시작됩니다.

현재 네트워크 지형:


학교/직장 Ubuntu 14.04 노트북
호스트 이름 chimaera-linux
동적 인터넷 IP(ipv4)
동적 로컬 IP(10.1.10.x)
eth0에 유선 연결

OpenVPN을 실행하는 Ubuntu 14.04 KVM 가상 머신
호스트 이름 cerberus-vm
eth0(ipv4, 하드와이어)의 공용 고정 인터넷 IP(xy145.133)
로컬 IP 또는 로컬 네트워크 없음

윈도우 7 프로 데스크탑
호스트 이름 windoze
동적 인터넷 IP(ipv4)
동적 로컬 IP(192.168.0.x)
eth0에 유선 연결

요구사항:


  • VPN에 연결된 클라이언트는 TAP 어댑터를 사용하여 VPN 네트워크와 트래픽을 주고받을 수 있어야 합니다. TUN이 작동하지 않습니다!
  • 또한 VPN 네트워크는 클라이언트에서 인터넷으로 트래픽을 전달할 수 있어야 합니다(VPN에 연결하여 안전한 검색 방법으로 사용할 수 있도록).
  • MITM 공격이나 기타 헛소리를 방지하려면 연결 설정을 최대한 안전하게 유지해야 합니다.
  • 내부 VPN 네트워크는 다음과 같아야 합니다.독립형이는 클라이언트 또는 서버의 각 로컬 네트워크를 허용하거나 인터페이스하지 않음을 의미합니다. 저는 서버 네트워크의 다른 로컬 장치에 핑을 보낼 수 있는 VPN 네트워크를 설정하고 싶지 않습니다. 내부 VPN IP를 사용하여 다른 VPN 클라이언트에만 연결할 수 있습니다.

성공을 향한 발걸음!


  1. 발견 및 사용https://help.ubuntu.com/lts/serverguide/openvpn.html서버에 OpenVPN을 설치하고 인증서를 설정하는 방법을 안내합니다. 문제 없습니다!
  2. 발견하고 적응함http://www.slsmk.com/getting-started-with-openvpn/installing-openvpn-on-ubuntu-server-12-04-or-14-04-using-tap/서버 문서에서는 TAP 대신 TUN 설정에 대해 이야기하기 때문입니다. 이 시점에서 클라이언트는 VPN 서버에 연결하고 인증할 수 있지만 클라이언트 간에 트래픽이 흐르지 않으며 클라이언트는 VPN을 통해 인터넷에 액세스할 수 없습니다.

관련 구성/시스템 정보


  1. 우분투 VPN 클라이언트는 LTS 서버 문서에 따라 네트워크 관리자를 통해 구성됩니다.

  2. Windows 7 클라이언트는 openvpn.net의 OpenVPN-gui 패키지를 사용하고 있습니다.

  3. 요청 시 모든 구성 파일을 제공할 수 있습니다. 코드 눈금 표시에서도 서식을 지정하지 않고 여기에 붙여넣는 방법을 알 수 없는 것 같습니다.

문제 영역과 미스터리


  1. openvpn에 대한 server.conf의 VPN 경로나 "push" 명령에 대해 머리를 감쌀 수 없는 것 같습니다. 나는 이것이 내가 연결할 수 있지만 VPN 외부에서 다른 클라이언트나 인터넷으로 트래픽을 가져올 수 없는 주된 이유라고 생각합니다.

  2. 나는 iptables와 masquerading 등을 가지고 놀았지만 아무 소용이 없었습니다. 현 시점에서는 그것이 문제라고 생각하지 않습니다. 현재 iptables는 완전히 구성되지 않았으며 모든 트래픽을 허용합니다.

  3. 어떤 클라이언트에서도 브리징이나 특수 네트워크 설정을 구성하지 않았습니다(필요하지도 않습니까?).

답변1

많은 작업 끝에 OpenVPN(TAP 사용)으로 작동하게 되었습니다. TUN에는 운이 없습니다. UDP 브로드캐스트가 가능하지 않기 때문에 TUN에서는 작동할 수 없다고 생각합니다(Steam In-home Streaming이 피어를 감지하는 데 사용하는 것으로 보입니다).

OpenWRT(Barrier Breaker)를 실행하는 Archer C7 V2 라우터에서 OpenVPN 서버를 실행합니다.

아래는 내가 사용하는 서버 구성 파일입니다. 수정이 필요한 경우 명확해야 합니다.

client-to-client
persist-key
persist-tun
tls-server
ca /etc/openvpn/ca.crt
cert /etc/openvpn/erb-router-c7.crt
dev tap_mypvn
dh /etc/openvpn/dh2048.pem
keepalive 10 120
key /etc/openvpn/erb-router-c7.key
log /tmp/openvpn.log
mode server
port 1194
proto udp
route-gateway dhcp
server 10.8.0.0 255.255.255.0
status /var/log/openvpn_status.log
topology subnet
verb 3
push topology subnet
push route-gateway dhcp
push persist-key
push persist-tun

내 클라이언트 구성은 다음과 같습니다(Windows를 실행하는 호스트 컴퓨터, Ubuntu를 실행하는 클라이언트 컴퓨터에서도 유사한 구성이 사용됨).

client
float

dev tap
proto udp
remote YOUR_HOSTNAME_OR_IP_HERE 1194

log "C:/Program Files/OpenVPN/config/log.txt"
verb 3

resolv-retry infinite
nobind

persist-key
persist-tun

remote-cert-tls server    
ca "C:/Program Files/OpenVPN/config/ca.crt"
cert "C:/Program Files/OpenVPN/config/erb-main-7.crt"
key "C:/Program Files/OpenVPN/config/erb-main-7.key"

나는 OpenWRT 구성으로 너무 많은 작업을 수행했기 때문에 이것이 누군가가 내 성공을 복제하는 데 필요한 전부인지 확실하지 않습니다. 그러나 짧은 버전에서는 TUN이 아닌 TAP를 사용하고, client-to-client서버 구성에서 매개변수를 지정하여 VPN 클라이언트가 서로 통신할 수 있는지 확인하세요 . OpenWRT에서는 다음에 지정된 대로 네트워크 인터페이스와 방화벽도 설정했습니다.OpenVPN용 OpenWRT 위키.

질문이 있으시면 최선을 다해 답변해 드리겠습니다.

요청 시 편집:

/etc/config/network

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config globals 'globals'
    option ula_prefix 'fd0f:252f:ed29::/48'

config interface 'lan'
    option force_link '1'
    option type 'bridge'
    option proto 'static'
    option ipaddr '192.168.1.1'
    option netmask '255.255.255.0'
    option ip6assign '60'
    option _orig_ifname 'eth1 wlan0 wlan1'
    option _orig_bridge 'true'
    option ifname 'eth1 tap_myvpn'

config interface 'wan'
    option ifname 'eth0'
    option proto 'dhcp'

config interface 'wan6'
    option ifname '@wan'
    option proto 'dhcpv6'

config switch
    option name 'switch0'
    option reset '1'
    option enable_vlan '1'

config switch_vlan
    option device 'switch0'
    option vlan '1'
    option ports '0 2 3 4 5'

config switch_vlan
    option device 'switch0'
    option vlan '2'
    option ports '1 6'

config interface 'vpn0'
    option ifname 'tun0'
    option proto 'none'
    option auto '1'

에서 선택한 부분이 /etc/config/firewall전체 컨텍스트를 제공하지 않을 수 있지만 전체 방화벽 파일이 알려지는 것을 원하지 않습니다. 최종 중복 및 실수에 대해 알려주십시오.

config rule
        option name 'Allow-OpenVPN-Inbound'
        option target 'ACCEPT'
        option src '*'
        option proto 'udp'
        option dest_port '1194'

config zone
        option name 'vpn'
        option masq '1'
        option input 'ACCEPT'
        option forward 'ACCEPT'
        option output 'ACCEPT'
        option network 'vpn0'

config forwarding
        option dest 'lan'
        option src 'vpn'

config forwarding
        option dest 'wan'
        option src 'vpn'

config forwarding
        option dest 'vpn'
        option src 'lan'

답변2

따라서 OpenVPN에 대한 이러한 간단한 아이디어는 실제로 훨씬 더 복잡하고 복잡하다는 것이 밝혀졌습니다. 브리지 모드에서 OpenVPN을 사용하면 Steam 스트리밍을 할 수 있습니다. (제가 사용하려면 브리지할 수 있는 로컬 LAN 설정이 이미 있어야 합니다.)

대신 내가 한 일은 Hamachi를 사용하고 다음에서 찾은 지침을 함께 혼합하는 것이었습니다.http://steamcommunity.com/groups/homestream/discussions/0/540738051890279158/그리고https://help.ubuntu.com/community/Hamachi

Windows 시스템에서 Linux 클라이언트 스트리밍이 완벽하게 작동합니다.

관련 정보