¿Usar la transmisión en casa de Steam a través de VPN (OpenVPN)?

¿Usar la transmisión en casa de Steam a través de VPN (OpenVPN)?

Como dice la pregunta, me gustaría configurar un servidor OpenVPN usando el modo TAP para facilitar las capacidades de transmisión de juegos integradas en Steam para transmitir desde una máquina de juegos con Windows 7 a una computadora portátil Ubuntu 14.04 ubicada externamente en el trabajo o la escuela. ¡Esto permitiría a un usuario de Ubuntu conectarse a su cuenta de Steam en sus máquinas Windows y transmitir juegos que no sean Linux a su hardware Ubuntu!

Aquí está la idea general de lo que quiero lograr:


**********************internet*********************internet******** **************
Computadora portátil Ubuntu (Steam) <---> Servidor Ubuntu OpenVPN <---> Máquina Windows (Steam)

Querremos usar OpenVPN para crear una red VPN en el servidor al que se puedan conectar tanto nuestra computadora portátil Ubuntu como nuestro cliente Windows. Debemos usar TAP para reenviar los datos completos de la trama Ethernet, ya que el servicio de transmisión doméstica de Steam no funciona bien con los túneles IP (TUN). Una vez que ambas máquinas estén conectadas a la VPN, comenzarán a transmitir que sus bibliotecas están disponibles para transmisión.

Topografía de la red actual:


Escuela/trabajo portátil Ubuntu 14.04
nombre de host chimaera-linux
IP dinámica de Internet (ipv4)
IP local dinámica (10.1.10.x)
Conexión cableada a eth0

Máquina virtual KVM Ubuntu 14.04 que ejecuta OpenVPN
nombre de host cerberus-vm
IP pública de Internet estática (xy145.133) en eth0 (ipv4, cableado)
sin IP local ni red local

Escritorio Windows 7 Pro
nombre de host windoze
IP dinámica de Internet (ipv4)
IP local dinámica (192.168.0.x)
Conexión cableada a eth0

Requisitos:


  • Los clientes conectados a la VPN deben poder utilizar adaptadores TAP para enviar tráfico hacia/desde la red VPN. ¡TUN NO FUNCIONARÁ!
  • La red VPN también debería poder reenviar el tráfico de los clientes a Internet y viceversa (para que podamos conectarnos a la VPN y utilizarla como método seguro de navegación).
  • La configuración de conexión debe ser lo más segura posible para evitar ataques MITM u otras travesuras.
  • La red VPN interna debe estarser únicolo que significa que no permite ni interactúa con las respectivas redes locales del cliente o del servidor. No estoy buscando configurar una red VPN que me permita hacer ping a otros dispositivos locales en la red del servidor, solo para poder conectarme a otros clientes VPN usando sus IP VPN internas.

¡Pasos hacia el éxito!


  1. Encontrado y usadohttps://help.ubuntu.com/lts/serverguide/openvpn.htmlcomo guía para instalar OpenVPN en el servidor y configurar certificados. ¡Sin problemas!
  2. Encontrado y adaptadohttp://www.slsmk.com/getting-started-with-openvpn/installing-openvpn-on-ubuntu-server-12-04-or-14-04-using-tap/porque los documentos del servidor hablan de configurar un TUN en lugar de un TAP. En este punto, los clientes PUEDEN conectarse y autenticarse con el servidor VPN, pero el tráfico no fluye entre los clientes y los clientes no pueden acceder a Internet a través de la VPN.

Configuraciones relevantes/información del sistema


  1. El cliente VPN de Ubuntu se configura a través del administrador de red de acuerdo con los documentos del servidor LTS.

  2. El cliente de Windows 7 está utilizando el paquete OpenVPN-gui de openvpn.net

  3. Puede proporcionar cualquier archivo de configuración a pedido. Parece que no puedo entender cómo pegarlos aquí sin que se jodan mucho con el formato, incluso en las marcas de código.

Áreas problemáticas y misterios


  1. Parece que no puedo entender las rutas vpn o los comandos "push" en server.conf para openvpn. Sospecho que esta es la razón principal por la que puedo conectarme pero parece que no puedo enviar tráfico desde la VPN a otros clientes o a Internet.

  2. He jugado con iptables y enmascaramiento y todo eso sin éxito. En este punto no creo que ese sea el problema. En este momento, iptables está completamente desconfigurado y acepta todo el tráfico.

  3. No he configurado (¿y no necesito?) ningún puente o configuración de red especial en ninguno de los clientes.

Respuesta1

Lo hice funcionar con OpenVPN (usando TAP) después de mucho trabajo. No tuve suerte con TUN, creo que no puede funcionar con TUN ya que no es posible realizar transmisiones UDP (que aparentemente Steam In-home Streaming usa para detectar pares).

Ejecuto el servidor OpenVPN en mi enrutador, un Archer C7 V2 que ejecuta OpenWRT (Barrier Breaker).

A continuación se muestra el archivo de configuración del servidor que uso. Es necesaria una modificación, donde debe quedar claro:

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

Aquí está la configuración de mi cliente (la máquina host que ejecuta Windows, se usa una configuración similar en la máquina cliente que ejecuta 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"

He hecho tantas cosas con la configuración de OpenWRT que no estoy seguro de si esto es todo lo que se necesita para que alguien pueda replicar mi éxito. Pero la versión corta es: use TAP y no TUN, asegúrese de que sus clientes VPN puedan comunicarse entre sí especificando el client-to-clientparámetro en la configuración del servidor. En OpenWRT también configuré la interfaz de red y el firewall como se especifica en elWiki OpenWRT para OpenVPN.

Si tienes alguna pregunta, haré todo lo posible para responderla.

Editar, a pedido:

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

Es posible que la parte seleccionada de /etc/config/firewall, no proporcione el contexto completo, pero no quiero que se conozca todo mi archivo de firewall. Por favor, infórmeme de posibles redundancias y errores:

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'

Respuesta2

Entonces resulta que una idea tan simple con OpenVPN es en realidad MUCHO más compleja y complicada. Puedes hacer Steam Streaming si usas OpenVPN en modo puente (lo que supongo requiere tener una configuración de LAN local a la que puedas conectar).

Lo que terminé haciendo fue usar Hamachi y mezclar las instrucciones que se encuentran enhttp://steamcommunity.com/groups/homestream/discussions/0/540738051890279158/yhttps://help.ubuntu.com/community/Hamachi

La transmisión de un cliente Linux desde una máquina con Windows funciona perfectamente.

información relacionada