¿Hay alguna manera de deshabilitar el cliente DHCP en Raspbian Linux en un Rasperry Pi?

15

Tengo un servidor Linux (Rasperry Pi usando Raspbian como SO) que debería usar solo IP estática.

Sin embargo, noté que también tiene IP del servidor DHCP (la IP dada por DHCP es 192.168.111.2). Según la configuración de red, el servidor solo debe usar IP estática ( 192.168.111.100).

Los contenidos 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

A pesar de usar la configuración estática, puedo usar SSH para el dispositivo también usando la IP proporcionada por DHCP. También parece que ntpdestá usando la IP incorrecta y la correcta.

Salida 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

Según ifconfigla IP 192.168.111.2no se utiliza:

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 muestra que tengo un demonio DHCP ejecutándose:

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

¿Cómo deshabilito el DHCPinicio del demonio y me aseguro de que mi servidor use solo la estática?

Madoc Comadrin
fuente
¿Cuál es el comando al que te refieres?
Madoc Comadrin
Intenté esos comandos pero no pude encontrar nada que me ayudara en esto.
Madoc Comadrin
@barlop No hay nada de malo ifconfigy se usa regularmente. Algún día será reemplazado por, ippero honestamente, no tiene ninguna consecuencia molestar a alguien sobre lo que es "mejor", ya que este no es un concurso de meadas. ifconfigproporciona detalles más que suficientes para depurar cosas como esta.
JakeGould

Respuestas:

11

Este escenario suena realmente extraño porque su configuración debería funcionar como usted describe, y esperamos que funcione, si hay una IP estática establecida /etc/network/interfaces. Dicho esto, esta discusión en el sitio oficial de Raspberry Pi se centra en el problema con el usuario "rpdom" que indica esto en la publicación con fecha "Jue 28 de mayo de 2015 6:21 am":

Esto sucede en las últimas actualizaciones. Es causado por el nuevo cliente dhcp que ignora lo que hacen los archivos de interfaz y además hace lo suyo ... me parece una locura. Vería cómo reconfigurar el cliente dhcp (no puedo recordar cuál es o cómo hacerlo, todavía estoy en el antiguo que funciona para mí), deshabilitándolo o eliminándolo (si es posible).

Más profundo en el hilo de usuario "KLL" sugiere la siguiente publicación en su respuesta con fecha "Lun 10 de agosto 2015 12:59 pm". Según "knute":

En algún momento, una actualización modificó mi /etc/network/interfacesarchivo con la palabra 'manual' en lugar de dhcp o static y terminé con dos direcciones IP, mi static y una dirección dhcp. Finalmente tuve tiempo para jugar con él y descubrí que dhcpcd5funciona de forma diferente que lo que estaba en él antes. Para obtener solo su dirección estática, no la modifique /etc/network/interfaces. Vuelva a colocar la palabra 'manual' si la cambió y, en su lugar, modifique /etc/dhcpcd.confcomo se muestra en el ejemplo de los documentos.

Entonces, la idea es que dhcpcd5el comportamiento ha cambiado en una de las actualizaciones. Y la sugerencia para resolver el problema es eliminar cualquier cambio /etc/network/interfacesy, en su lugar, ajustar la configuración /etc/dhcpcd.confpara obtener una dirección IP estática; ejemplo de configuración a continuación:

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

dhcpcd.confPuede encontrar más información sobre el contenido en la página de manual oficial .

Dicho esto, otra idea es conservar la configuración que tiene /etc/network/interfacespero luego editar /etc/dhcpcd.confpara agregar la línea denyinterfaces eth0para decirle al demonio DHCP que ignore por completo eth0. Cualquiera de las soluciones debería funcionar, pero una solución podría ser una solución más preferible dependiendo de sus necesidades / requisitos generales de red.

JakeGould
fuente
2
Mi caso era casi idéntico al que se describe aquí. La única diferencia fue que /etc/network/interfacesnunca me cambiaron para manualque me gustara en el caso de los foros de Raspberry Pi. Las soluciones sugeridas también funcionaron para mí.
Madoc Comadrin
1
Igual, donde incluso con "static" obtengo dhcp en mi eth0. Esto sigue siendo un problema con una instalación jessie-lite. La solución alternativa aún no me está ayudando, ya que tengo una situación en la que necesito que la interfaz wlan0 tenga una métrica más baja que la interfaz eth0 y no puedo obtener dhcpcd5 para que me permita hacer eso (hasta ahora).
Peter Hansen
3
Una solución que hizo el trabajo para mí, sin embargo, era contar dhcpcd5 no mirar a eth0. Esto se hizo agregando "denyinterfaces eth0" en /etc/dhcpcd.conf.
Peter Hansen
1
@ PeterHansen ¡Es bueno saberlo! Agregué esa información al final de mi respuesta.
JakeGould
2
Un seguimiento: en algunos casos descubrí que tenía instalados dhcpcd5 e isc-dhcp-client, ambos asignando direcciones. Además, hay un dhcpcd.service iniciado por systemd que se ejecuta en todas las interfaces (con las opciones -q -b), así como el proceso dhcpcd5 iniciado por la opción "dhcp" en la red / interfaces. Suspiro ... bastante fácil de resolver una vez que sepas todo eso, espero.
Peter Hansen
8

lo que funcionó para mí es usar un / etc / network / interfaces como en la pregunta original y simplemente eliminar el cliente dhcp:

apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common
doctor no
fuente
En un escenario en el que no le importa DHCP (o cualquier otra cosa que dhcpcd pueda hacer), esta es la solución más fácil.
AVee
1

Debo decir que desafortunadamente ninguna de las soluciones propuestas aquí funcionó para mí. Pero después de una larga batalla con DHCP, finalmente pude resolver el problema:

vi /etc/systemd/network/eth0.network

cambio:

[Match]
Name=eth0

[Network]
DHCP=yes

a:

[Network]
DHCP=no

espero que esto ayude.

lester289
fuente
1

La forma preferible de deshabilitar cualquier servicio como dhcpcd es usar las funciones de administración del sistema. Deberá reiniciar para que surta efecto, a menos que también detenga el servicio.

Para Jessie (que usa systemdadministración):

sudo systemctl disable dhcpcd.service

Y para los mayores Wheezy ( System-Vgestión):

sudo update-rc.d dhcpcd disable

Pero si lo desactiva, debe asegurarse de tener una configuración de IP estática, de lo /etc/network/interfacescontrario, sus interfaces no obtendrán una dirección IP.

Pierz
fuente
0

Aquí hay un resumen de lo que tenía que hacer para Raspbian Jessie 2017-01-11:

Edite / etc / network / interfaces y agregue la sección de dirección estática, elimine otras referencias a la interfaz estática (eth0 en este caso). La línea automática es importante; de ​​lo contrario, la interfaz no se iniciará en el arranque:

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

Luego deshabilite dhcpcd y habilite la conexión en red estándar:

  • Deshabilitar dhcpcd: systemctl disable dhcpcd.service
  • Habilitar redes: systemctl enable networking
  • reiniciar

Raspbian Jessie a partir de la versión 2017-01-11 no parece usar la red de systemd

SteveB
fuente
0

Intenté algunas cosas y descubrí que

 apt list --installed | grep dhcp

encontró:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Acabo de deshabilitar dhcpcd5y eso lo solucioné usando:

 sudo apt-get remove dhcpcd5

hizo un reinicio y todo fue excelente

Mick65
fuente