Différences entre /etc/dhcpcd.conf et / etc / network / interfaces?


64

J'ai cette configuration dans / 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

L'IP statique sans fil a fonctionné, mais pas l'eth0.

J'ai donc essayé de faire la config dans /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

Et ça a fonctionné. Je suis confus et voici plusieurs questions:

  1. Quand utiliser quel fichier?

  2. Pourquoi le wifi a fonctionné avec / etc / network / interfaces alors que l'eth0 ne l'a pas fait?

  3. Est- ce que dhcpcd a une priorité sur / etc / network / interface ?

  4. Comment vérifier quel service a la priorité ou quelque chose? Et quel service utilise / etc / network / interface ?


4
Excellente question et quelque chose que je m'apprêtais à poser #raspbian. En tant qu'administrateur Un * x depuis de nombreuses années, je trouve ce changement fondamental déconcertant, aggravé par le manque absolu de documentation. Il m'est arrivé de trouver cette question après une heure d'essais et d'erreurs. J'aurais aimé trouver raspberrypi.stackexchange.com/questions/37920/… plus tôt
Alastair McCormack le

Je pense que la question aurait dû être posée dans les commentaires que comment exactement l'eth0 a échoué? Quelle est la ip addrsortie et la systemctl status networkingsortie? Parce que si le PO essayait de faire cela sur ssh et en utilisant eth0 ip dans ssh, alors l'ip eth0 modifié serait assigné comme ip secondaire à eth0 pour garder la session ssh en cours ininterrompue, j'ai essayé de changer l'ip eth0 en tant que OP mentionné mais sshing via wlan0 et cela fonctionne et prend la préférence sur dhcp, dans mon cas, il était dhclient sur Stretch mais sshing via eth0, le cas mentionné précédemment a lieu.
Pavel Sayekat le

Et oui, dhcpcd a également été testé, aucun ne prend la préférence sur les /etc/network/interfacesparamètres.
Pavel Sayekat le

Réponses:


65

Toutes les réponses à cette question comportent de bons arguments, mais je pense qu’il est possible de répondre directement à vos questions spécifiques.

  1. Quand utiliser quel fichier?

Je vais supposer que vous souffrez d'un degré de confusion généralisé en ce moment (dans la communauté de Raspberry Pi) avec l'introduction de Debian ' Jessie ' à la place de Debian 'Wheezy'. Cette modification a rendu un grand nombre de tutoriels obsolètes et au mieux déroutants.

La réponse à la question est que lorsqu’on utilisait Wheezy, il était normal d’apporter des modifications au /etc/network/interfacesfichier afin de configurer des interfaces réseau (voir figure). Lors de l’utilisation de Jessie, il sera nécessaire d’apporter des modifications à /etc/dhcpcd.conf. Toutefois, si wlan0vous apportez des modifications à une connexion sans fil ( ), vous devrez également modifier l’ /etc/wpa_supplicant/wpa_supplicant.confajout du ssid et du mot de passe du réseau.

  1. Pourquoi le wifi a fonctionné avec / etc / network / interfaces alors que l'eth0 ne l'a pas fait?

Je ne sais pas comment la connexion Wi-Fi aurait pu fonctionner car il manque certaines informations dans vos fichiers (ssid au minimum). Comme l'a souligné janos, la priorité donnée aux détails de connexion etho après les détails wlan0 les a probablement rendus opérationnels (puisqu'ils auraient été vus en dernier par le processus de lecture du fichier).

  1. Est-ce que dhcpcd a une priorité sur / etc / network / interface?

Non, ils sont différents et sont conçus pour répondre à des objectifs différents sous Jessie. Pour utiliser Jessie de manière assez simple, vous pouvez pratiquement ignorer le interfacesfichier et travailler avec dhcpcd.confet wpa_supplicant.conf.

  1. Comment vérifier quel service a la priorité ou quelque chose? Et quel service utilise / etc / network / interface?

