J'ai un fichier /etc/network/interfaces
(sur une boîte de 16.04) qui ressemble à ceci:
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.88.50
netmask 255.255.255.0
gateway 192.168.88.1
dns-nameservers 192.168.88.1
dns-domain mynet.lan
Vous vous attendez à ce que eth0
apparaisse avec l'IP spécifiée. Cela ne se passe pas. Au démarrage, je vois une ligne qui dit:
IP-Config: eth0 hardware address e0:db:55:0c:34:7e mtu 1500 DHCP
..et l'interface est ensuite affichée avec une adresse fournie de manière très utile par le serveur DHCP local.
Plus troublant, cette ligne IP-Config ne s'affiche qu'au démarrage et n'est visible dans aucun de mes fichiers journaux.
Qu'est-ce que IP-Config? Pourquoi piétine-t-il mon fichier interfaces
et où peut-il être configuré?
L'adresse fictive (dans mon cas, 192.168.88.222) n'est créée qu'au démarrage, quelque temps avant que les scripts if*
ne s'y rendent. ip addr
affiche la mauvaise adresse (obtenue de DHCP) directement au-dessus de la bonne adresse (marquée comme "secondaire").
tl; dr: quelque chose diffuse pour DHCP et l’assigne à la NIC avant de l’être normalement à l’aide des commandes if*
, menant à deux adresses sur la même carte réseau.
Si je suis en bas de l'interface, ip address
montre l'adresse fictive toujours associée à la carte réseau. Si j’émets un ip address flush eth0
, l’adresse fausse est supprimée et ne revient pas lors d’un redémarrage ultérieur de l’interface - mais elle fait revient au moment du redémarrage du système.
J'ai finalement trouvé ce qui causait cela. Non pas en trouvant un pointeur caché quelque part, non, mais plutôt en bloquant tout mon système de fichiers pour les paramètres DHCP: _grep -ri 'dhcp' /
_. Il y a presque certainement un meilleur moyen. Mais, de toute façon:
Les tentatives précédentes de jouer avec le démarrage réseau ISCSI sur cette machine ont en quelque sorte abouti à la création d'un fichier /run/network/dynamic-interfaces
, qui semble utiliser la même syntaxe que _/etc/network/interfaces
_. En effet, la ligne indiquait à la machine d’afficher eth0 en tant que DHCP, et comme cela se passe dans le contexte de initramfs
, cela met l’interface en ligne bien avant que iftools
ne donne sa chance.
Ce fichier fait partie du paquetage _cloud-initramfs-dyn-netconf
_ qui est standard sur le serveur Ubuntu. Vous ne souhaitez pas le désinstaller car il fait partie du métapaquet _ubuntu-server
_ (et si vous le désinstallez, les mises à niveau risquent d'échouer ultérieurement).
Après avoir effacé le fichier et redémarré, le fichier NIC est contrôlé par le fichier interfaces
normalement.
Je crois que la formulation correcte est statique; pas manuel. De plus, avez-vous déterminé que l'adresse que vous avez sélectionnée, 192.168.88.50, est en dehors de la plage d'adresses utilisée pour DHCP dans le routeur afin d'éviter une collision? Peut-être que x.50 est déjà utilisé ou réservé.
Après avoir déterminé le pool DHCP dans le routeur, je vous suggère de modifier le fichier pour:
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.88.zz
netmask 255.255.255.0
gateway 192.168.88.1
dns-nameservers 192.168.88.1
dns-domain mynet.lan
... où zz est une adresse en dehors du pool DHCP.
Redémarrez l'interface:
Sudo ifdown eth0 && Sudo ifup -v eth0
Le -v pour verbose devrait produire une sortie qui nous indique si la connexion a réussi.
Avez-vous reçu l'adresse demandée?
ifconfig