¿Diferencias entre /etc/dhcpcd.conf y / etc / network / interfaces?

64

Tengo esta configuración en / etc / network / interfaces :

auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan0
#iface wlan0 inet dhcp
        iface wlan0 inet static
        address 192.168.0.110
        netmask 255.255.255.0
        network 192.168.0.1
        gateway 192.168.0.1
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp


iface eth0 inet static
    address 192.168.0.115
    netmask 255.255.255.0
    network 192.168.0.1
    gateway 192.168.0.1

La IP estática inalámbrica funcionaba, pero la eth0 no.

Así que intenté hacer la configuración en /etc/dhcpcd.conf :

interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Y funcionó. Estoy confundido y aquí hay varias preguntas:

  1. ¿Cuándo usar qué archivo?

  2. ¿Por qué el wifi funcionaba con / etc / network / interfaces pero el eth0 no?

  3. ¿Tiene dhcpcd alguna prioridad sobre / etc / network / interface ?

  4. ¿Cómo verificar qué servicio tiene prioridad o algo? ¿Y qué servicio usa / etc / network / interface ?

Curioso
fuente
44
Gran pregunta y algo que estaba a punto de preguntar #raspbian. Como administrador de Un * x de muchos años, encuentro este cambio fundamental desconcertante compuesto por una escasez absoluta de documentación. Por casualidad encontré esta pregunta después de pasar una hora de prueba y error. Desearía haber encontrado raspberrypi.stackexchange.com/questions/37920/… antes
Alastair McCormack
Creo que la pregunta debería haberse formulado en los comentarios: ¿cómo falló exactamente eth0? ¿Cuál es la ip addrsalida y la systemctl status networkingsalida? Porque si el OP intentó hacer eso sobre ssh y usando eth0 ip para ssh, entonces el eth0 ip modificado se asignará como ip secundario a eth0 para mantener la sesión ssh en curso sin interrupciones, traté de cambiar el eth0 ip como OP mencionado pero enviando a través de wlan0 y funciona y tiene preferencia sobre dhcp, en mi caso fue dhclient en Stretch pero enviando a través de eth0, el caso mencionado anteriormente tiene lugar.
Pavel Sayekat
Y sí, dhcpcd también se ha probado, ninguno tiene preferencia sobre la /etc/network/interfacesconfiguración.
Pavel Sayekat

Respuestas:

65

Hay buenos puntos en todas las respuestas a esta pregunta, pero creo que hay cierto margen para abordar sus preguntas específicas directamente.

  1. ¿Cuándo usar qué archivo?

Voy a suponer que sufre un grado general de confusión que está ocurriendo en este momento (en la comunidad más amplia de Raspberry Pi) con la introducción de Debian ' Jessie ' en lugar de Debian 'Wheezy'. Este cambio ha hecho que una gran cantidad de tutoriales sean, en el peor de los casos, obsoletos y, en el mejor de los casos, confusos.

La respuesta a la pregunta es que cuando se usaba Wheezy era normal realizar cambios en el /etc/network/interfacesarchivo con el fin de configurar interfaces de red (ver figura). Cuando use Jessie, será necesario realizar cambios en '/etc/dhcpcd.conf'. Sin embargo, si realiza cambios en una conexión inalámbrica ( wlan0), también deberá realizar cambios en /etc/wpa_supplicant/wpa_supplicant.confel lugar donde agrega el SSID y la contraseña de la red.

  1. ¿Por qué el wifi funcionaba con / etc / network / interfaces pero el eth0 no?

No estoy seguro de cómo podría haber funcionado la conexión wifi, ya que faltan algunos datos en sus archivos (al menos ssid). Como señaló janos, la prioridad de los detalles de la conexión etho después de los detalles de wlan0 probablemente los hizo operativos (ya que el proceso de lectura del archivo los habría visto por última vez).

  1. ¿Tiene dhcpcd alguna prioridad sobre / etc / network / interface?

No, son diferentes y están diseñados para adaptarse a diferentes propósitos bajo Jessie. Para usar Jessie de una manera bastante simple, puedes ignorar el interfacesarchivo y trabajar con dhcpcd.confy wpa_supplicant.conf.

  1. ¿Cómo verificar qué servicio tiene prioridad o algo? ¿Y qué servicio usa / etc / network / interface?

Nuevamente voy a suponer que la pregunta es más bien ' ¿Qué archivo uso y si tengo que usar uno que tenga prioridad? 'pregunta. La respuesta es que con el cambio de Wheezy a Jessie (y en un sentido más amplio con la adopción de systemd ), la configuración de 'dhcpcd.conf' y 'wpa_supplicant.conf' será la norma y el archivo 'interfaces' se dejará a sus propios dispositivos.

¿Qué significa esto para ti?

Bueno (una vez más) suponiendo que está tratando de configurar conexiones cableadas (eth0) e inalámbricas (wlan0) con direcciones IP estáticas, querrá que su interfacesarchivo sea el predeterminado como se instaló inicialmente;

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Desearía que su dhcpcd.confarchivo incluyera los detalles de conexión al final del archivo para ambas interfaces y las entradas adicionales probablemente se verían un poco así;

