Redirigir el tráfico desde una interfaz a una interfaz VPN tun con iptables

Redirigir el tráfico desde una interfaz a una interfaz VPN tun con iptables

Estoy tratando de lograr algo fácil pero aparentemente me falta algo.

En mi caja tengo un cliente VPN ejecutándose que creó una tun0interfaz. La caja tiene tráfico externo proveniente del eth0.

Me gustaría reenviar el tráfico de eth0a tun0. Ejecuto los siguientes 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

Tenga en cuenta que selecciono el rango de IP de origen porque quiero reenviar solo cierto rango.

Al ejecutar tcpdumpla eth0interfaz, puedo ver el tráfico que ingresa desde una máquina en el rango, 192.168.100.0/28pero no puedo ver el tráfico que ingresa tun0.

El reenvío de IP está activado de forma natural.

No estoy seguro de lo que realmente me estoy perdiendo aquí.

Configuración IP de eth0es 192.168.10.93/24mientras tun0es10.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

Respuesta1

Dado que al final esto podría tratarse de que el tráfico 192.168.100.0/28salga, tun0 esto podría resolverse con algo como:

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

También conserve iptables MASQUERADE, que es necesario a menos que tun0 gw pueda enrutarse de regreso a su otra red.

Respuesta2

Esta es la combinación exacta de comandos que resolvió el problema:

Cree una nueva tabla de rutas denominada vpnen

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

y luego ejecuta:

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

información relacionada