После поднятия защищенного канала OpenVPN весь клиентский трафик как правило идёт через него. На этапе установки соединения OpenVPN-сервер изменяет на клиенте шлюз по умолчанию, оправляя ему команду push "redirect-gateway". В этом нет никакой ошибки и в большинстве случаев, подобная настройка на стороне сервера вполне логична, да и пользователю не нужно вручную прописывать маршруты и весь трафик получается защищённым.
Но, допустим, что мы просто хотим предоставить удалённым пользователям возможность работы с ресурсами внутри сети. Зачем гонять весь трафик через защищённое соединение, когда требуется только доступ к терминальному серверу или сетевому принтеру? Пусть спокойно лазят в интернете и качают торренты, используя собственное подключение, а защищённый канал используется исключительно по прямому назначению, не тратя драгоценных ресурсов на обработку лишней информации.
На стороне OpenVPN сервера, за переопределение шлюза и DNS сервера у клиента отвечают следующие строки конфигурационного файла:
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
А как быть в случае, если нельзя поправить конфигурацию сервера? На самом деле, разработчиками предусмотрена возможность игнорировать правила redirect-gatewayOpenVPN-сервера со стороны клиента (ссылка на страницу wiki IgnoreRedirectGateway)
Достаточно в конфигурационном файле клиента отфильтровать нужную опцию, указав её в качестве аргумента для pull-filter. Опция фильтрации параметров доступна начиная с версии 2.4 и выше и может использоваться только на клиентах. Для более старых версий OpenVPN следует воспользоваться другим методом, описание которого можно найти перейдя по ссылке чуть выше.
Чтобы игнорировать изменение шлюза OpenVPN в конфигурационный файл клиента добавляем такую строку:
pull-filter ignore redirect-gateway
То был конкретный пример из моего конфига, а вообще функция фильтрации параметров, полученных с сервера, выглядит так:
--pull-filter accept|ignore|reject текст
Флаг действия accept разрешает опцию, ignore удаляет ее, а reject помечает как ошибочную и запускает SIGUSR1. Фильтры могут вызываться несколько раз и применяются в указанном порядке. Несколько примеров:
--pull-filter ignore "route"
Удаляет все push-опции, содержащие текст route, в том числе и route-gateway. Если в тексте параметра присутствует пробел, его следует заключать в кавычки:
--pull-filter accept "route 192.168.1."
--pull-filter ignore "route "
Будут удалены все маршруты, которые не начинаются с 192.168.1. Таким же образом можно отказаться от переназначения DNS-серверов при подключении к OpenVPN:
pull-filter ignore "dhcp-option DNS"
Стоит также обратить внимание, что reject может привести к повторному подключению, поэтому для игнорирования параметра, переданного сервером лучше использовать команду ignore.
ПыСы: ну и раз мы отказались от предложенного сервером маршрута по умолчанию, то на клиенте можно прописать недостающие маршруты из удалённой сети (если таковые требуются). Делается это просто:
route 192.168.10.0 255.255.255.0
Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.
ЕСЛИ СЧИТАЕТЕ СТАТЬЮ ПОЛЕЗНОЙ,
НЕ ЛЕНИТЕСЬ СТАВИТЬ ЛАЙКИ И ДЕЛИТЬСЯ С ДРУЗЬЯМИ.
https://mdex-nn.ru/page/ignorirovanie-redirect-gateway-openvpn.html