Redirecionar o tráfego de uma interface para uma interface VPN tun com iptables

Redirecionar o tráfego de uma interface para uma interface VPN tun com iptables

Estou tentando conseguir algo fácil, mas aparentemente estou faltando alguma coisa.

Na minha caixa, tenho um cliente VPN em execução que criou uma tun0interface. A caixa tem tráfego externo vindo do eth0.

Eu gostaria de encaminhar o tráfego de eth0para tun0. Eu executo os seguintes comandos:

iptables -A FORWARD -i eth0 -o tun0 -s 192.168.100.0/28 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -o tun0 -j MASQUERADE

Observe que seleciono o intervalo de IPs de origem porque desejo encaminhar apenas um determinado intervalo.

Executando tcpdumpna eth0interface, posso ver o tráfego vindo de uma máquina no intervalo, 192.168.100.0/28mas não consigo ver o tráfego entrando tun0.

O encaminhamento de IP está naturalmente ativado.

Não tenho certeza do que realmente estou perdendo aqui.

Configuração IP de eth0is 192.168.10.93/24while tun0is10.8.8.15/24

➜  ~ ip r
default via 192.168.10.1 dev eth0  metric 100
10.8.8.0/24 dev tun0 scope link  src 10.8.8.15
172.17.0.0/16 dev docker0 scope link  src 172.17.0.1
172.30.32.0/23 dev hassio scope link  src 172.30.32.1
192.168.10.0/24 dev eth0 scope link  src 192.168.10.93  metric 100

Responder1

Como no final das contas isso pode significar a 192.168.100.0/28saída do tráfego, tun0 isso pode ser resolvido com algo como:

ip rule add from 192.168.100.0/28 lookup 10000
ip route add default via ${tun0gwip} table 10000

Mantenha também o iptables MASQUERADE que é necessário, a menos que o tun0 gw possa rotear de volta para sua outra rede.

Responder2

Esta é a combinação exata de comandos que resolveu o problema:

Crie uma nova tabela de rotas chamada vpnem

➜  ~ cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
#1  inr.ruhep
1 vpn

e então execute:

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables -A FORWARD -i eth0 -o tun0 -s 192.168.100.0/28 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

ip route add default dev tun0 table vpn
ip route add 192.168.100.0/28 dev eth0 table vpn

ip rule add from 192.168.100.0/28 table vpn

informação relacionada