Bonne explication détaillée de la syntaxe / etc / network / interfaces?

139

J'ai compris le concept de base de l'utilisation /etc/network/interfaces, mais tout ce que je trouve en ligne sont des exemples, exemple après exemple, que je peux copier-coller. Ce qui me manque, c’est une explication de la syntaxe, une explication de la signification des commandes et de l’ordre qu’elles exigent. Je veux comprendre, car la plupart du temps, le copier-coller n’est pas suffisant, car je ne travaille pas sur une machine neuve, je ne peux donc pas écraser les configurations existantes car cela casserait beaucoup de choses. man interfacesn'était pas très utile car il est écrit très compliqué.

Exemples de questions que j'ai: que signifie exactement inetdans une ifaceligne (je ne pouvais même pas le trouver dans la page de manuel), que signifie exactement manualdans une ifaceligne (de nombreux exemples l'utilisent, mais selon la page de manuel, il faut alors un fichier de configuration supplémentaire, qui les exemples ne sont pas présents), quand dois-je les utiliser ou en avoir besoin? Quand pas? Quand je crée un pont, qu'arrive-t-il exactement aux interfaces?

Foo Bar
la source
4
La page de manuel indique que ce qui vient après le nom de l'interface correspond à la famille d'adresses utilisée par l'interface. "inet" est le nom pour IPv4, inet6 pour ipv6. Il y a aussi ipx, x25, appletalk ..., bien que ifupdown ne traite qu'avec inet / inet6 / ipx comme l'explique la page de manuel. manualsignifie que si updown ne fait rien à leur sujet, vous devez le faire vous-même manuellement.
Stéphane Chazelas

Réponses:

169

Eh bien, séparons-le en morceaux, pour le rendre plus facile à comprendre /etc/network/interfaces:

Options de couche liaison + type d'interface (généralement la première de chaque strophe d'interface appelée famille d'adresses + méthode par interfaces(5)pages de manuel):

auto interface- Démarrer la ou les interfaces au démarrage. C'est pourquoi l' lointerface utilise ce type de configuration de liaison.

allow-auto interface - Pareil que auto

allow-hotplug interface- Démarrez l'interface lorsqu'un événement "hotplug" est détecté. Dans le monde réel, cela est utilisé dans les mêmes situations que, automais la différence est qu’il attendra un événement du type "être détecté par udev hotplug api" ou "câble lié". Voir " Articles liés (hotplug) " pour plus d'informations.

Ces options sont en gros des options de "couche 2", définissant des états de liaison sur des interfaces, et ne sont pas liées à la "couche 3" (routage et adressage). Par exemple, vous pourriez avoir une agrégation de liens dans laquelle l'interface bond0 doit être active quel que soit l'état du lien, et ses membres pourraient être actifs après un événement d'état du lien:

auto bond0
iface bond0 inet manual
        down ip link set $IFACE down
        post-down rmmod bonding
        pre-up modprobe bonding mode=4 miimon=200
        up ip link set $IFACE up mtu 9000
        up udevadm trigger

allow-hotplug eth0
iface eth0 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

allow-hotplug eth1
iface eth1 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

Ainsi, de cette façon, je crée une agrégation de liens et les interfaces y sont ajoutées et supprimées des états de liaison par câble.

Types d'interface les plus courants:

Toutes les options ci-dessous sont un suffixe pour une interface définie ( iface <Interface_family>). Fondamentalement, la iface eth0crée une strophe appelée eth0sur un périphérique Ethernet. iface ppp0devrait créer une interface point-à-point , et il pourrait avoir différentes façons d'acquérir des adresses, comme inet wvdialcela transmettrait la configuration de cette interface au wvdialconfscript. Le tuple inet/ inet6+ optiondéfinira la version du protocole IP qui sera utilisé et la façon dont cette adresse sera configurée ( static, dhcp, scripts...). Les manuels Debian en ligne vous donneront plus de détails à ce sujet.

Options sur les interfaces Ethernet:

inet static - Définit une adresse IP statique.

inet manual- Ne définit pas d'adresse IP pour une interface. Généralement utilisé par les interfaces pont, membres d'agrégation, interfaces devant fonctionner en mode proche ( p. Ex. Mise en miroir de ports ou TAP réseau ) ou sur lesquelles un périphérique VLAN est configuré. C'est un moyen de maintenir l'interface sans adresse IP.

inet dhcp - Acquérir une adresse IP via le protocole DHCP.

inet6 static - Définit une adresse IPv6 statique.

Exemple:

# Eth0
auto eth0
iface eth0 inet manual
    pre-up modprobe 8021q
    pre-up ifconfig eth0 up
    post-down ifconfig eth0 down

# Vlan Interface
auto vlan10
iface vlan10 inet static
        address 10.0.0.1
        netmask 255.255.255.0
        gateway 10.0.0.254
        vlan-raw-device eth0
        ip_rp_filter 0

Cet exemple affichera eth0et créera une interface VLAN appelée vlan10qui traitera le numéro d'étiquette 10 sur une trame Ethernet.

Options communes à l'intérieur d'une strophe d'interface (couches 2 et 3):

address - adresse IP pour une interface configurée IP statique

netmask- masque de réseau. Peut être omis si vous utilisez l'adresse cidr. Exemple:

iface eth1 inet static
    address 192.168.1.2/24
    gateway 192.168.1.1

gateway- La passerelle par défaut d'un serveur. Veillez à utiliser un seul de ce type.

vlan-raw-device - sur une interface VLAN, définit son "père".

bridge_ports - Sur une interface de pont, définissez ses membres.

down- Utilisez la commande suivante pour descendre l'interface au lieu de ifdown.

post-down - Actions entreprises juste après que l'interface soit en panne.

pre-up - Actions avant l'interface est en place.

