Umrežavanje Linuxa

Pristup Internetu ili lokalnoj mreži danas je praktički preduvjet normalnog korištenja računala u privatne ili poslovne svrhe. Linux od svojih početaka prati fraza "nastao na Internetu" što se odnosi na mjesto kolaboracije njegovih inicijalnih tvoraca, pa tako podržava razni hardver, protokole i izgradnju mrežnih servera. Unatoč tome, slaganje svih mrežnih postavki i izlaz na Internet novom korisniku nije baš previše jednostavno. Sve do prije nekoliko godina nije bilo nekih osobitih alata za konfiguraciju tako da su korisnici morali znati dosta i teorije kao i sintaksu raznih alata. Kad se doda još i nepodržanost velikog broja tzv. winmodema, razumljivo je da su korisnici Linuxa imali znatnijih problema u postavljanju mreže. Dok ona ne proradi, ne možemo na Google provjeriti kako se postavlja, pa to nekad završi i s desetak resetiranja u Windowse da provjerimo neku sitnicu na Internetu, skinemo pokoji paket ili isprobamo razne varijante konfiguracija. Srećom, danas svaku moderniju distribuciju krasi neko sučelje za slaganje mrežnih postavki pa tu postoji manje problema, no vrlo je često bitno znati kako se takve stvari i ručno podešavaju, jer su sučelja često osnovne funkcionalnosti, a bilo kakve dodatne zahtjeve tako je nemoguće riješiti.

Najbolje kod instalacije

Prvi dodir s parametrima mreže bit će već pri instalaciji distribucije Linuxa. Baš svaka iole dotjeranija to ima integrirano u instalacijsku proceduru. Ako je mrežna kartica fizički prepoznata, dočekat će nas dijalog gdje trebamo upisati parametre: IP adresu, masku mreže, adresu podrazumijevanog gatewaya i DNS servera, a uglavnom i ime računala i ime mreže, makar nisu toliko bitni za osnovnu funkcionalnost. Ako ne možemo doznati te parametre, moguće je da u mreži postoji DHCP server koji je zadužen da ih automatski dodijeli nekom računalu iz zadanog raspona. Njega instalacijska procedura može kontaktirati i zatražiti podatke, često i automatski. Ako ni to ne postoji, uvijek mrežu možemo ostaviti nekonfiguriranu i nakon instalacije vratiti se tim parametrima. Naravno, moguće je da Linux računalo uopće neće biti dio nikakve mreže, no to je danas sve manje vjerojatno. Ova podešavanja možda će nekome biti jedini kontakt s mrežnim parametrima do sljedeće reinstalacije, a cijeli ovaj tekst bespotreban, no za one koji će ponekad doživjeti i promjenu mrežnih postavki ovakve stvari su nužne. Gore navedene parametre nakon završene instalacije možemo postaviti na nekoliko načina, neki su iz naredbenog retka, neki - ovisno o distribuciji - iz raznolikih sučelja koje one donose, a kao i obično u Linuxu, krajnja je i najsigurnija metoda izravno urediti konfiguracijsku datoteku. Potrebno je također znati oznake mrežnih kartica u Linuxu. Ako je to klasična Ethernet kartica, oznake uređaja će biti eth0 za prvu, eth1 za drugu itd. Oznaka eth0:1 označava dodatnu IP adresu na prvoj mrežnoj kartici, no one se koriste samo u posebnim prilikama (serveri i sl.). Bežične kartice imaju druge oznake, često vezane uz proizvođača, kako je spomenuto u okviru. Dosta se podataka može doznati prilikom pokretanja sustava ili naknadno naredbom dmesg, kad će kernel ispisati koje je kartice našao. Spomenimo da se u Linuxu automatski pojavljuje i tzv. loopback virtualno sučelje, koje predstavlja IP adresu lokalnog, ne nužno umreženog računala, i služi da bi se programi mogli obraćati nekim lokalnim servisima. Primjerice, utipkamo li u browser adresu http://127.0.0.1 dobit ćemo lokalni web server, ako je pokrenut. Nas ne treba zamarati.

Privatne IP adrese

