DNS не работает в Bash (Ubuntu) на Windows при использовании VPN

DNS не работает в Bash (Ubuntu) на Windows при использовании VPN

Я только что начал тестировать «Bash на Ubuntu на Windows», и мне нравится!

Проблема в том, что мне нужно использовать VPN для доступа к нашим бэкенд-серверам и серверам разработчиков. И при попытке (например) подключиться по ssh к нашему серверу разработки с помощью оболочки Windows Bash он не может разрешить имя хоста.

Обратите внимание, что я могу использовать ssh, используя IP-адрес, и эти имена хостов также прекрасно работают в других местах Windows. Например, с putty, обычным cmd, File Explorer и т. д.

Я также проверил /etc/resolv.conf и увидел там наш рабочий сервер имен.

С этого момента мои навыки работы с сетями становятся неудовлетворительными, особенно с Linux, поэтому, пожалуйста, помогите :D

решение1

Это проблема маршрутизации, а не ошибка WSL. Очень вероятно, что ваша локальная подсеть совпадает с удаленной подсетью. И я предполагаю, что вы используете мостовой VPN.

Я столкнулся с той же проблемой. Я использую OpenVPN для соединения моего офиса (удалённого) и моего дома (локального). Обе подсети имеют адрес 192.168.1.0, который является наиболее распространённым, который вы можете найти на многих маршрутизаторах.

В конце концов я решил проблему с помощью следующей конфигурации. Моя цель — использовать tun, чтобы уменьшить накладные расходы и перенаправлять только трафик, где пункт назначения находится в офисе. Однако это также будет работать с мостовым VPN.

;make the dhcp-option works on Windows 10.
script-security 2
;do not accept any pushed route command.
route-nopull
;make sure the connection still go through my home router. This line may not be necessary. You can try to remove this line and see it the VPN works.
route 192.168.1.1 255.255.255.0 net_gateway
;redirect the traffic where the destination is within the 192.168.1.0 subnet to OpenVPN gateway.
route 192.168.1.128 255.255.255.128
route 192.168.1.0 255.255.255.128
;set the DNS server which is in the office
dhcp-option DNS 192.168.1.254
dhcp-option DNS 192.168.1.253
dhcp-option DOMAIN my.company.domain

решение2

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

Вы можете отредактировать файл hosts (/etc/hosts) и добавить запись для имени хоста, которое вы хотите использовать.

Добавьте запись, содержащую IP-адрес, за которым следует пробел и имя хоста.

123.456.1.1 target.host.net

Обратите внимание, что вам понадобится sudoкоманда редактирования.sudo vi /etc/hosts

Для меня редактирование сохраняется в сеансах оболочки bash. Я предполагаю, что это ошибка, которую Microsoft, как я надеюсь, исправит в будущем. Пока я просто использую этот обходной путь.

решение3

У меня та же проблема. Я временно отредактировал /etc/resolv.conf только с одним сервером имен и одним доменом поиска (для сети VPN), и он разрешил имена хостов в этой сети. Это изменение не является постоянным, поэтому выход и перезапуск Bash на Ubuntu в Windows восстановит /etc/resolv.conf до его настроек по умолчанию.

Связанный контент