# Custom static IP address for eth0.
interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

# Custom static IP address for wlan0.
interface wlan0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Por último, desea editar su wpa_supplicant.confarchivo para que incluya el ssid de la red wifi y la contraseña. Probablemente debería verse un poco así;

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="homenetwork"
    psk="h0mepassw0rd"
}

Espero que eso lo cubra. Existe la posibilidad muy real de que mis suposiciones sean incorrectas, pero dado que recientemente pasé por una curva de aprendizaje similar, espero que los datos sean útiles.

De hecho, he escrito esto y puede obtener la información en el libro electrónico gratuito. Bastante Raspberry Pi de Leanpub.

d3noob
fuente
1
No trabajes Si sacamos ambas interfaces con.eg, ifconfig eth0 up ping al exterior y ssh desde afuera no funcionan. Si ponemos una de las interfaces en dhcp todo funcionará.
giuseppe
Esperemos que alguien pueda ayudarlo con su pregunta
d3noob
No funcionó para mí, por varias razones. Primero es que la pregunta es general, y si las respuestas son para jessie, eso fue hace mucho tiempo y nos hemos movido para estirar en su mayoría, y solo esta semana fue más agitada. Mi archivo de interfaces no tiene nada de lo que estás mencionando.
Brian Bulkowski
6

La prioridad tiene que ver con su configuración init o systemd. Con respecto a dhcp: si tiene una interfaz configurada estática o manualmente, y dhcp comienza a solicitar una dirección después, anulará lo que ya tiene. En Debian, se inicia dhcp para las interfaces para las que se especifica dhcp, y no solo por arte de magia. Si tiene un comportamiento inesperado, puede tener un sistema diferente ejecutándose en segundo plano como NetworkManager.

Por punto:

  1. no use dhcpcd.conf en absoluto, déjelo ser.
  2. No tiene una línea eth0 allow hotplug.
  3. Si se inicia dhcpcd después de la conexión en red y lo tiene configurado para hacerse cargo de una interfaz, lo hará.
  4. Verifique el orden en que inicia esos servicios.
John Keates
fuente
4

La IP estática inalámbrica funcionaba, pero la eth0 no.

Es eth0probable que la interfaz no haya aparecido en el arranque del sistema porque no aparece en la autolínea. De man interfaces:

Las líneas que comienzan con la palabra "auto" se utilizan para identificar las interfaces físicas que se mostrarán cuando ifup se ejecute con la opción -a. (Los scripts de arranque del sistema usan esta opción). Los nombres de la interfaz física deben seguir la palabra "auto" en la misma línea. Puede haber múltiples estrofas "automáticas". ifup muestra las interfaces nombradas en el orden indicado.

Cambia esta línea:

auto lo

A esto:

auto lo eth0

Y luego debería funcionar.

Las otras respuestas han abordado sus otras preguntas. Espero que esto ayude.

janos
fuente
2
Esta es la respuesta. El OP también tiene otros problemas, pero para las personas como yo que seguimos otras guías a las que simplemente agregamos la información estática /etc/network/interfaces, ¡la pieza que faltaba era simplemente auto eth0reiniciar la red o reiniciar!
Adam Kaplan
2

Consulte Cómo configuro redes / WiFi / IP estática para obtener detalles sobre cómo configurar redes.

Puede usar el /etc/network/interfacesmétodo anterior si lo desea. Lamentablemente, el archivo que ha enumerado contiene muchos errores. Debe seguir con una de las configuraciones estándar.

Si realmente desea usar /etc/network/interfaces (aparte de su valor predeterminado), deberá desactivarlo dhcpcd.

Una explicación de esto dhcpcdes demasiado compleja para este foro, pero el enlace https://wiki.archlinux.org/index.php/dhcpcd proporciona un buen resumen.

Milliways
fuente
2

Primero, recupere el /etc/network/interfacesarchivo a su versión original ...

# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult `/etc/dhcpcd.conf` and `man dhcpcd.conf`

# Include files from `/etc/network/interfaces.d`:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Luego, mantenga sus cambios al /etc/dhcpcd.confarchivo simples y solo para conexión inalámbrica ...

(al final del archivo ...)

nohook lookup-hostname

interface wlan0
    static ip_address=192.168.0.53/24
    static routers=192.168.0.1
    static domain_name_servers=8.8.8.8

/etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
    ssid="The SSID of your Router"
    psk="daPassword"
    scan_ssid=1
    key_mgmt=WPA-PSK
}
Greg Oij
fuente
0

Tenga en cuenta que la última versión de Raspbian Jessie (30/12/2016) contiene una falla en la segunda línea del archivo de interfaces. A la segunda línea le falta el símbolo # inicial para designar la línea como comentario. Este problema hace que el sistema no pueda leer el archivo de interfaces. Pasé muchas horas tratando de hacer que mi wifi funcionara antes de encontrar este error.

Para solucionarlo, simplemente agregue un símbolo # al comienzo de la línea.

Adictivo
fuente