U velikoj većini slučajeva, pogotovo po kućnim mrežama koje imaju npr. neki ADSL router ili u poslovnim mrežama u kojima je bitna sigurnost, adrese koje će biti na raspolaganju nalazit će se u tzv. privatnom rasponu adresa. To ukratko znači da one nisu izravno dostupne s Interneta nego se koriste u lokalnim mrežama, a za izlaz na Internet preći će preko nekog zajedničkog gatewaya, koji će njihovu adresu prevesti u javnu (network address translation - NAT). To je nastalo prvenstveno jer je raspon javnih adresa ograničen i najčešće geografski vezan, a i košta. Ovako tvrtka može imati proizvoljan broj računala unutar kuće, a samo jednu javnu IP adresu. Posebno je popularan raspon adresa koji počinje s 192.168, a u takvom može biti ukupno 65535 računala. Osim njega, tu je još i 10.0.0.0/8 i 172.16.0.0/12.

Ifconfig i route

Najpoznatija i najčešća naredba za postavljanje mreže naziva se ifconfig. Njoj je potrebno redom zadati oznaku mrežne kartice, IP adresu i masku mreže. U osnovi, sintaksa je jednostavna: ifconfig eth0 192.168.1.22 netmask 255.255.255.0 Ako je naredba ispravno izvršena, nećemo dobiti nikakav odziv, pa se može još jednom pokrenuti naredbu bez parametara kako bi se uvjerili da smo sve dobro postavili. Ako želimo onemogućiti tu mrežnu karticu, pišemo "ifconfig eth0 down". Naknadno ju možemo ponovno pokrenuti s parametrom "up" no spomenimo da će se izgubiti informacije o usmjeravanju. Izlaz prema drugim mrežama odnosno postavljanje gateway adrese izvest ćemo naredbom route add -net default gw 192.168.1.1 Kako smo već spomenuli u okviru, gateway je računalo spojeno na najmanje dvije mreže koje će pakete namijenjene za neku drugu mrežu preusmjeriti prema odredištu, ali i znati vratiti odgovor. U tipičnim mrežama on često ima kao zadnji broj svoje IP adrese jedinicu ili pak 254, no može imati bilo koji, ali bitno je da se nalazi u istoj mreži. Za provjeru uspješno postavljenog parametra možemo napisati "route -n". Parametar "n" služi da se IP adrese ne pokušavaju pretvoriti u njihove slovne vrijednosti i time uspore ispis. Postavljanje tablica usmjeravanja može biti vrlo kompleksno u slučaju više mreža i izlaza na Internet, kad na jednu mrežu možemo ići preko jednog, a na ostale preko drugog izlaza, no to su rjeđe situacije. Ostao nam je samo još jedan parametar, ako želimo Internet i koristiti. Postavljanje DNS-a, odnosno uređaja koji simbolička imena nekih servera pretvara u numerička, ne možemo izvesti nekim općenitim programima nego izravno moramo urediti datoteku /etc/resolv.conf. Ona počinje s ključnom riječi "nameserver" koju slijedi IP adresa od DNS servera. Obično su navedena dva (Internet provideri uvijek imaju primarni i sekundarni), osim u manjim mrežama. Postoji još i ne toliko bitan "search" zapis, koji označava lokalnu domenu za koju neće biti potrebno utipkavati puno ime kako bi se pronašla na mreži. Budući da konfiguracijska datoteka DNS-a nije ujednačena s drugim datotekama, to pokušava riješiti paket resolvconf, koji može iz interfaces datoteke u Debianu vaditi podatke o DNS-u i zapisati ih u /etc/resolv.conf, no rjeđe se koristi. Kad je u mreži dostupan DHCP server, sve je neusporedivo lakše. Pokretanjem naredbe "dhclient eth0" nakon nekog vremena će se dohvatiti IP adresa sa svim ostalim postavkama i mreža će istog časa proraditi.

Spremanje postavki

