Rota LAN sem fio através do OpenVPN

2

Estou tentando configurar meu servidor doméstico para funcionar como um gateway OpenVPN para que eu possa conectar-me à minha VPN de qualquer dispositivo sem instalar um software especial deles. Meu servidor está executando o Ubuntu 14.04.

O host tem três interfaces:

  • eth0 - endereço IP 10.0.1.253 que está em uma rede NAT interna e não no gateway (o gateway é 10.0.1.1, que fornece a conexão à Internet).
  • wlan0 - endereço IP 10.0.2.1, que é o proprietário / gateway da LAN sem fio que desejo veicular via VPN. hostapd e isc-dhcp-server são usados para gerenciar clientes nesta interface.
  • tun0 - endereço IP 10.8.8.86 que é a conexão da VPN.

Eu não quero que a rota padrão do servidor mude para a VPN, pois há processos em execução nos quais desejo permitir o acesso "normal" à Internet.

Eu configurei uma rota padrão para uma rede VPN com os seguintes comandos (todos os comandos mostrados são executados como root via sudo):

echo "201 vpn" >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table vpn
ip route add default via 10.8.8.86 table vpn
ip route flush cache

E se passando por:

echo 1 | tee /proc/sys/net/ipv4/ip_forward
iptables -A PREROUTING -i wlan0 -t mangle \! -d 10.0.1.0/24 -j MARK --set-mark 1
iptables -t nat -A POSTROUTING -s 10.0.2.0/24 \! -d 10.0.1.0/24 -o tun0 -j MASQUERADE

Eu também tentei adicionar

iptables -A FORWARD -i tun0 -j ACCEPT

mas não parece fazer qualquer diferença.

O que estou vendo é o tráfego sendo roteado para o dispositivo tun0 e mascarado corretamente, mas as informações de retorno estão simplesmente desaparecendo, não sendo roteadas de volta para a solicitação wlan0.

Eu executei o tcpdump para tentar encontrar o problema, com uma amostra anexada. Isto é de solicitar um site a partir de um dispositivo na rede wlan0.

No lado wlan0:

tcpdump -n -i wlan0 not port mdns
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
17:54:18.703395 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
17:54:19.706732 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
17:54:22.714178 IP 10.0.2.2.53203 > 8.8.4.4.53: 46870+ A? www.whatismyip.com. (36)
17:54:23.717681 IP 10.0.2.2.53203 > 8.8.4.4.53: 46870+ A? www.whatismyip.com. (36)
17:54:26.725358 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
17:54:32.081146 ARP, Request who-has 10.0.2.1 tell 10.0.2.2, length 28
17:54:32.081192 ARP, Reply 10.0.2.1 is-at 80:1f:02:49:47:a0, length 28
17:54:35.744061 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)

Onde as solicitações de DNS estão visíveis, mas não há respostas.

No lado do tun0:

tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
17:54:18.703494 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:19.011244 IP resolver1.opendns.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.15, A 141.101.120.14 (68)
17:54:19.706815 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:20.009089 IP resolver1.opendns.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.14, A 141.101.120.15 (68)
17:54:22.714279 IP 10.8.8.86.53203 > google-public-dns-b.google.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:23.075728 IP google-public-dns-b.google.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.15, A 141.101.120.14 (68)
17:54:23.717755 IP 10.8.8.86.53203 > google-public-dns-b.google.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:24.059747 IP google-public-dns-b.google.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.15, A 141.101.120.14 (68)
17:54:26.725404 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:35.744099 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:36.046371 IP resolver1.opendns.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.14, A 141.101.120.15 (68)

O que mostra que as respostas do DNS estão voltando da conexão VPN.

Alguma sugestão sobre o que eu perdi?

    
por enm 09.04.2015 / 12:07

0 respostas