Вопрос или проблема
На моем рабочем VPN есть DNS-сервер 10.92.131.26, который, похоже, настраивается на моем компьютере, когда я подключаюсь к нашему серверу VPN anyconnect. Когда я выполняю nslookup server
на своем рабочем месте с Linux, я получаю SERVFAIL для этого:
;; Получен ответ SERVFAIL от 10.92.131.26, пробую следующий сервер
Сервер: 10.50.177.208
Адрес: 10.50.177.208#53
** сервер не может найти сервер: SERVFAIL
Но когда я открываю виртуальную машину Windows на своем рабочем месте и выполняю nslookup
, она успешно работает для того же самого DNS-сервера.
Сервер по умолчанию: a.company.domain
Адрес: 10.92.131.26
Почему так?
TMI: Почему мне это интересно? На работе наша система MFA накладывает дополнительные ограничения, когда я пытаюсь получить доступ к определенным сайтам компании с моего компьютера под управлением Linux, но я не сталкиваюсь с этими ограничениями, когда запускаю Windows, или когда пытаюсь с виртуальной машины Windows из своей системы Linux. (И я не могу удовлетворить эти дополнительные ограничения, так как ИТ, похоже, не планировала, что кто-то на самом деле столкнется с ними легитимно.)
ИТ говорит мне:
Обычно это связано с проблемой маршрутизации VPN к [нашим] серверам… Попробуйте в Google Chrome, если по-прежнему не работает, так как Firefox иногда использует свои собственные DNS для разрешения адресов, и это может вызвать эту ошибку, в то время как Chrome просто будет работать.
…И действительно, их утверждение кажется обоснованным: в виртуальной машине Windows мои попытки через Chrome удачны, а попытки через Firefox — нет. Тем не менее, мои попытки на моем Linux-хосте вообще не работают.
Я wonder, удастся ли мне выполнить запросы из Linux, если я смогу настроить мой компьютер с Linux на использование 10.92.131.26 в качестве своего DNS-сервера.
Выводы
Обновление: по запросу, вот выводы для netstat -rn
на каждой машине. Они довольно длинные, поэтому я просто ссылаюсь на pastebin: на Linux, на Windows
Вот tracert 10.92.131.26
из виртуальной машины Windows:
Отслеживание маршрута до 10.92.131.26 с максимальным количеством 30 переходов
1 29 мс 27 мс 25 мс 192.168.100.1
2 35 мс 31 мс 33 мс 173.36.212.117
3 35 мс 34 мс 29 мс 50.216.158.108
4 41 мс 35 мс 37 мс 10.92.131.26
Отслеживание завершено.
Поскольку ситуация становится немного более сложной, чем это можно выразить в комментариях, я использую ответ.
Мы видим две машины:
- Машина с Linux, с IP, вероятно, в 192.168.68.0/24 и шлюзом 192.168.68.1
- Виртуальная машина с Windows, с IP в 10.0.2.0/24 и шлюзом 10.0.2.2.
Сеть 10.0.2.0/24 — это то, что видит виртуальная машина. Теперь нам не хватает немного информации. Я предполагаю, исходя из приведенной выше информации, что виртуальная машина Windows имеет мостовой адаптер, и VPN настроен с хоста Linux. Пожалуйста, подтвердите это.
Если хост Linux предоставляет VPN, он должен иметь возможность достигать шлюза VPN. С помощью ifconfig
вы должны увидеть IP-адрес на интерфейсе tun. Вы должны иметь возможность достичь шлюза на VPN-туннеле, иначе вы не сможете маршрутизировать ничего через туннель.
Ваша виртуальная машина Windows видит 10.0.2.2 как шлюз на VPN; следовательно, ваш хост Linux также должен видеть это как маршрутизатор. Поэтому странно, что вы получили недоступную сеть, добавляя конкретный маршрут на вашем Linux-компьютере; вы уверены, что VPN был активен, когда вы пытались добавить маршрут?
В качестве дополнительной отладочной информации tracert
от клиента Windows к 10.92.131.26 будет полезен.
Ответ или решение
Решение проблемы: nslookup возвращает SERVFAIL на Linux, но не на Windows
Проблема, с которой вы столкнулись, связана с различиями в конфигурации сети и разрешении DNS между вашей Linux-системой и Windows VM. Рассмотрим несколько аспектов, которые могут помочь в диагностике и устранении этой проблемы.
1. Различия в конфигурации сети
Наиболее вероятной причиной получения ответа SERVFAIL на Linux является проблема с маршрутизацией или настройками DNS-сервера. Обратите внимание на следующие моменты:
-
IP-адреса и шлюзы: Наличие различных подсетей на Linux и Windows VM может повлиять на доступность ресурсов VPN. Запрашивайте у вашей IT-службы информацию о правильной конфигурации.
-
VPN и маршрутизация: Убедитесь, что VPN действительно настроен правильно, и ваш Linux-обозреватель правильно передаёт трафик через туннель. Старые маршруты могут конфликтовать с новыми, установленными при соединении с VPN. Для этого используйте команду
ip route
на Linux, чтобы проверить, передается ли трафик через VPN.
2. Решение DNS
Возвращение SERVFAIL обычно указывает на проблему с DNS:
-
Настройки DNS: Убедитесь, что ваш Linux работает с 10.92.131.26 в качестве DNS-сервера. Это можно проверить и изменить в файле
/etc/resolv.conf
. Убедитесь, что у вас есть правильная запись:nameserver 10.92.131.26
-
Проверка доступности DNS: Используйте команду
dig
для более детального анализа:dig @10.92.131.26 server
Если эта команда также возвращает ошибку, возможно, проблема в самом DNS-сервере.
3. Различия в браузерах
Замечания по поводу проблем с разрешением в разных браузерах важны. Firefox иногда использует альтернативные DNS-серверы через функции, такие как DNS-over-HTTPS, что может повлиять на результаты. Вы можете отключить эту функцию в настройках Firefox.
4. Трассировка маршрута
Ваше использование команды tracert
из Windows VM показывает, что этот компьютер может успешно добраться до DNS-сервера. Чтобы проанализировать маршрут из Linux, используйте аналогичную команду:
traceroute 10.92.131.26
Это даст вам понимание, существует ли проблема на маршруте.
5. Дополнительные рекомендации
- Логи: Проверьте логи вашего VPN-клиента на наличие каких-либо ошибок или предупреждений.
- Файрвол: Убедитесь, что на вашей Linux-системе нет настроек файрвола, которые блокируют доступ к DNS-серверу.
- Проверка конфигурации: Сравните сетевые конфигурации обоих устройств:
/etc/netplan
или/etc/network/interfaces
на Linux и параметры сетевого адаптера на Windows VM.
Заключение
Проблема, с которой вы столкнулись, — это сложный вопрос, требующий внимательного анализа конфигураций сети и разрешения DNS. Советую обратиться за помощью к специалистам из IT-отдела вашей компании, предоставив им всю доступную информацию и результаты тестов для более быстрой диагностики проблемы.