Как игнорировать изменение шлюза OpenVPN на стороне клиента
После поднятия защищенного канала OpenVPN весь клиентский трафик как правило идёт через него. На этапе установки соединения OpenVPN-сервер изменяет на клиенте шлюз по умолчанию, оправляя ему команду push «redirect-gateway». В этом нет никакой ошибки и в большинстве случаев, подобная настройка на стороне сервера вполне логична, да и пользователю не нужно вручную прописывать маршруты и весь трафик получается защищённым.
Но, допустим, что мы просто хотим предоставить удалённым пользователям возможность работы с ресурсами внутри сети. Зачем гонять весь трафик через защищённое соединение, когда требуется только доступ к терминальному серверу или сетевому принтеру? Пусть спокойно лазят в интернете и качают торренты, используя собственное подключение, а защищённый канал используется исключительно по прямому назначению, не тратя драгоценных ресурсов на обработку лишней информации.
На стороне OpenVPN сервера, за переопределение шлюза и DNS сервера у клиента отвечают следующие строки конфигурационного файла:
А как быть в случае, если нельзя поправить конфигурацию сервера? На самом деле, разработчиками предусмотрена возможность игнорировать правила redirect-gateway OpenVPN-сервера со стороны клиента (ссылка на страницу wiki IgnoreRedirectGateway)
Достаточно в конфигурационном файле клиента отфильтровать нужную опцию, указав её в качестве аргумента для pull-filter. Опция фильтрации параметров доступна начиная с версии 2.4 и выше и может использоваться только на клиентах. Для более старых версий OpenVPN следует воспользоваться другим методом, описание которого можно найти перейдя по ссылке чуть выше.
Чтобы игнорировать изменение шлюза OpenVPN в конфигурационный файл клиента добавляем такую строку:
То был конкретный пример из моего конфига, а вообще функция фильтрации параметров, полученных с сервера, выглядит так:
—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:
Стоит также обратить внимание, что reject может привести к повторному подключению, поэтому для игнорирования параметра, переданного сервером лучше использовать команду ignore.
ПыСы: ну и раз мы отказались от предложенного сервером маршрута по умолчанию, то на клиенте можно прописать недостающие маршруты из удалённой сети (если таковые требуются). Делается это просто:
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.
Комментариев: 3
Спасибо за информацию
Подскажите, как мне сделать игнорирование ssh подключений. Что бы я могу подключаться к удаленному серверу на котором работает OpneVPN, но VPN не распространялся на ssh подключения к серверу?
жЕНЯ это проблема не впн, а маршрутизации. раз у тебя сменился дефолтный шлюз. нужно просто добавить маршрут до той сети откуда ты хочешь подключаться по
Источник
Как игнорировать изменение шлюза OpenVPN на стороне клиента
После поднятия защищенного канала OpenVPN весь клиентский трафик как правило идёт через него. На этапе установки соединения OpenVPN-сервер изменяет на клиенте шлюз по умолчанию, оправляя ему команду push «redirect-gateway». В этом нет никакой ошибки и в большинстве случаев, подобная настройка на стороне сервера вполне логична, да и пользователю не нужно вручную прописывать маршруты и весь трафик получается защищённым.
Но, допустим, что мы просто хотим предоставить удалённым пользователям возможность работы с ресурсами внутри сети. Зачем гонять весь трафик через защищённое соединение, когда требуется только доступ к терминальному серверу или сетевому принтеру? Пусть спокойно лазят в интернете и качают торренты, используя собственное подключение, а защищённый канал используется исключительно по прямому назначению, не тратя драгоценных ресурсов на обработку лишней информации.
На стороне OpenVPN сервера, за переопределение шлюза и DNS сервера у клиента отвечают следующие строки конфигурационного файла:
А как быть в случае, если нельзя поправить конфигурацию сервера? На самом деле, разработчиками предусмотрена возможность игнорировать правила redirect-gateway OpenVPN-сервера со стороны клиента (ссылка на страницу wiki IgnoreRedirectGateway )
Достаточно в конфигурационном файле клиента отфильтровать нужную опцию, указав её в качестве аргумента для pull-filter . Опция фильтрации параметров доступна начиная с версии 2.4 и выше и может использоваться только на клиентах. Для более старых версий OpenVPN следует воспользоваться другим методом, описание которого можно найти перейдя по ссылке чуть выше.
Чтобы игнорировать изменение шлюза OpenVPN в конфигурационный файл клиента добавляем такую строку:
То был конкретный пример из моего конфига, а вообще функция фильтрации параметров, полученных с сервера, выглядит так:
—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:
Стоит также обратить внимание, что reject может привести к повторному подключению, поэтому для игнорирования параметра, переданного сервером лучше использовать команду ignore .
ПыСы: ну и раз мы отказались от предложенного сервером маршрута по умолчанию, то на клиенте можно прописать недостающие маршруты из удалённой сети (если таковые требуются). Делается это просто:
Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.
ЕСЛИ СЧИТАЕТЕ СТАТЬЮ ПОЛЕЗНОЙ,
НЕ ЛЕНИТЕСЬ СТАВИТЬ ЛАЙКИ И ДЕЛИТЬСЯ С ДРУЗЬЯМИ.
Источник
OpenVPN делает редирект-шлюз необязательным
В настоящее время я использую сервер OpenVPN для нескольких клиентов. Весь трафик направляется через VPN (он настроен как шлюз; нажмите «redirect-gateway def1»).
Пока все работает нормально. Однако я хотел бы подключить пару серверов к этой виртуальной частной сети, чтобы эти серверы не использовали демон OVPN в качестве шлюза.
Эти серверы должны быть доступны как из их глобальной сети, так и из их IP-адреса в локальной сети. Некоторые услуги будут доступны только со стороны локальной сети.
Есть ли способ для клиента игнорировать опцию push redirect-gateway?
С уважением, Туинслак
Просто добавьте «route-nopull» в конфигурацию клиента openvpn, тогда все отправленные команды с сервера игнорируются. Чтобы получить доступ к локальной сети, вы должны добавить, например, «route 192.168.5.0 255.255.255.0» в конфигурацию openvpn клиента, если локальная сеть, к которой вы хотите подключиться, — 192.168.5.0/24.
если ‘redirect-gateway’ требуется для некоторых, но не для всех клиентов, добавьте опцию ‘client-config-dir’, например
и внутри этого каталога поместите файлы для каждого клиента CN, например, файл Client1 будет содержать
таким образом серверы не получают «перенаправление-шлюз» по умолчанию.
просто замените шлюз по умолчанию в скрипте —up, и все готово. Вам даже не нужно ничего делать в —down (я думаю) или просто установить его в up.sh.
где 1.2.3.4 — шлюз вашего клиента по умолчанию
По состоянию на декабрь 2016 года для этого существует более новое и простое решение.
Вам просто нужно поместить эту строку в конфигурацию OpenVPN:
Буквально, он фильтрует параметры, которые он извлекает с сервера, и игнорирует redirect-gateway параметр.
(Согласно https://community.openvpn.net/openvpn/wiki/IgnoreRedirectGateway , это было добавлено в OpenVPN 2.4, который был выпущен около декабря 2016 года.)
Remvoe «redirect-gateway» в файле конфигурации клиента, шлюз по умолчанию клиента больше не будет меняться. протестировано под Archlinux / OpenVPN 2.3.2.
Источник
Маршрутизация всего трафика через OpenVPN
Да, этот вопрос задавался сто раз, и я искал везде, но безрезультатно.
Название говорит само за себя.
У меня есть сервер OpenVPN (в Ubuntu), и я могу подключиться к нему через мой клиент (Windows 8) .
Проблема начинается, когда я пытаюсь направить ВСЕ трафик через VPN.
Я добавил push флаги в server.conf:
Когда я соединяюсь с клиентом, клиент выводит:
Я пытался использовать флаги на стороне клиента при открытии соединения:
Но все же, когда я захожу на whatsmyip.org, там все равно говорится, что мои клиенты ip.
Кто-нибудь имел эту проблему и сумел ее решить?
Я проверил это с помощью сервера OpenVPN и настройки опции redirect-gateway def1 в конфигурации клиента и сервера работает нормально. Когда я захожу на whatismyip.org, я вижу IP-адрес моего сервера OpenVPN. Ниже приведен конфиг клиента, который я использую:
Я также протестировал добавление опции redirect-gateway def1 к команде openvpn и добился того же результата. Конфигурация сервера:
Может быть, вы забыли изменить свой NAT? Запустите эти 3 команды от имени пользователя root
- tun0: ваша виртуальная VPN сетевая карта
- eth0: ваша обычная сетевая карта
- 10.8.0.0: ip блок вашей сети VPN
После тщательного поиска ответа кажется, что я решил это, возможно, частично, но, по крайней мере, очень просто:
Я использую Xubuntu 14.04 и пакет OpenVPN из основного источника. В Настройках> Система> Сеть я заменил предварительно установленный DNS-адрес 127.0.1.1 на Google 8.8.8.8 , и теперь я вижу весь трафик, проходящий через VPN-сервер.
В таблице Wireshark отсутствует такая строка, как DNS: все данные идут как TCP через зашифрованный канал. Я вижу трафик DHCP и DNS, когда смотрю tun0 (внутренний блокнот). Когда я исследую wlan0 трафик (внешний между ноутбуком и маршрутизатором WiFi), я получаю только серые пакеты TCP.
Я думаю, что это происходит из-за того, что DNS-запрос не нужен для декодирования символов в числа, и он идет в общем потоке, как обычный пакет данных.
Я буду рад узнать ваши соображения, не удивительно, если я полностью ошибаюсь
Добавьте следующую директиву в файл конфигурации сервера:
Если ваша настройка VPN находится в беспроводной сети, где все клиенты и сервер находятся в одной беспроводной подсети, добавьте локальный флаг:
Если вы передадите клиенту параметр redirect-gateway, весь сетевой IP-трафик, исходящий от клиентских компьютеров, будет проходить через сервер OpenVPN. Сервер должен быть настроен так, чтобы каким-то образом обрабатывать этот трафик, например, путем NAT-соединения с Интернетом или маршрутизации через HTTP-прокси сайта сервера.
В Linux вы можете использовать такую команду для NAT для трафика VPN-клиента в Интернет:
Эта команда предполагает, что VPN-подсеть имеет 10.8.0.0/24 (взято из директивы сервера в конфигурации сервера OpenVPN) и что локальный интерфейс Ethernet имеет значение eth0.
Когда используется redirect-gateway, клиенты OpenVPN будут направлять DNS-запросы через VPN, и VPN-сервер должен будет обрабатывать их. Это может быть достигнуто путем передачи адреса DNS-сервера подключающимся клиентам, который заменит их обычные настройки DNS-сервера во время активности VPN. Например:
настроит клиентов Windows (или клиентов не Windows с некоторыми дополнительными сценариями на стороне клиента) для использования 10.8.0.1 в качестве своего DNS-сервера. Любой адрес, который доступен клиентам, может использоваться в качестве адреса DNS-сервера.
Если ваш OpenVPN-клиент работает в Windows 10 (или аналогичной версии), существует другая проблема, на которую следует обратить внимание: порядок привязки сетевых карт. Существующие настройки DNS-сервера в локальной сети или адаптере Wi-Fi могут иметь приоритет над настройками DNS-сервера для туннельного интерфейса, поэтому даже если все настроено с точки зрения OpenVPN, Windows продолжает использовать исходный DNS-сервер.
Вы можете исправить это, как описано в этом сообщении на форуме Microsoft.
Я столкнулся с той же проблемой и обнаружил, что при использовании сценария установки PiVPN для Open VPN в конфигурации сервера есть строка:
нажмите «redirect-gateway def1 bypass-dhcp»
уже. На клиенте IOS все маршрутизируется через туннель автоматически (это то, что говорит журнал).
На клиенте Tunnelblick вам нужно добавить эту строку в client.ovpn строку:
redirect-gateway def1 bypass-dhcp
и это должно работать отлично. По крайней мере, на моем Mac.
Источник
Custom configuration options¶
OpenVPN offers dozens of configuration options, many beyond the most commonly used fields presented in the GUI. This is why the Advanced configuration box exists. Additional configuration options may be configured using this input area, separated by semicolons.
This section covers the most frequently used custom options individually. There are many more, though rarely needed. The OpenVPN man page details them all.
Exercise caution when adding custom options, there is no input validation applied to ensure the validity of options used. If an option is used incorrectly, the OpenVPN client or server may not start. View the OpenVPN logs under Status > System logs on the OpenVPN tab to ensure the options used are valid. Any invalid options will result in a log message, followed by the option that caused the error:
Routing options¶
To add additional routes for a particular OpenVPN client or server, use the Local Network and Remote Network boxes as needed, using a comma-separated list of networks.
The route custom configuration option may also be used, but is no longer necessary. Some users prefer this method, however. The following example adds a route for 10.50.0.0/24 :
To add multiple routes, separate them with a semicolon:
The route configuration option is used to add routes locally for networks that are reachable through the VPN. For an OpenVPN server configuration using PKI, additional routes may also be pushed to clients. The GUI can configure these using the Local Network field. To push the routes manually for 10.50.0.0/24 and 10.254.0.0/24 to all clients, use the following custom configuration option:
Redirecting the default gateway¶
OpenVPN also allows the default gateway to be redirected across the VPN, so all non-local traffic from the client is sent through the VPN. This is great for untrusted local networks such as wireless hotspots, as it provides protection against numerous attacks that are a risk on untrusted networks. This is configurable in the GUI now, using the Redirect Gateway checkbox in the OpenVPN instance configuration. To do this manually, add the following custom option:
The same value may be used as a custom option on the client side by entering redirect-gateway def1 without specifying push . (Note the option is the letters “def” followed by the digit one, not the letter “L”.)
Источник