Eu tenho uma configuração de caixa de Linux como roteador usando este tutorial: link
Nessa máquina existem 2 interfaces de rede e uma VPN: eth0 é a interface principal da internet, eno1 é a intranet e tun0 é a interface VPN.
De acordo com o tutorial eu estou usando o script abaixo para rotear tudo o que vem de eno1 através da vpn:
iptables-restore <<-EOF
*nat
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i tun0 -o eno1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eno1 -o tun0 -j ACCEPT
-A FORWARD -j LOG
COMMIT
EOF
Isso funciona muito bem. Mas agora eu quero rotear todos os pacotes vindos de eno1 e com o IP de destino de 203.205.147.173 até eth0.
Que tipo de regras do iptables devo adicionar ao meu script?
Editar
Eu mudei o script como segue para marcar todos os pacotes para 203.205.147.173:
iptables-restore <<-EOF
*nat
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i tun0 -o eno1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eno1 -o tun0 -j ACCEPT
-A FORWARD -j LOG
COMMIT
*mangle
-A PREROUTING -i "$INTIF" -d 203.205.0.0/16 -j MARK --set-mark 0x15
COMMIT
EOF
Então eu crio a tabela X:
sudo nano /etc/iproute2/rt_tables
, em seguida, adicione 1 tableX
no final do arquivo.
Em seguida, adicione regra e rota:
sudo ip rule add fwmark 0x15 lookup tableX
sudo ip route add default via 192.168.5.1 dev eth0 table tableX
sudo ip route add 203.205.0.0/16 via 192.168.5.1 dev eth0 table tableX
mas traceroute 203.205.147.173
timeout:
traceroute to 203.205.147.173 (203.205.147.173), 64 hops max, 52 byte packets
(192.168.8.1) 2.384 ms 1.060 ms 1.027 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
Eu acho que não estou adicionando o caminho certo para tableX. Alguma sugestão sobre como inicializar o tableX?
Note que o roteador eth0 ip é 192.168.5.1 e eno1 o roteador ip é 192.168.8.1