Nakon prethodnih koraka, možemo reći da imamo postavljene sve najbitnije parametre za funkcioniranje mreže. Nakon restarta sustava ti će parametri (s iznimkom DNS-a) biti zaboravljeni. Ove naredbe možemo teoretski staviti u neku skriptu koja će se pokretati kod podizanja sustava, no distributeri su zamislili da se to nalazi u posebnim tekstualnim datotekama. U Debian distribucijama (i Ubuntu) ti se podaci nalaze u direktoriju /etc/network, odnosno datoteci interfaces. Ona će skoro sigurno biti popunjena, makar i krivim podacima pa ju je dovoljno samo korigirati, no primjer jedne takve nalazi se na slici vezanoj uz tekst. Od parametara bitni su address, netmask i gateway, dok ostale (npr. adresu mreže) može izračunati sustav. Ime računala nalazi se u /etc/hostname, no preporučljivo je urediti i /etc/hosts datoteku s ažurnom IP adresom koju slijedi ime računala. Red Hat varijante imaju skriptu smještenu u /etc/sysconfig/network-scripts. Ime skripte joj se sastoji od imena mrežne kartice, a za prvu po redu je ifcfg-eth0. Sadržavaju ju razni parametri jasnog značenja koje treba popuniti. Suse ima skriptu istog imena u /etc/sysconfig/network. Nakon postavljanja svih parametara, potrebno je restartati mrežu na standardan način kao i ostale servise, dakle "service network restart" ili /etc/init.d/networking restart kod Debiana. Postoje i skripte naziva ifup i ifdown, koje služe istoj svrsi, a kao argument primaju ime mrežne kartice (npr. ifup eth0). Naravno, svaka distribucija koja se trudi ostaviti dojam jednostavnosti korištenja ima neko svoje sučelje za konfiguraciju i svakako je ono preporučeno, ako možemo do njega. Osim raznih grafičkih varijanti pod Red Hatom postoje netconfig i system-config-network-tui, dovoljno intuitivni alati.

Provjera ispravnosti

Nakon što smo se uvjerili da smo podesili sve stavke točno kako je potrebno (naredbama ifconfig i route) trebamo se uvjeriti da sve to i radi kako treba (možda smo krivo spojili kablove i slično). Najjednostavniji način bilo bi pokrenuti web browser, upisati neku adresu i pričekati da se učita, kako bi bili sigurni da rade i lokalna mreža i Internet. Pouzdanija metoda bila bi koristiti naredbu ping. Ona šalje male pakete prema udaljenom računalu i osluškuje da li dobiva povratnu informaciju (naravno, računalo mora biti upaljeno). Usput dobivamo i podatke koliko brzo se ti mrežni paketi vraćaju, pa možemo zaključiti nešto i o kašnjenjima u mreži (nevezano uz propusnost). Ne smije biti ni gubitaka paketa, što bi pokazalo neki ozbiljni kvar (primjerice, kad dva računala imaju istu IP adresu). Ping nam samo govori da li je računalo dostupno. Ako želimo otkriti kojim će putem ići neki paket do odredišta, koristimo naredbu traceroute. Ona će svakom routeru na putu (do nekog servera na Internetu može ih biti i nekoliko desetaka) poslati ping paket i vidjeti koliko je kašnjenje do njega, pa tako vidimo i topologiju mreže i gdje točno paketi zapinju. Kombinacija ova dva alata je interaktivni mtr (My Traceroute) koji će u preglednom sučelju ispisivati sve točke na putu i još lakše doći do krivca.

Pregled mrežnog prometa

Još jedan način dijagnostike je alat tcpdump. On će bilježiti i ispisivati sav promet na mreži vezano uz naše računalo. Za detaljno tumačenje potrebno je dobro poznavati sve protokole, no zgodno je da vidimo put paketa u odlasku i dolasku. Taj se alat, zajedno s odličnim grafičkim ekvivalentom Wiresharkom (bivši Ethereal), može koristiti i u obrazovanju, pa je to još jedan razlog da ga bolje upoznamo. Situacija u komunikaciji može se otkriti i naredbom netstat, koja će izlistati aktivne mrežne veze i servise, a može i ispisati gomilu statistika. Osim trenutno aktivnih veza, nama će zbog sigurnosti biti bitni redovi koji sadrže ključnu riječ LISTEN, koja označava da je neki proces ili servis omogućen za spajanje izvana, pa bi ga trebalo zaustaviti, ako nam to nije namjera. Kako se ne bi ispisalo par stotina redova, moguće je izdvojiti bitnije mrežne veze (inače se ispiše i lokalna komunikacija između procesa) netstat --inet -ap Praktičan i interaktivan alat za nadzor mrežnog prometa je iptraf. On će najbolje poslužiti za otkrivanje nekog prevelikog prometa jer će otkriti koji protokol ga generira i prema kojem računalu je upućen. Najbolji alat za bolje upoznavanje mreže koja nas okružuje je Nmap. Program koji je možda više namijenjen sigurnosnim stručnjacima i koji može služiti za otkrivanje ranjivosti nekog udaljenog računala i njegovih servisa, može poslužiti i u jednostavnije svrhe. Primjerice, kad treba otkriti koja su sve računala u mreži, može mu se zadati raspon adresa kojima će poslati ping paket, naredbom nmap -sP 192.168.1.1-254 Ako se program pokrene samo s jednom IP adresom kao parametrom, pregledat će sve otvorene portove dostupne na toj IP adresi, a iz toga se može zaključiti da li to računalo ima Windowse ili Linux (iako se može dodati i opcija -O za precizniju detekciju).

