Portál AbcLinuxu, 25. května 2024 00:16

Debian /etc/network/interfaces - konfigurace síťových rozhraní

27. 2. 2009 | Jan Malaník
Články - Debian /etc/network/interfaces - konfigurace síťových rozhraní  

Systém Debian network interfaces slouží k ovládání síťových rozhraní počítače. Hodí se zejména v prostředí, kde se stroj přesouvá mezi několika známými nastaveními sítě a nechceme ty samé úkony provádět neustále dokola ručně. Nabízí automatizované ovládání všech oblastí síťování v Linuxu. Je alternativou k NetworkManageru, který má ještě pořád své mouchy. NetworkManager je možné nastavit, aby pracoval i s Debian interfaces.

Celý systém je založen na adresáři /etc/network. Pokud v článku použiji název souboru nebo adresáře bez cesty, bude umístěn právě tam. Hlavní konfigurace je zapsána v souboru interfaces. Teď si ho podrobněji rozebereme.

Rychlý příklad a ovládání

Než se pustíme do detailů konfiguračního souboru /etc/network/interfaces, ukážeme si, jak se to celé ovládá. K tomu nám poslouží následující jednoduchý příklad:

auto eth0
iface eth0 inet static
    address 192.168.2.5
    netmask 255.255.255.0
    gateway 192.168.2.1
    dns-server 192.168.2.1

iface eth1 inet dhcp

První řádek, který začíná klíčovým slovem auto, nám říká, že rozhraní eth0 může být ovládáno pomocí služby /etc/init.d/networking. Pokud ji uvedeme v adresáři rcX.d, eth0 bude po startu systému automaticky připraven k použití v naší konfiguraci. Ruční ovládání služby je standardní pomocí

{start|stop|restart|force-reload}

Druhou možností ovládání jsou dva speciální příkazy:

ifup interface
ifdown interface

Jak z názvu vyplývá, je možné jimi dané rozhraní zapnout a vypnout.

Spouštění programů v závislosti na stavu rozhraní

Jako další si povíme, jak lze na start a stop síťových zařízení napojit jiné aplikace a služby. Využívá se k tomu šestice direktiv, které lze připsat k jednotlivým rozhraním. Jsou to:

pre-up příkaz
Znamená, že se daný příkaz provede před spušténím rozhraní. Například lze zapnout wpa šifrování pro WiFi.
up příkaz2 nebo post-up příkaz3
Tento příkaz se provede po nastavení rozhraní, například nastavení firewallu, spuštění OpenVPN klienta, nastavení DNS serveru nebo připojení síťových disků.
	post-up echo "nameserver ip.adresa.dns.serveru" >> /etc/resolv.conf
		#provede přidání ip adresy dns serveru do /etc/resolv.conf. 
		#alternativou je použití direktivy: dns-nameservers 1.2.3.1 1.2.3.2
down příkaz5 nebo pre-down příkaz4
Před vypnutím rozhraní proveď příkaz4. Pokud máte připojeny síťové disky, je dobré je teď odpojit, čekání na síť hodně zpomalí vypínaní stroje. Navíc je kolem nedostupnosti těchto disků hodně sprostých hlášek v logu. Další možností je povolení Wake up on LAN.
	pre-down /usr/sbin/ethtool -s eth1 wol g
     	    #povolení buzení PC po síti 
post-down příkaz6
Příkaz se provede po vypnutí rozhraní. Teď můžete například vypnout WPA, pokud jste byli připojení přes WiFi.
	post-down killall wpa_supplicant

Pokud chcete použít více příkazů, uvádějte je na samostatné řádky vždy s klíčovým slovem, které určí, kdy mají být vykonány. Další možností, jak zapínat aplikace při ovládání rozhraní, jsou adresáře v /etc/network/if-direktiva.d. Tam je možné uvést symlinky na aplikace, které chceme startovat. Tento způsob ovládání je možný pouze v případě, že těmto aplikacím (službám) nepotřebujeme předávat parametry (například NTP klient).

Detaily

Celé nastavení je rozděleno do sekcí, které ovládají jednotlivá rozhraní. Každá sekce začíná klíčovým řádkem:

iface rozhraní inet_family typ_nastavení
rozhraní
Zde nastavujeme, které rozhraní chceme ovládat: buď přímo fyzické rozhraní(eth0, ath0), nebo virtuální, na které se podíváme později.
inet_family

