Portál AbcLinuxu, 24. října 2025 09:47
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.
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.
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říkazup příkaz2 nebo post-up příkaz3post-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 pre-down /usr/sbin/ethtool -s eth1 wol g
#povolení buzení PC po síti
post-down příkaz6post-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).
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íeth0, ath0), nebo virtuální, na které se podíváme později.inet_familyVybíráme, s jakým typem adres chceme pracovat; na výběr máme:
inet - klasické ipv4inet6 - značí ipv6 adresyipx - obdoba tcp/ip pro Novell Netware sítě. typ_nastaveníLiší se podle inet_family, například:
dhcp - načtení základních nastavení z DHCP serverustatic - tím řekneme, že si všechno chceme nastavit samistaticPokud vybereme nastavení static, nabízí nám interfaces tyto zajímavé možnosti (kompletní výčet v man interfaces):
addressnetmaskgatewayhwaddresshwaddress 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
dhcpPro 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):
clientdhcpcd, udhcpc).hwaddressV případě, že testujete DHCP server a chcete kratší doby pro přidělování adres, využijete následující možnosti:
leasehourspump).leasetimedhcpcd).
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
loopbackRozhraní, které by mělo být v každém stroji, je loopback. Jeho syntaxe je:
iface lo inet loopback
ostatniToto určitě nebyl uplný popis všech možností nastavení, další možnosti jsou: bootp, ppp, qvdial, detaily hledejte v man interfaces.
Pokud v inet_family uvedeme inet6, máme obdobné možnosti nastavení jako v inet4.
staticPokud 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.
addressnetmaskgatewayhwaddresshwaddreess ether 01:02:03:04:05:06.mtu
iface eth2 inet6 static
address 2001:15c0:1234:1::2
netmask 64
gateway 2001:15c0:1234:1::1
v4tunnelUmožňuje nastavit ipv6-over-ipv4 tunnel (6to4). Vyžaduje příkaz ip (balík iproute). Možnosti jsou:
addressNaše IPv4 adresa převedená do IPv6 tvaru například pomocí:
printf "2002:%02x%02x:%02x%02x::1\n" 1 2 3 4
netmaskendpointlocalgatewayttl
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
V tomto článku nezmiňuji nastavení IPX, pokud někoho zajímá, detaily lze nalézt v man interfaces.
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.
"Debian" /etc/network/interfaces je už rok používán také v Source Mage.
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.
a kde vlasnt prijdu k vlastnimu rozsahu ipv6, kde jej zadat?
tohoto jsem si všimnul že u up, down není v manu komentář, bohužel mi nedošlo, co tím chtěli říct...
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
Díky za článek, já se určitě přimlouvám za pokračování.
Typ MTU? Nemělo by být spíš velikost MTU, nebo jenom MTU?
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.
address 2001:15c0:1234:1::2 netmask 64kdež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
jo uz to chapu ... on nemluvil o zapisu adres ipv6 obecne, ale o zapisu ipv6 do konfiguraku :) ... v tom to bude ;) dik
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.
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
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).
Diky za skvely clanek, urcite se primlouvam za pokracovani, hlavne ta wifi me zajima.
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
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.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.