Sieťové nastavenia

Ubuntu sa dodáva s množstvom grafických nástrojov, ktoré konfigurujú sieťové zariadenia. Tento dokument je určený pre správcov servera a zameriava sa na správu siete cez príkazový riadok.

Ethernetové rozhrania

Ethernetové rozhrania systém rozlišuje podľa dohodnutého označovania ethX, kde X predstavuje číselnú hodnotu. Prvé ethernetové rozhranie sa zvyčajne označuje eth0, druhé eth1 a ďalšie by mali mať nasledujúcu hodnotu v poradí.

Rozpoznanie ethernetových rozhraní

Na rýchle rozpoznanie všetkých dostupný ethernetových rozhraní môžeme použiť príkaz ifconfig.

ifconfig -a | grep eth
eth0      Link encap:Ethernet  HWaddr 00:15:c5:4a:16:5a

Ďalšou aplikáciou, ktorá nám môže pomôcť rozpoznať všetky dostupné sieťové rozhrania, je lshw. V nasledujúcom príklade príkaz lshw zobrazil jedno ethernetové rozhranie s logickým názvom eth0 spolu s informáciami o zbernici, podrobnosťami o ovládači a všetkých podporovaných funkciách.

sudo lshw -class network
 *-network
       description: Ethernet interface
       product: BCM4401-B0 100Base-TX
       vendor: Broadcom Corporation
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: eth0
       version: 02
       serial: 00:15:c5:4a:16:5a
       size: 10MB/s
       capacity: 100MB/s
       width: 32 bits
       clock: 33MHz
       capabilities: (snipped for brevity)
       configuration: (snipped for brevity)
       resources: irq:17 memory:ef9fe000-ef9fffff

Logické názvy ethernetových rozhraní

Názvy logických rozhraní sú nastavené v súbore /etc/udev/rules.d/70-persistent-net.rules. Keď chceme určiť, ktoré zariadenie dostane určitý logický názov, nájdeme zodpovedajúce rozhranie podľa fyzickej MAC adresy a upravíme hodnotu NAME=ethX na požadované logické meno. Aby sa zmeny prejavili, reštartujeme systém.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:15:c5:4a:16:5a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:15:c5:4a:16:5b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Nastavenia ethernetového rozhrania

ethtool je program, ktroý zobrazuje zmeny v nastaveniach ethernetovej karty ako napríklad automatické zladenie (auto-negotiation), rýchlosť portu, duplexný režim a zapnutie cez sieť (Wake-on-LAN). Program v predvolenom stave nie je nainštalovaný, ale dá sa doinštalovať z úložísk.

sudo apt-get install ethtool

V nasledujúcej ukážke môžeme vidieť, ako si môžeme na ethernetovom rozhraní pozrieť podporované funkcie a nakonfigurované nastavenia.

sudo ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Current message level: 0x000000ff (255)
Link detected: yes

Zmeny, ktoré vykonáme pomocou príkazu ethtool sú dočasné a po reštarte počítača sa stratia. Ak chceme zmeny zachovať, stačí ak do konfiguračného súboru rozhraní /etc/network/interfaces pridáme požadovaný príkaz ethtool za príkaz pre-up.

Nasledujúci príklad hovorí, ako môžeme rozhranie identifikované ako eth0 trvalo nastaviť tak, aby rýchlosť jeho portu bola 1000Mb/s a aby pracovalo v režime full duplex.

auto eth0
iface eth0 inet static
pre-up /usr/sbin/ethtool -s eth0 speed 1000 duplex full
[Note]

Aj keď sme v predchádzajúcom príklade použili rozhranie staticky nastavené rozhranie, tento príkaz funguje aj s inak nastaveným rozhraním, ako napríklad DHCP. Príklad iba demonštruje správne umiestnenie príkazu pre-up vzhľadom na zvyšok konfigurácie rozhrania.

Nastavenie IP adries

