Вы вводитеfilesв эмуляторе терминала, и ничего не возвращается; вы вводитеfiles.corp.exampleи тот же сервер отвечает сразу. В учётных данных VPN ничего не изменилось, и приватный DNS-сервер никогда не ломался. В Android короткая метка и полное имя идут разными путями через резолвер, и один из этих путей зависит от параметра, который должен предоставить владелец туннеля. Решение перед вами — не какой DNS-сервер менять, а кто контролирует сеть, которую приложение действительно использует.

Домен поиска — это не адрес. Это список суффиксов, которые резолвер добавляет к голой метке, прежде чем сдаться.

Суффикс поиска и DNS-сервер — разные поля

Адрес резолвера говорит Android, куда обращаться. Суффикс поиска говорит, о чём спрашивать, когда вы указываете только самую левую метку. Оба живут на одном и том же сетевом объекте, и любой из них может отсутствовать сам по себе.

Именно эта независимость объясняет, почему полное имя хоста работает. Полностью определённому имени суффикс не нужен, потому что оно уже является строкой, которая уходит на сервер.

Android показывает это разделение черезLinkProperties. Список DNS-серверов и список поиска доменов находятся на одном объекте, и второй часто пуст даже тогда, когда первый заполнен полностью. Сеть с резолвером, но без домена — это сеть, в которой суффикс никогда не применялся, а не сервер, который отказал в коротком имени.

Прочитайте действующую сеть, прежде чем что-то менять

Wi-Fi, мобильная сеть и интерфейс VPN — три отдельные сети, и туннель становится основным, как только поднимается. Поэтому суффикс, работавший в офисном Wi-Fi, не обязательно является суффиксом, действующим при активном туннеле. Проверяйте сеть, на которой приложение действительно выбрано, а не ту, которую вы настроили на прошлой неделе.

Оболочка терминала на устройстве здесь плохой свидетель, потому что еёresolv.confотражает один взгляд на резолвер, а не взгляд каждого приложения.

Адресные строки браузеров добавляют ещё один слой: голое слово может трактоваться как поисковый запрос или разрешаться черезсобственную политику браузера в отношении зашифрованного DNS, поэтому страница, загружающаяся в Chrome, ничего не доказывает о системных запросах. Проверяйте чем-то, что использует резолвер платформы и печатает, что вернулось. Затем запустите короткую и полную форму в одной сессии, в одной сети, и отметьте, какая дала ответ.

Если вы делаете приложение VPN, прикрепляйте суффикс в конструкторе

Когда ваше приложение поднимает интерфейс черезVpnService,addSearchDomainэто поддерживаемый ввод для этой задачи. Он принимает строку домена, напримерcorp.example, и это не альтернативный способ передать адрес сервера.

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

Именно здесь многие импорты профилей с компьютера теряют это поле. Экспортёр записывает домен в свою модель, фронтенд Android отображает только те опции, которые знает, и получившийся интерфейс выглядит правильным во всех остальных отношениях. Профиль, который работает на ноутбуке и не работает на телефоне, обычно является пробелом в отображении, а не проблемой протокола.

Если вы только пользуетесь VPN, это не вам настраивать

Нет клиентской правки, которая добавляет суффикс, и нет глобального свойства, которое можно изменить, чтобы его подделать. Значение передаёт тот, кому принадлежит туннель: в профиле управляемого клиента, в его отображении по платформам или через то, что присылает сервер. Скажите, на какой вы платформе и какое имя не работает, потому что десктопный и мобильный фронтенды расходятся именно в этом поле.

Повторный импорт профиля с компьютера опять ничего не доказывает про мобильное отображение.

Три условия решают, у вас дефект или ожидаемое ограничение. Во-первых, считает ли организация короткую метку поддерживаемым именем вообще, или это удобство, которое когда-либо работало только в офисном Wi-Fi? Во-вторых, приходит ли неудачный запрос из браузера, который может полностью обойти системный резолвер? В-третьих, короткое имя должно быть доступно через туннель или только из LAN? Если последний ответ — только LAN, добавление суффикса создало бы имя, которое разрешается вне офиса и затем не маршрутизируется.

Когда суффикс есть, а короткие имена всё равно не работают

Если список поиска доменов уже показываетcorp.example, перестаньте винить суффикс. Проверьте, возвращает ли резолвер вообще ответ для расширенного имени, потому что суффикс меняет только задаваемый вопрос. Он никогда не делает сервер полномочным для зоны, которую тот не обслуживает.

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

Сертификаты заслуживают отдельного упоминания. Проверка HTTPS использует имя хоста, которое вы действительно ввели, поэтому короткое имя, правильно расширяющееся, всё равно предъявляет в рукопожатииfiles. Сертификат, выданный дляfiles.corp.example, не будет для него действителен, и эта ошибка — правильное поведение, а не симптом проблемы DNS, с которой вы начали.

Что делать дальше

Подтвердите разделение, прежде чем что-либо трогать: полное имя разрешается, короткое нет, то же приложение, та же сессия. Затем найдите выбранную сеть и прочитайте её список поиска доменов рядом со списком резолверов. Любой из двух, который пуст, говорит вам, кто должен действовать — вы, если приложение ваше; оператор туннеля, если нет.

Наконец, предпочитайте полное имя службы в закладках и клиентской конфигурации там, где важна переносимость. Оно переживает смену сети, не зависит от отображения, которое мобильный фронтенд может не реализовать, и совпадает с именем, для которого выдан сертификат.

Похожие статьи