Я хочу перенаправлять весь трафик от клиентов (192.168.1.0/24)
из шлюза openwrt (0.0.0.0/0)
к серверу openvpn туннель.
На сервере есть туннель openvpn. Он также установил параметры:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
net.ipv4.ip_forward=1
tun0 is the default gateway
Openwrt - это шлюз в Интернет по умолчанию. Итак, если я вручную изменю шлюз по умолчанию на стороне клиента на IP-адрес сервера 192.168.1.2
- оно работает.
+------------+
| INTERNET |
+------|-----+
|
|
|
+--------|-------+
| OpenWRT |
| |
| 192.168.1.1/24 |
+---|----|-------+
| |
| | +-------------+
| | | Server |
| | | |
+---------------+ | |--------192.168.1.2 |
| Client | | | | |
| ----+ +-------|tun0 |
| 192.168.1.101 | | |
+---------------+ +-------------+
Отмечены все пакеты, кроме одного с сервера:
iptables -t mangle -I PREROUTING -i br-lan '!' -s 192.168.1.2 -d 0.0.0.0/0 -j MARK --set-mark 1
Затем направьте их через новую таблицу маршрутов, которая имеет маршрут по умолчанию через 192.168.1.2
но не повезло с этим. Трафик застревает в маршрутизаторе.
ip route add default via 192.168.1.2 table vpn
ip rule add fwmark 1 lookup vpn
Собственно, когда я писал это, я понял, что могу использовать dhcp-option = 3,192.168.1.2 на маршрутизаторе dnsmasq для отправки предпочтительного шлюза всем клиентам. И работает :) Наверное, это лучшее решение. Но можно ли маршрутизировать весь трафик с помощью iptables и маршрутов на стороне openwrt?