Počítačové sítě 1 – zápočet
1. Úvodní teorie Ethernetový rámec |........|.........................................|........| |režie | vlastní data (64-15000 B)| FCS - kontrola správnosti Režie: sender | destionation … MAC
MAC adresa - jedinečná adresa síťové karty: 48bit – 6 polí - hexadecimální tvar … 00-B0-D0-86-BB-F7
Síťová zařízení a) hub - jednoduše přeposílá signál do všech portů - kolizní doména (může tam dojít ke kolizi) je u všech PC b) switch - vytvoří si mapu portů a signál posílá pouze do určeného portu - módy: leraning, selective forwarding, flooding (broadcast, unknown unicast) - dočasná CAM tabulka: Port MAC adresa Fa0/0 MAC_pc1 Fa0/1 MAC_pc2 c) router - směrovač : pro velké sítě jej musíme použít, IP datagram - pro nalezení uzlu používá IP adresu: logická adresa ve tvaru např. 192.168.10.15/24
Referenční model ISO/OSI Č. 1 2
Název Fyzická Spojová
3
Síťová
4
Transportní
Použití Aktivuje, udržuje a deaktivuje fyzické spoje Poskytuje spojení mezi dvěma sousedními systémy. Funkce k přenosu dat mezi jednotlivými síťovými jednotkami. Uspořádává data z fyzické vrstvy do logických celků (rámce). Poskytuje spojení mezi systémy, které spolu přímo nesousedí. Stará se o směrování v síti a síťové adresování. zajišťuje přenos dat mezi koncovými uzly
Technologie Kabely, hub Ethernet, switch
Router, IP TCP, UDP
IP adresa Je to logická adresa, která identifikuje síťové rozhraní . Dvě verze: o IPv4 – 32 bit - 232 adres … 4 mld. o IPv6 – 128 bit - 2128 adres … 3×1038 Dekadický zápis po oktetech: byte.byte.byte.byte … 0-255.0-255.0-255.0-255 … 192.168.100.10 Má dvě části:
< adresa počítače> (net id, host id) v adr. sítě je také adresa podsítě Pravidla pro adresy: o Sítě: host ID = 0; Všech uzlů: hID = 1; Uzlu: hID = 5; Routeru: hostID=nejnižší číslo=1
Socket rozhraní, které zpřístupňuje služby protokolů TCP/IP jednotlivým aplikacím socket = IP adresa + číslo portu č. portu dle protokolu – např. 80 (http) nebo 21 (ftp)
Maska podsítě subnet mask Hranice mezi adresou sítě a počítače: určuje jaké bity slouží k čemu: filtr pro vyloučení adresy uzlu 32 bit – jedničky tam kde je v adrese síť a podsíť, nuly tam kde je počítač: 255.255.255.0 : 1111 1111 | 1111 1111 | 1111 1111 | 0000 0000 nedílná součást konfigurace síťového rozhraní: 172.16.100.10 & 255.255.255.0=176.16.100.10/24 Je možný zkrácený zápis: podle počtu bitů které maska zabírá: 176.16.100.0/24 Implicitní: 255.0.0.0 atd. Explicitní: z masky se odebere určitý počet nejvyšších bitů Adresování viz samostatný soubor.
2. Základní praxe Nastavení IP adresy dočasná: Linux# ifconfig eth0 netmask <mask> up trvalá: na RedHat /etc/sysconfig/network-script/ifcfg-eth0; system-config-network kontrola nastavení: #Linux ifconfig eth0 // inet adrress by mela byt ta moje ipadresa #Linux ip addr show dev eth0 #L ifconfig // vypise všechna připojená rozhrani a zarizeni vyzkoušení jiné: #L ping
Připojení PC do sítě - nastavit IP adresu: ifconfig eth0 172.16.30.9/24 up - připojit kabel do žluté zásuvky, potom zeleným kabelem propojit switch a ten port (podle čísla PC) - pro kontrolu: ifcongig eth0 - inet adr je ta moje
Práce se Switchem připojit modrý kabel do modré zásuvky, potom na racku z modrého do konektoru na switchi spustit v konzoli program „minicom“ – dát no a potom několikrát enter práce s Cam tabulkou: Switch> // user exec Switch> enable Switch# // priviledged exec Switch# show mac-address-table dynamic Switch# clear mac-address-table dynamic
Program Wireshark používá se ke sledování síťové komunikace zahájení činnosti: analyze > interfaces (zvolím např. eth0) > start filtrování záznamů: analyze > display filters > Ethernet (ARP)
3. Směrování (routing) Koncový uzel Konfigurace L# ifconfig … přidat adresu výchozí brány (routeru) L# route add default gw zkontrolovat to L# route –n; ip route show
Směrovací tabulka Cíl v síti 172.16.100.0 0.0.0.0
Maska 255.255.255.0 0.0.0.0
Rozhraní eth0 eth0
Brána 0.0.0.0 172.16.100.1
Metrika 0 1
Cíl v síti – adresa sítě nebo počítače Maska – rozsah IP adres, pro které je záznam platný (kolik bitů se musí shodovat v datagramu a v záznamu v té tabulce) Rozhraní – symbolická nebo IP adresa, která má být použita k předání datagramu Brána – IP adresa směrovače, na který mají být datagramy předávány o Pokud je podsíť přímo dosažitelná, tj. nachází přímo za tím rozhraním, předá se packet rovnou. Metrika – počet routerů, kterými datagram projde To 0.0.0.0 je ta výchozi brána, kterou anstavíme tím příkazem výše.
Směrovač (router) Kontroluje kam tečou data: vrstva L3 PC router: počítač s více síťovými kartami, linux to podporuje Směrovací tabulka: obsahuje cesty do všech připojených uzlů
Routing table Destination 172.16.100.0 172.16.200.0 0.0.0.0
Netmask 255.255.255.0 255.255.255.0 0.0.0.0
Gateway 0.0.0.0 0.0.0.0 172.16.300.1
Interface Fa0/0 Fa0/1 Fa0/0
Metric 0 0 1
Konfigurace Cisco Router> enable Router# config t // configure terminal Nastavení IP adresy pro rozhraní: Router(config)# interface Fa0/0 // vybrat rozhrani jake nastavit Router(config-if)# ip address <maska> Router(config-if)# no shutdown // spusteni interface Nastavení loopbacku (router posílá data sám sobě): Router(config)# interface lo 0 Router(config)# ip address 172.16.100.5 255.255.255.0 Nastavení směrování (vložení záznamu do sm. tabulky) nepovinne Router(config)# ip route <maska> [rozhrani] ip route 172.16.100.0 255.255.255.0 Fa0/0 172.16.100.10 Nastavení defaultní brány: Router(config)# ip route 0.0.0.0 0.0.0.0 Ukončení konfigurace: Router(config)# end Router# Kontrola Router# show ip interface brief // stav rozhrani Router# show ip route // smerovaci tabulka
Konfigurace Linux PC Nastavení směrování: eth2 je dole a eth0 nahoře ifconfig eth1 // nutne nastavit IP adresu rozhrani route add default gw route add -net netmask <maska> gw route add –net netmask <maska> dev Kontrola: L# route // vypis konfigurace L# mii-toll // zda fungují interfaces nastaveni v jadru: /proc/sys/net/ipv4/ip_forward : ma tam byt 1
Zjištění cesty datagramu pomocí utility traceroute - Vypisuje uzly (resp. směrovače) na cestě datagramů od zdroje až k zadanému cíli. Uzly jsou zjišťovány pomocí snížení hodnoty TTL v hlavičce datagramů. L# traceroute
Loopback virtuální síťové rozhraní - veškerý provoz směřovaný na něj je okamžitě přesměrován opět na něj rezervovaná adresa s prefixem 127/8 – většinou 127.0.0.1; unix označení: lo0 pracuje se s ním stejně jako s každým rozhraním (ifconfig pro nastavení a výpis)
4. ARP = Address Resolution Protocol
Použití Známe cílovou IP adresu - zjišťujeme MAC adresu , abychom mohli IP paket umístit do ethernetového rámce (linková vrstva) a odeslat. Používá se k získání ethernetové MAC adresy sousedního stroje z jeho IP adresy. To je nutné v situaci, kdy je třeba odeslat IP datagram na adresu ležící ve stejné podsíti jako odesílatel. Data se tedy mají poslat přímo adresátovi, u něhož však odesilatel zná pouze IP adresu. Pro odeslání prostřednictvím např. Ethernetu ale potřebuje znát cílovou ethernetovou adresu.
Popis procesu Příklad: komunikace uzlu A a uzlu B přes switch ARP request = broadcast MAC adresa … FF:FF:FF:FF:FF:FF … pro všechny uzly v síti 1. zadám do shellu příkaz ping 2. A pošle ARP request a odpoví ten uzel, jehož IP adresa se shoduje s tou požadovanou o B pošle ARP reply obsahující jeho MAC adresu o Předtím si zapíše IP a MAC adresu odesílatele do cache (to udělají i ostatní uzly) 3. A potom vyšle ten příkaz přímo na B 4. následně B musí poslat odpověď – mou MAC nezná, tak se koukne do cache a pošle to
ARP cache uzel v ní chvíli uchovává ty IP a MAC adresy, která již použil / obdržel dá se zobrazit příkazem arp: #L arp –nc // zobrazit #L arp –d // smazat záznam pro určitou IP
RARP =Reverse address resolution protocol známe svoji MAC, ale neznáme svoji IP adresu: dnes se místo něj používá DHCP v síti je server se statickou ARP tabulkou: stanice jej požádá pomocí broadcastu o odpověď
ICMP = Internet Control Message Protocol počítače jej používají pro odesílání chybový zpráv „Destination Unreachable“ – nedostupnost cíle: net, host, protocol, port „Time Exceeded“ – vypršel časový limit, síťové aplikace jej nepoužívají přímo – kromě ping o posílá ICMP zprávu „echo request“ a očekává zprávu „echo reply“
Redirect
Přesměrování - používá se především pokud ze sítě vede k cíli lepší cesta než přes defaultní bránu. Stanice většinou nepoužívají směrovací protokoly a proto jsou informovány touto cestou. Funguje to tak, že stanice pošle datagram své, většinou defaultní, bráně, ta jej přepošle správným směrem a zároveň informuje stanici o lepší cestě. „Redirect Datagram for the Network“ - informuje o přesměrování datagramů do celé sítě. „Redirect Datagram for the Host“ - informuje o přesměrování datagramů pro jediný stroj.
5. Dynamický routing Směrování se provádí pomocí směrovacích protokolů. o RIP = routing information protocol: verze 2 posílá multicastem Aktivace: nastavit adresy přímo připojených uzlů – ostatní adresy zjistí router sám – vytvoří si směrovací tabulku (ta se obnovuje každých 30 vteřin) V případě porušení jedné linky se provoz přesune na jinou linku.
Konfigurace koncového uzlu Nastavit IP adresu počítače, defaultní bránu na IP adresu rozhraní toho routeru. Konfigurace routeru na statický routing Nastavení konfiguračního režimu: config t Konfigurace síťových rozhraní (Fa0/0, Fa0/1, Fa0/0/0, lo 0, lo 1 a lo 2) – nastavit jejich IP adresy Konfigurace default gateway Konfigurace záznamu do směrovací tabulky: ip route o nastavit na jakou IP se budou posílat data, když je v datagram určitá cílová síť Výpis směrovací tabulky: show ip route Programem ping ověřit dostupnost uzlů na propojených sítích
Konfigurace routeru na dynamický routing Nastavit rozhraní Vymazat záznamy ze směrovací tabulky: clear ip route * nebo <destionationIP> Pro každý interface nastavit IP adresu sítě, na kterou míří. Router(config)# interface Fa0/0 Router(config-if)# // zadat postupne prikazy nize router rip Version 2 No auto-summary Network Zamezit aby to router posilal na staticke ip: Router(config)# passive-interface Fa0/1 Kontrola a sledování: Router# show ip rip Router# show ip route Router# debug ip rip // pro vypnutí napsat no debug ip rip
6. VLAN =Virtuální LAN Je to logicky nezávislá síť v rámci jednoho nebo několika zařízení. o např. dvě různé sítě, které jsou zapojené do jednoho switche a připojeny na router Realizuje se přes switch (vrstva L2). Spojení router a switch – trunk cable (žlutý) - speciální porty. K bežným paketům je připojena informace o čísle virtuální sítě - tagovací protokol IEEE 802.1Q o Ethernet frame > vlan tag > vlan id Postup tvorby
1. Nastavit koncové uzly IP adresa, defaultní brána
2. Nastavit switch Vytvořit VLANy VID může být jakékoliv, ale většinou se volí jako poslední číslo z IP adresy sítě: o 172.16.100.0 a 172.16.200.0 … VID 100 a 200 Switch(config)# vlan // nastaveni nebo vytvoreni Switch(config-vlan)# name Kontrola: Switch# show vlan brief
Nastavit přístupové porty Může mít nastavenou jen jednu VLAN na rozhraní – může přenášet data jen pro jednu VLAN. Používá se pro rozhraní, která vedou od switche na koncové uzly.
je interface: fa0/0 atd. Switch(config)# int Switch(config-if)# switchport mode access //přístupový mod Switch(config-if)# switchport access vlan //assign VLAN Kontrola: Switch# show interfaces [] switchport Switch# show interfaces status switch# show interface brief
Nastavit trunk porty Může mít nastavené dvě a více VLAN na rozhraní – může přenášet data pro několik VLAN zároveň. Používá se pro rozhraní, která spojují dvě síťová zařízení - point-to-point sítě. Switch(config)# int Switch(config-if)# switchport mode trunk Switch(config-if)# switchport nonegotiate // do not use DTP //802.1q native VLAN ID Switch(config-if)# switchport trunk native vlan //list of allowed VLANs on trunk – když nezadam, bere všechny Switch(config-if)# switchport trunk allowed vlan Kontrola: Switch# show interfaces trunk
3. Nastavit router Hlavní rozhraní - žádná IP Router(config)# int Fa0/1 Router(config-if)# no ip address Router(config-if)# no shutdown Sub-rozhraní – rozdělím to hlavní na dvě další – každé obsluhuje jinou VLAN Router(config)# int Fa0/1.100 Router(config-subif)# encapsulation dot1q 100 native Router(config-subif)# ip address 172.16.100.1 255.255.255.0 Router(config)# int Fa0/1.200 Router(config-subif)# encapsulation dot1q 200 Router(config-subif)# ip address 172.16.200.1 255.255.255.0 Kontrola: Router# show ip interface brief Router# show ip route
4. Správa switche Nastavení IP adresy switche v dané VLANě: Switch(config)# int vlan 100 Switch(config-if)# ip address <MASK> Switch(config-if)# no shutdown Defaultní brána: Switch(config)# ip default-gateway 172.16.100.1 Kontrola:
Switch# show ip interface brief
7. DNS a server BIND Obecně o DNS DNS= Domain Name System Je to hierarchický systém doménových jmen. Jeho hlavním úkolem a příčinou vzniku jsou vzájemné převody doménových jmen a IP adres uzlů sítě. Prostor doménových jmen tvoří strom. Každý uzel tohoto stromu obsahuje informace o části jména (doméně), které je mu přiděleno a odkazy na své podřízené domény. Kořenem stromu je tzv. kořenová doména, která se zapisuje jako samotná tečka. Pod ní se v hierarchii nacházejí tzv. domény nejvyšší úrovně (Top-Level Domain, TLD) – org, com, cz atd. Potom jsou SLD. Strom lze administrativně rozdělit do zón, které spravují jednotliví správci (organizace nebo i soukromé osoby), přičemž taková zóna obsahuje autoritativní informace o spravovaných doménách. Tyto informace jsou poskytovány autoritativním DNS serverem. Kořenové jmenné servery - poskytují kořenový zónový soubor ostatním DNS serverům, který popisuje, kde se nacházejí autoritativní servery pro domény nejvyšší úrovně. Je jich celkem 13. Druhy name serverů o Primární – Tam data vznikají. Pokud je třeba provést v doméně změnu, musí se editovat data na jejím primárním serveru. Každá doména má právě jeden primární server. o Sekundární – kopie primárního. Průběžně si aktualizuje data. Doména musí mít min. jeden. o Pomocný (caching only) – vyrovnávací paměť, neposkytuje autoritativní odpověď
Typy DNS záznamů A the host's Internet address. CNAME the canonical name for an alias. HINFO the host CPU and operating system type. MINFO the mailbox or mail list information. MX the mail exchanger. NS the name server for the named zone. PTR the host name if the query is an Internet address; otherwise, the pointer to other information. SOA the domain's ``start-of-authority '' information. TXT the text information. UINFO the user information. WKS
the supported well-known services.
Server BIND Nejpoužívanější unix program pro implementaci DNS. Nachází se v adresáři /var/named/chroot/ - důležité soubory: o Named.xxx o Etc/named.conf – konfigurační soubor o Var/named – zónové soubory
Obsah named.conf Obsahuje mimo jiné seznam zónových souborů zone "pokus.local" IN { type master; file "db.pokus.local"; allow-update { none; }; allow-transfer { none; }; };
Zónové soubory Za doménovým jménem musí být tečka. Named.root 518400 IN NS D.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4 Přímý záznam: db.pokus.local $ORIGIN pokus.local. - @ @ IN SOA ns.pokus.local. root.pokus.local. ( 11112901 ; serial(yymmddxx) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns ns IN A 172.16.200.2 pc1 IN A 172.16.100.11 pc2 IN A 172.16.100.12 www IN CNAME ns Reverzní záznam – pro každou síť. Zone: 00.16.172.in-addr.arpa; soubor: db.100.rev $TTL 86400 // cas pro vyprseni $ORIGIN 100.16.172.in-addr.arpa. SOA stejny @ IN NS ns.pokus.local. 11 IN PTR pc1.pokus.local. // PTR - pointer 12 IN PTR pc2.pokus.local.
Příklad Máme tyto údaje: doménové jméno pokus.com a IP adresu 172.16.30.0/24
1. Nastavit klienta soubor /etc/resolv.conf: search: pokus.com nameserver: 127.0.0.1
2. Vytvořit zónový soubor do named.conf přidat tu zónu vytvořit db.pokus.com a db.pokus.rev
3. Spustit to v /etc/init.d je zaznam pro ten bind – prikazem nize ho spustim #L service named start // spustit bind
Různé příkazy status sítě – netstat o různé přepínače: -tul … aktivní porty, -tuln … numerické adresy použije L# netstat –a //zobrazí aktivní spojení kontrola spravnosti zonoveho souboru (syntax, validita) L# named-checkzone pokus.com db.pokus.com přihlášení na účet cizího počítače: ssh L# service sshd start L# ssh 172.16.10.101 // po zadani hesla jsem na jeho přík. řádce
Práce s name servery utilita nslooklup - vstup do interaktivního módu: #L nslookup domena.cz // zjistit IP adresu domény – A záznam zjistitit domévé jméno nameserveru domény neco.cz: querytype=soa // nastavi zaznam který se ma vypsat neco.cz // je to ten origin změna používaného name serveru: server ns.ces.net hodně informací o doméně: set debug set type=SOA // filtr – při příkazu domena.cz se zobrazí jen SOA existuje také utilita dig: dig +short NS neco.cz nebo taky dig +short SOA neco.cz
8. Serverové webové aplikace Komunikace v Internetu probíhá v modelu klient – server. Dvě hlavní služby: Služba FTP HTTP
klient ftp Prohlížeč
Server vsftpd Httpd
Port 21 80
Použití Protokol pro přenos souborů mezi počítači Výměna hypertextových dokumentů ve formátu HTML
FTP Nastavení serveru Skript pro spuštění je v /etc/init.d: zadám service vsftpd start Konfigurační soubor: /etc/vsftpd Dva typy připojení: anonymní (pro kohokoliv), zabezpečené (nutné jméno a heslo)
Připojení k serveru Utilita ftp: ftp 172.16.10.101; potom ftp a enter místo hesla; Příkazy: dir – zobrazit soubory; cd slozka – jit tam Kopírování souborů na svůj stroj: o Změnit cílovou složku: lcd /root/work o Stáhnout je: mget *.html; get prihlaseni.cgi Ukončení: quit
HTTP Nastavení serveru Je to http daemon. Základní složka: /etc/httpd Konfigurace: / conf.d ; /conf/httpd.conf Složka pro dokumenty: /var/www o /Cgi-bin/ - skripty; /html/ - stránky Spuštění: service httpd start ; potom ještě service iptables stop Klient si to může zobrazit zadáním IP adresy serveru (počítače) do prohlížeče o Načte se stránky index.html – další stránky dostupné přes odkaz nebo IP/stranka2.html Na prihlaseni.cgi je potřeba nastavit chmod 777 a provést doc2unix (jen konkretne tady)
Analýza obsahu komunikace Přes wireshark: první spojení – SYN, nějaký bit Filtr dat: analyze > TCP stream
Telnet = Telecommunication Network umožňuje uživateli připojení ke vzdálenému počítači nepodporuje šifrování, takže se používá místo něj ssh připojení: telnet <domena/IP> [<port>] jako port je možné použít: 21 (ftp), 80 (http), 25 (smtp), defaultní je 23 příklad – vytvořte adresář telnet neco.cz // vstoupim do interaktivniho modu login: peter // zadat jmeno a heslo password: mkdir nejakyAdresar // normalne pracuji – jako v putty