Vybíráme, s jakým typem adres chceme pracovat; na výběr máme:

typ_nastavení

Liší se podle inet_family, například:

inet_family=inet neboli nastavení IPv4

typ_nastavení static

Pokud vybereme nastavení static, nabízí nám interfaces tyto zajímavé možnosti (kompletní výčet v man interfaces):

address
Pomocí této volby nastavíme klasické IPv4. Tato volba je povinná.
netmask
Síťová maska naší sítě v tečkovaném tvaru, tj. například 255.255.255.0 pro klasickou domácí síť ve třídě C. Tato volba je povinná.
gateway
Adresa výchozí brány pro komunikaci se stroji mimo naši síť.
hwaddress
Můžeme nastavit klasickou MAC adresu, použití je ve tvaru hwaddress ether 01:02:03:04:05:06, pokud někdo používá jiný typ sítě než ethernet, ať hledá detaily v man interfaces.
iface eth0 inet static
    address 1.2.3.4
       # naše veřejná IP adresa, kterou použijeme za chvíli
       # pro konfiguraci IPv6

    netmask 255.255.192.0
    gateway 1.2.3.1
    post-up echo "domain něco" > /etc/resolv.conf 
    post-up echo "search něco" >> /etc/resolv.conf 
    post-up echo "nameserver ip.adresa.dns.serveru" >> /etc/resolv.conf
    post-up echo "nameserver ip.adresa.dns.serveru" >> /etc/resolv.conf
    post-up dns-search "jméno domény, do které stroj patří"
        # alternativa, oproti přímému vyplnění /etc/resolv.conf

    post-up dns-nameservers 1.2.3.1 1.2.3.2

typ_nastavení dhcp

Pro běžné použití jsou zajímavé volby (některé jsou závislé na typu DHCP klienta, v takovém případě je klient v závorce):

client
Identifikátor klienta, podle kterého může DHCP server přidělit speciální nastavení (dhcpcd, udhcpc).
hwaddress
Umožnuje nám, stejně jako v případě statického nastavení, změnit MAC adresu.

V případě, že testujete DHCP server a chcete kratší doby pro přidělování adres, využijete následující možnosti:

leasehours
Jak často obnovovat IP adresu v hodinách (pump).
leasetime
Opět volba vynucující kontrolu nastaveni DHCP serveru, ale v sekundách (volba funguje v DHCP klientu dhcpcd).
iface eth1 inet dhcp
    hwaddress ether 01:02:03:04:05:06
        # naše MAC adresa, kterou jsme si nechali registrovat
        # do nějaké sítě, která tento způsob ochrany používá

    post-up /etc/init.d/openvpn start ipv6_1wan
    pre-down /etc/init.d/openvpn stop ipv6_1wan
        # protože na tomto rozhraní nemáme k dispozici IPv6,
        # přivedeme si ji OpenVPN tunelem ze serveru

typ_nastavení loopback

Rozhraní, které by mělo být v každém stroji, je loopback. Jeho syntaxe je:

iface lo inet loopback

typ_nastavení ostatni

Toto určitě nebyl uplný popis všech možností nastavení, další možnosti jsou: bootp, ppp, qvdial, detaily hledejte v man interfaces.

inet_family=inet6 neboli nastavení IPv6

Pokud v inet_family uvedeme inet6, máme obdobné možnosti nastavení jako v inet4.

typ_nastavení static

Pokud z nějakého důvodu nechceme nebo nemůžeme použít autokonfiguraci, která je (mimo jiná témata) velmi pěkně popsána v článku IPv6 - nový internet od Pavla Śimerdy, můžeme použít statickou konfiguraci podobně jako u IPv4.

address
IPv6 adresa. Každé 2B oddělené dvojtečkou. Povinná položka.
netmask
Síťová maska, na rozdíl od IPv4 se udává jako počet bitů síťové části, nejběžněji 48 nebo 64.
gateway
Brána pro komunikaci se stroji mimo naši síť. Každé 2B jsou odděleny dvojtečkou.
hwaddress
Umožňuje změnit hardwarovou adresu naší síťové karty: pro běžný ethernet je syntaxe: hwaddreess ether 01:02:03:04:05:06.
mtu
Umožňuje změnit typ MTU pro naši síť.
iface eth2 inet6 static
    address 2001:15c0:1234:1::2
    netmask 64
    gateway 2001:15c0:1234:1::1