IP naredba

Zamjenu naredbi ifconfig i route nalazimo u paketu iproute2, u kojem dolaze dvije naredbe, ip i tc. Dosadašnje naredbe ograničavaju neke mogućnosti koje pruža Linux kernel, pa su se zato morale pojaviti naprednije. Većina distribucija i uputa ipak njih koristi i navodi, ali mi ćemo prikazati primjer ovih novih naredbi. Tc (traffic control odnosno upravljanje prometom) služi nam za razno oblikovanje mrežnog prometa (usporavanje) u odnosu na tip paketa. Trenutno izlazi iz opsega ovog teksta, pa ćemo se posvetiti naredbi ip, koja služi za postavljanje mrežnih parametara i tablica usmjeravanja, a skromnog smo mišljenja kako je ovaj način intuitivniji (bliži govornom jeziku) nego stare route i ifconfig naredbe. Prvo ćemo svakako željeti postaviti neku IP adresu na mrežnoj kartici. To ćemo napraviti naredbom ip address add dev eth0 192.168.1.56/24 što zamjenjuje naredbu "ifconfig eth0 192.168.1.56 netmask 255.255.255.0". Ispis parametara postižemo s ip address show a brisanje ip address del dev eth0 192.168.1.56 Sljedeći bitan parametar je naravno gateway adresa odnosno podešavanje tablice usmjeravanja. Njegovo podešavanje kao podrazumijevanog za sve mreže moguće je naredbom ip route add default via 192.168.11.22 što zamjenjuje naredbu "route add –net default gw 192.168.11.22 netmask 255.255.255.0". Ispis tablice moguć je s "ip route show" Neke parametre mrežnih kartica možemo mijenjati pomoću naredbe ip link set dev eth0 down a ispis tih parametara dobivamo s ip link show. Nešto što nije bilo moguće sa starim naredbama su napredne tablice usmjeravanja. Dok je dosad bilo moguće neki paket preusmjeriti u mreži bazirano na odredišnoj adresi, novi sustav može ga slati po kriterijima izvorišne adrese, IP protokola, portova na koje se šalje (dakle vrste prometa), pa čak i sadržajem samog paketa. Naredbom ip moguće je postavljati razne parametre, poput stvaranja tunela (ip tunnel), rada s ARP adresama (ip neighbour) i multicast adresa (višeodredišne adrese, koriste se u audio i video streamingu, kad je isti sadržaj potrebno dostaviti istodobno na puno računala).

Nova generacija adresiranja IPv6

Spomenimo na kraju i novu generaciju mreže u Internetu, odnosno IPv6, 128-bitnu IP adresu koja bi trebala riješiti problem pomanjkanja IP adresa u svijetu. Ona omogućuje nezamislivo velik broj jedinstvenih IP adresa, broj koji se označava s 32 heksadecimalne znamenke. Primjer jedne takve je 2011:0da8:0100:f101:0210:a4ef:fee3:9566. Linux podršku za IPv6 nema predugo, no ona je sad dovoljno stabilna i testirana tako da je on potpuno spreman prijeći na taj protokol kad bi bilo potrebno. Podrška treba postojati u kernelu (ipv6 modul) i u alatima koji ju postavljaju (unutar naredbe ip standardno postoji, kao i u novijim verzijama ifconfiga (paket net-tools)). Alati za testiranje završavaju brojkom 6 u imenu (ping6, traceroute6...), a i programi koji trebaju komunicirati s udaljenim IPv6 adresama moraju imati podršku za njih. Linux je uz dodatak IPv6 uspio zaokružiti sve glavne načine povezivanja, pa tako možemo zaključiti da nećemo imati problema s njegovim spajanjem u mrežu.

Ivan Capan