====== Příkazy pro konfiguraci Linuxových strojů ======
===== Přiřazení IP adres =====
IP adresu rozhraní lze přiřadit příkazem ''ip''.
ip addr add a.a.a.a/m dev dddd
ip -6 addr add aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa/m dev dddd
* ''a.a.a.a'' - IPv4 adresa stanice, např. 1.2.3.4
* ''aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa'' - IPv6 adresa stanice, např: 2001:718:2:1663:0:11:222:3333
* ''m'' - maska sítě (prefix), např. 24
* ''dddd'' - rozhraní počítače, např. eth2
Pro fyzické rozhraní lze definovat i více IP adres, jako příklad si uvedeme nastavení dvou adres na rozhraní ''dddd''
ip addr add a.a.a.a/m dev dddd
ip addr add a.a.a.b/m dev dddd
Tato technika označovaná jako alias však vyžaduje, aby její použití bylo jádrem systému povoleno.
Příkaz ''ip'' umožňuje také rozhraní startovat a zastavovat, jako příklad si uvedeme ovládání rozhraní ''dddd'':
ip link set dev ddd up
ip link set dev ddd down
Alternativou k přímému použití příkazu ''ip'' je použití systémových skriptů
ifup eth0
ifdown eth0
Pohodlnější obsluhu síťového rozhraní umožňují různé programy, které se liší podle použité distribuce. Pokud chcete rozhraní nastavit trvale, použijte v distribuci Debian soubor: ''/etc/network/interfaces''.
===== Statické směrování =====
Směrování je řízeno směrovací tabulkou, její záznamy mohou být zadány jako statické, nebo je lze vytvářet podle aktuálního stavu sítě programem ''quagga'' (protokol RIP) nebo ''gated'' (protokol OSPF). Záznamy pro přímo připojené sítě se vytvářejí automaticky při inicializaci rozhraní. Statické záznamy můžeme do směrovací tabulky zadat příkazem ''ip''/''route''. Přidání, smazání a vypsání záznamu má (pro výchozí cestu, síť a koncový počítač) tvar:
ip route add default via g.g.g.g dev device
ip route add n.n.n.n/m via g.g.g.g dev device
ip route add a.a.a.a via g.g.g.g dev device
ip route del n.n.n.n/m dev device
ip route show
ip -6 route add default via g:g:g:g::g:g dev device
ip -6 route add n:n:n:n::/mm via g:g:g:g::g:g dev device
route add default gw g.g.g.g dev device
route add -net n.n.n.n netmask m.m.m.m gw g.g.g.g dev device
route add -host a.a.a.a gw g.g.g.g dev device
route del -net n.n.n.n netmask m.m.m.m gw g.g.g.g dev device
route -n
route -A inet6 add n:n:n:n::/mm gw g:g:g:g::g dev device
kde ''n.n.n.n'' je adresa cílové sítě, ''a.a.a.a'' adresa cílového počítače, ''g.g.g.g'' adresa směrovače na cestě k cíli a ''device'' označení zařízení. Pro zrušení záznamu ve směrovací tabulce nahradíme volbu //add// v příkazu ''ip''/''route'' volbou //del//, tedy např. pro adresu sítě
route del -net n.n.n.n netmask m.m.m.m dev device
Aktuální nastavení směrovací tabulky si můžeme ověřit například jedním z následujících příkazů
ip route list
ip -6 route list
route -en
netstat -rn
Práce ve funkci směrovače je povolována hodnotou v souboru
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
(0 - vypnuto, 1 - zapnuto), o počáteční nastavení se postará spouštěcí skript na základě parametru
''net.ipv4.ip_forward = 1'' (''net.ipv6.conf.all.forwarding=1'') v konfiguračním souboru ''/etc/sysctl.conf''.
===== Automatická konfigurace =====
==== IPv4 ====
Pro automatickou konfiguraci v IPv4 se používá protokol DHCP. Existuje mnoho nástrojů, které umožňují nastavit počítač v roli DHCP serveru, na stanicích v laboratorní úloze je použit nástroj [[http://linux.die.net/man/8/dnsmasq|dnsmasq]]. Nastavení lze provést buď z příkazové řádky nebo za použití [[http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example|konfiguračního souboru]]. Ten se v počítačích nachází v ''/etc/dnsmasq.conf'', kde jsou všechny volby zakomentovány, soubor ''/etc/dnsmasq.more.conf'' pak již obsahuje příkazy, které budou použity po spuštění programu. Výchozí obsah souboru ''/etc/dnsmasq.more.conf'' importuje také soubor ''/etc/dnsmasq.pxe.conf'', to je však nežádoucí chování.
Služba ''dnsmasq'' se spouští
systemctl start dnsmasq
systemctl stop dnsmasq
systemctl restart dnsmasq
Pro získání adresy na klientovi za použití DHCP se používá program ''dhclient''
dhclient dddd
* ''dddd'' je rozhraní počítače, např. eth1
Pozn. V OS Debian je [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=717217|chyba]], která způsobuje nefunkčnost dnsmasq serveru v této laboratoři. Pro obejití tohoto problému spusťte na DHCP serveru příkaz
iptables -A POSTROUTING -t mangle -p udp --dport bootpc -j CHECKSUM --checksum-fill
==== IPv6 ====
Automatickou konfiguraci zprostředkovávají různé nástroje.
=== radvd ===
Pomocí nástroje ''radvd'' se nastavuje tzv. //ohlášení směrovače// (Router Advertisment). Nastavení je jednoduché, stačí upravit soubor
''/etc/radvd.conf'' a přidat do něj nastavení, např.
interface eth0
{
AdvSendAdvert on;
AdvManagedFlag off;
AdvOtherConfigFlag off;
prefix 2001:888:0db8:1::/64 {
AdvAutonomous on;
};
};
Tato konfigurace nastaví bezestavovou automatickou konfiguraci na portu ''eth0''. Pokud budeme chtít používat tuto autokonfiguraci ve spolupráci s DHCPv6, je nutné nastavit příslušné flagy. Detailní vysvětlení lze nalézt v knize [[http://knihy.nic.cz/|Pavla Satrapy IPv6]].
Součástí balíku ''radvd'' je i utilita ''radvdump'', která umožňuje poslouchat na rozhraní a vypisuje informace o příchozích RA zprávách.
=== wide-dhcpv6-client a wide-dhcpv6-server ===
Nejdříve je nutné zkontrolovat, zda klient/server poběží na správném rozhraní. To se nastavuje v souboru ''/etc/default/wide-dhcpv6-client'' či
''/etc/default/wide-dhcpv6-server''. Dále je nutné nastavit konfigurační soubory ''/etc/wide-dhcp/dhcpv6s.conf'' a ''/etc/wide-dhcp/dhcpv6c.conf''. Podrobné nastavení lze nalézt v manuálových stránkách [[http://linux.die.net/man/5/dhcp6c.conf|klienta]] a [[http://linux.die.net/man/5/dhcp6s.conf|serveru]], popř. i [[http://www.rjsystems.nl/en/2100-dhcpv6-stateful-autocfg.php|jinde]].
===== Dynamické směrování =====
Alternativou ke statickému zadávání směrovacích informací, které je náročné na pečlivost správce a může být zdrojem nepříjemných závad, je využití vhodné metody automatického vytváření směrovacích tabulek. Jednodušší z hlediska nastavení je použití distance-vector algoritmu výpočtu směrovacích
tabulek, které mimo jiné podporuje program ''quagga''. Pro jeho použití je vhodné zadat metriku pro jednotlivá rozhraní (implicitní hodnotou je jednička, vyšší hodnotou penalizujeme pomalejší/dražší/poruchovější propojení).
Quagga nabízí širokou škálu funkcí, které se dají nastavovat buď z příkazové řádky nebo za pomocí konfiguračních souborů. Pokud nastavujeme protokol RIP či RIPng, pak si vystačíme pouze s následujícími konfiguračními soubory, které jsou umístěny v adresáři ''/etc/quagga''.
''/etc/quagga/zebra.conf''
! -*- zebra -*-
!
! zebra sample configuration file
!
! $Id: zebra.conf.sample,v 1.1 2002/12/13 20:15:30 paul Exp $
!
hostname Router
password zebra
enable password zebra
!
! Interface's description.
!
!interface lo
! description test of desc.
!
!interface sit0
! multicast
!
! Static default route sample.
!
!ip route 0.0.0.0/0 203.181.89.241
!
!log file /var/log/quagga/zebra.log
''/etc/quagga/ripd.conf''
! -*- rip -*-
!
! RIPd sample configuration file
!
! $Id: ripd.conf.sample,v 1.1 2002/12/13 20:15:30 paul Exp $
!
hostname ripd
! password zebra
!
! debug rip events
! debug rip packet
!
router rip
! network 192.168.1./8
network eth0
redistribute connected
! route 10.0.0.0/8
! distribute-list private-only in eth0
!
!access-list private-only permit 10.0.0.0/8
!access-list private-only deny any
!
!log file /var/log/quagga/ripd.log
!
log stdout
''/etc/quagga/ripngd.conf''
! -*- rip -*-
!
! RIPngd sample configuration file
!
! $Id: ripngd.conf.sample,v 1.1 2002/12/13 20:15:30 paul Exp $
!
hostname ripd
!password zebra
!
! debug ripng events
! debug ripng packet
!
!
router ripng
network eth0
redistribute connected
! route 3ffe:506::0/32
! distribute-list local-only out sit1
!
!ipv6 access-list local-only permit 3ffe:506::0/32
!ipv6 access-list local-only deny any
!
log stdout
Jakmile máme správně nastavené démony, můžeme quaggu spustit příkazem
systemctl start zebra
systemctl start ripd
systemctl start ripngd
===== Překlad adres =====
Pro nastavení překladu adres (NAT, masquerade) je nejjednoduší použít příkaz:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
===== Konfigurační soubory =====
**Tip!** Pokud editujete konfiguráky pomocí midnight commanderu, možná Vám pomůže:
* Kombinace CTRL-L překreslí rozbitou obrazovku
* nefungují klávesy F1-F10, místo toho mačkejte Escape-číslo, tzn. např. Escape-5 namísto F5
Příkazy ''ifconfig'' a ''route'' dovolují definovat IP adresy a nastavovat cesty během
činnosti směrovače. Potřebného počátečního nastavení lze dosáhnout uvedením těchto příkazů ve
spouštěcím skriptu (konkrétně ''/etc/init.d/networking'' pro distribuci Debian), tento skript primárně
při zadávání těchto příkazů opírá o konfigurační soubory, z nichž si ty pro nás důležité uvedeme.
==== /etc/network/interfaces ====
V souboru ''/etc/network/interfaces'' můžeme zadat parametry vyžadované příkazy ''ifconfig'' a ''route''.
Jako příklad si uveďme konfigurační soubor zadávající IP adresu pro zařízení eth0 a směrování do
sítě ''10.0.0.0/8''
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2 dev $IFACE
down route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2 dev $IFACE
==== /etc/network/options ====
Soubor ''/etc/network/options'' zadává parametry potřebné pro směrování
''ip_forward=yes''
==== /etc/networks ====
Soubor dovoluje definovat vztah doménových jmen a IP adres sítí, dovoluje používat jména sítí
namísto IP adres (např. v příkazech route). Tvar příkazů si můžeme uvést na příkladě
default 0.0.0.0
felk 147.32.80.0
==== /etc/hosts ====
Soubor dovoluje definovat vztah doménových jmen a IP adres jednotlivých počítačů,
tvar příkazů si můžeme uvést na příkladě
127.0.0.1 localhost
192.168.0.1 myhost.felk.cvut.cz myhost
První záznam odpovídá vnitřnímu rozhraní lo, u záznamů je třeba dbát na zadávání plně
kvalifikovaného jména jako prvního v seznamu.
==== /etc/resolv.conf ====
Soubor definuje DNS server využívaný pro překlad doménových jmen na IP adresy. První záznam je
úplné jméno domény, do které náš počítač začleňujeme, další záznamy uvádějí IP adresy DNS
serverů (primárního a sekundárního). Například
domain felk
nameserver 147.32.80.9
je záznam dovolující využít služby DNS serveru sítě felk.cvut.cz na Karlově náměstí.
==== /etc/host.conf ====
Pořadí, ve kterém jsou vyhodnocovány soubor /etc/hosts záznamy na DNS serveru (služba bind),
zadává soubor ''/etc/host.conf''. Příkaz ''multi on'' dovoluje mít více adres pro jedno doménové jméno.
order hosts,bind
multi on
===== Webový server =====
Na strojích v laboratoři není nainstalován ani //Apache//, ani //Lighttpd//, ale //nginx//. Jeho nastavení je standardní, vše se nastavuje přes soubory v ''/etc/nginx/sites-available/*''. Výchozí soubor ''default'' bohatě pro účely této úlohy stačí, jen je potřeba odkomentovat informaci, že server má poslouchat na portu 80 (jak pro IPv4 tak pro IPv6). Soubory, se kterými pracuje tato konfigurace, se nachází v ''/usr/share/nginx/www/''. Program se spouští standardně.
/etc/init.d/nginx start
===== Užitečné programy =====
Při konfiguraci a ověřování funkce můžeme využít řadu užitečných programů. Patří mezi ně
následující programy, kompletní popis jejich volání najdeme v manuálových stránkách:
==== ping ====
Program testuje funkčnost cesty ke zvolenému cíli (zadán IP adresou nebo doménovým jménem)
paketem ICMP, a poskytuje statistiku zpoždění.
==== traceroute ====
Program testuje funkčnost cesty ke zvolenému cíli (zadán IP adresou nebo doménovým jménem)
paketem ICMP, využívá údaj o době života IP paketu a dovoluje informovat o směrovačích na cestě
k cíli a zpožděních na jednotlivých úsecích.
==== netstat ====
Program podává informace o funkci celého komunikačního systému a jeho jednotlivých komponent.
Popis najdete v manuálových stránkách (a v příloze tohoto textu).
==== tcpdump ====
Program umožňuje sledovat pakety odesílané/přijímané rozhraními.
==== wget ====
Program umožňuje stáhnout libovolný soubor z internetu pomocí protokolu HTTP.
==== hostname ====
Program umožňuje přejmenovat počítač.
root@node7:~# hostname PC3
root@node7:~# exit
...
PC3 login: root
...
root@PC3:~#
{{ :vyuka:psi:cviceni:publicita.jpg?nolink |Podpořeno z projektu OPPA}}