Eu consegui trabalhar com o OpenVPN (usando o TAP) depois de muito trabalho. Sem sorte com o TUN, acredito que ele não funcione com o TUN, já que não há transmissão UDP com ele (o que, aparentemente, o Steam In-home Streaming usa para detectar seus pares).
Eu corro o servidor OpenVPN no meu roteador, um Archer C7 V2 executando OpenWRT (Barrier Breaker).
Abaixo está o arquivo de configuração do servidor que eu uso. A modificação é necessária, 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 que executa o Windows, uma configuração semelhante é usada na máquina cliente que executa 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"
Eu 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 curta: Use TAP e não TUN, certifique-se de que seus clientes VPN possam se comunicar especificando o parâmetro client-to-client
na configuração do servidor. No OpenWRT, também configurei a interface de rede e o firewall, conforme especificado no wiki do OpenWRT para OpenVPN .
Se você tiver alguma dúvida, farei o possível para respondê-las.
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'
A parte selecionada de /etc/config/firewall
, pode não fornecer todo o contexto, mas eu não quero que todo o meu arquivo de firewall seja conhecido. Por favor, informe-me de 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'