Steam In-Home-Streaming über VPN (OpenVPN) verwenden?

Steam In-Home-Streaming über VPN (OpenVPN) verwenden?

Wie in der Frage beschrieben, möchte ich einen OpenVPN-Server im TAP-Modus einrichten, um die in Steam integrierten Game-Streaming-Funktionen zu nutzen und von einer Windows 7-Spielkonsole auf einen externen Ubuntu 14.04-Laptop bei der Arbeit oder in der Schule zu streamen. Dies würde es einem Ubuntu-Benutzer ermöglichen, sich auf seinem Windows-Rechner mit seinem Steam-Konto zu verbinden und Nicht-Linux-Spiele auf seine Ubuntu-Hardware zu streamen!

Hier ist die allgemeine Idee dessen, was ich erreichen möchte:


*********************Internet********************Internet************************
Ubuntu-Laptop (Steam) <---> Ubuntu OpenVPN-Server <---> Windows-Computer (Steam)

Wir möchten OpenVPN verwenden, um ein VPN-Netzwerk auf dem Server zu erstellen, mit dem sich sowohl unser Ubuntu-Laptop als auch unser Windows-Client verbinden können. Wir müssen TAP verwenden, um die vollständigen Ethernet-Frame-Daten weiterzuleiten, da der In-Home-Streaming-Dienst von Steam nicht gut mit IP-Tunneln (TUN) funktioniert. Sobald beide Maschinen mit dem VPN verbunden sind, beginnen sie zu senden, dass ihre Bibliotheken zum Streamen verfügbar sind.

Aktuelle Netztopographie:


Ubuntu 14.04-Laptop für Schule/Arbeit
Hostname Chimaera-Linux
Dynamische Internet-IP (IPv4)
Dynamische lokale IP (10.1.10.x)
Festverdrahtete Verbindung zu eth0

Virtuelle Maschine Ubuntu 14.04 KVM mit OpenVPN
Hostname Cerberus-VM
öffentliche statische Internet-IP (xy145.133) auf eth0 (IPv4, fest verdrahtet)
keine lokale IP oder lokales Netzwerk

Windows 7 Pro-Desktop
Hostname Windoze
Dynamische Internet-IP (IPv4)
Dynamische lokale IP (192.168.0.x)
Festverdrahtete Verbindung zu eth0

Anforderungen:


  • Die mit dem VPN verbundenen Clients müssen in der Lage sein, TAP-Adapter zu verwenden, um Datenverkehr zum/vom VPN-Netzwerk zu senden. TUN FUNKTIONIERT NICHT!
  • Das VPN-Netzwerk sollte auch in der Lage sein, den Datenverkehr von den Clients zum Internet und zurück weiterzuleiten (damit wir eine Verbindung zum VPN herstellen und es als sichere Methode zum Surfen verwenden können).
  • Die Verbindungseinstellungen sollten so sicher wie möglich sein, um MITM-Angriffe oder andere Machenschaften zu verhindern.
  • Das interne VPN-Netzwerk sollteeigenständigeDas bedeutet, dass es weder die jeweiligen lokalen Netzwerke des Clients noch des Servers zulässt oder mit diesen interagiert. Ich möchte kein VPN-Netzwerk einrichten, mit dem ich andere lokale Geräte im Netzwerk des Servers anpingen kann – ich möchte nur Verbindungen zu anderen VPN-Clients über ihre internen VPN-IPs herstellen können.

Schritte zum Erfolg!


  1. Gefunden und verwendethttps://help.ubuntu.com/lts/serverguide/openvpn.htmlals Anleitung zur Installation von OpenVPN auf dem Server und zum Einrichten von Zertifikaten. Keine Probleme!
  2. Gefunden und angepassthttp://www.slsmk.com/getting-started-with-openvpn/installing-openvpn-on-ubuntu-server-12-04-or-14-04-using-tap/weil in den Serverdokumenten vom Einrichten eines TUN statt eines TAP die Rede ist. An diesem Punkt KÖNNEN Clients eine Verbindung zum VPN-Server herstellen und sich authentifizieren, es findet jedoch kein Datenverkehr zwischen den Clients statt und die Clients können nicht über das VPN auf das Internet zugreifen!