typ_nastavení v4tunnel

Umožňuje nastavit ipv6-over-ipv4 tunnel (6to4). Vyžaduje příkaz ip (balík iproute). Možnosti jsou:

address

Naše IPv4 adresa převedená do IPv6 tvaru například pomocí:

printf "2002:%02x%02x:%02x%02x::1\n" 1 2 3 4 
netmask
Udává počet bitů síťové části.
endpoint
IPv4 adresa cílového bodu našeho tunelu rozdělená tečkami.
local
Místní IPv4 adresa.
gateway
Výchozí brána pro náš stroj.
ttl
umožňuje nastavit délku života našich paketů. Maximum je 255.
iface tun6to4 inet6 v4tunnel
    local 1.2.3.4 #naše veřejná ipv4 adresa
    address 2002:0102:0304::1
    netmask 16
        # síťová maska; pozor, pouze ve tvaru, ve kterém systému
        # řekneme, kolik bitů patří do síťové části adresy,
        # u 6to4 tunelu je to 16

    gateway ::192:88.99.1
        # speciální adresa nejbližšího 6to4 routeru

    endpoint any
	#nedefinujeme žádný konkétní cílový stroj

IPX

V tomto článku nezmiňuji nastavení IPX, pokud někoho zajímá, detaily lze nalézt v man interfaces.

Závěr

V dnešním článku jsme se podívali na základní práci s Debian interfaces. Pokud bude zájem, příště bychom se ve volném pokračování podívali na virtuální rozhraní, podporu WiFi a NetworkManageru, plus možná nějaké zajímavosti.

Související články

DHCP - 1 (instalace a konfigurace serveru)
DHCP - 2 (DDNS, relay agent, klient)
VNC - používáme vzdálený desktop
Seriál: IPv6
Čo keď nechodí sieť?

Odkazy a zdroje

Debian Reference - Network configuration

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

Diskuse k tomuto článku

27.2.2009 00:22 Ladislav Hagara | skóre: 102 | blog: Ride the Raven
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

"Debian" /etc/network/interfaces je už rok používán také v Source Mage.

27.2.2009 00:52 jirkamailto | skóre: 31
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

Pekny clanek, ale nakonci vidim tunelovani IPv6 z lokalni site na IPv4 ven s pevnou IP adresou. Nevidim duvod proc nasazovat na tri pocitace doma v siti IPv6. Az se budou pouzivat pouze IPv6, tak jo, ale jinak mi to prijde kanon na vrabce.

27.2.2009 02:06 cynic_asshole | skóre: 28
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
A proč ne? Někde se začít musí... taky u sebe v domácí síti používám IPv6. Pravda, původní záměr byl dostat se na prujem.cz, ale když už jsem dostal i prefix, tak proč ho nepropagovat ve své síti.
Neznáš nějakou linuxovou distribuci pro Windows?
27.2.2009 10:44 petr
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

a kde vlasnt prijdu k vlastnimu rozsahu ipv6, kde jej zadat?

27.2.2009 11:11 1john2 | skóre: 35 | blog: jo12hn | zlín, brno
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
veškeré tyhle informace najdete v seriálu IPv6 - nový internet od Pavla Simerdy.

ve zkratce se dá napsat že buď máte vlastní IPv4 adresu, pak máte nárok na /16 subnet v IPv6, nebo pomocí tunelu například od Sixxs.
27.2.2009 11:37 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
Kanón to není, je to holub (IPv6) vedle vrabce (IPv4).
27.2.2009 09:09 CET
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
Pripada mi to sice pouze jako preklad man interfaces, ale proc ne, nekdo nemusi mit EN za oblibenou.

Mam ale dojem, a man interfaces z debian etch to potvrzuje, ze up a post-up je stejne, a down a pre-down je stejne. Radsi jsem mrknul i na lennyho a tam je to taky tak.

Ono to ani logicky "pri zapnuti" a "pri vypnuti" nejde - interface je off (spousti se pre-up), zapina se interface (bezi zapinani, nebezi zadny dalsi skript), interface je on (spousti se post-up/up). Analogicky pro vypnuti.

Urcite ale pokracuje s tim wifi, prihod i ty virtualni a taky bridge. Ono to sice vypada, ze interfaces je jenom blbej textak s nulovou funkcnosti, ale oni to maji dost dobre propracovany, takze se s tim daji delat dost dobry veci.
27.2.2009 10:16 1john2 | skóre: 35 | blog: jo12hn | zlín, brno
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
vím že je to spíš překlad manu, ale nedokázal jsem to rozvést lépe, k tomuto moc textu asi napsat nejde, druhý díl snad bude upovídanější:-)

