Проблема с dns при vpn

Обновлено: 06.07.2024

Вопрос так и стоит

Иными словами, IP адрес внутренней сетки пингуется, а по имени не идет.

Т.е. DNS-ы работают "не в той" последовательности.

Печаль в том, что заработают в "той" последовательности, отвалится родная сеть. Ну она не полностью отвалится, PPTP подключение будет продолжать работать.

Все верно, подключение будет, и будет работать. но как быть с именами?

Видимо, это стоит оставить до лучших времен, когда Microsoft , что нибудь придумает.

Поскольку красивых решений никто не смог предложить, кроме как ручками передвигать адреса DNS серверов, или прописывать в файле hosts, локальные привязки имен к адресам.

итого прошло 9 лет. есть ли адекватное решение. я не нашла

как было описано выше, исходная ситуация такая:

1) LAN адаптер, который подключен к LAN1 и получает ip адрес и DNS для сети LAN1

2) VPN соедиение в сеть заказчика LAN2, адаптер VPN содениения получает ip адрес и dns из сети заказчика.

2) VPN соединение L2tp\IPsec в сеть заказчика (в офис), адаптер VPN соединения получает ip адрес и dns из сети заказчика

никакие записи в hosts не прописывались

The DNS Client service queries the DNS servers in the following order:

  1. The DNS Client service sends the name query to the first DNS server on the preferred adapter’s list of DNS servers and waits one second for a response.
  2. If the DNS Client service does not receive a response from the first DNS server within one second, it sends the name query to the first DNS servers on all adapters that are still under consideration and waits two seconds for a response.
  3. If the DNS Client service does not receive a response from any DNS server within two seconds, the DNS Client service sends the query to all DNS servers on all adapters that are still under consideration and waits another two seconds for a response.
  4. If the DNS Client service still does not receive a response from any DNS server, it sends the name query to all DNS servers on all adapters that are still under consideration and waits four seconds for a response.
  5. If it the DNS Client service does not receive a response from any DNS server, the DNS client sends the query to all DNS servers on all adapters that are still under consideration and waits eight seconds for a response.

If the DNS Client service receives a positive response, it stops querying for the name, adds the response to the cache and returns the response to the client.

If the DNS Client service has not received a response from any server within eight seconds, the DNS Client service responds with a time-out. Also, if it has not received a response from any DNS server on a specified adapter, then for the next 30 seconds, the DNS Client service responds to all queries destined for servers on that adapter with a time-out and does not query those servers. Only computers running Windows 2000 or Windows Server 2003 return this time-out.

If at any point the DNS Client service receives a negative response from a server, it removes every server on that adapter from consideration during this search. For example, if in step 2, the first server on Alternate Adapter A gave a negative response, the DNS Client service would not send the query to any other server on the list for Alternate Adapter A.

date

09.04.2020

directory

Windows 10, Windows Server 2016

comments

комментариев 18

В 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

Get-NetIPInterface

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

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

Turn off smart multi-homed name resolution политика DNS клиента

