Имена хостов VPN не работают, а IP-адреса работают: где искать
Доступ по IP работает, а имена сбоят — это указывает на суффиксы и навязанные резолверы, а не на маршруты. Пройдите адрес, FQDN, короткое имя и старый путь.
Вы можете открыть общую папку по адресу, а та же папка по имени не открывается, значит туннель передаёт пакеты, а уровень имён — нет. Это одно наблюдение избавляет от обхода через изменения межсетевого экрана и маршрутов. Именам нужны суффикс, резолвер и путь для запроса, а клиент VPN может установить маршрут, не установив ни одного из них. Пройдите четыре проверки ниже по порядку и остановитесь на первой, которая сломается.
Имя задаёт вопрос, которого адрес не задаёт
Адрес — это назначение, которое стек может использовать сразу. Короткое имя — это вопрос, который нужно расширить суффиксом, отправить резолверу и получить ответ от чего-то, что знает зону. Туннель, который устанавливает маршруты, но не резолвер, оставляет первое работающим, а второе сломанным. Поэтому симптом выглядит так согласованно в очень разных продуктах VPN.
Работайте от адреса наружу: сначала полное имя, затем голое имя хоста, и отметьте, какое из трёх работает. Шаблон подсказывает, какой уровень проверять, прежде чем открыть хоть один экран настроек. Гадать о маршрутах, когда FQDN разрешается, — бесполезный труд.
Прочитайте резолвер, который туннель действительно установил
Спросите операционную систему какой резолвер обрабатывает запросы для внутренней зоны, а не какой объявляет интерфейс клиента VPN. Сервер, который навязывает публичный резолвер без внутренней зоны, даёт ровно этот отказ, и это ошибка настройки, а не сбой маршрутизации.
resolvectl status
nslookup fileserver.corp.example
nslookup fileserver
На клиенте Windows, присоединённом к домену, политика маршрутизации пространства имён решает, какие запросы идут к какому резолверу, а собственные DNS-настройки адаптера VPN видны в сведениях об адаптере. Читайте действующую политику, а не профиль, потому что кэшированная политика может пережить подключение, которое её установило. Если резолвер отвечает на полное имя, но не на короткое, проблема уже перешла в список суффиксов.
Get-DnsClientNrptPolicy
ipconfig /all
Остановитесь, если внутренняя зона разрешается через правильный сервер. Резолвер — не ваша проблема.
Суффиксы объясняют короткие имена, которые не работают
Имя с одной меткой расширяется списком суффиксов подключения перед отправкой запроса. Если VPN не доставляет внутренний суффикс, fileserver никогда не становится fileserver.corp.example, и запрос уходит как имя, которого не знает ни один публичный резолвер. Навязывание суффикса или ввод полного имени проверяет гипотезу, ничего не меняя на сервере.
nslookup fileserver.corp.example
ping -a 192.168.50.20
В Linux служба резолвера привязывает DNS-сервер к каналу и набору доменов маршрутизации, поэтому навязанный сервер, не связанный с каналом туннеля, ведёт себя так, будто его нет. Проверяйте состояние по каналу, а не stub-файл, который может указывать только на локальный резолвер. То же разделение видно и в обратную сторону: домен поиска, который присутствует, но не применён к интерфейсу туннеля, даёт отказы коротких имён, выглядящие случайными.
Если добавление суффикса это исправляет, остаётся доставить этот суффикс через профиль VPN вместо того, чтобы просить каждого пользователя вводить его.
NetBIOS и WINS — другой механизм
Старый SMB всё ещё может искать голое имя службой имён NetBIOS, которая отвечает широковещательно или через сервер WINS. Широковещание остаётся в одном широковещательном домене и останавливается на первом маршрутизаторе, поэтому не может пройти через туннель; WINS работает, потому что у клиента есть одноадресный адрес, на котором регистрироваться и который опрашивать. Поэтому VPN, несущий только IP, всё ещё может поддерживать старые имена, когда WINS настроен и доступен.
nbtstat -n
nbtstat -R
Для современного SMB полагайтесь на DNS и полное имя, а старый путь отправьте на пенсию. Если он действительно старый, предоставьте WINS или замените приложение; середина — это очередь поддержки, которая никогда не пустеет.
Проход завершается, когда вы можете сказать, какой уровень отказал: резолвер, суффикс или старое обнаружение. Запишите резолвер, который ответил, и форму имени, которая сработала, потому что следующий человек начнёт с того же симптома.