Nasledujúca časť opisuje proces konfigurácie IP adresy a predvolenej brány v systéme, čo sú nastavenia potrebné na komunikáciu s lokálnou sieťou a Internetom.

Dočasné nastavenie IP adresy

Na dočasnú konfiguráciu siete, môžeme použiť bežné príkazy ako ip, ifconfig a route, ktoré sa nachádzajú vo väčšine operačných systémov GNU/Linux. Tieto príkazy umožňujú konfigurovať nastavenia, ktoré sa prejavia okamžite, avšak nepretrvajú navždy a po reštartovaní počítača sa stratia.

Keď chceme IP adresu nastaviť iba dočasne, môžeme použiť príkaz ifconfig nasledujúcim spôsobom. Zmeníme iba IP adresu a masku podsiete aby súhlasila s požiadavkami siete.

sudo ifconfig eth0 10.0.0.100 netmask 255.255.255.0

Aby sme preverili správnosť nastavenia IP adresy na eth0, môžeme opäť použiť príkaz ifconfig nasledujúcim spôsobom.

ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a
inet addr:10.0.0.100 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::215:c5ff:fe4a:165a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:466475604 errors:0 dropped:0 overruns:0 frame:0
TX packets:403172654 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2574778386 (2.5 GB) TX bytes:1618367329 (1.6 GB)
Interrupt:16

Keď chceme zmeniť predvolenú bránu, použijeme príkaz route nasledujúcim spôsobom. Upravíme adresu predvolenej brány tak, aby súhlasila s požiadavkami siete.

sudo route add default gw 10.0.0.1 eth0

Aby sme overili nastavenie predvolenej brány, opäť použijeme príkaz route nasledujúcim spôsobom.

route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0

Ak kvôli dočasnému nastaveniu siete potrebujeme zmeniť aj DNS servery, môžeme IP adresy DNS serverov pridať do súboru /etc/resolv.conf. Nasledujúci príklad zobrazuje, ako môžeme do súboru /etc/resolv.conf zadať adresy dvoch DNS serverov, kroté si môžeme zmeniť na adresy serverov potrebných pre našu sieť. Detailnejší popis nastavení DNS klienta sa nachádza v nasledujúcej časti.

nameserver 8.8.8.8
nameserver 8.8.4.4

Ak už naďalej nepotrebujeme túto konfiguráciu a chceme ju z rozhrania odstrániť, môžeme použiť príkaz ip s voľbou flush tak, ako sme to uviedli nižšie.

ip addr flush eth0
[Note]

Odstránenie IP konfigurácie pomocou príkazu ip nezmaže obsah súboru /etc/resolv.conf. Záznamy v tomto súbore musíte odstrániť alebo zmeniť ručne.

Pridelenie dynamickej IP adresy (DHCP klient)

Keď chceme nastaviť server tak, aby využil DHCP na dynamické nastavenie adresy, pridáme dhcp za príkaz intet na príslušnom rozhraní v súbore /etc/network/interfaces. Nasledujúci príklad predpokladá, že prvé ethernetové rozhranie sa volá eth0.

auto eth0
iface eth0 inet dhcp

Po pridaní predchádzajúcej konfigurácie rozhrania, môžeme ručne zapnúť rozhranie pomocou príkazu ifup, ktorý inicializuje DHCP proces prostredníctvom príkazu dhclient.

sudo ifup eth0

Ak chceme rozhranie ručne vypnúť, použijeme príkaz ifdown, ktorý následne inicializuje uvoľňovací DHCP proces a vypne rozhranie.

sudo ifdown eth0

Pridelenie statickej IP adresy

Keď chceme nastaviť v našom systéme statickú IP adresu, pridáme za príkaz inet zápis static na príslušnom rozhraní v súbore /etc/network/interfaces. Nasledujúcim príkazom nastavíme naše prvé ethernetové rozhranie s názvom eth0. Adresu, sieťovú masku a bránu zmeníme na hodnoty, ktoré potrebujeme v našej sieti.

