У меня есть простой ячеистый VPN (реализованный с помощью Tinc), который содержит мой персональный ноутбук и VPS с общедоступным IP-адресом. Допустим, публичный IP-адрес сервера 1.2.3.4
. Личный адрес ноутбука: 10.16.1.2
а частный адрес сервера 10.16.0.2
.
Я хочу проложить маршрут ВСЕ трафик с моего ноутбука через VPN и выход из VPS. Я уже настроил сервер для работы в качестве шлюза, включив пересылку и маскировку, но я не могу понять, как настроить маршрутизацию на ноутбуке.
Проблема в том, что у ноутбука нет фиксированной локальной подсети. Иногда это может быть 192.168.0.0/24
маршрутизатора моего дома, или это может быть 172.16.0.0/12
моего университета, например.
Я бы хотел, чтобы мой ноутбук направлял весь мой трафик через шлюз VPN, но в то же время у меня должен быть доступ к локальной сети, даже если в ней есть неизвестно изменяющаяся подсеть.
Вот что мне удалось сделать:
# ip route
default via 192.168.0.1 dev wlan0
0.0.0.0/1 via 10.16.0.2 dev vpn
128.0.0.0/1 via 10.16.0.2 dev vpn
10.16.0.0/16 dev vpn proto kernel scope link src 10.16.1.2
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.133
Следуя некоторым руководствам по OpenVPN, я разделил весь Интернет на два больших /1
, так что они действуют как своего рода маршрут по умолчанию, не изменяя фактический маршрут по умолчанию (default via 192.168.0.1 dev wlan0
). Проблема в том, что даже пакеты, предназначенные для VPS на 1.2.3.4
захвачены /1
маршруты, и движение застревает.
Если бы была возможность написать что-то вроде:
ip route add 1.2.3.4/32 via default
Было бы неплохо, но не думаю, что это возможно.
Я даже пробовал использовать маршрутизацию на основе политик и маркировку пакетов с помощью iptables, но безуспешно.
Не зная вашего фактического IP-адреса VPS, я не могу дать вам точные команды, но в основном вам нужно разделить «Интернет» на несколько частей, ни одна из которых не включает ваш VPS. Например, если ваш VPS-адрес 255.255.255.255 (что, очевидно, не так), тогда у вас будет
обратите внимание, что это покрывает весь ваш второй интернет-блок, ЗА ИСКЛЮЧЕНИЕМ вашего адреса VPS. Имейте в виду, что я намеренно выбрал простой адрес, чтобы меня не было здесь весь день, но вы можете делать это для чего угодно, если вы готовы написать достаточно маршрутов, и вам нужно сделать это только один раз, пока ваш адрес VPS не меняется.