Czy istnieje sposób na wyłączenie klienta DHCP w systemie Raspbian Linux na Rasperry Pi?

15

Mam serwer Linux (Rasperry Pi używający Raspbian jako OS), który powinien używać tylko statycznego adresu IP.

Zauważyłem jednak, że ma również adres IP z serwera DHCP (adres IP podany przez DHCP to 192.168.111.2). Zgodnie z ustawieniami sieci serwer powinien używać tylko statycznego adresu IP ( 192.168.111.100).

Zawartość /etc/network/interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.111.100
netmask 255.255.255.0
gateway 192.168.111.1
dns-nameservers ip1 ip2

Pomimo używania konfiguracji statycznej mogę SSH do urządzenia również przy użyciu adresu IP podanego przez DHCP. Wygląda również na to, że ntpdużywa niewłaściwego adresu IP, a także poprawnego.

Dane wyjściowe Netstat:

udp        0      0 192.168.111.2:123       0.0.0.0:*                           2774/ntpd
udp        0      0 192.168.111.100:123     0.0.0.0:*                           2774/ntpd

Według ifconfigadresu IP 192.168.111.2nie jest używany:

eth0      Link encap:Ethernet  HWaddr b8:27:eb:be:18:1c
          inet addr:192.168.111.100  Bcast:192.168.111.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:138099 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81146 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:95954711 (91.5 MiB)  TX bytes:27076870 (25.8 MiB)

ps -ef | grep dhcp pokazuje, że mam uruchomionego demona DHCP:

root      2000     1  0 Oct07 ?        00:00:06 /sbin/dhcpcd

Jak mogę wyłączyć DHCPuruchamianie demona i upewnić się, że mój serwer używa tylko danych statycznych?

Madoc Comadrin
źródło
Jakie polecenie masz na myśli?
Madoc Comadrin
Próbowałem tych poleceń, ale nie byłem w stanie znaleźć niczego, co mogłoby mi w tym pomóc.
Madoc Comadrin
@barlop Nie ma w tym nic złego ifconfigi jest regularnie używany. Któregoś dnia zostanie zastąpiony, ipale szczerze mówiąc, nie ma znaczenia, że ​​borsuka kogoś, co jest „lepsze”, ponieważ nie jest to konkurs sikania. ifconfigzawiera więcej niż wystarczającą ilość szczegółów do debugowania takich rzeczy.
JakeGould,

Odpowiedzi:

11

Ten scenariusz brzmi naprawdę dziwnie, ponieważ twoja konfiguracja powinna działać zgodnie z opisem - i mieć nadzieję, że zadziała - jeśli ustawiono statyczny adres IP /etc/network/interfaces. To powiedziawszy, ta dyskusja na oficjalnej stronie Raspberry Pi koncentruje się na problemie z użytkownikiem „rpdom”, który stwierdził to w poście z dnia „28 maja 2015 r. 6:21”:

Dzieje się tak w najnowszych aktualizacjach. Jest to spowodowane tym, że nowy klient dhcp ignoruje to, co robią pliki interfejsów, a ponadto robi swoje własne ... wydaje mi się szalony. Spojrzałbym na to, jak zmienić konfigurację klienta dhcp (nie pamiętam, co to jest lub jak to zrobić, wciąż jestem na starym, który działa dla mnie), wyłączając go lub usuwając (jeśli to możliwe).

Głębszy w wątku użytkownik „KLL” sugeruje następujący post w odpowiedzi zatytułowanej „Pon 10 sierpnia 2015 12:59”. Według „knute”:

Gdzieś po drodze uaktualnienie zmodyfikowało mój /etc/network/interfacesplik słowem „manualnym” zamiast dhcp lub static i ostatecznie otrzymałem dwa adresy IP, mój statyczny i adres dhcp. W końcu miałem czas na zabawę i dowiedziałem się, że dhcpcd5działa inaczej niż wszystko, co było w nim wcześniej. Aby uzyskać tylko swój statyczny adres, nie modyfikuj /etc/network/interfaces. Odłóż słowo „ręczne”, jeśli je zmieniłeś i zamiast tego zmodyfikuj, /etc/dhcpcd.confjak pokazano w przykładzie z dokumentów.

Chodzi o to, że dhcpcd5zachowanie zmieniło się w jednej z aktualizacji. Sugerowane rozwiązanie problemu polega na usunięciu wszelkich zmian /etc/network/interfacesi dostosowaniu ustawień w /etc/dhcpcd.confcelu uzyskania statycznego adresu IP; przykładowa konfiguracja poniżej:

static <value>
             Configures a static <value>.  If you set ip_address then dhcpcd
             will not attempt to obtain a lease and just use the value for the
             address with an infinite lease time.

             Here is an example which configures a static address, routes and
             dns.
                   interface eth0
                   static ip_address=192.168.0.10/24
                   static routers=192.168.0.1
                   static domain_name_servers=192.168.0.1