tohoto jsem si všimnul že u up, down není v manu komentář, bohužel mi nedošlo, co tím chtěli říct...

27.2.2009 09:38 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
Jen kdyby ten program, co tato pravidla zpracovává, chtěl místo na ifconfigu záviset na ip...
Quando omni flunkus moritati
27.2.2009 10:12 ares
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
clanek peknej, ale daleko vic by me zajimalo, jak to jde dohromady prave s tim network managerem, takze uz se tesim na pokracovani :)
27.2.2009 11:14 Liskni_si | Brno
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

Namísto
#alternativou je použití direktivy: post-up dns-nameservers 1.2.3.1 1.2.3.2
by tam mělo být
#alternativou je použití direktivy: dns-nameservers 1.2.3.1 1.2.3.2

27.2.2009 11:46 1john2 | skóre: 35 | blog: jo12hn | zlín, brno
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
díky napsal sem Robertovi
27.2.2009 12:43 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
Dík, snad je vše opraveno.
27.2.2009 11:29 horada | skóre: 3
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

Díky za článek, já se určitě přimlouvám za pokračování.

27.2.2009 12:09 Limoto | skóre: 32 | blog: Limotův blog
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

Typ MTU? Nemělo by být spíš velikost MTU, nebo jenom MTU?

27.2.2009 13:17 houska | skóre: 41 | blog: HW
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

netmask - Síťová maska, na rozdíl od IPv4 se udává jako počet bitů síťové části, nejběžněji 48 nebo 64.

Podle toho clanku se adresa zapisuje stejne jako v ipv4.

27.2.2009 13:48 1john2 | skóre: 35 | blog: jo12hn | zlín, brno
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
nevím jestli Vás chápu i v odkazovaném článku používá zápis masky ve tvaru /64(značí první čtyři dvojice bajtů oddělené ":") pro ipv6
address 2001:15c0:1234:1::2 
netmask 64
kdežto pro ipv4 je třeba masku do interfaces zapsat ve tvaru s tečkami oddělujícími jednotlivé bajty:
 address 1.2.3.4
 netmask 255.255.192.0
27.2.2009 15:37 houska | skóre: 41 | blog: HW
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

jo uz to chapu ... on nemluvil o zapisu adres ipv6 obecne, ale o zapisu ipv6 do konfiguraku :) ... v tom to bude ;) dik

27.2.2009 16:32 slush | skóre: 9 | blog: slushuv_koutek
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

Zrovna vcera jsem si hral s IPv6 na serveru. Jeden dotaz - nevite, jak idealne nastavit Debian spolu s tunnelbroker.net (Hurricane)? Podle jejich konfigurace je to sada "ifconfig" prikazu. Nakonec jsem to nabastlil jako if-up skript hlavniho eth0 rozhrani, ale libilo by se mi to spis jako zaznam v interfaces. Poradi nekdo?

Jinak - SixXS je SHIT a vsechny pred nima durazne varuju. Mam totiz osobne dva dny starou zkusenost shodnou s touhle. Proti tomu jsou Hurricane super. Mel jsem tam problem s tim, ze uz na moji IP adresu uz jeden tunel existoval. Odepsali do par hodin, poradili reseni, odblokovali, proste parada.

27.2.2009 21:38 cynic_asshole | skóre: 28
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
Hmm, taky začínám mít pocit, že něco shnilého je ve státě dánském. Začalo to 23. února, kdy mi prvně přestal reagovat jeden tunel, který mám na svém routeru. Po napsání trouble ticketu jsem dostal odpověď, ať si překontroluju konfiguraci (se kterou se nehýbalo). Prostě, tunel se spojil, ale nemohl jsem se dostat na jeho druhý konec, nereagoval, byl hluchý. Když jsem se ozval, že se s konfigurací nehýbalo, a když se spojím přes druhý tunel, tak všechno jede v pořádku, čirou náhodou přestal fungovat i ten druhý tunel. Měl stejné symptomy. Po asi 4 dnech se najednou jakoby zázrakem všechno samo opravilo. Pochopil bych, že by na jednom PoP měli problémy, ale když přestal fungovat tunel na jiném PoP, tak už mi to bylo divné.

