Openvpn не работает dns windows

Не работает разрешение имен DNS при активном VPN подключении в Windows 10

В Windows 10 при активном VPN подключении в режиме Force Tunneling (включена опция “Use default gateway on remote network”/ “Использовать основной шлюз в удаленной сети”) для разрешения имен через службу DNS используются DNS сервера и суффиксы, настроенные для VPN подключения. Соответственно, вы теряете возможность резолвить DNS имена в своей локальной сети и пользоваться Интернетом через внутреннюю LAN.

При этом с Windows 10 можно выполнить ping до ресурсов в вашей LAN сети (пропингуйте ваш шлюз, соседний компьютер или принтер), но по имени они не доступны, т.к. Windows пытается разрешить имена в локальной сети через DNS сервера, указанные для VPN соединения.

В Google я нашел рекомендации по отключению IPv6 на локальном (LAN) подключении и это работает (если вы хотите использовать Force-Tunneling).

Если для VPN подключения используется режим Split Tunneling (снята галка “Use default gateway on remote network”), вы можете пользоваться интернетом через свою локальную сеть, но не можете резолвить DNS адреса в удаленной VPN сети (в этом случае не помогает отключение IPv6).

Нужно понимать, что Windows отправляет DNS запрос с сетевого интерфейса, у которого высший приоритет (меньшее значение метрики интерфейса). Допустим, ваше VPN подключение работает в режиме Split Tunneling (вы хотите пользоваться интернетом через свою LAN и корпоративными ресурсами через VPN подключение).

С помощью PowerShell проверьте значение метрик всех сетевых интерфейсов:

Get-NetIPInterface | Sort-Object Interfacemetric

На картинке выше видно, что у локального Ethernet подключения указана более низкая метрика (25), чем у VPN интерфейса (в этом примере 100). Соответственно, DNS трафик идет через интерфейс с более низким значением метрики. Это значит, что ваши DNS запросы отправляются на ваши локальные DNS сервера, а не на DNS сервера VPN подключения. Т.е. в такой конфигурации вы не можете резолвить адреса во внешней VPN сети.

Кроме того, нужно обязательно упомянуть новую фичу DNS клиента в Windows 8.1 и Windows 10. В этих версиях ОС для максимально быстрого получения ответов на DNS запросы был добавлен функционал DNS релолвера под названием Smart Multi-Homed Name Resolution (SMHNR). При использовании SMHNR система по умолчанию отправляет DNS запросы на все известные системе DNS сервера параллельно и использует тот ответ, который пришел быстрее. Это не безопасно, т.к. потенциально внешние DNS сервера (которые указаны в вашем VPN подключении) могут видеть ваши DNS запросы (утечка ваших DNS запросов вовне). Вы можете отключить SMHNR в Windows 10 с помощью групповой политики:

Computer Configuration -> Administrative Templates -> Network -> DNS Client-> Turn off smart multi-homed name resolution = Enabled.

Или командами (для Windows 8.1):

Set-ItemProperty -Path «HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient» -Name DisableSmartNameResolution -Value 1 -Type DWord
Set-ItemProperty -Path «HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters» -Name DisableParallelAandAAAA -Value 1 -Type DWord

В Windows 10 Creators Update (1709) и выше DNS запросы отправляются на все известные DNS сервера по порядку, а не параллельно. Вы можете увеличить приоритет конкретного DNS, если уменьшите его метрику.

Читайте также:  Canon sx150 is как настроить

Соответственно, изменение метрики позволит вам отправлять DNS запросы через тот сетевой интерфейс (LAN или VPN), разрешение имен через который для вас более приоритетно.

Итак, чем меньше значение метрики интерфейса, тем больше приоритет такого подключения. Windows выставляет метрику IPv4 сетевым интерфейсам автоматически в зависимости от их скорости и типа. Например, для LAN подключения с скоростью >200 Мбит значение метрики интерфейса 10, а для беспроводного Wi-FI подключения со скоростью 50-80 Мбит метрика 50 (см. таблицу https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes).

Вы можете изменить метрику интерфейса через графический интерфейс, PowerShell или команду netsh.

Например, вы хотите, чтобы DNS запросы отправлялись через VPN подключение. Вам нужно увеличить метрики ваших локальных LAN подключений, чтобы они стали больше 100 (в моем примере).

Откройте Панель управления -> Сеть и Интернет -> Сетевые подключения, откройте свойства вашего Ethernet подключения, выберите свойства протокола TCP/IPv4, перейдите на вкладку “Дополнительные параметры TCP/IP”. Снимите галку “Автоматическое назначение метрики” и измените метрику интерфейса на 120.

Тоже самое можно сделать командами PowerShell управления сетью (используйте индекс вашего LAN интерфейса, полученный с помощью командлета Get-NetIPInterface ):

Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 120

