Как игнорировать изменение шлюза OpenVPN на стороне клиента

Январь, 31st 2020Рубрика: Безопасность 1887
Подписаться на комментарии по RSS

Как игнорировать изменение шлюза OpenVPN

После поднятия защищенного канала OpenVPN весь клиентский трафик как правило идёт через него. На этапе установки соединения OpenVPN-сервер изменяет на клиенте шлюз по умолчанию, оправляя ему команду push "redirect-gateway". В этом нет никакой ошибки и в большинстве случаев, подобная настройка на стороне сервера вполне логична, да и пользователю не нужно вручную прописывать маршруты и весь трафик получается защищённым.

Но, допустим, что мы просто хотим предоставить удалённым пользователям возможность работы с ресурсами внутри сети. Зачем гонять весь трафик через защищённое соединение, когда требуется только доступ к терминальному серверу или сетевому принтеру? Пусть спокойно лазят в интернете и качают торренты, используя собственное подключение, а защищённый канал используется исключительно по прямому назначению, не тратя драгоценных ресурсов на обработку лишней информации.

На стороне OpenVPN сервера, за переопределение шлюза и DNS сервера у клиента отвечают следующие строки конфигурационного файла:

push "redirect-gateway def1" 
push "dhcp-option DNS 8.8.8.8"

А как быть в случае, если нельзя поправить конфигурацию сервера? На самом деле, разработчиками предусмотрена возможность игнорировать правила redirect-gateway OpenVPN-сервера со стороны клиента (ссылка на страницу 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
Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

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

Комментариев: 1

  1. 2020-06-28 в 11:45:48 | Аноним

    Спасибо за информацию

ваш комментарий будет опубликован после проверки
на указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.