Existe-t-il un moyen de désactiver le client DHCP dans Raspbian Linux sur un Rasperry Pi?

15

J'ai un serveur Linux (Rasperry Pi utilisant Raspbian comme OS) qui ne devrait utiliser que des adresses IP statiques.

Cependant, j'ai remarqué qu'il a également obtenu l'IP du serveur DHCP (l'IP donnée par DHCP est 192.168.111.2). Selon les paramètres réseau, le serveur ne doit utiliser que des adresses IP statiques ( 192.168.111.100).

Le contenu de /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

Malgré l'utilisation d'une configuration statique, je peux SSH sur l'appareil en utilisant également l'IP donnée par DHCP. Il semble également que ntpdla mauvaise adresse IP soit utilisée.

Sortie de 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

Selon ifconfigl'IP 192.168.111.2n'est pas utilisé:

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 montre que j'ai un démon DHCP en cours d'exécution:

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

Comment désactiver le DHCPdémarrage du démon et m'assurer que mon serveur utilise uniquement le statique?

Madoc Comadrin
la source
Quelle est la commande à laquelle vous faites référence?
Madoc Comadrin
J'ai essayé ces commandes mais je n'ai rien trouvé pour m'aider.
Madoc Comadrin du
@barlop Il n'y a rien de mal à ifconfigcela et il est utilisé régulièrement. Il sera un jour remplacé par ipmais honnêtement, cela n'a aucune conséquence de harceler quelqu'un qui est «mieux» car ce n'est pas un concours de pisse. ifconfigfournit plus qu'assez de détails pour déboguer des choses comme ça.
JakeGould

Réponses:

11

Ce scénario semble vraiment bizarre, car votre configuration devrait fonctionner comme vous le décrivez - et espérons qu'elle fonctionnera - s'il y a une adresse IP statique /etc/network/interfaces. Cela dit, cette discussion sur le site officiel de Raspberry Pi se concentre sur le problème avec l'utilisateur «rpdom» l'indiquant sur le post du «jeu 28 mai 2015 6h21»:

Cela se produit dans les dernières mises à jour. Cela est dû au fait que le nouveau client DHCP ignore ce que font les fichiers d'interface et fait sa propre chose en plus ... me semble fou. Je regarderais comment reconfigurer le client DHCP (je ne peux pas me souvenir de qui il s'agit ou comment le faire, je suis toujours sur l'ancien qui fonctionne pour moi), le désactiver ou le supprimer (si possible).

Plus loin dans le fil, l'utilisateur "KLL" suggère l'autre post suivant dans sa réponse datée du "10 août 2015 12:59 pm". Selon "knute":

Quelque part en cours de route, une mise à niveau a modifié mon /etc/network/interfacesfichier avec le mot «manuel» au lieu de dhcp ou statique et je me suis retrouvé avec deux adresses IP, ma statique et une adresse dhcp. J'ai finalement eu le temps de jouer avec et j'ai découvert que cela dhcpcd5fonctionnait différemment de tout ce qu'il y avait auparavant. Pour obtenir uniquement votre adresse statique, ne modifiez pas /etc/network/interfaces. Remettez le mot «manuel» si vous l'avez changé et modifiez /etc/dhcpcd.conf-le à la place comme indiqué dans l'exemple de la documentation.

L'idée est donc que dhcpcd5le comportement a changé dans l'une des mises à niveau. Et la suggestion pour résoudre le problème consiste à supprimer toutes les modifications /etc/network/interfaceset à ajuster les paramètres /etc/dhcpcd.confpour obtenir une adresse IP statique; exemple de configuration ci-dessous:

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

Vous dhcpcd.conftrouverez plus d'informations sur le contenu de sur la page de manuel officielle .

Cela dit, une autre idée consiste à conserver les paramètres que vous avez dans, /etc/network/interfacespuis à modifier /etc/dhcpcd.confpour ajouter la ligne denyinterfaces eth0pour dire au démon DHCP d'ignorer complètement eth0. L'une ou l'autre solution devrait fonctionner, mais une solution pourrait être une solution plus préférable en fonction de vos besoins / exigences de mise en réseau globaux.