auto eth0
iface eth0 inet static
address 10.0.0.100
netmask 255.255.255.0
gateway 10.0.0.1

Po pridaní predchádzajúcej konfigurácie môžeme rozhranie ručne zapnúť pomocou príkazu ifup.

sudo ifup eth0

Keď chceme rozhranie ručne vypnúť, použijeme príkaz ifdown.

sudo ifdown eth0

Rozhranie spätnej väzby - Loopback

Rozhranie spätnej väzby sa v systéme volá lo a v predvolenom stave má pridelenú IP adresu 127.0.0.1. Môžeme si ho prezrieť pomocou príkazu ifconfig.

ifconfig lo

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2718 errors:0 dropped:0 overruns:0 frame:0
TX packets:2718 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:183308 (183.3 KB) TX bytes:183308 (183.3 KB)

V predvolenom stave sú v súbore /etc/network/interfaces dva riadky, ktoré rozhranie spätnej väzby automaticky nastavia. Odporúča sa, aby sme tieto riadky ponechali, pokiaľ nemáme konkrétny dôvod toto nastavenie zmeniť. Spomínané dva riadky sa nachádzajú v nasledujúcom príklade.

auto lo
iface lo inet loopback

Preklad názvov

Preklad názvov týkajúci sa internetových sietí je proces priradenia číselných IP adries k menným adresám hostiteľských staníc, aby bolo pre človeka jednoduchšie určiť sieťový zdroj. Nasledujúca časť hovorí o tom, ako správne nakonfigurovať systém tak, aby prekladal adresy pomocou systému DNS a statických záznamov o hostiteľských staniciach.

Konfigurácia DNS klienta

Keď chceme nakonfigurovať systém tak, aby na preklad adries použil systém DNS, pridáme IP adresy DNS serverov vhodných pre našu sieť, do súboru /etc/resolv.conf. Môžeme tiež voliteľne za príkaz search pridať DNS príponu, ktorá sa bude automaticky pridávať ku skráteným názvom staníc našej siete.

Nasledujúci príklad predstavuje typickú konfiguráciu v súbore /etc/resolv.conf pre server v doméne "nieco.sk", ktorý používa na preklad adries dva verejné DNS servery.

search nieco.sk
nameserver 8.8.8.8
nameserver 8.8.4.4

Voľba search sa dá použiť aj pre viacero domén, ktoré sa budú postupne pridávať k DNS požiadavkám v tom poradí, v akom sú zadané. Napríklad môže mať naša doména niekoľko poddomén - hlavná doména bude nieco.sk, a dve poddomény budú predaj.nieco.sk a vyvoj.nieco.sk.

Pri viacerých doménach naša konfiguráciu môžeme zapísať nasledujúcim spôsobom.

search nieco.sk predaj.nieco.sk vyvoj.nieco.sk
nameserver 8.8.8.8
nameserver 8.8.4.4

Ak sa pokúsime cez sieť osloviť hostiteľskú stanicu s názvom server1, systém DNS požiadavku bude automaticky doplňovať na tzv. Fully Qualified Domain Name (FQDN) - úplnú doménovú adresu v nasledujúcom poradí:

  1. server1.nieco.sk

  2. server1.predaj.nieco.sk

  3. server1.vyvoj.nieco.sk

Ak DNS server nenájde ani jednu z týchto adries, na DNS požiadavku odpovie chybovým hlásením.

Statické záznamy o hostiteľských staniciach

Statické záznamy o hostiteľských staniciach sú je lokálne uložený zoznam priradení menných adries k číselným IP adresám, ktorý je uložený v súbore /etc/hosts. Záznamy v súbore hosts majú v predvolenom stave prednosť pred DNS. To znamená, že ak sa systém pokúša preložiť mennú adresu a nájde záznam v súbore /etc/hosts, nebude sa ďalej pokúšať nájsť záznam v systéme DNS. V niektorých prípadoch (najmä ak nie je nutné pripojenie na Internet) sa servery, ktoré komunikujú s obmedzeným počtom staníc, zvyčajne nastavujú pomocou statických záznamov a nie pomocou DNS.

