Локальный ресурс Samba исчез после того, как OpenVPN протолкнул DNS
Протолкнутый резолвер отвечает за имена, которыми не владеет, и Samba ему верит. Проверьте резолвер, порядок поиска и суффикс именно в этом порядке.
Samba теряет локальные ресурсы в тот момент, когда OpenVPN подключается, и туннель почти никогда не бывает причиной. Монтирование в порядке, NAS работает, а резолвер, установленный туннелем, отвечает на вопросы об имени, которого никогда не видел. Samba спрашивает этот резолвер рано в своём порядке поиска, верит ответу и подключается к адресу, где никто не слушает. Починить ресурс означает починить ответ, а не монтирование.
Пять проверок, в том порядке, который на каждом шаге исключает больше всего возможностей.
Кто отвечает за короткое имя
Спросите операционную систему, а не файловый менеджер. resolvectl status выводит DNS-серверы, привязанные к каждому соединению, и отмечает, какое соединение является маршрутом по умолчанию, а запрос короткого имени сообщает сервер, который ответил. Запустите его один раз для имени NAS и один раз для имени, о котором вы знаете, что оно существует в домене офиса. Если два ответа приходят с разных серверов, вы нашли разделение.
Проверьте, был ли ответ отрицательным ответом или адресом. Отрицательный ответ означает, что Samba должна была перейти к другому механизму, и неисправность в другом месте. Адрес означает, что Samba подключилась к реальному месту и ничего не получила.
Почему Samba верит неверному ответу
Samba разрешает имена через фиксированную последовательность, задаваемую name resolve order. В большинстве дистрибутивов значение по умолчанию включает host, то есть DNS, и он выполняется раньше механизмов только для локальной сети, таких как широковещание NetBIOS. Поэтому туннель, проталкивающий резолвер, получает право первого отказа на каждое имя ресурса, включая односоставные имена, которые никогда не должны были покидать здание.
Обычно неизвестное имя возвращает отрицательный ответ, и следующий механизм получает свою очередь. Некоторые резолверы, особенно у потребительских провайдеров и публичные, отвечают на неизвестные имена страницей поиска или рекламным адресом. Такой ответ выглядит для библиотеки резолвера как успех, поэтому Samba перестаёт искать и набирает адрес, не имеющий ничего общего с вашей сетью.
Результат — ресурс, который исчезает без диалога ошибки. Ничто в этой последовательности не является сбоем маршрутизации VPN, поэтому ping до NAS по-прежнему работает, а переход к нему — нет.
Две починки разного охвата
Узкая починка сохраняет протолкнутый резолвер и меняет то, о чём Samba может его спрашивать. Добавьте две строки в конфигурацию Samba, которую демон действительно читает, а затем перезапустите службу:
[global]
name resolve order = wins lmhosts bcast
dns proxy = noБез host в этом списке DNS выходит из пути поиска ресурсов, и односоставные имена остаются в локальном сегменте. Имена офиса по-прежнему разрешаются нормально для любой другой программы, потому что это меняет только Samba. Цена в том, что Samba больше вообще не может использовать DNS, поэтому ресурс, адресованный полным именем офиса, становится проблемой.
Широкая починка устраняет причину: перестаньте проталкивать резолвер, который отвечает за имена, которыми не владеет, или протолкните политику раздельного DNS, чтобы до резолвера офиса доходили только суффиксы офиса. Это лучший долгосрочный ответ в управляемой сети, потому что он защищает и браузер, и менеджер пакетов, но требует административного доступа на стороне сервера и клиента, который слушается протолкнутых настроек.
Выберите один осознанно. Смена резолвера меняет разрешение имён для всех приложений сразу, а это запись об изменении, а не правка для звонка в поддержку.
Суффикс может объяснить всё
Если клиент проталкивает и суффикс поиска, короткое локальное имя переписывается в домен офиса до того, как его запросят. Тогда резолвер вовсе не лжёт: у него честно спросили про имя офиса, и он дал правильный ответ. Прочитайте запрошенное имя в выводе резолвера, чтобы отличить это от случая с рекламным адресом, потому что оба сбоя выглядят в файловом менеджере одинаково.
Решение здесь — либо использовать полное локальное имя, либо добавить правило раздельного DNS, владеющее локальным суффиксом. Ни то, ни другое не требует трогать Samba.
Докажите это после переподключения
Проверьте три имени за одну сессию: локальный ресурс по короткому имени, хост офиса по имени и обычный сайт. Если первое работает, а второе ломается, починка перенесла неисправность вместо того, чтобы устранить её. Если ломается третье, изменение резолвера зашло дальше задуманного, и каждый поиск теперь подозрителен.
Затем отключите и снова подключите туннель и повторите все три. Протолкнутые параметры применяются заново при каждом подключении, поэтому починка, существовавшая только во время работы, может исчезнуть без изменения файла конфигурации. Запишите резолвер, владеющий каждым суффиксом, и действующий порядок поиска, и отметьте дату, потому что следующее обновление клиента — очевидный подозреваемый, когда это вернётся.
Если ресурс всё ещё не работает после всех пяти проверок, зафиксируйте точный запрос и точный ответ, прежде чем менять что-то ещё. Эта пара строк отличает сбой резолвера от имени, которого действительно не существует, и это самая быстрая записка для передачи, которую вы можете написать.