Я пытаюсь маршрутизировать часть трафика по ip из моей локальной сети через экземпляр Ubuntu Server, на котором запущен openconnect, на удаленный сервер.
Client Router Ubuntu Server (ens160) tun0 remote resource
| 192.168.1.x | -> | 192.168.1.1 | -> | 192.168.1.38 | -> | VPN | -> | 1.1.1.1 |
Мои маршруты выглядят так:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 tun0
1.3.4.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 (vpn dhcp range)
1.4.5.6 192.168.1.1 255.255.255.255 UGH 0 0 0 ens160 (ip from remote)
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Мне удалось направить трафик на 1.1.1.1 на мой сервер Ubuntu по адресу 192.168.1.38
. Трассировка маршрута от клиента подтверждает это.
Tracing route to [1.1.1.1] over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 192.168.1.1
2 <1 ms <1 ms <1 ms 192.168.1.38
3 * * * Request timed out.
Таким образом, трафик останавливается на сервере Ubuntu на интерфейсе ens160
(я полагаю). Это где я потерян. Я искал решения, но меня немного смущает множество вариантов, которые у меня есть. Первоначально я просто хотел добавить статический маршрут, говорящий src lan through tun0
, но шлюз 0.0.0.0
? Затем я вижу, что третий маршрут - это ip, принадлежащий удаленному vpn-местоположению. Поэтому я предполагаю, что это маршрут через мою глобальную сеть для VPN.
Я включил IP-пересылку. И попробовал добавить маскарад и правило nat с iptables. Но я уверен, что как-то все испортил.
iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE
iptables -A FORWARD --in-interface ens160 -j ACCEPT
Я ценю любую помощь.