Я установил сервер Linux (Ubuntu) в своей домашней локальной сети, изначально он автоматически настроен для использования интерфейса DHCP.Я подключаюсь к этому серверу с другого компьютера, используя имя хоста этого сервера. Все в порядке, мой маршрутизатор настроен на использование DHCP в моей домашней сети и автоматически присваивает IP-адреса каждому компьютеру. Но когда я подключаюсь к этому хосту с помощью SSH, он предупреждает меня, что я должен принимать отпечаток пальца с каждого недавно назначенного IP-адреса сервера, и это немного раздражает. Поэтому я настроил его на использование статической IP-адресации, отредактировав файл / etc / network / interfaces
следующим образом:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0 iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1
Все работает хорошо, за исключением того, что я не могу подключиться к этому серверу, используя его имя хоста. Во время проверки связи я вижу, что он маршрутизируется на последний назначенный IP-адрес, который был динамически предоставлен DHCP, и, конечно же, Destination Host is Unreachable
. Я знаю, что могу жестко закодировать его в моем файле / etc / hosts
, но я хочу знать - почему он хорошо работает с DHCP, а не со статическим. Видимо, я чего-то не понимаю. Заранее спасибо!
Ваш маршрутизатор, вероятно, действует как DNS-сервер для локальной сети, раздающий информацию об узлах, получивших адрес через DHCP. Или, другими словами, при обработке запроса DHCP маршрутизатор динамически обновляет локальную базу данных DNS. DNSMasq - это обычный DHCP + DNS-сервер на маршрутизаторах, который делает это.
Устанавливая статический адрес, вы фактически лишаете маршрутизатор информации, необходимой для ответа на запросы DNS о вашем хосте.
Если возможно, вам следует установить резервирование DHCP в вашем маршрутизаторе, а не устанавливать статический адрес. Если это не вариант, вам просто нужно будет обновить файлы хостов на всех ваших машинах или запустить локальный DNS-сервер.
Вы не можете подключиться к серверу через имя хоста, потому что вы не установили статически какие-либо DNS-серверы. Эти серверы обычно предоставляются клиентам, когда они получают адрес через DHCP, поэтому в настоящее время у вас нет механизма для преобразования IP-адресов в имена. Ваш DNS-сервер также должен будет знать имя хоста и IP-адрес
. Вам необходимо будет предоставить внутренний DNS-сервер в вашем файле /etc/resolv.conf
в формате, аналогичном этому
nameserver 192.168.1.1
nameserver 8.8.8.8
Речь идет не о DHCP, а, скорее всего, о DNS. У вас должен быть адрес в /etc/resolv.conf
, где известно имя хоста вашего сервера, чтобы разрешение могло работать. Я думаю, что предложение DHCP вставило здесь что-то, чего нет (или что-то другое), когда вы назначаете статический IP.
Кроме того, файл /etc/nsswitch.conf
определяет, в каком порядке ваш файл hosts, mdns, DNS и тому подобное. Это строка, начинающаяся с «hosts».
Итак, выясните, как в первую очередь работало разрешение имени хоста на его IP-адрес (с помощью dhcp), и продолжайте смотреть на машине, упомянутой в /etc/resolv.conf или отвечающий объект в /etc/nsswitch.conf.