Relevante Konfigurationen/Systeminformationen


  1. Der Ubuntu-VPN-Client wird gemäß der LTS-Serverdokumentation über den Netzwerkmanager konfiguriert.

  2. Der Windows 7-Client verwendet das OpenVPN-gui-Paket von openvpn.net

  3. Kann auf Anfrage alle Konfigurationsdateien bereitstellen. Ich weiß einfach nicht, wie ich sie hier einfügen kann, ohne dass die Formatierung selbst in den Codemarkierungen völlig durcheinander gerät.

Problembereiche und Rätsel


  1. Ich komme mit den VPN-Routen oder „Push“-Befehlen in server.conf für OpenVPN einfach nicht klar. Ich vermute, dass dies der Hauptgrund dafür ist, dass ich zwar eine Verbindung herstellen kann, aber keinen Datenverkehr in oder aus dem VPN zu anderen Clients oder ins Internet bekomme.

  2. Ich habe erfolglos mit iptables und Masquerading und all dem herumgespielt. An diesem Punkt glaube ich nicht, dass das das Problem ist. Im Moment ist iptables völlig unkonfiguriert und akzeptiert den gesamten Datenverkehr.

  3. Ich habe auf keinem der Clients Bridging- oder spezielle Netzwerkeinstellungen konfiguriert (und brauche diese auch nicht?).

Antwort1

Ich habe es nach viel Arbeit mit OpenVPN (mit TAP) zum Laufen gebracht. Kein Glück mit TUN, ich glaube, es kann mit TUN nicht funktionieren, da damit keine UDP-Übertragung möglich ist (die Steam In-Home Streaming anscheinend verwendet, um Peers zu erkennen).

Ich betreibe den OpenVPN-Server auf meinem Router, einem Archer C7 V2 mit OpenWRT (Barrier Breaker).

Unten ist die Serverkonfigurationsdatei, die ich verwende. Änderungen sind notwendig, wo sollte klar sein:

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

Hier ist meine Client-Konfiguration (auf dem Host-Rechner läuft Windows, auf dem Client-Rechner wird eine ähnliche Konfiguration verwendet, auf dem Ubuntu läuft):

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"

Ich habe so viel mit der OpenWRT-Konfiguration gemacht, dass ich nicht sicher bin, ob das alles ist, was jemand braucht, um meinen Erfolg zu wiederholen. Aber die Kurzfassung lautet: Verwenden Sie TAP und nicht TUN, stellen Sie sicher, dass Ihre VPN-Clients miteinander kommunizieren können, indem Sie den client-to-clientParameter in der Serverkonfiguration angeben. In OpenWRT habe ich auch die Netzwerkschnittstelle und die Firewall wie in derOpenWRT-Wiki für OpenVPN.

Wenn Sie Fragen haben, werde ich mein Bestes tun, sie zu beantworten.

Bearbeiten, auf Anfrage:

/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'

Ausgewählter Teil von /etc/config/firewallliefert möglicherweise nicht den gesamten Kontext, aber ich möchte nicht, dass meine gesamte Firewall-Datei bekannt wird. Bitte informieren Sie mich über eventuelle Redundanzen und Fehler:

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'

Antwort2

Es stellt sich also heraus, dass eine so einfache Idee mit OpenVPN tatsächlich VIEL komplexer und aufwändiger ist. Sie können Steam-Streaming durchführen, wenn Sie OpenVPN im Bridge-Modus verwenden (was meines Erachtens voraussetzt, dass Sie bereits über ein lokales LAN verfügen, in das Sie eine Bridge durchführen können).

Stattdessen habe ich Hamachi verwendet und die Anweisungen unterhttp://steamcommunity.com/groups/homestream/discussions/0/540738051890279158/Undhttps://help.ubuntu.com/community/Hamachi

Das Streamen eines Linux-Clients von einem Windows-Rechner funktioniert einwandfrei.

verwandte Informationen