Por que minha configuração de NAT não está funcionando?

1

Por alguma razão, o tcpdump vê pacotes na interface tun0 , mas não os vê na interface eth0 .

Eu tenho um servidor OpenVPN, que usei para acessar o Github de uma máquina que não é capaz de se conectar diretamente a ele. O OpenVPN foi configurado para enviar rotas do github para os clientes:

port 1194
proto tcp
dev tun
ca ca.crt
cert cloud.crt
key cloud.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

# github.com
push "route 192.30.253.112 255.255.255.255"
push "route 192.30.253.113 255.255.255.255"

keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

Eu adicionei o NAT no servidor via iptables:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

(Eu também tentei uma versão alternativa - iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to 82.196.2.80 , o resultado foi o mesmo)

Então, vejo pacotes na interface tun0 :

$ tcpdump -n -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
06:37:47.936890 IP 10.8.0.6.58816 > 192.30.253.112.80: Flags [S], seq 1523900495, win 29200, options [mss 1366,sackOK,TS val 3602297008 ecr 0,nop,wscale 7], length 0
06:37:48.960336 IP 10.8.0.6.58816 > 192.30.253.112.80: Flags [S], seq 1523900495, win 29200, options [mss 1366,sackOK,TS val 3602298033 ecr 0,nop,wscale 7], length 0

Mas não há pacotes em eth0 :

$ tcpdump -n -i eth0 | grep 192.30.253.112
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

sysctl informa que o encaminhamento está ativado:

$ sysctl net.ipv4.ip_forward 
net.ipv4.ip_forward = 1

Estou usando o Ubuntu 16.04.3, Linux 4.4.0-112-genérico.

Qual poderia ser o problema? Onde posso procurar depurar isso?

    
por Rogach 28.01.2018 / 09:19

0 respostas