Unix a Internet 3. Používání TCP/IP Obsah: síťová rozhraní ARP směrování well known ports resolver implementace serveru a klienta telnet, ssh, VNC, X protokol © Milan Keršláger http://www.pslib.cz/ke/slajdy 2018/4/30 http://creativecommons.org/licenses/by-nc-nd/3.0/
Síťové rozhraní typicky síťová karta ethernetová, Wi-Fi, ale i sériový port s PPP, SLIP… vždy je v systému loopback interní rozhraní (127.0.0.1) síťová komunikace jen v rámci počítače přijímá a vysílá IP datagramy uvnitř typicky vyšší protokol: ICMP, UDP, TCP řízena ovladačem ovladač vysílá a přijímá připravené datagramy některé ovladače mají omezené funkce (Windows, Android)
Linux: síťová rozhraní seznam zveřejňuje jádro cat /proc/net/dev chybějící síťové zařízení → není ovladač ručně: modprobe nazev seznam modulů v jádře: lsmod umístění modulů: ls /lib/modules/$(uname -r)/kernel/drivers/net/ zavedení modulu má na starost démon udevd po při startu si přečte z ovladačů tabulku známých ID objeví-li se zařízení, zavede podle ID ovladač viz: lspci; lspci -n
Linux: správa rozhraní názvy zařízení: podle MAC adresy při vzniku zařízení: cat /etc/udev/rules.d/70-persistent-net.rules pomocí příkazu ifrename ifrename -i název -n novýnázev NetworkManager GUI rozhraní pro správu síťových rozhraní startovací skripty distribuce
Linux: konfigurace rozhraní ifconfig výpis a nastavení síťových rozhraní ifconfig eth0 up ifconfig eth0 down ifconfig eth0 1.2.3.4 netmask 255.255.255.0 ip nový univerzální nástroj, náhrada ifconfig iwconfig, iwlist pro bezdrátová rozhraní
iwconfig slouží k nastavení Wi-Fi rozhraní režim adaptéru strukturovaná síť (s AP), Ad-Hoc, režim AP ESSID – název sítě klíče pro šifrování WEP iwconfig wlan0
iwlist výpis sítí, které jsou slyšet AP vysílají ESSID identifikátory součástí výpisu jsou detailní informace název sítě (ESSID) norma a kanál, na kterém AP vysílá šifrování ano/ne WPA, WPA2 – protokol výměny klíčů (TKIP) eventuální autentizace 802.1X (jméno + heslo)
wpa_supplicant démon pro řízení WPA a WPA2 během komunikace se neustále mění klíče nelze zajistit přímo pomocí hardware když už máme v počítači výkonný procesor... jde o spolupráci klienta a AP plus bezpečná výměna klíčů
ARP Address Resolution Protocol překlad IP → MAC adresa víme cílovou IP adresu, ale nevíme cílovou MAC počítač vyšle lokální broadcast (slyší všichni): „kdo má IP adresu 1.2.3.4“? všichni slyší a zapíší si naši MAC do ARP tabulky majitel IP adresy odpoví přímo tazateli tazatel si zapíše do ARP tabulky záznam s IP a MAC záznam v tabulce je časově omezen (minuty) tazatel pak může vytvořit rámec a odeslat ho není nijak zabezpečeno
ARP tabulka dynamické záznamy výpis: arp -an vazba: MAC adresa ↔ IP adresa standardně funkce TCP/IP stacku v jádře OS omezená trvanlivost (desítky vteřin až desítky minut) statické záznamy používáno pro zvýšení bezpečnosti ARP démon externí obsluha ARP tabulky je možné kryptografické ověření autenticity
Ukázka ARP tabulky $ arp -an ? (10.200.99.246) na 64:31:50:10:da:d1 [ether] na eth1 ? (10.199.0.11) na 00:27:0d:87:70:e0 [ether] na eth2 ? (10.200.211.13) na 00:04:75:fd:e8:f5 [ether] na eth1 ? (10.200.92.237) na 00:22:15:4f:c3:9c [ether] na eth1 ? (10.200.99.222) na 00:23:54:25:8b:6e [ether] na eth1 ? (10.200.0.33) na <nekompletní>na eth1
Využití ARP tabulky při odesílání IP datagramu víme cílovou IP adresu odeslat můžeme jen ethernetový rámec cíl je určen MAC adresou MAC adresu je nutné zjistit z ARP tabulky několik IP adres pod stejnou MAC IP aliasy na rozhraní, bridge, proxy ARP
Multihoming vlastnost síťového rozhraní implementováno v Linuxu IP adresa „se ukazuje“ na všech rozhraních IP aliasy nemusí být na konkrétním rozhraní končí-li IP datagram na počítači, není protahován skrze forwardovací rutinu, i když je na jiném rozhraní, než ze kterého byl přijat zjednodušuje implementaci
Směrování „routing“ sdružuje IP adresy do podsítí cílem je zjednodušení směrovací tabulky statický pevně nastaven správcem sítě (počítače) vhodný pro malé sítě dynamický (RIP, BGP, OSPF, ...) adaptuje se na aktuální situaci v případě výpadků, rozkládání zátěže je problém vytváření autonomních systémů každý provider zodpovědný za svoje podsítě automatická propagace nových podsítí Čína na sebe přesměrovala provoz serverů USA
Směrovací tabulka routing table spravována TCP/IP stackem jádra záznamy: automatické → pro každé síťové rozhraní vyjadřuje, kdo je přímým sousedem za daným rozhraním přímému sousedovy jsou posílány ethernetové rámce přímo statické → dle uvážení správce typicky pro sítě, které jsou „schované uvnitř“ implicitní brána (default gateway) → cesta „do Internetu“ dynamické spravované nějakým směrovacím démonem pomocí protokolů RIP, BGP, OSPF, ...
Router směrovač datagramy skrz něj prochází snižuje položku TTL v hlavičce IP datagramů datagram přijme a rozhodně co dál router je cílem → datagram předán aplikaci datagram předáván dál o další cestě rozhodne směrovací tabulka předávání datagramů dál je tzv. IP forwarding zapnutí a zjištění stavu v Linuxu: cat /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward
route výpis směrovací tabulky route -n též přidávání a mazání směrovacích záznamů záznam pro přidané rozhraní se přidá automaticky tj. pro počítače přímo dostupné za síťovým rozhraním route add -net 1.2.3.0 netmask 255.255.255.0 gw 1.2.3.254 route del -net 1.2.3.0 netmask 255.255.255.0 gw 1.2.3.254 route add default gw 1.2.3.1
Ukázka směrovací tabulky $ route -n Kernel IP routing table Destination Gateway Genmask Fla Met Iface 195.178.64.116 0.0.0.0 255.255.255.252 U 0 eth0 10.199.0.0 0.0.0.0 255.255.255.0 U 0 eth2 10.200.0.0 0.0.0.0 255.255.0.0 U 0 eth1 10.202.0.0 10.199.0.10 255.255.0.0 UG 0 eth2 10.203.0.0 10.199.0.10 255.255.0.0 UG 0 eth2 0.0.0.0 195.178.64.117 0.0.0.0 UG 0 eth0
End host koncový počítač typicky dekstop má jednu síťovou kartu datagramy, které přijme, v něm končí přijaté datagramy předány aplikacím rozlišení podle čtveřice hodnot: 2x(IP+port)
Implementace serveru typicky (síťový) démon program běžící na pozadí připojí se na síťový port a naslouchá na jednom síťovém rozhraní nebo na všech výpis: netstat -pantu naslouchající je ve stavu listen porty s číslem < 1024 jsou privilegované (well known) může se na ně připojit jen správce (root) → bezpečnostní riziko dnes v jádře využíváme capabilities (vlastnost binárky) využívá se multiprogramování po příchodu spojení je pověřen vyřízením potomek vyřizování požadavku neblokuje serveru příjem dalších spojení
Well known ports dobře známé porty definuje IANA stačí vědět, jakou službu chceme není nutné si pamatovat číslo portu jen pokud je služba na nestandardním portu příklady: HTTP: 80, HTTPS: 443 SSH: 22, telnet: 23, DNS: 53, SMTP: 25 POP3: 110, POP3S: 995, IMAP: 143, IMAPS: 993 FTP: 21 (řídící spojení), 20 (data) … další viz soubor /etc/services
/etc/services /etc/services seznam → well known ports lze měnit, ale nedoporučuje se program může použít symbolický název služby a přes tento soubor dostane číslo portu ve Windows: c:\windows\system32\drivers\etc\services
Resolver zajišťuje služby okolo DNS překlad doménového jména na IP adresu a zpět knihovní funkce, používá je programátor konfigurace v /etc/resolv.conf, např: domain tul.cz search tul.cz nameserver 147.230.16.1 nameserver 147.230.200.1
/etc/hosts převod jméno → IP adresa typicky má přednost před DNS dle souboru /etc/nsswitch.conf hosts: files dns minimální obsah /etc/hosts 127.0.0.1 localhost ::1 localhost6
Příklad: MTA pro přepravu elektronické pošty (e-mail) např. sendmail, postfix, Exchange, … používá port 25 → musí ho spustit root proces (rodič) se připojí na port 25 odpojí se od terminálu → démon dále naslouchá příchozí spojení → vytvoří potomka rodič spojení zavře, potomek spojení vyřídí rodič dále naslouchá
Příklad: webový server např. Apache, IIS, … používá port 80 (a 443 pro HTTPS) proces (rodič) se připojí na port(y) odpojí se od terminálu vytvoří si do zásoby několik potomků vytvoření potomka je relativně náročná operace minimalizuje se doba prodlevy rodič naslouchá příchozí spojení → vyřídí pověřený potomek potomek obsluhuje maximálně X požadavků redukuje riziko dopadu memleaku
Příklad: doménový server v běžných případech pro interní klienty používá UDP podobně jako předchozí obsadí port 53 např. vytvoří thready jako obslužné démony příchozí dotaz → thread je pověřen vyřízením po dobu vyřizování není blokováno naslouchání
Síťový superserver xinetd u málo využívaných služeb se démon nevyplatí xinetd obsadí porty, které chceme obsluhovat konfigurace v adresáři /etc/xinetd.d přijde-li požadavek, je spuštěna obsluha obsluhou je specializovaný program ten musí být přizpůsoben na spolupráci s xinetd používá se například pro: telnet, tftp, time, ...
Síťový klient např. webový prohlížeč, poštovní program, … chce navázat síťové spojení obsadí nějaký volný síťový port (>= 1024) jiná aplikace se na port již nepřipojí u příchozích datagramů jednoznačný příjemce naváže spojení s protistranou
telnet původně pro vzdálený terminál původně po sériových linkách bez šifrování přihlášení jméno+heslo → příkazový řádek dnes využívá počítačovou síť → TCP protokol TCP je stavový protokol se spojením a se zárukami zachování pořadí, řeší ztráty a duplicity s výhodou pro testování TCP komunikace protokoly HTTP, SMTP, POP3, IMAP, … se šifrováním → openssl
SSH náhrada telnetu přidává šifrování asymetrická + symetrická šifra bezpečný přenos hesla i další komunikace umožňuje tunelování přenos dat (TCP) skrze bezpečný kanál součástí je i SCP a SFTP bezpečné kopírování souborů automatické tunelování X protokolu
VNC připojení ke vzdálenému grafickému rozhraní dlouho bez podpory šifrování VNC server vytváří v RAM obraz „monitoru“ VNC klient získává informace o změnách v obrazu VNC serveru optimalizace přenosů (čtverce) komprimace dat RDP (Microsoft) je efektivnější RDP umí kreslit (pracovat s) elementy GUI
X protokol pro GUI (X Window System) model klient server klientem je program (např. Firefox) serverem je obsluha grafické karty klient i server mohou být na různých počítačích asynchronní obsluha požadavků klient klade požadavky na vykreslování server informuje o událostech vyvolaných uživatelem celkově nevhodné pro přenos po síti velký datový tok, latence jsou kritickým místem protože byl navržen jako univerzální