Więcej informacji na temat zawartości dhcpcd.confmożna znaleźć na oficjalnej stronie podręcznika użytkownika .

To powiedziawszy, innym pomysłem jest zachowanie ustawień, które masz, /etc/network/interfacesale następnie edycja, /etc/dhcpcd.confaby dodać linię, denyinterfaces eth0aby poinformować demona DHCP, aby całkowicie zignorował eth0. Każde z rozwiązań powinno działać, ale jedno rozwiązanie może być bardziej preferowanym rozwiązaniem w zależności od ogólnych potrzeb / wymagań sieciowych.

JakeGould
źródło
2
Mój przypadek był prawie identyczny z opisanym tutaj. Jedyną różnicą było to, że /etc/network/interfacesnigdy nie zmieniłem się manualtak, jak w przypadku forów Raspberry Pi. Sugerowane rozwiązania również dla mnie zadziałały.
Madoc Comadrin
1
To samo, gdzie nawet przy „static” dostaję dhcp na moim eth0. Jest to nadal problem z instalacją jessie-lite. Obejście nie pomaga mi jeszcze, ponieważ mam sytuację, w której potrzebuję interfejsu wlan0, aby mieć niższą metrykę niż interfejs eth0 i nie mogę uzyskać dhcpcd5, aby mi to umożliwić (jak dotąd).
Peter Hansen
3
Rozwiązaniem, które nie działa dla mnie było jednak powiedzieć dhcpcd5 nie patrzeć na eth0. Dokonano tego poprzez dodanie „denyinterfaces eth0” w /etc/dhcpcd.conf.
Peter Hansen
1
@PeterHansen Dobrze wiedzieć! Dodałem tę informację na końcu mojej odpowiedzi.
JakeGould,
2
Następstwo: w niektórych przypadkach stwierdziłem, że mam zarówno dhcpcd5, jak i isc-dhcp-client, oba przypisujące adresy. Ponadto istnieje zainicjowana przez system dhcpcd.service, która działa na wszystkich interfejsach (z opcjami -q -b), a także proces dhcpcd5 uruchomiony przez opcję „dhcp” w sieci / interfejsach. Mam nadzieję, że westchnienie jest dość łatwe do rozwiązania.
Peter Hansen,
8

dla mnie zadziałało użycie / etc / network / interfaces jak w pierwotnym pytaniu i po prostu usunięcie klienta dhcp:

apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common
docno
źródło
W scenariuszu, w którym nie obchodzi Cię DHCP (lub cokolwiek innego, co może zrobić dhcpcd), jest to najłatwiejsze rozwiązanie.
AVee
1

Muszę powiedzieć, że niestety żadne z zaproponowanych tutaj rozwiązań dla mnie nie zadziałało. Ale po długiej walce z DHCP w końcu udało mi się rozwiązać problem:

vi /etc/systemd/network/eth0.network

zmiana:

[Match]
Name=eth0

[Network]
DHCP=yes

do:

[Network]
DHCP=no

mam nadzieję że to pomoże.

lester289
źródło
1

Preferowanym sposobem wyłączenia dowolnej usługi, takiej jak dhcpcd, jest skorzystanie z funkcji zarządzania systemem. Będziesz musiał zrestartować komputer, aby zadziałał - chyba że zatrzymasz także usługę.

W przypadku Jessie (która korzysta z systemdzarządzania):

sudo systemctl disable dhcpcd.service

A dla starszych Wheezy ( System-Vzarządzanie):

sudo update-rc.d dhcpcd disable

Ale jeśli ją wyłączysz, musisz upewnić się, że masz statyczną konfigurację /etc/network/interfacesadresu IP, w przeciwnym razie interfejsy nie uzyskają adresu IP.

Pierz
źródło
0

Oto podsumowanie tego, co musiałem zrobić dla Raspbian Jessie 11.01.2017:

Edytuj / etc / network / interfaces i dodaj sekcję statycznego adresu, usuń inne odniesienia do interfejsu statycznego (w tym przypadku eth0). Automatyczna linia jest ważna, w przeciwnym razie interfejs nie uruchomi się przy rozruchu:

    auto eth0
    iface eth0 inet static
      address 192.168.44.17
      netmask 255.255.255.0
      gateway 192.168.44.27

Następnie wyłącz dhcpcd i włącz standardową sieć:

  • Wyłącz dhcpcd: systemctl disable dhcpcd.service
  • Włącz sieć: systemctl enable networking
  • restart

Wydaje się, że Raspbian Jessie od wersji 2017-01-11 nie używa sieci systemd

SteveB
źródło
0

Wypróbowałem kilka rzeczy i znalazłem to

 apt list --installed | grep dhcp

znaleziony:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Właśnie wyłączyłem dhcpcd5i naprawiłem to za pomocą:

 sudo apt-get remove dhcpcd5

Zrobiłem restart i wszystko było eleganckie

Mick65
źródło