Почему dhclient все еще работает, когда я выбираю статический IP?

15

Я изменяю dhcp на статический в / etc / network / interfaces (как показано ниже).

# The primary network interface
auto eth0
iface eth0 inet static
netmask 255.255.0.0
address 10.10.130.128
gateway 10.10.1.1

Затем перезапустите интерфейс.

$ sudo ifdown eth0; sudo ifup eth0
...
$ ifconfig
eth0      Link encap:Ethernet 
          inet addr:10.10.130.128  Bcast:10.10.255.255  Mask:255.255.0.0

Таким образом, новый адрес вступает в силу.

Но DHCP все еще там?

$ ps aux | grep dhc
root    ... dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -1 eth0

Это нормально? Если нет, то как перезапустить интерфейс в статическом IP при одновременной остановке DHCP?

Большое спасибо.

user276851
источник

Ответы:

22
  1. Сначала вы должны закрыть интерфейс (в режиме DHCP) sudo ifdown eth0
  2. Затем отредактируйте конфиг nano /etc/network/interfaces

    # The primary network interface
    auto eth0
    iface eth0 inet static
    netmask 255.255.0.0
    address 10.10.130.128
    gateway 10.10.1.1
    
  3. Верните интерфейс обратно sudo ifup eth0

В противном случае dhclientне правильно отключается,

пвх
источник
1
Извините, но кто-то может уточнить, как именно это отличается от того, что здесь делается в ОП? Я прочитал это три раза, и я не могу понять разницу.
fostandy
Это касается изменения («прикосновения») файла, чтобы изменить дату? Я должен редактировать файл только после того, как отключил интерфейс? Если так, как я могу «отменить» тот факт, что я редактировал это раньше?
fostandy
1
@ Бруно - спасибо за разъяснения. Из любопытства, что вы делаете, если вы уже безвозвратно отредактировали /etc/network/interfacesфайл? Есть ли способ принудительно выполнить сброс до значений по умолчанию и начать заново?
fostandy
7
Я был озадачен тем, почему это должно иметь значение, но потом мой умный друг объяснил это очень хорошо. Проблема в том, что если файл отредактирован, а затем ifdownзапущен, сетевой менеджер не знает, что ему нужно остановить dhclient, поскольку все, что он видит в interfacesфайле, является статической записью. После того, как интерфейс отключен, выдача ifupкорректно считывает и применяет статические настройки, но также не знает, что dhclientбыло запущено.
парацикл
2

У меня была такая же проблема (Ubuntu 16.04). Тем не менее, это был облачный экземпляр, и я не мог так легко отключить интерфейс.

Краткий ответ: я удалил файл, если этот файл /etc/network/interfaces.d/50-cloud-init.cfgбыл вызван этим конкретным файлом.

Длинный ответ: я настроил интерфейс, используя /etc/network/interfacesстатический IP-адрес, но в daemon.log я все же обнаружил, что dhclient все еще запрашивает IP-адреса от DHCP, а dhclient запускается через systemd. В частности, systemd вызывал модуль network.service, который вызывал ifup, который считывал и файл интерфейсов, и файл 50-cloud-init.cfg. В результате возникают некоторые конфликты, но все же функционирующая сеть.

Патрик Дилман
источник
У меня была точно такая же проблема, и я с трудом узнал, что более поздний файл (например, 99-eth0.cfg) действительно НЕ переопределяет предыдущие утверждения! Итак, спасибо за ваш вклад;)
Daywalker
1

Я обнаружил, что это связано с тем, что NetworkManager gnome все еще работает и думает, что отвечает за устройство. Оглядываясь назад, это должно было быть очевидным, как psпоказало, что NetworkManager запускает dhclient.

Как только я перезапустил свою систему, устройство перешло к «неуправляемому» в NetworkManager и перестало пытаться его настроить. Возможно, я мог бы добиться того же, просто остановив / перезапустив NetworkManager, я не уверен.

fostandy
источник