У меня есть openVPN, подключенный на моем компьютере с Ubuntu, но я бы хотел, чтобы через мой домашний маршрутизатор не запускались несколько приложений. Они работают на портах 22 и 32400 (ssh и plex).

Итак, я провел некоторое исследование о том, как настроить маршрутизацию для конкретной политики.

Проблема в том, что, несмотря на все мои усилия, кажется, что все еще маршрутизируется через VPN

Резюме того, что я сделал

Мой rp_filter установлен в 0. Я изменил свою таблицу mangle, чтобы добавить отметку в пакеты с портами назначения 32400 и 22. У меня есть правило для отправки помеченных пакетов в пользовательскую таблицу "notunnel", и маршрут по умолчанию для таблицы notunnel - это мой маршрутизатор-шлюз.

(Обратите внимание, что я использую порт 80 в качестве тестового порта, потому что проще просматривать мой публичный IP-адрес через веб-сайт, чем использовать ssh в моей домашней сети для проверки конфигурации).

Вот таблицы

user@host:~$ ip rule show
0:  from all lookup local 
32765:  from all fwmark 0x1 lookup notunnel 
32766:  from all lookup main 
32767:  from all lookup default

user@host:~$ ip route show table main
default via 10.158.1.5 dev tun0  proto static 
10.158.1.1 via 10.158.1.5 dev tun0  proto static 
10.158.1.5 dev tun0  proto kernel  scope link  src 10.158.1.6 
172.98.67.18 via 192.168.0.1 dev wlan0  proto static 
192.168.0.0/24 dev wlan0  proto kernel  scope link  src 192.168.0.10  metric 9

user@host:~$ ip route show table notunnel
default via 192.168.0.1 dev wlan0 

user@host:~$ sudo iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
CONNMARK   all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED CONNMARK restore
RETURN     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
CONNMARK   tcp  --  anywhere             anywhere             tcp dpt:http CONNMARK set 0x1
CONNMARK   tcp  --  anywhere             anywhere             tcp dpt:32400 CONNMARK set 0x1
CONNMARK   all  --  anywhere             anywhere             CONNMARK save
CONNMARK   tcp  --  anywhere             anywhere             tcp spt:32400 CONNMARK set 0x1
CONNMARK   tcp  --  anywhere             anywhere             tcp spt:http CONNMARK set 0x1

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Поэтому, как всегда, любой совет будет приветствоваться с распростертыми объятиями.

0