Я пытаюсь заставить свою таблицу маршрутизации маршрутизировать весь исходящий трафик через 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

0