Encore une fois, je vais supposer que la question est plutôt un « Quel fichier dois-je utiliser et si je dois en utiliser un qui est prioritaire? 'question. La réponse est qu'avec le passage de Wheezy à Jessie (et dans un sens plus large avec l'adoption de systemd ), la configuration de `dhcpcd.conf 'et' wpa_supplicant.conf 'sera la norme et le fichier' interfaces 'restera à ses propres appareils.

Qu'est-ce que cela signifie pour toi?

Bien (encore) en supposant que vous essayez de configurer des connexions câblées (eth0) et sans fil (wlan0) avec des adresses IP statiques, vous voudriez que votre interfacesfichier soit celui par défaut tel qu'il a été initialement installé;

# 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

Vous voudriez que votre dhcpcd.conffichier inclue les détails de connexion à la fin du fichier pour les deux interfaces et les entrées supplémentaires ressembleraient probablement à ceci;

# 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

Enfin, vous voudriez éditer votre wpa_supplicant.conffichier pour qu’il inclue l’identifiant SSID du réseau wifi et le mot de passe. Cela devrait probablement ressembler à ceci;

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

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

J'espère que ça couvre ça. Il est fort possible que mes hypothèses soient incorrectes, mais comme je suis récemment passé par une courbe d'apprentissage similaire, j'espère que les données sont utiles.

En fait, je l'ai écrit et vous pouvez obtenir les informations dans l'ebook gratuit Juste assez de Raspberry Pi de Leanpub.


1
Ne travaille pas Si nous apportons les deux interfaces avec .eg, ifconfig eth0 up ping à external et ssh de dehors ne fonctionnent pas Si nous mettons une des interfaces dans DHCP, tout fonctionne.
Giuseppe

J'espère que quelqu'un pourra vous aider avec votre question
d3noob

Cela n'a pas fonctionné pour moi pour plusieurs raisons. La première est que la question est générale, et si les réponses s'adressent à Jessie, c'était il y a longtemps et nous avons surtout décidé de nous étirer, et cette semaine a été remplacée par une discussion animée. Mon fichier d'interface ne contient aucun des éléments que vous mentionnez.
Brian Bulkowski

6

La priorité concerne votre configuration init ou systemd. En ce qui concerne dhcp: si vous avez une interface configurée de manière statique ou manuelle et que dhcp commence à demander une adresse par la suite, il remplacera ce que vous avez déjà. Sur Debian, dhcp est démarré pour les interfaces pour lesquelles vous spécifiez dhcp, et pas simplement comme par magie. Si vous avez un comportement inattendu, vous pouvez avoir un système différent fonctionnant en arrière-plan, comme NetworkManager.

Par point:

  1. n'utilisez pas du tout dhcpcd.conf, laissez-le être.
  2. Vous n'avez pas de ligne eth0 allow hotplug.
  3. Si dhcpcd est démarré après la mise en réseau et que vous l'avez configuré pour prendre en charge une interface, il le fera.
  4. Vérifiez l'ordre dans lequel vous démarrez ces services.

4

L'IP statique sans fil a fonctionné, mais pas l'eth0.

L' eth0interface n'a probablement pas été affichée au démarrage du système, car elle ne figure pas sur la autoligne. De man interfaces:

Les lignes commençant par le mot "auto" sont utilisées pour identifier les interfaces physiques à afficher lorsque ifup est exécuté avec l'option -a. (Cette option est utilisée par les scripts de démarrage du système.) Les noms d'interface physique doivent suivre le mot "auto" sur la même ligne. Il peut y avoir plusieurs strophes "auto". ifup affiche les interfaces nommées dans l'ordre indiqué.

Changer cette ligne:

auto lo

Pour ça:

auto lo eth0

Et puis ça devrait marcher.

Les autres réponses ont répondu à vos autres questions. J'espère que ça aide.


2
CECI est la réponse. Le PO a également d’autres problèmes, mais pour les personnes comme moi qui ont suivi d’autres guides qui viennent d’ajouter des informations statiques /etc/network/interfaces, la pièce manquante était simplement de auto eth0redémarrer le réseau ou de redémarrer!
Adam Kaplan

2

Voir Comment configurer la mise en réseau / WiFi / IP statique pour des détails sur la configuration de la mise en réseau.

Vous pouvez utiliser l'ancienne /etc/network/interfacesméthode si vous le souhaitez. Malheureusement, le fichier que vous avez répertorié contient de nombreuses erreurs. Vous devriez vous en tenir à l'une des configurations standard.

Si vous voulez vraiment utiliser /etc/network/interfaces (autre que sa valeur par défaut), vous devez le désactiver dhcpcd.

Une explication de dhcpcdest trop complexe pour ce forum, mais le lien https://wiki.archlinux.org/index.php/dhcpcd fournit un bon résumé.


2

Tout d’abord, ramenez le /etc/network/interfacesfichier à sa version originale ...

# 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

Ensuite, gardez vos modifications au /etc/dhcpcd.conffichier simples et uniquement pour le sans fil ...

(au bas du fichier ...)

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
}

0

Sachez que la dernière version de Raspbian Jessie (30/12/2016) contient une faille dans la deuxième ligne du fichier d'interfaces. Il manque le symbole # en tête sur la deuxième ligne pour désigner la ligne en tant que commentaire. Ce problème rend le fichier d'interface illisible par le système. J'ai passé de nombreuses heures à essayer de faire fonctionner mon wifi avant de trouver cette erreur.

Pour résoudre ce problème, ajoutez simplement un symbole # au début de la ligne.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.