Dlaczego dhclient nadal działa, gdy wybieram statyczny adres IP?

15

Zmieniam dhcp na static w / etc / network / interfaces (jak poniżej).

# 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

Następnie uruchom ponownie interfejs.

$ 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

Tak więc zaczyna się nowy adres.

Ale DHCP wciąż tam jest?

$ 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

Czy to normalne? Jeśli nie, jak zrestartować interfejs w statycznym IP, jednocześnie zatrzymując DHCP?

Wielkie dzięki.

użytkownik276851
źródło

Odpowiedzi:

22
  1. Najpierw musisz zamknąć interfejs (w trybie dhcp) sudo ifdown eth0
  2. Następnie edytuj konfigurację 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. Przywróć interfejs z powrotem sudo ifup eth0

W przeciwnym razie dhclientnie wyłączy się poprawnie,

pcv
źródło
1
Przepraszam, ale czy ktoś może wyjaśnić, czym dokładnie to się różni od tego, co robi się tutaj w PO? Przeczytałem to trzy razy i wydaje mi się, że nie widzę różnicy.
fostandy
Czy chodzi o modyfikację („dotknięcie”) pliku, aby data się zmieniła? Czy mam edytować plik tylko PO tym, jak obniżyłem interfejs? Jeśli tak, to jak mogę „cofnąć” fakt, że wcześniej go edytowałem?
fostandy
1
@Bruno - dziękuję za wyjaśnienie. Z ciekawości, co robisz, jeśli /etc/network/interfacesplik został już nieodwołalnie zmodyfikowany ? Czy istnieje sposób, aby wymusić przywrócenie ustawień domyślnych i rozpocząć od nowa?
fostandy
7
Byłem zaskoczony, dlaczego to miało mieć znaczenie, ale mój sprytny przyjaciel wyjaśnił to bardzo ładnie. Problem polega na tym, że jeśli plik jest edytowany, a następnie ifdownuruchamiany, menedżer sieci nie wie, że musi się zatrzymać dhclient, ponieważ wszystko, co widzi w interfacespliku, to wpis statyczny. Po tym, interfejs jest wyłączony, wydanie ifuppoprawnie odczytuje i stosuje ustawienia statyczne, ale również nie wie, że dhclientzostało uruchomione.
parakocykl
2

Miałem ten sam problem (Ubuntu 16.04). Była to jednak instancja w chmurze i nie mogłem tak łatwo wyłączyć interfejsu.

Krótka odpowiedź: usunąłem plik, jeśli /etc/network/interfaces.d/50-cloud-init.cfgten konkretny plik uruchomił program.

Długa odpowiedź: Skonfigurowałem interfejs za /etc/network/interfacespomocą statycznego adresu IP, ale nadal w daemon.log nadal znalazłem informację, że dhclient wciąż żąda adresu IP od DHCP i dhclient został uruchomiony przez systemd. W szczególności systemd nazywał jednostkę networking.service, która wywołała ifup, która odczytuje zarówno plik interfejsów, jak i plik 50-cloud-init.cfg. Powoduje pewne konflikty, ale nadal funkcjonalną sieć.

Patrick Deelman
źródło
Miałem dokładnie ten sam problem i nauczyłem się na własnej skórze, że późniejszy plik (np. 99-eth0.cfg) faktycznie NIE zastępuje poprzednich instrukcji! Dzięki za wkład;)
Daywalker
1

Odkryłem, że było to spowodowane tym, że NetworkManager gnome wciąż działa i myślałem, że to on odpowiada za urządzenie. Z perspektywy czasu powinno to być oczywiste, ponieważ psprogram NetworkManager uruchomił program dhclient.

Po ponownym uruchomieniu systemu urządzenie przeszło w tryb „niezarządzany” w programie NetworkManager i przestało go konfigurować. Być może mógłbym osiągnąć to samo poprzez zatrzymanie / ponowne uruchomienie NetworkManagera, nie jestem pewien.

Fostandy
źródło