Перенаправление трафика с интерфейса на интерфейс VPN tun с помощью iptables

Перенаправление трафика с интерфейса на интерфейс VPN tun с помощью iptables

Я пытаюсь добиться чего-то легкого, но, видимо, что-то упускаю.

В моем ящике запущен VPN-клиент, который создал tun0интерфейс. В ящике есть внешний трафик, идущий из eth0.

Я хотел бы перенаправить трафик с eth0на tun0. Я запускаю следующие команды:

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

Обратите внимание, что я выбираю диапазон исходных IP-адресов, поскольку хочу пересылать только определенный диапазон.

Работая tcpdumpна eth0интерфейсе, я вижу трафик, входящий с машины в этом диапазоне, 192.168.100.0/28но не вижу трафика, входящего в tun0.

Переадресация IP, естественно, включена.

Я не совсем понимаю, чего именно мне здесь не хватает.

Конфигурация IP eth0is 192.168.10.93/24пока 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

решение1

Поскольку в конечном итоге это может привести к тому, что трафик из 192.168.100.0/28будет выходить за пределы tun0 Это можно решить чем-то вроде:

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

Также сохраните маскировку iptables, которая необходима, если только tun0 gw не может выполнить обратную маршрутизацию в вашу другую сеть.

решение2

Вот точная комбинация команд, которая решила проблему:

Создайте новую таблицу маршрутизации с vpnименем

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

и затем запустите:

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

Связанный контент