
Я постараюсь предоставить как можно больше информации. Я все еще новичок в Linux, но в настоящее время на моем медиасервере установлена ОС Ubuntu Server 18.04.4, и я пытаюсь установить статический IP-адрес.
Я нашел множество руководств в Интернете, я могу заставить это работать нормально, отредактировав файл под названием 50-cloud-init.yaml
, и вот какие настройки у меня были:
network:
renderer: networkd
ethernets:
eno1:
dhcp4: no
addresses: [192.168.2.46/18]
gateway4: 192.168.2.1
nameservers:
addresses: [192.168.2.1,1.1.1.1]
dhcp4-overrides:
hostname: starlight01
send-hostname: yes
use-hostname: yes
version: 2
Теперь это работает отлично, и я все делаю правильно sudo netplan apply
, и могу просматривать свои общие ресурсы Samba, выполнив команду . \\192.168.2.46\
Однако у меня есть несколько приложений, которые используют имя машины, а не IP-адрес, и по какой-то причине, когда это динамический IP-адрес, я могу ввести \\starlight01\
, но это внезапно перестает работать, когда я использую имя машины/хоста.
Я также хотел бы добавить, что к каждой машине перестает быть возможным доступ по имени машины.
Если у него статический IP, я могу выполнить ping по IP и получить ответ, но ping по имени машины приводит к тайм-ауту, а ping с динамическим IP работает нормально для обоих случаев.
Я также попробовал следующее:
- перезагрузка моего маршрутизатора и связанных с ним коммутаторов
- перезагрузка сервера
- dns flush на моей машине с Windows
- перезагрузка моей машины с Windows
- удаление
dhcp4-overrides
раздела указанного файла
решение1
Ваша клиентская машина всегда подключается к серверу, используя IP-адрес. Когда вы просите ее подключиться, используя имя машины, она внутренне преобразует имя в IP-адрес, используя некоторую службу. Существует множество служб преобразования имя->IP, и вы, вероятно, полагаетесь на DNS (систему доменных имен) в вашем случае. Другие варианты: WINS, MDNS, LLMNR, ... Ваша клиентская машина, вероятно, использует ваш сетевой/Wi-Fi-маршрутизатор (или комбинированный маршрутизатор/модем) в качестве DNS-сервера, который использует информацию из DHCP-запросов для создания локальной таблицы сопоставления имя->IP, которую он использует для ответа на некоторые DNS-запросы, сделанные вашей клиентской машиной.
Что происходит, когда на сервере включен DHCP:
- Когда серверу необходимо получить собственный IP-адрес, он отправляет DHCP-запрос на DHCP-сервер; обычно это ваш WiFi-маршрутизатор или маршрутизатор+модем.
- Запрос DHCP включает имя машины, отправившей запрос DHCP.
- DHCP-сервер назначает устройству IP-адрес и записывает пару IP/имя во внутреннюю базу данных.
- DHCP-сервер возвращает IP-адрес серверу для использования.
- Всякий раз, когда другая система запрашивает IP-адрес, связанный с именем сервера, используя протокол DNS, DNS-сервер сначала обращается к локальной базе данных, созданной DHCP-сервером, и предоставляет ответ из нее, если есть соответствующая запись (в противном случае он продолжает запрашивать весь Интернет).
При использовании статического IP-адреса DHCP-запрос никогда не выполняется, поэтому DHCP/DNS-сервер никогда не получает возможности добавить соответствующую запись в локальную базу данных имен/IP-адресов.
Как упоминалось в одном из комментариев, вы, вероятно, можете использовать servername.local
в качестве имени вместо servername
, и это будет работать (это использует MDNS). Клиенты Linux и Mac, я думаю, поддерживают это, но Windows — нет, если вы не установили нестандартное программное обеспечение, которое поддерживает этот протокол (например, программный стек Bonjour от Apple).
Поскольку я вижу в ваших вопросах пути UNC (начинающиеся с \), я предполагаю, что ваша клиентская машина — Windows, и вы используете Samba на сервере. В этом случае вы можете указать Samba действовать как WINS-сервер. WINS — это еще один протокол сопоставления имя->IP. Я думаю, что ваши клиентские машины просто найдут WINS-сервер и автоматически начнут запрашивать его для поиска имен, по крайней мере для протокола обмена файлами Windows/Samba. Если нет, вам может потребоваться либо: - включить WINS-сервер на вашем маршрутизаторе и указать Samba зарегистрироваться на нем, либо - настроить DHCP-сервер вашего маршрутизатора, чтобы он сообщал клиентам о WINS-сервере, работающем на вашем файловом сервере.