Dobre szczegółowe wyjaśnienie składni / etc / network / interfaces?

139

Zrozumiałem bardzo podstawową koncepcję korzystania /etc/network/interfaces, ale wszystko, co znajduję w Internecie, to przykłady, przykład po przykładzie, z których mogę skopiować i wkleić. Brakuje mi wyjaśnienia składni, wyjaśnienia znaczenia poleceń i ich kolejności. Chcę to zrozumieć, ponieważ przez większość czasu kopiowanie-wklejanie nie wystarcza, ponieważ nie pracuję na nowej maszynie, więc nie mogę po prostu nadpisać istniejących konfiguracji, ponieważ mogłoby to zepsuć wiele rzeczy. man interfacesnie było bardzo pomocne, ponieważ jest napisane bardzo skomplikowane.

Mam przykładowe pytania: co dokładnie oznacza inetw ifacewierszu (nie mogłem go nawet znaleźć na stronie podręcznika), co dokładnie oznacza manualw ifacewierszu (wiele przykładów go używa, ale według strony potrzebuje wtedy dodatkowego pliku konfiguracyjnego, który przykłady nie są prezentowane), kiedy ich używam lub potrzebuję? Kiedy nie? Kiedy tworzę most, co dokładnie dzieje się z interfejsami?

Bar Foo
źródło
4
Strona podręcznika mówi, że po nazwie interfejsu pojawia się rodzina adresów, z której korzysta interfejs. „inet” to nazwa IPv4, inet6 dla ipv6. Istnieją również ipx, x25, appletalk ..., choć ifupdown obsługuje tylko inet / inet6 / ipx, jak wyjaśnia strona podręcznika. manualoznacza, że ​​jeśli updown nic z nimi nie zrobi, musisz to zrobić samodzielnie.
Stéphane Chazelas

Odpowiedzi:

168

Cóż, podzielmy to na części, aby ułatwić zrozumienie /etc/network/interfaces:

Warstwa łącza + opcje typu interfejsu (zazwyczaj pierwsza z każdej sekcji interfejsu i nazywana metodą rodziny adresów + metoda przez interfaces(5)strony):

auto interface- Uruchom interfejs (interfejsy) przy rozruchu. Dlatego lointerfejs korzysta z tego rodzaju konfiguracji łączenia.

allow-auto interface - Taki sam jak auto

allow-hotplug interface- Uruchom interfejs po wykryciu zdarzenia „hotplug”. W prawdziwym świecie jest to używane w tych samych sytuacjach, autoale z tą różnicą, że będzie czekać na zdarzenie takie jak „wykrycie przez udev hotplug api” lub „kabel podłączony”. Aby uzyskać dodatkowe informacje, zobacz „ Powiązane rzeczy (hotplug) ”.

Te opcje są w zasadzie opcjami „warstwy 2”, ustanawiającymi stany łączy na interfejsach i nie są powiązane z „warstwą 3” (routing i adresowanie). Przykładem może być agregacja łączy, w której interfejs bond0 musi działać niezależnie od stanu łącza, a jego członkowie mogą być uruchomieni po zdarzeniu stanu łącza:

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

W ten sposób tworzę agregację łączy, a interfejsy zostaną do niej dodane i usunięte w stanach łączy kablowych.

Najpopularniejsze typy interfejsów:

Wszystkie poniższe opcje są przyrostkami do zdefiniowanego interfejsu ( iface <Interface_family>). Zasadniczo iface eth0tworzy zwrotkę wywoływaną eth0na urządzeniu Ethernet. iface ppp0powinien utworzyć interfejs punkt-punkt i może mieć różne sposoby uzyskiwania takich adresów inet wvdial, które przekierują konfigurację tego interfejsu do wvdialconfskryptu. Krotka inet/ inet6+ optionokreśli wersję protokołu IP , który będzie używany i sposób ten adres zostanie skonfigurowana ( static, dhcp, scripts...). Na forum podręczniki Debiana daje więcej szczegółów na ten temat.

