3

Я установил сервер 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

Все работает хорошо, за исключением того, что я не могу подключиться к этому серверу, используя его имя хоста. При ping я вижу, что он перенаправляется на последний назначенный IP-адрес, который был динамически назначен DHCP, и, конечно, Destination Host is Unreachable . Я знаю, что могу жестко закодировать его в своем /etc/hosts , но я хочу знать - почему он хорошо работает с DHCP, а не со статическим.

Видимо, я чего-то не понимаю. Заранее спасибо!

2 ответа2

3

Вам нужно назначить ваш маршрутизатор как ваш первый DNS-сервер (ы) в конфигурации интерфейса при использовании статического IP-адреса. Так что, если вы используете Ubuntu 12.04, вы должны добавить, например:

dns-nameservers 192.168.1.1

А затем перезапустите вашу сеть:

/etc/init.d/networking restart

Проверьте, как мне настроить мой статический DNS в интерфейсах? для больше на конфигурации DNS.

1

Когда вы использовали DHCP для сервера, он регистрировал свое имя хоста на вашем DNS-сервере каждый раз, когда получал новый IP-адрес. Теперь, когда ваш IP-адрес статичен, он не взаимодействует с DHCP-сервером, и поэтому DHCP-сервер не может передать имя хоста в DNS.

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

Если это не так, но DNS-сервер на маршрутизаторе принимает обновления из локальной сети (в отличие от только DHCP-сервера), то вы можете сделать это:

sudo apt-get install dnsutils
nsupdate
> update add hostname.domainame 86400 a 192.168.1.101
> send

"Доменное имя" - это любой локальный DNS-суффикс. Недостатком этого подхода является то, что при перезагрузке маршрутизатор потеряет настройку, поэтому вы хотите, чтобы ваш сервер периодически отправлял это обновление через скрипт и cron.

Если DNS-сервер не принимает локальные обновления - что, вероятно, не будет лучшим выбором, и лучшим долгосрочным решением будет запуск DNS с вашего сервера, а не с маршрутизатора.

bind является наиболее часто используемым DNS-сервером для Linux, хотя есть и более легкие альтернативы.

Возможно, более простой альтернативой было бы вернуть сервер на использование DHCP, но настроить маршрутизатор на выделение одного и того же IP-адреса каждый раз. Многие маршрутизаторы поддерживают эту функцию, и это означает, что имя хоста должно возвращаться к регистрации каждый раз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .