У меня локальная сеть на 192.168.1.0 с сетевой маской 255.255.255.0. Когда я подключаюсь к VPN через OpenVPN (как клиент), он проталкивает маршрут для 192.168.1.0, который перекрывает существующий, делая мою локальную сеть недоступной. Я не имею доступа ни к чему на 192.168.1.0 на удаленной машине; Я хотел бы просто проигнорировать это, принимая другие отправленные маршруты. Мой клиент - Ubuntu 10.10.
Как я могу пропустить один неприятный маршрут?
Использовать
--route-up --route-noexec
в openvpn и полностью игнорировать отправляемые вам маршруты, вместо этого добавляя статические маршруты к конкретным хостам, к которым вы хотите получить доступ через туннель.
openvpn --route-noexec --route-up /tmp/myscript --config ./client.ovpn
где / tmp / myscript
route add -host 192.168.1.69 gw ${route_net_gateway}
Что-то похожее на это, я на самом деле не тестировал это, но он должен работать. Вероятно, вы захотите удалить маршруты и при отключении.
В дополнение к @ hellomynameisjoel's ответ, обратите внимание, что вы можете получить доступ к отправленным маршрутам в route-up
скрипт через переменные окружения. Таким образом, вы можете добавлять только необходимые маршруты.
В качестве альтернативы вы можете добавить маршрут с использованием шлюза по умолчанию в файле конфигурации OpenVPN:
route 192.168.1.0 netmask 255.255.255.0 net_gateway
После этого добавить идентичный продвинутый маршрут не удастся.
P.S. Проверено на ArchLinux / OpenVPN 2.3.5.
Ваша локальная сеть очень большая? Возможно, проще всего перенумеровать вашу сеть в неконфликтный диапазон.
В противном случае вы можете заключить команду запуска openvpn в сценарий, который исправляет маршрут после запуска OpenVPN.