Apropos, nevíte někdo, co se děje s xs26? Už týden můj účet ověřují, jestli je v pořádku. Nehledě na to, že už nevím jak dlouho nefungují nové registrace.
Neznáš nějakou linuxovou distribuci pro Windows?
1.3.2009 22:22 D-Evil | skóre: 25 | Praha
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
    endpoint ipv4_adresa_endpointu
    local lokalni_ipv4_adresa
    gateway ipv6_adresa_brany (kvuli default route)
    ttl 255

1.3.2009 22:25 D-Evil | skóre: 25 | Praha
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

Jinak samozřejmě je možný tomuhle rozhraní přidat i IPv6 adresu, já jí mám jinde. Víc informací je v man interfaces v odpovídající sekci (INET6 address family, v4tunnel method).

27.2.2009 22:17 Ladislav Kulhánek
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

Diky za skvely clanek, urcite se primlouvam za pokracovani, hlavne ta wifi me zajima.

28.2.2009 21:36 MartinT | skóre: 12 | blog: MT blog
Rozbalit Rozbalit vše spouštění příkazů - chyba ukončí nastavování a další se neprovedou

V praxi se mi osvědčilo za každý příkaz spouštěný v rámci direktiv pre-up, up, post-up, pre-down, down, post-down vložit " || true". Případná chyba v právě prováděném příkazu totiž přeruší konfiguraci rozhraní a další příkazy v pořadí se už neprovedou.

 Příklad:

up ip route add 10.70.239.0/30 dev $IFACE src 10.70.239.2 table hotswap || true
up ip route add default via 10.70.239.1 table hotswap || true
down ip route del default via 10.70.239.1 table hotswap || true
down ip route del 10.70.239.0/30 dev $IFACE src 10.70.239.2 table hotswap || true
up ip addr add 172.16.237.2/29 brd '+' dev $IFACE || true
down ip addr del 172.16.237.2/29 brd '+' dev $IFACE || true

 

6.1.2012 00:08 Kaacz | skóre: 10 | Praha 4
Rozbalit Rozbalit vše Re: spouštění příkazů - chyba ukončí nastavování a další se neprovedou
Uzasne, to jsem netusil. Strasne mi vadi ten zpusob vse v jednom souboru, kde navic jakykoli nezdar skonci ihned cely skript. Timhle se to tedy da osetrit. Priznam se, ze radeji bych mel MOZNOST definovat interfaces kazdy zvlast ve svem souboru treba v podadresari interfaces.d. Vim, ze debian je konzervativni, ale jako nepovinne rozsireni by to bylo dobre. Zjednodusilo by to skriptovani. Nemusim sed-em menit ten jeden a neohrozim managovaci interface.
Jsem uz moc stary na pouzivani windows .. / Optimismus je jen nedostatek informaci ..
1.3.2009 08:28 Stevko
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
Namiesto zapinania a vypinania wpa (wpa_supplicanta) pomocou pre-up a post-down je asi lepsie pouzit nastavenia ako wpa-conf a podobne. Zda sa mi to "cistejsie". Ale to asi bude v dalsom clanku.
3.3.2009 05:03 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní

Dá se nějak elegantně řešit více IPv4 adres na jednom interface? V současné chvíli používám vícenásobný ip addr add přes post-up. Jen mě zajímalo, zda na to není nějaký fígl (kromě věcí typu eth0:0). Díky.

17.3.2009 11:45 bhy | skóre: 35 | blog: bhyblog | brno
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
Hm.. kdy bude pokračování? Už se nemohu dočkat toho návodu na propojení s networkmanagerem.
Petr Břeň - IT služby
5.1.2014 20:12 czjaromir
Rozbalit Rozbalit vše Re: Debian /etc/network/interfaces - konfigurace síťových rozhraní
Zdravím všechny, říkal jsem si, protože přítel google mne odkázal sem, že by nebylo marné tento članek trošku doplnit. Protože mám debian Vydání 7.3 (wheezy) 32 bit a interfaces jsem konfiguroval již mnohokrát tak tentokráte mi to nějak nešlo. Asi došlo k nějakým změnám ale bohužel nevím k jakým. Toto je celý můj interfaces. # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5).

# The loopback network interface auto lo iface lo inet loopback

Trochu málo, asi to nějak inovovali a moje zásahy to jaksi ignoruje.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.