JakeGould
la source
2
Mon cas était presque identique à celui décrit ici. La seule différence était que je /etc/network/interfacesn'ai jamais été changé manualcomme dans le cas des forums Raspberry Pi. Les solutions suggérées ont également fonctionné pour moi.
Madoc Comadrin
1
Idem, où même avec "statique", je reçois DHCP sur mon eth0. C'est toujours un problème avec une installation de Jessie-Lite. La solution de contournement ne m'aide pas encore car j'ai une situation où j'ai besoin de l'interface wlan0 pour avoir une métrique inférieure à l'interface eth0 et je ne peux pas obtenir dhcpcd5 pour me permettre de le faire (jusqu'à présent).
Peter Hansen
3
Une solution de contournement qui a fonctionné pour moi, cependant, était de dire à dhcpcd5 de ne pas regarder eth0. Cela a été fait en ajoutant "denyinterfaces eth0" dans /etc/dhcpcd.conf.
Peter Hansen
1
@PeterHansen Bon à savoir! Ajout de cette information à la fin de ma réponse.
JakeGould
2
Un suivi: dans certains cas, j'ai trouvé que j'avais à la fois dhcpcd5 et isc-dhcp-client installés, les deux attribuant des adresses. De plus, il existe un dhcpcd.service lancé par systemd qui s'exécute sur toutes les interfaces (avec les options -q -b) ainsi que le processus dhcpcd5 démarré par l'option "dhcp" dans le réseau / interfaces. Soupir ... assez facile à résoudre une fois que vous savez tout cela, j'espère.
Peter Hansen
8

ce qui a fonctionné pour moi, c'est d'utiliser un / etc / network / interfaces comme dans la question d'origine et de simplement supprimer le client dhcp:

apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common
Doc non
la source
Dans un scénario où vous ne vous souciez pas du DHCP (ou de tout ce que dhcpcd peut faire), c'est la solution la plus simple.
AVee
1

Je dois dire que malheureusement aucune des solutions proposées ici n'a fonctionné pour moi. Mais après une longue bataille avec DHCP, j'ai finalement pu résoudre le problème:

vi /etc/systemd/network/eth0.network

changement:

[Match]
Name=eth0

[Network]
DHCP=yes

à:

[Network]
DHCP=no

J'espère que cela t'aides.

lester289
la source
1

La meilleure façon de désactiver tout service tel que dhcpcd est d'utiliser les fonctions de gestion du système. Vous devrez redémarrer pour qu'il prenne effet - sauf si vous arrêtez également le service.

Pour Jessie (qui utilise la systemdgestion):

sudo systemctl disable dhcpcd.service

Et pour les Wheezy plus âgés ( System-Vgestion):

sudo update-rc.d dhcpcd disable

Mais si vous le désactivez, vous devez vous assurer que vous disposez d'une configuration IP statique, /etc/network/interfacessinon vos interfaces n'obtiendront pas d'adresse IP.

Pierz
la source
0

Voici un résumé de ce que je devais faire pour Raspbian Jessie 2017-01-11:

Modifiez / etc / network / interfaces et ajoutez la strophe d'adresse statique, supprimez les autres références à l'interface statique (eth0 dans ce cas). La ligne automatique est importante sinon l'interface ne démarre pas au démarrage:

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

Désactivez ensuite dhcpcd et activez la mise en réseau standard:

  • Désactivez dhcpcd: systemctl disable dhcpcd.service
  • Activer le réseautage: systemctl enable networking
  • redémarrer

Raspbian Jessie à partir de la version 2017-01-11 ne semble pas utiliser la mise en réseau de systemd

SteveB
la source
0

J'ai essayé quelques choses et j'ai constaté que

 apt list --installed | grep dhcp

a trouvé:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Je viens de désactiver dhcpcd5et cela a été corrigé en utilisant:

 sudo apt-get remove dhcpcd5

a fait un redémarrage et tout était dandy

Mick65
la source