Desejo encaminhar todo o tráfego proveniente dos clientes (192.168.1.0/24)
do gateway (0.0.0.0/0)
do openwrt para o túnel openvpn Server.
O servidor tem um túnel openvpn. Também definiu opções:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
net.ipv4.ip_forward=1
tun0 is the default gateway
O Openwrt é um gateway padrão para a Internet.
Então, se eu alterar manualmente o gateway padrão no lado do cliente para o servidor ip 192.168.1.2
- ele funciona.
+------------+
| INTERNET |
+------|-----+
|
|
|
+--------|-------+
| OpenWRT |
| |
| 192.168.1.1/24 |
+---|----|-------+
| |
| | +-------------+
| | | Server |
| | | |
+---------------+ | |--------192.168.1.2 |
| Client | | | | |
| ----+ +-------|tun0 |
| 192.168.1.101 | | |
+---------------+ +-------------+
Marcados todos os pacotes, exceto um do servidor:
iptables -t mangle -I PREROUTING -i br-lan '!' -s 192.168.1.2 -d 0.0.0.0/0 -j MARK --set-mark 1
Em seguida, direcione-os por meio da nova tabela de rotas, que tem rota padrão por 192.168.1.2
, mas não tem sorte com isso. O tráfego stucks no roteador.
ip route add default via 192.168.1.2 table vpn
ip rule add fwmark 1 lookup vpn
Na verdade, enquanto escrevo isso, reconheci que posso usar dhcp-option = 3,192.168.1.2 no roteador dnsmasq para enviar a todos os clientes o gateway preferencial. E funciona :) Provavelmente esta é a melhor solução. Mas, é possível rotear todo o tráfego com iptables e rotas no lado openwrt?