Я пытаюсь заставить свою таблицу маршрутизации маршрутизировать весь исходящий трафик через tun1, но все еще имею доступ к серверу через openvpn (tun0). Первым делом я попытался маршрутизировать 0.0.0.0/0 в качестве шлюза по умолчанию, но это (очевидно) сломает ping/vpn и т.д. На eth0. Затем я попытался создать собственную таблицу маршрутизации для eth0:
IP-правило:
32764: from all to (PUBLIC EXTERNAL IP) lookup eth0
32765: from (PUBLIC EXTERNAL IP) lookup eth0
32766: from all lookup main
32767: from all lookup default
ip route show table eth0:
default via (GW .1) dev eth0
(EXTERNAL PUBLIC IP)/24 dev eth0 scope link src (EXTERNAL PUBLIC IP)
который был успешным. Теперь я могу пропинговать / войти через vpn и т.д. Через eth0 без использования маршрута по умолчанию, проходящего через eth0.
Без шлюза по умолчанию мне пришлось добавить провайдера tun1 вручную.
IP-правило:
32757: from all to 80.67.8.220 lookup eth0
32758: from 80.67.8.220 lookup eth0
Пока все хорошо, я могу подключиться к vpn (tun1 отображается как интерфейс и т.д.). Который запускает этот скрипт маршрутизации после подключения:
ip route flush table tun1
ip route add default via $route_vpn_gateway dev $dev table tun1
ip rule add from $ifconfig_local/32 table tun1
ip rule add to $ifconfig_local/32 table tun1
ip route flush cache
Я могу пропинговать провайдера через виртуальный ip, но если я добавлю 0.0.0.0/0 через tun1 и попытаюсь пропинговать google.com, тайм-аут пинга.
IP-маршрут:
0.0.0.0/0 via IP RECEIVED FROM PROVIDER dev tun1
10.254.254.0/24 via 10.254.254.2 dev tun0
10.254.254.2 dev tun0 proto kernel scope link src 10.254.254.1
(PUBLIC EXTERNAL IP)/24 dev eth0 proto kernel scope link src (PUBLIC EXTERNAL IP)
cat /etc /iproute2 /rt_tables:
23 tun1
40 eth0