Opcje interfejsów Ethernet:

inet static - Definiuje statyczny adres IP.

inet manual- Nie definiuje adresu IP interfejsu. Zwykle używane przez interfejsy będące elementami mostka lub agregacji, interfejsy, które muszą działać w trybie rozwiązawczym ( np. Dublowanie portów lub sieciowe TAP ), lub mieć skonfigurowane na nich urządzenie VLAN. Jest to sposób na utrzymanie interfejsu bez adresu IP.

inet dhcp - Uzyskaj adres IP za pomocą protokołu DHCP.

inet6 static - Definiuje statyczny adres IPv6.

Przykład:

# 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

Ten przykład eth0wyświetli i utworzy interfejs VLAN o nazwie, vlan10który będzie przetwarzał tag o numerze 10 w ramce Ethernet.

Typowe opcje w sekcji interfejsu (warstwa 2 i 3):

address - Adres IP dla statycznego interfejsu skonfigurowanego do IP

netmask- maska ​​sieci. Można pominąć, jeśli używasz adresu cidr. Przykład:

iface eth1 inet static
    address 192.168.1.2/24
    gateway 192.168.1.1

gateway- Domyślna brama serwera. Uważaj, aby użyć tylko jednego tego faceta.

vlan-raw-device - W interfejsie VLAN definiuje „ojca”.

bridge_ports - Na interfejsie mostka zdefiniuj jego członków.

down- Użyj następującego polecenia, aby wyłączyć interfejs zamiast ifdown.

post-down - Działania podjęte zaraz po wyłączeniu interfejsu.

pre-up - Działania przed uruchomieniem interfejsu.

up- Użyj następującego polecenia, aby zwiększyć interfejs zamiast ifup. Od Twojej wyobraźni zależy skorzystanie z dowolnej dostępnej opcji iputils. Jako przykład moglibyśmy użyć, up ip link set $IFACE up mtu 9000aby włączyć duże ramki podczas upoperacji (zamiast korzystać z mtusamej opcji). Możesz także wywołać dowolne inne oprogramowanie, na przykład up sleep 5; mii-tool -F 100baseTx-FD $IFACEwymusić pełny dupleks 100 Mb / s 5 sekund po uruchomieniu interfejsu.

hwaddress ether 00:00:00:00:00:00- Zmień adres mac interfejsu zamiast używać tego, który jest zapisany na stałe w romie lub wygenerowany przez algorytmy. Możesz użyć słowa kluczowego, randomaby uzyskać losowy adres mac.

dns-nameservers- Adresy IP serwerów nazw. Wymaga resolvconfpakietu. Jest to sposób na skoncentrowanie wszystkich informacji /etc/network/interfaceszamiast używania ich /etc/resolv.confw konfiguracjach związanych z DNS. Nie edytuj resolv.confręcznie pliku konfiguracyjnego, ponieważ zostanie on dynamicznie zmieniony przez programy w systemie.

dns-search example.net- Dołącz example.net jako domenę do zapytań hosta, tworząc FQDN. opcja domainz/etc/resolv.conf

wpa-ssid - Wireless: Ustaw bezprzewodowy identyfikator SSID WPA.

mtu- rozmiar MTU . mtu 9000= Jumbo Frame. Przydatne, jeśli twój Linux jest podłączony do przełączników obsługujących większe rozmiary MTU. Może zepsuć niektóre protokoły (miałem złe doświadczenia z ramkami snmp i jumbo).

wpa-psk - Bezprzewodowy: Ustaw kod PSK w formacie szesnastkowym dla swojego identyfikatora SSID.