Или netsh (нужно указать имя вашего LAN подключения)

netsh int ip set interface interface=»Ethernet 3″ metric=120

Аналогично вы можете уменьшить значение метрики в свойствах VPN подключения.

Также вы можете изменить настройки вашего VPN подключения, изменив режим на SplitTunneling и указать DNS суффикс для подключения c помощью PowerShell:

Источник

Как подтолкнуть свой собственный DNS-сервер к OpenVPN?

Я определил несвязанный DNS-сервер на моем VPS, и он, кажется, работает. Мне нужно использовать DNS-сервер вместо публичных DNS-серверов, потому что некоторые интернет-провайдеры заблокировали публичные IP-адреса DNS. Мой файл openvpn.conf:

Как предлагается здесь , я попытался использовать IP-адреса моего сервера (скажем, 11.22.33.44). Так что вместо

Я просто положил

В openvpn.conf выше. Тем не менее, после перезапуска openvpn я вижу, что мой клиент все еще может подключиться к серверу OpenVPN, но никакие страницы больше не могут отображаться.

Что здесь может быть не так? Как я могу решить эту проблему?

На Windows 10 клиентах вам нужно добавить следующие директивы client.ovpn :

Больше никаких директив для окон не требуется.

На Ubuntu 16.04 клиентах вам может потребоваться добавить следующие директивы client.ovpn :

Последние версии клиента OpenVPN для Windows не распознают опцию DOMAIN-SEARCH правильно и работают с ней DOMAIN .

Вы говорите, что «похоже, работает». Как вы это проверили? Вы основываете это на факте, что сервер запустился без каких-либо ошибок, или вы действительно выполняли некоторые запросы к нему?

Первое, что я хотел бы сделать, это использовать nslookup или dig для подключения к несвязанному серверу и выполнения некоторых запросов. Я знаю, что копать больше в моде в наши дни, но я лучше знаю nslookup.

Если это не работает, то вам придется снова посмотреть на конфигурацию DNS.

Это основной DNS-сервер или кеширующий DNS-сервер? Вы пытаетесь запросить местные ресурсы или интернет-ресурсы? Работает ли он так, как ожидается, если вы не отправляете свой DNS-сервер клиенту?

Если вы пропускаете весь трафик через свой сервер OpenVPN, вам больше не нужно беспокоиться о том, что ваш интернет-провайдер блокирует общедоступные DNS-серверы, поскольку ваш интернет-провайдер генерирует трафик только на свой VPS; если VPS не находится за тем же провайдером.

Читайте также:  Как настроить вай фай роутер для модема

Оказывается, что если вы пытаетесь подключиться не из Windows-клиента, вам нужно выполнить пару дополнительных шагов:

В линуксе

Поместите эту строку в конфигурацию вашего клиента ( client.conf или xxxx.ovpn файл)

Вызовите клиент OpenVPN следующим образом:

Это сработало для меня.

Проверено на Ubuntu 18.04 13 сентября 2018

Есть еще полезные команды для настройки того, что вам нужно через командную строку. Но в моем случае вы можете управлять своим VPN-соединением как с помощью командной строки, так и с помощью графического интерфейса.

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname —

ifname — является обязательным по умолчанию, но ни на что не влияет

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default не следует использовать удаленный шлюз в качестве маршрута по умолчанию

И еще много интересного, последний штрих:

nmcli connection modify la.vpn.contoso.com vpn.data ‘ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls’

После этого вы можете управлять vpn с помощью GUI или использовать следующие команды:

Источник

Проблемы c DNS в виртуальной сети OpenVPN

Здравствуйте, Уважаемые Форумчане!

Имеется сервер в интернете, с 1 сетевым интерфейсом, на котором поднят почтовый сервер. Порты IMAP и POP3 доступны только с определенных IP.
Потребовалось дать доступ к просмотру почты пользователям с мобильных устройств, к сожалению открыть доступ к IMAP\POP3 для всех не представляется возможным, поэтому было принято решение установить на этом же сервере OpenVPN, с NAT’ом всего проходящего трафика.

Информация о конфигурации:
Публичный IP адрес сервера: 11.11.11.11;
Виртуальная сеть OpenVPN: 10.20.30.0/24;
Dovecot поднят на всех интерфейсах.

Одна из основных идей заключалась в том, что пользователи из доверенных сетей подключаются с помощь почтовых клиентов с использованием DNS имени, например smtp.domain.ru (реальный домен), для того, что бы при подключении к OVPN не менять настройки почтовой программы на 10.20.30.1 был поднят DNS сервер (BIND) с такой же зоной domain.ru, где smtp.domain.ru резолвится в 10.20.30.1.