V nasledujúcom príklade súboru hosts je niekoľko adries lokálnych serverov, pre ktoré sú v súbore definované jednoduché názvy spolu s aliasmi a ich úplnými doménovými adresami (FQDN).

127.0.0.1	localhost
127.0.1.1 ubuntu-server
10.0.0.11 server1 vpn server1.nieco.sk
10.0.0.12 server2 mail server2.nieco.sk
10.0.0.13 server3 www server3.nieco.sk
10.0.0.14 server4 file server4.nieco.sk
[Note]

Všimnite si, že v predchádzajúcom príklade má každý server alias aj príslušnú doménovú adresu FQDN. Server1 má priradený aj názov vpn, server2 sa dá adresovať pomocou názvu mail, server3 ako www a server4 ako file.

Konfigurácia prepínania služieb pre preklad názvov

Poradie v akom si systém vyberá spôsob, akým preloží mennú adresu hostiteľskej stanice na číselnú IP adresu, je určený pomocou Name Service Switch (NSS) v konfiguračnom súbore /etc/nsswitch.conf. Tak ako sme to už, spomenuli v predchádzajúcej časti, statické záznamy definované v súbore /etc/hosts majú zvyčajne prednosť pred DNS. Nasledujúci príklad predstavuje poradie v súbore /etc/nsswitch.conf v akom sa budú hľadať menné adresy.

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
  • files najskôr sa systém pokúsi nájsť adresu v súbore /etc/hosts.

  • mdns4_minimal pokúsi sa preložiť meno pomocou Multicast DNS.

  • [NOTFOUND=return] znamená, že každá odpoveď procesu mdns4_minimal o nenájdení záznamu sa vyhodnotí ako neautorizovaná aby sa systém nepokúšal ďalej pátrať po odpovedi.

  • dns reprezentuje pravú unicast požiadavku DNS.

  • mdns4 reprezentuje požiadavku Multicast DNS.

Keď chceme zmeniť poradie spomínaných spôsobov prekladu názvov, stačí jednoducho zameniť reťazce za slovom hosts: podľa toho, ako nám to vyhovuje. Napríklad ak chceme použiť pravý Unicast DNS skôr ako Multicast DNS, zmeníme poradie reťazcov v súbore /etc/nsswitch.conf nasledujúcim spôsobom.

hosts:          files dns [NOTFOUND=return] mdns4_minimal mdns4

Premostenie

Premostenie (Bridging) viacerých rozhraní patrí k pokročilej konfigurácii, ale je v mnohých prípadoch veľmi užitočné. Jedno z využití je premostenie viacerých sieťových rozhraní a následné použitie firewallu na filtrovanie dvoch sieťových segmentov. Iné využitie je použitie premostenia v systémoch s jedným rozhraním, aby virtuálne počítače mali priamy prístup do siete. Nasledujúci príklad predvedie práve tento druhý spôsob využitia.

Pred tým, ako budeme môcť nastaviť premostenie, je potrebné nainštalovať balík bridge-utils. Ak ho chceme nainštalovať, zadáme:

sudo apt-get install bridge-utils

Potom nastavíme premosťujúce rozhranie (br0) v súbore /etc/network/interfaces:

auto lo
iface lo inet loopback

auto br0
iface br0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
[Note]

Ďalej zadajte príslušné hodnoty vášho fyzického rozhrania (eth0) a siete.

Teraz reštartujte sieť a aktivujte premosťujúce rozhranie:

sudo /etc/init.d/networking restart

Nové premostené rozhranie je teraz aktivované a funkčné. Nástroj brctl nám poskytne užitočné informácie o stave premostenia, umožňuje riadiť, ktoré rozhrania budú súčasťou premostenia, atď. Viac informácií získame po zadaní príkazu man brctl.

Zdroje