Tenho uma rede bridge br0 que tem o IP 10.0.0.1/24 , tenho um cliente conectado com o IP 10.0.0.2 a ela. Eu também tenho uma conexão VPN ( tun0 ) que tem um IP atribuído por um DHCP, então o IP pode variar. A conexão VPN não é a rota padrão do sistema, portanto todo o tráfego no dispositivo passa pela rota regular eth0 (não a VPN). (O encaminhamento IPv4 está habilitado no host)
O que estou tentando conseguir é que qualquer cliente que esteja conectado ao br0 (no meu caso um container LXC) com o gateway configurado para 10.0.0.1 tenha seu tráfego NATed e roteado através da conexão VPN.
Como não é possível conectar diretamente o dispositivo tun0 ao br0 , tentei encaminhar o tráfego usando o iptables .
Portanto, as etapas que acredito que devo seguir são forçar o tráfego de br0 a ser mascarado e encaminhado para tun0 usando estes comandos:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i br0 -o tun0 -j ACCEPT
Eu adicionei também rastreamento de estado, mas não funcionou:
iptables -A INPUT -i br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Para adicionar uma rota padrão secundária, adicionei no arquivo "/etc/iproute2/rt_tables" uma entrada "1 vpnout" e adicionei a rota padrão:
ip route add default dev vpn-out table vpnout
que não funcionou, e o mesmo resultado com os próximos comandos
ip route add default via dev vpn-out table vpnout
ip rule add from 10.0.0.0/24 table vpnout
ip rule add to 10.0.0.0/24 table vpnout
Mas mesmo assim não consigo fazer o ping 8.8.8.8 do Client conectado ao br0 . Há algo que estou perdendo?