ip_rp_filter 1- Włączono filtr ścieżki zwrotnej. Przydatne w sytuacjach, gdy masz 2 trasy do hosta, a to zmusi pakiet do powrotu z miejsca, w którym przyszedł (ten sam interfejs, używając jego tras). Przykład: Masz połączenie z siecią LAN ( 192.168.1.1/24) i masz serwer DLNA z jednym interfejsem na sieci LAN ( 192.168.1.10/24) i innym interfejsem na DMZ do wykonywania zadań administracyjnych ( 172.16.1.1/24). Podczas sesji ssh z komputera na dlna dmz ip informacja musi do ciebie wrócić, ale zawiesi się na zawsze, ponieważ twój serwer dlna będzie próbował dostarczyć odpowiedź bezpośrednio przez interfejs LAN. Po włączeniu rp_filter zapewni, że połączenie wróci z miejsca, z którego pochodzi. Więcej informacji tutaj .

Niektóre z tych opcji nie są opcjonalne. Debian ostrzeże cię, jeśli na przykład umieścisz adres IP w interfejsie bez maski sieci.

Więcej dobrych przykładów konfiguracji sieci można znaleźć tutaj .

Powiązane rzeczy :

Łącza zawierające informacje związane z /etc/network/interfacesplikiem konfiguracji sieci:


źródło
Dzięki, to bardzo pomaga. Czy inetma to coś wspólnego z „internetem”? Czytałem gdzieś, że oznacza to po prostu „IPv4” i inet6„IPv6”, ale termin „inet” jest naprawdę mylący, kiedy go widzisz, i mylą go z skrótem „internet”. A imiona, których się używa, eth0są zdefiniowane, czy mogę je sam wybrać? Jeśli mam więcej niż jedną kartę sieci LAN, w jaki sposób stwierdzić, która ethkarta należy do której karty sieci LAN?
Foo Bar
2
Obie. Razem określają metodę akwizycji adresu IP (skrypty dhcp, static, ppp, brak adresu) oraz wersję protokołu IP ( inet= v4 i inet6= v6). Nazwy interfejsów zależą w dużej mierze od używanej dystrybucji i sposobu udevkonfiguracji. Debian używa eth*i wlan*do kabli i interfejsów bezprzewodowych. Fedora używa schematu biosdevname, gdzie em0jest pierwszym wbudowanym interfejsem ethernet na płycie głównej i p<slot>p<eth port>nazwą nici PCI. Możesz naprawić nazwy sieci /etc/udev/rules.d/70-persistent-net.ruleslub utworzyć alias na interfaces.
2
Odnośnie „bramy - domyślnej bramy serwera. Uważaj, aby użyć tylko jednego z tych gości”. Czy to jeden interfejs na sekcję lub jeden interfejs bramy między wszystkimi sekcjami?
ctbrown,
2
Powinien być jedną bramą spośród wszystkich zwrotek, lub będziesz miał problemy z domyślną trasą. Do pracy z wieloma bramami / wieloma linkami potrzebne będą pewne przemyślenia dotyczące iptables + oznaczanie pakietów + reguły ip.
Jedno małe zapytanie, jeśli w tym pliku mam statyczny iface eth0 inet, a następnie, jeśli napiszę trochę adresu IP w stosunku do adresu, czy to oznacza, że ​​właśnie ten konkretny adres IP, który właśnie napisałem, zostanie powiązany z adresem MAC mojego systemu?
k10
0

Dodałbym również, że:

  • interfejsy są przeznaczone dla usług ifup / ifdown.
  • Gdy użyjesz opcji allow-hotplug, nie rozpocznie się ona od ifup / ifdown, ponieważ musisz użyć flagi --allow = hotplug.

Możesz śledzić, co się dzieje z ifup, używając flagi --verbose.

Nie jestem tego w 100% pewien, ale wydaje się, że w zasadzie, gdy wywoływany jest if, u wykona wszystko z / etc / network / interfejsów z up ... jeśli nie podano inaczej.

Nie jestem pewien, jak to się odnosi do: usług sieciowych ...

Byłoby miło, gdyby ktoś wskazał, co się dzieje po połączeniu:

service networking restart

w odniesieniu do ifup / ifdown.

Z poważaniem
źródło