Теперь проблема: столкнулся с ней на Windows 7, с использованием OpenVPN GUI, при попытке пинга адреса по DNS имени smtp.domain.ru адрес резовлится не в 10.20.30.1, а в 11.11.11.11. При этом, если набрать nslookup, то все будет отлично, резолв происходит и прямой, и обратной зоны, с сервера, который выдался OpenVPN по DHCP, т.е. 10.20.30.1.

ipconfig /flushdns не помогает

Рассмотрение трафика на клиенте с WireShark показало, что DNS запросы в проблемное время идут не на 10.20.30.1, а на шлюз локальной сети клиента — 192.168.0.1.

Источник

OpenVPN не меняет DNS на клиенте

В конфиге сервера (Lubuntu 16.04) прописано:

push «redirect-gateway def1 bypass-dhcp»

push «dhcp-option DNS 208.67.222.222»

push «dhcp-option DNS 208.67.220.220»

На клиенте (Ubuntu 18.04) УТЕЧКА DNS УСТРАНЕНА (DNS теперь не идёт через моего провайдера при конекте к VPN), но при подключении к серверу, DNS меняется не на OpenDNS (те, что в конфиге сервера), а на DNS провайдера сервера. При подключении с Android всё ок, https://www.dnsleaktest.com показывает сервера OpenDNS.

Читайте также:  Unifiedui exe не работает как исправить

Могу приложить конфиги сервера и клиента.

Скажи спасибо systemd, который всё делает через жопу и сует свои поганые шупальца куда не просят, и иди его настраивать.

А поподробнее можно? Или ссылку

В твоей вселенной гугл не изобрели еще?
openvpn dns systemd

Читай новости украины. Гугла в России блокирует розкомнадзор. Недоступен, короче, гугл во вселенной России.

Не, пока вы тут его сравнивали с землей, мне было странно, но когда он отказывался запускать мой postges в режиме восстановления, я стал его недолюбливать.

Удалил openresolv, поставил openvpn-systemd-resolved. Сейчас в конце конфигурации записано следующее:

Подключай клиент не через NetworkManager, а отдельно сервисом openvpn, это он (NM) сливает DNS, недавно кучу времени убил.

Вот пример моего конфига клиента /etc/openvpn/client.conf:

Предварительно конечно же нужно поставить сам openvpn.

Кстати, NM выпиливать не обязательно, основное соединение может устанавливаться через него.

Внимательнее

Я же в сообщении выше написал, что запускаю через команду в терминале.

Re: Внимательнее

dpkg -l | grep resolvconf

если не стоит, ставишь пакет. Добавляешь в конфиг клиента:

Вы совершенно не поняли сути проблемы.

Я уже пробовал и resolvconf и openresolv. Сейчас у меня стоит openvpn-systemd-resolved. Они все работаю примерно одинаково. И мне нужно НЕ чтобы OpenDNS прописывались в /etc/resolv.conf, а чтобы чапросы шли через VPN тунель на сервер, а от туда на OpenDNS. Если DNS запросы будут идти через моего провайдера, я потеряю половину смысла от личного VPN-сервера.

OpenVPN не меняет DNS на клиенте
push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»

И мне нужно НЕ чтобы OpenDNS прописывались в /etc/resolv.conf

Вы уж определитесь что вам нужно.

В последнем ответе я изложил хотелку: DNS запросы идут через VPN на сервер, а от туда на выбранный мною DNS.

А можно прописать в DNS на клиенте адрес сервера и «научить» сервер перенаправлять запросы на нужный мне DNS? Если да, то как это реализовать

Точнее не внешний адрес сервера, а внутренний, который используется для VPN тунеля

На сервере поставить dnsmasq и его адрес прописать клиенту.
Только не понятно зачем вам это.

Так мне же надо, чтобы запросы не шли через моего провайдера.

И мне нужно НЕ чтобы OpenDNS прописывались в /etc/resolv.conf

Это кто написал?

Есть еще один вектор атаки. Практически везде на линуксах, в роутерах и т.д. используется dnsmasq — кеширующий dns сервер. У каждого резолва есть TTL несколько минут, если dns’ы гугла отдают ip по геопривязки, то в принципе они могут задетектить, что даже если ip из страны Х, то запрос пришел на сервер для станы Y (потому что dnsmasq вернул закешированный адрес).

Перепутал, хотел ответить в теме «Утечка DNS на уровне роутера? » 🙂

Re: Вы совершенно не поняли сути проблемы.

Да это ты не понимаешь чего хочешь.

DNS запросы идут через VPN на сервер, а от туда на выбранный мною DNS.

Они и так идут через туннель, в случае opendns. А так, поднимай unbound, dnsmasq, etc . И пушь этот локальный адрес. Он пропишется на клиенте. Да и мозгоеб, закрой уже тему.

Я хз, как это делать, иначе не лез бы на форумы.И DNS-запросы не идут через тунель.

Источник

Оцените статью