Я уже некоторое время пытаюсь заставить это работать, но все еще безуспешно. Надеюсь, вы сможете мне с этим помочь.
У меня есть машина (Raspberry Pi), в которой есть:
Пока все хорошо, все работает как положено. Моя конфигурация следующая: После установки tun0 я применяю следующие правила iptable:
iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE
iptables -I FORWARD -i tun0 -o eth0 -s 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
а таблица маршрутизации выглядит так:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.2.0 192.168.2.2 255.255.255.0 UG 0 0 0 tun0
192.168.2.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
Теперь я хотел бы добавить клиент OpenVPN и настроить его как подключение к Интернету по умолчанию для системы. После того, как соединение установлено (tun1), поставщик услуг VPN применяет новую маршрутизацию, но я теряю возможность подключаться к своим службам из WAN с использованием моего внешнего IP-адреса.
В этой ситуации маршрутизация выглядит так:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.159.0.145 128.0.0.0 UG 0 0 0 tun1
0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
10.159.0.1 10.159.0.145 255.255.255.255 UGH 0 0 0 tun1
10.159.0.145 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
45.86.203.67 192.168.1.1 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.159.0.145 128.0.0.0 UG 0 0 0 tun1
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.2.0 192.168.2.2 255.255.255.0 UG 0 0 0 tun0
192.168.2.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
(IP, который я получаю от поставщика VPN, динамический)
Насколько я понимаю, это потому, что мой сервер теперь отправляет ответы через tun1, а не через eth0. Я читал о маршрутизации на основе политик, но все еще не могу заставить ее работать должным образом. Мне удалось маршрутизировать всю сеть, входящую с 192.168.1.1 (маршрутизатор), и соединение из WAN начало работать, но в этой ситуации я не могу подключиться с других машин в LAN.
Заранее благодарим вас за любые советы, как правильно решить эту проблему. Ура
Я изолировал свою проблему от наличия всего 2 активных соединений WAN, а затем, немного покопавшись, мне удалось заставить ее работать. Как только VPN установил соединение, я звоню:
echo 200 WAN >> /etc/iproute2/rt_tables
ip rule add from 192.168.1.131 table WAN priority 900
ip rule add iif eth0 table WAN priority 1000
ip route add default via 192.168.1.1 dev eth0 table WAN
ip route add 192.168.1.0/24 dev eth0 proto static scope link src 192.168.1.131 table WAN
Теперь мой шлюз по умолчанию - TUN1 (коммерческий VPN), но я все еще могу подключиться, используя свой внешний IP-адрес или с других машин в той же локальной сети 192.168.1.0/24.
Последняя оставшаяся проблема, которую я заметил, заключается в том, что теперь я не могу подключиться к своему VPN-серверу (TUN0), который я размещаю на порту 1194 UDP.
Все остальные службы, использующие TCP, доступны, только те, которые не используют UDP - что я здесь пропустил?