Или командами (для 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, если уменьшите его метрику.

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

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

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

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

установить метрику LAN интерфейса вручную в Windows 10

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

Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 120

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

netsh int ip set interface interface="Ethernet 3" metric=120

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

метрика для VPN подключения

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

dummyman

Вероятно, вы забыли что-то добавить в конфиг, всегда есть возможность установить dns-ы индивидуально локально.

Перезагружаем
sudo service network-manager restart

Вроде оно. Если ошибка повторяется, то можно добавить влоб

Есть вариант поставить dnsmasq

По аналогии перезагрузить и пользоваться.
sudo service dnsmasq restart

cat /etc/resolv.conf
это не помогло, ДНС остался только nameserver 127.0.1.1

а этого файла у меня НЕТУ ВООБЩЕ /etc/dhcp/dhclient.d/mydns.conf

Есть вариант поставить dnsmasq

sudo echo "server=8.8.8.8" >> /etc/dnsmasq.conf
sudo echo "server=8.8.4.4" >> /etc/dnsmasq.conf

НЕТУ У МЕНЯ ЭТИХ ФАЙЛОВ

dummyman

nosazus:
Все делать на клиенте.
/etc/resolvconf/resolv.conf.d/base
/etc/resolvconf/resolv.conf.d/head
/etc/dhcp/dhclient.d/mydns.conf
должны создаться.

dnsmasq еще нужно установить.
apt-get install dnsmasq

dummyman

Потому что убунта.

Ставил бы сразу слаку - не видел бы проблем!

Спасибо вам за советы. Вчера ночью психанул и бросил. Сегодня проснулся, загрузил комп и в /etc/resolv.conf появился nameserver 8.8.4.4. Попробовал подключится к ВПН - и он заработал. Не знаю почему. Ничего не менял. Получается перезагрузка обяхательно нужна после этих манипуляций? Я перезагружал только NetworkManager вчера. Делал только это:

sudo echo "nameserver 8.8.8.8" > /etc/resolvconf/resolv.conf.d/base
sudo echo "nameserver 8.8.4.4" > /etc/resolvconf/resolv.conf.d/head

Слака - это Slackware? Я читал что вроде ее бросили развивать. ВОобще думаю над переходом с Убунты, вы правы. Думал чистый Дебиан, но прочитал что там проблемы с вай-фаем после установки ОС, надо плясать. dummyman: sshuttle ОЧЕНЬ интересно. Я только вчера читал как тунеллировать через SSH, но встречал инструкции только как по отдельности направлять траффик, для SMTP, TCP и тд. Получается можно сразу все завернуть? Попробую!

dummyman

nosazus: слака жива. почему я говорю, что с ней бы не было таких проблем? когда вы дойдете до настройки dns, вы уже будете уметь программировать хотя б на базовом уровне, компилировать ядро, вносить коррективы в код Патрика. Вы будете в курсе обо всех компонентах, обеспечивающих работу сети. А уж конфиг dns для вас не будет вопросом.

dummyman написал варианты решения проблемы но не написал причины, куда можно посмотреть повнимательнее :
Если до подключения интернет работает а после - нет, значит вы в конфигурации VPN при подключении отдаете неверные DNS сервера с VPN сервера на ваш клиент. Это первый вариант, который можно проверить.
Путь решения описал dummyman :
- Вписать гарантированно работающие DNS серверы в ваш resolv.conf
- использовать dnsmasq и резолвить DNSы только через него, игнорируя приходящие настройки (это, по сути, еще одна программная прослойка которую нужно корректно настроить, поэтому этот путь спорный)
Я бы добавил еще путь "проверить настройки на VPN сервере : что отдается клиенту при подключении в качестве настроек сети(dns серверы)

Второй вариант проблемы - используемые вами до подключения DNS серверы пытаются ходить в интернет через VPN, а VPN им не разрешает по какой-то причине. Здесь только проверка (tracepath до прописанного в конфиге DNS сервера) и после получения результата - корректная настройка того узла где трейс теряется. Или же добавление маршрутов к DNS серверам через ваше интернет подключение, чтобы не ходили DNSы через VPN.

P.S. прочитал комментарии к ответу:


Что-то у вас намудрено. Проверьте для начала работоспособность интернета и содержимое /etc/resolv.conf без подключенного VPN.

Спасибо вам за советы. Вчера ночью психанул и бросил. Сегодня проснулся, загрузил комп и в /etc/resolv.conf появился nameserver 8.8.4.4. Попробовал подключится к ВПН - и он заработал. Не знаю почему. Ничего не менял. Получается перезагрузка обяхательно нужна после этих манипуляций? Я перезагружал только NetworkManager вчера. Делал только это:

sudo echo "nameserver 8.8.8.8" > /etc/resolvconf/resolv.conf.d/base
sudo echo "nameserver 8.8.4.4" > /etc/resolvconf/resolv.conf.d/head

dummyman

yellowmew: Да тут вопрос не в эталонной настройке vpn. Автору бы сначала сделать чтобы работало хоть как то. Знаю как это выглядет. Сотни вкладок с форумами на слабеньком нетбуке. Дикая головная боль.

А с нынешним количеством гайдов по настройке openvpn сложно понять что именно было упущено. Там надо принимать во внимание и тонкости дистрибутивов и особенности хостера. Как бы, уже надо разбираться что и как. А в настройках локально сложно что-либо упустить.

Граммотная настройка vpn придет с количеством настроенных серверов. А для первых разов на какое-то время сойдет и так. Понятное дело, что это не совсем правильно, но ведь и автор вопроса занят личными или корпоративными задачами (делами), а не написанием гайда по настройкам.

Пробовали, ваше мнение?

dummyman

?u=http%3A%2F%2Ffiles.cyberciti.biz%2Fup

nosazus: ну конкретно этот я не пробовал. Полследний раз vpn настраивал год назад. Вручную как-то надежнее. Ну а по добавлению / удалению юзера у меня свои скрипты. А автору вашего скрипта советовал бы использовать dialog если хочется добавить интерактива.

DNS-серверы и суффиксы, настроенные для VPN-подключений, используются в Windows 10 для разрешения имён с помощью DNS в режиме Force Tunneling (принудительного туннелирования) (включён параметр Use default gateway on remote network («Использовать шлюз по умолчанию в удаленной сети»)), если ваше VPN-подключение активно. В этом случае вы не можете преобразовать DNS-имена в своей локальной сети или получить доступ в Интернет через внутреннюю локальную сеть.

В то же время вы можете проверить связь с любыми ресурсами в вашей локальной сети (попробуйте проверить связь со своим шлюзом, соседним компьютером или IP-адресом принтера). Они доступны только по IP-адресам, но не по именам хостов. Дело в том, что Windows 10 пытается разрешить имена хостов в вашей локальной сети через DNS-серверы, указанные в настройках VPN-подключения.

Я нашёл несколько рекомендаций по отключению протокола IPv6 для вашего локального (LAN) интерфейса, и это поможет, если вы хотите использовать режим Force-Tunneling.

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

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

Проверьте значения всех метрик сетевого интерфейса из PowerShell:


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

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

В английской версии: Computer Configuration → Administrative Templates → Network → DNS Client → Turn off smart multi-homed name resolution = Enabled.


Или вы можете отключить SMHNR, используя следующие команды (в Windows 8.1):

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

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

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

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

Перейдите в Панель управления → Сеть и Интернет → Центр управления сетями и общим доступом → Изменение параметров адаптера (либо используйте путь «Панель управления\Сеть и Интернет\Сетевые подключения»). Затем откройте свойства вашего Ethernet-соединения, выберите «IP версии 4 (TCP/IPv4)». На вкладки «Общие» нажмите кнопку «Дополнительно». Снимите флажок «Автоматическое назначение метрики» и измените метрику интерфейса на 120.


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

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

Таким же образом вы можете уменьшить значение метрики в свойствах вашего VPN-соединения.


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

При выполнении команд ping и tracert вы можете заметить, что при вводе в командной строке (подробнее о ней вы можете прочитать в нашей статье)

realnyj-dns-kak-skryt-1

Что значит DNS?

DNS (Domain Name System) – это система доменных имен. Она связывает названия сайтов с IP-адресами, на которых располагаются страницы этого сайта.

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

Что происходит после того как вы ввели имя сайта в адресной строке браузера?

После того как вы ввели имя сайта в браузере, происходит обращение к файлу hosts, в идеале в нем содержится только одна строчка

Далее запрос отправляется DNS серверу вашего интернет-провайдера. Если информация о сайте не была найдена на этом DNS сервере, обращение производится к первичному DNS серверу.

Что такое DNS-сервер

DNS-сервер, как и любой сервер, это компьютер в интернете, который хранит сведения о соответствии адресов сайтов IP адресам серверов.

Как мы уже сказали, в первую очередь происходит обращение к ближайшему DNS серверу. На нем хранится история запросов или кэш. Кэш служит для сокращения времени ответа на запрос с компьютера пользователя.

Почему при смене IP виден ваш реальный днс

realnyj-dns-kak-skryt-2

TOR и анонимайзеры в принципе не следят за подменой DNS, а различие IP и DNS при использовании VPN может быть связано с особенностью работы службы DNS Windows. При использовании VPN все запросы в первую очередь посылаются на DNS сервер поставщика VPN. Если ответ не был получен в течение 2 секунд, запрос направляется к ближайшему к вам DNS серверу. Именно эти сервера и выдают ваше реальное местоположение. Задержка ответа от DNS сервера поставщика VPN может происходить из-за низкого качества интернет-соединения или удаленности DNS сервера поставщика VPN.

dns test

dns test-2

Что делать, если утечка обнаружена и вы хотите устранить уязвимость? Вы можете использовать надежный VPN-сервис с защищенными серверами.

Как обойти dns отслеживание при использовании VPN

Для предотвращения утечки DNS при использовании VPN вы можете:

  1. Настроить параметры подключения в операционной системе вручную. В результате чего, при подключении будет использоваться только нужный DNS сервер. Подробнее о том, как сменить DNS вы можете почитать здесь. Будьте очень внимательны: при ручной настройке DNS ошибки в переадресации на нужные DNS-серверы является очень частыми.
  2. Использовать Whoer VPN client

Whoer VPN подменяет одновременно IP и DNS, используя собственные быстрые защищенные DNS-серверы. Страны IP и DNS при этом всегда будут совпадать, чтобы не вызывать подозрений у посещаемых вами сайтов.

dns whoer

DNS-серверы Whoer VPN гарантируют безопасность и надежность соединения, сервис не ведет логов, и вся переданная информация и данные соединения остаются строго конфиденциальными.

Читайте также: