Usar o streaming doméstico do Steam através de VPN (OpenVPN)?

Usar o streaming doméstico do Steam através de VPN (OpenVPN)?

Como diz a pergunta, eu gostaria de configurar um servidor OpenVPN usando o modo TAP para facilitar os recursos de streaming de jogos integrados ao Steam para transmitir de uma máquina de jogos com Windows 7 para um laptop Ubuntu 14.04 localizado externamente no trabalho ou na escola. Isso permitiria que um usuário Ubuntu se conectasse à sua conta Steam em suas máquinas Windows e transmitisse jogos não-Linux para seu hardware Ubuntu!

Aqui está a ideia geral do que desejo realizar:


*******************internet*******************internet******** **************
Laptop Ubuntu (Steam) <---> Servidor Ubuntu OpenVPN <---> Máquina Windows (Steam)

Queremos usar OpenVPN para criar uma rede VPN no servidor ao qual nosso laptop Ubuntu e cliente Windows podem se conectar. Devemos usar o TAP para encaminhar todos os dados do quadro Ethernet, pois o serviço de streaming doméstico do Steam não funciona bem com túneis IP (TUN). Assim que ambas as máquinas estiverem conectadas à VPN, elas começarão a transmitir que suas bibliotecas estão disponíveis para streaming.

Topografia da rede atual:


Laptop escolar/trabalho Ubuntu 14.04
nome do host chimaera-linux
ip de internet dinâmico (ipv4)
ip local dinâmico (10.1.10.x)
conexão com fio para eth0

Máquina virtual Ubuntu 14.04 KVM executando OpenVPN
nome do host cerberus-vm
ip de internet estático público (xy145.133) em eth0 (ipv4, com fio)
sem ip local ou rede local

Área de trabalho do Windows 7 Pro
nome do host windoze
ip de internet dinâmico (ipv4)
ip local dinâmico (192.168.0.x)
conexão com fio para eth0

Requisitos:


  • Os clientes conectados à VPN devem poder usar adaptadores TAP para enviar tráfego de/para a rede VPN. TUN NÃO FUNCIONARÁ!
  • A rede VPN também deve ser capaz de encaminhar o tráfego dos clientes para a Internet e vice-versa (para que possamos nos conectar à VPN e usá-la como um método seguro de navegação).
  • As configurações de conexão devem ser tão seguras quanto possível para evitar ataques MITM ou outras travessuras.
  • A rede VPN interna deve serestar sozinhoo que significa que ele não permite ou faz interface com as respectivas redes locais do cliente ou do servidor. Não pretendo configurar uma rede VPN que me permita executar ping em outros dispositivos locais na rede do servidor - apenas para poder conectar-me a outros clientes VPN usando seus IPs VPN internos.

Passos para o sucesso!


  1. Encontrado e usadohttps://help.ubuntu.com/lts/serverguide/openvpn.htmlcomo um guia para instalar o OpenVPN no servidor e configurar certificados. Sem problemas!
  2. Encontrado e adaptadohttp://www.slsmk.com/getting-started-with-openvpn/installing-openvpn-on-ubuntu-server-12-04-or-14-04-using-tap/porque os documentos do servidor falam sobre a configuração de um TUN em vez de um TAP. Neste ponto, os clientes PODEM conectar-se e autenticar-se com o servidor VPN, mas o tráfego não flui entre clientes e os clientes não podem acessar a Internet através da VPN!

Configurações relevantes/informações do sistema


  1. O cliente VPN Ubuntu é configurado através do gerenciador de rede de acordo com a documentação do servidor LTS.

  2. O cliente Windows 7 está usando o pacote OpenVPN-gui de openvpn.net

  3. Pode fornecer qualquer arquivo de configuração mediante solicitação. Não consigo descobrir como colá-los aqui sem que eles se estraguem na formatação, mesmo nas marcas de código.

Áreas problemáticas e mistérios


  1. Eu simplesmente não consigo entender as rotas VPN ou os comandos "push" no server.conf para openvpn. Suspeito que esse seja o principal motivo pelo qual consigo me conectar, mas não consigo obter tráfego da VPN para outros clientes ou para a Internet.

  2. Eu brinquei com iptables e mascaramento e tudo isso sem sucesso. Neste ponto, não acho que esse seja o problema. No momento, o iptables está completamente desconfigurado e aceita todo o tráfego.

  3. Não configurei (e não preciso?) de nenhuma ponte ou configuração de rede especial em nenhum dos clientes.

Responder1

Consegui trabalhar com OpenVPN (usando TAP) depois de muito trabalho. Sem sorte com o TUN, acredito que ele não pode funcionar com o TUN, pois não há transmissão UDP possível com ele (que aparentemente o Steam In-home Streaming usa para detectar pares).

Eu executo o servidor OpenVPN no meu roteador, um Archer C7 V2 rodando OpenWRT (Barrier Breaker).

Abaixo está o arquivo de configuração do servidor que eu uso. É necessária modificação, onde deve ficar 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

Aqui está a configuração do meu cliente (a máquina host executando o Windows, uma configuração semelhante é usada na máquina cliente executando o 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"

Fiz tanto com a configuração do OpenWRT que não tenho certeza se isso é tudo o que é necessário para alguém replicar meu sucesso. Mas a versão resumida é: Use TAP e não TUN, certifique-se de que seus clientes VPN possam se comunicar entre si especificando o client-to-clientparâmetro na configuração do servidor. No OpenWRT também configurei a interface de rede e o firewall conforme especificado noWiki OpenWRT para OpenVPN.

Se você tiver alguma dúvida, farei o possível para respondê-la.

Editar, mediante solicitação:

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

A parte selecionada de /etc/config/firewallpode não fornecer o contexto completo, mas não quero que todo o meu arquivo de firewall seja conhecido. Por favor, informe-me sobre eventuais redundâncias e erros:

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'

Responder2

Acontece que uma ideia tão simples com OpenVPN é na verdade MUITO mais complexa e envolvente. Você pode fazer o Steam Streaming se usar o OpenVPN em modo de ponte (o que presumo que já seja necessário ter uma configuração de LAN local para a qual você possa fazer a ponte).

O que acabei fazendo foi usar o Hamachi e misturar as instruções encontradas emhttp://steamcommunity.com/groups/homestream/discussions/0/540738051890279158/ehttps://help.ubuntu.com/community/Hamachi

O streaming de um cliente Linux de uma máquina Windows funciona perfeitamente.

informação relacionada