up- Utilisez la commande suivante pour accéder à l'interface au lieu de ifup. Il est de votre imagination d'utiliser n'importe quelle option disponible sur iputils. A titre d'exemple, nous pourrions utiliser up ip link set $IFACE up mtu 9000pour activer les trames jumbo pendant l' upopération (au lieu d'utiliser l' mtuoption elle-même). Vous pouvez également appeler n’importe quel autre logiciel, comme up sleep 5; mii-tool -F 100baseTx-FD $IFACEforcer le duplex intégral à 100 Mbits / s, 5 secondes après la mise en place de l’interface.

hwaddress ether 00:00:00:00:00:00- Modifiez l'adresse MAC de l'interface au lieu d'utiliser celle codée en dur dans la ROM ou générée par des algorithmes. Vous pouvez utiliser le mot-clé randompour obtenir une adresse mac aléatoire.

dns-nameservers- adresses IP des serveurs de noms. Nécessite le resolvconfpackage. C'est un moyen de concentrer toutes les informations au /etc/network/interfaceslieu de les utiliser /etc/resolv.confpour les configurations liées à DNS. Ne modifiez pas le resolv.conffichier de configuration manuellement car il sera modifié de manière dynamique par les programmes du système.

dns-search example.net- Ajoutez example.net en tant que domaine aux requêtes de l'hôte, en créant le nom de domaine complet. Option domainde/etc/resolv.conf

wpa-ssid - Sans fil: définissez un SSID WPA sans fil.

mtu- taille du MTU . mtu 9000= Jumbo Frame. Utile si votre machine Linux est connectée avec des commutateurs prenant en charge des tailles de MTU supérieures. Peut rompre certains protocoles (j'ai eu de mauvaises expériences avec les cadres snmp et jumbo).

wpa-psk - Sans fil: Définissez un PSK codé en hexadécimal pour votre SSID.

ip_rp_filter 1- Filtre de chemin inverse activé. Utile dans les situations où vous avez 2 routes vers un hôte, et cela forcera le paquet à revenir d'où il est venu (même interface, en utilisant ses routes). Exemple: vous êtes connecté sur votre lan ( 192.168.1.1/24) et vous disposez d'un serveur DLNA avec une interface sur votre lan ( 192.168.1.10/24) et une autre interface sur dmz pour exécuter des tâches administratives ( 172.16.1.1/24). Pendant une session SSH depuis votre ordinateur vers dlna dmz ip, les informations doivent vous être renvoyées, mais resteront bloquées pour toujours car votre serveur DLNA essaiera de fournir la réponse directement via son interface LAN. Avec rp_filter activé, cela garantira que la connexion reviendra d’où elle vient. Plus d'informations ici .

Certaines de ces options ne sont pas facultatives. Debian vous avertira si vous mettez une adresse IP sur une interface sans masque de réseau, par exemple.

Vous pouvez trouver plus de bons exemples de configuration réseau ici .

Trucs connexes :

Liens /etc/network/interfacescontenant des informations relatives au fichier de configuration réseau:


la source
Merci, cela aide beaucoup. At- inetil quelque chose à voir avec "Internet"? J'ai lu quelque part que cela signifie simplement "IPv4" et inet6"IPv6", mais le terme "inet" est vraiment déroutant quand vous le voyez et que vous le confondez avec l'abréviation de "internet". Et les noms que l'on utilise, comme eth0, sont-ils définis ou puis-je les choisir moi-même? Si j'ai plusieurs adaptateurs LAN, comment savoir lequel ethappartient à quel adaptateur LAN?
Foo Bar
2
Tous les deux. Ensemble, ils définissent la méthode d'acquisition d'adresse ip (dhcp, statique, scripts ppp, aucune adresse) et la version du protocole ip ( inet= v4 et inet6= v6). Les noms d'interface dépendent en grande partie de la distribution que vous utilisez et de la manière dont elle udevest configurée. Debian utilise eth*et wlan*au câble et les interfaces sans fil. Fedora utilise le schéma biosdevname où em0est la première interface Ethernet intégrée sur votre carte mère, ainsi que p<slot>p<eth port>le nom d’un nic PCI. Vous pouvez corriger les noms de réseau sur /etc/udev/rules.d/70-persistent-net.rulesou créer un alias sur interfaces.
2
En ce qui concerne "passerelle - la passerelle par défaut d'un serveur. Veillez à utiliser un seul de ce type". S'agit-il d'une interface par passerelle ou d'une passerelle parmi toutes les strophes?
ctbrown
2
Devrait être une passerelle parmi toutes les strophes, ou, vous aurez des problèmes avec votre itinéraire par défaut. Pour travailler avec plusieurs passerelles / multi-liens, certaines réflexions avec iptables + marquage de paquet + règles ip seront nécessaires.
Une petite requête, si dans ce fichier, je rencontre iface eth0 inet static puis si j'écris un champ adresse IP, cela signifie-t-il que l'adresse IP que je viens d'écrire sera liée à l'adresse MAC de mon système?
k10
0

J'ajouterais aussi que:

  • les interfaces sont pour les services ifup / ifdown.
  • Lorsque vous utilisez allow-hotplug, il ne commencera pas par ifup / ifdown, vous devez utiliser flag --allow = hotplug.

Vous pouvez suivre ce qui se passe avec ifup en utilisant le drapeau --verbose.

Je ne suis pas sûr à 100% de cela, mais il semble que si ifup s'appelle u, tout s'exécutera à partir de / etc / network / interfaces avec jusqu'à ... sauf indication contraire.

Je ne suis pas sûr de savoir comment cela se rapporte: réseau de service ...

Ce serait bien si quelqu'un indiquait ce qui se passait après l'appel:

service networking restart

par rapport à ifup / ifdown.

Votre sincèrement
la source