Forumi


Povratak   PC Ekspert Forum > Internet i mrežne tehnologije > Mreže
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 30.03.2008., 00:55   #1
Bubba
E Pluribus UNIX
Moj komp
 
Bubba's Avatar
 
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,544
[Projektic] Kako rjesiti muke sa silnim modemima/routerima uz malo kucne radinosti

Pozdrav svima,

obzirom da me uzasno boli lijeva lopatica a vecinu tehnickih poslova sam, zacudo, zavrsio, te mi moj fizioterapeut Fleks mi otkazuje po 706 put, odlucio sam baciti na virtualni papair par hintova koji bi za minimalno materijalnih sredstava i malo truda i entuzijazma mogli rjesiti probleme u stilu: "imam Kasdu, izasao je novi bestseller sa Jennom, a utorrent pokazuje zuti okvicir", "ja i lega dijelimo adeesel preko
ali to ne funkcionira kako spada", "imam Delink i zelio bih da i web stranice na mom vlastitom racunalo dokine Sledgehammer" i slicno... Budite spremni za mnoga tehnicki neprecizna objasnjenja i pripremite sve za nove Djurine kucne carolije!

U ogromnom broju "kucnih" routera koji se mogu dobiti po popularnim cijenama iz nasih ducana ili po jos popularnijim cijenama od nasih vrlih ISPova jedina prednost nalazi se u tome da su, en general, prilicno maleni volumenom. Cinjenica, koja nije cak ni zalosna nego sasvim realna, jest da su ti uredjaji komad beskorisnog govna u gotovo svakom okruzju. Srecom, gotovo svi se mogu pretvoriti u oblik skoro-pa-pasivne mrezne komponente - drugim rjecima, postaviti se u tzv. "(network) bridge mode". Takav mod radi na principu jako-sam-glup-i-bas-me-briga i to je upravo ono sto zelimo - potpunu kontrolu nad nasom mrezom.

Tu dolazimo do teme ovog malog projektica, a to je "izgradnja" vlastitog routera. Da krenemo odmah u glavu, koristit cemo dvije stvari ovdje - PC vulgaris domesticus i Linux (i to Debian, preciznije). Napravit cemo malu (ali zaista malu) *nix pocetnicu, objasniti stvar ili dvije, te pokusati sloziti sigurno i fleksibilno mrezno okruzje. A sad malo detaljnije...

Hardver

Kao sto rekoh, osnovna mana naseg projekta je sto moze (a i ne mora bit!) velik i bucan. Hardver koji nam je potreban za minimalnu (ali zaista minimalnu, jer projekt se nece sastojati iskljucivo od NAT/Firewall/router/portforwarding uredjaja, no o tome nesto kasnije) je bilo koji x86 kompatibilan procesor sa 24 bitnom sabirnicom i barem 30ak MHz i matematickim koprocesorom (sto bi prevedeno znacilo i486 klasa). Sto se tice diskovnog prostora, tu smo vec "gramzljivi" i najmanje 250MB je potrebno za instalaciju. Obzirom da je danas za 100njak kn moguce dobiti CF adapter sa 1GB karticom, mislim da vise ni to nisu nekakvi suludi zahtijevi. Na kraju, potrebne su dvije mrezne kartice. Izbor, ukus, boja i slicno ovisi o vama, pa je jedino bitno da su dvije.

Tko ne vjeruje u sve ovo, magarac je bio (nije ista arhitektura niti isti OS koji cemo mi koristiti, ali performansama je stvar tu negdje a racunalo na sebi ima mali web server [http://math2.ath.cx/], NTP server, SSH server i jos mogu citat newse i kodirat MP3-ce na njemu):



Jasno je, dakle, kako izdatci za hardver stvarno mogu biti minimalni a vecina ljudi uz malo srece moze iskopati sve potrebne komponente iz podruga, tavana, supa i ostalih opskurnih mjesta gdje se zabasuri sav stari hardver. Stoga, bilo koji 486DX, 16MB RAM-a i 250MB prostora ce vam biti sasvim dosta za potrebe routera - za sve ostalo vrijedi dobra stara "vise je bolje"! Imajte na umu da po razno raznim oglasima, forumima i newsgrupama za 100-150kn mozete kupiti P2 racunalo sa 100 i vise MB RAM-a, visegigabajtnim diskom i to sve zapakirano u lijepo kuciste. Stoga, ekstremi su navedeni, a vecina ce ipak koristiti najbolje dostupno.

Stoga je jasno sto predstavlja najveci problem glede hardvera - to sto racunalo svojim gabaritima mozda nece odgovarati svakome te da postoji mogucnost buke koja takogdjer nece odgovarati svakom. S druge strane, vjerojatno ce svaki "moder" i "overkloker" biti u stanju "pimp my case" i uspjeti od nekakvog Pentiumcica napraviti tih i mocan router, a velicinu kucista svesti na najmanju mogucu.

Softver

(o)Cvrsti temelj imamo, pa je red vidjeti i na cemu ce se nas multipraktik ruter vrtiti. Postoje desetine neupitno kvalitetnih gotovih "router paketa", zasnovanih na razno raznim operativnim sustavima no svima njima su zajednicke iste stvari - obicno imaju vece hardverske zahtijeve nego nas router, zbog raznih ogranicenja znaju imati problema sa novim ili specificnim starim hardverom te mozda i najgore od svega - predpostavljaju nase zelje, sto nama netreba, jer gradimo citav sustav iz pocetka i zelimo sami pretpostavljati vlastite zelje te ih i realizirati. Tu je djelom objasnjeno "zasto Linux" dio. Na dio "zasto Debian", odgovor je - trivijalan package sistem i bogati repozitorij, sam pristup projektu distribucije te prilicno razvijen comunity (npr. http://www.debian-administration.org). U teoriji, za "proizvest" sve sto ce dalje biti navedeno, dovoljan je samo "Linux" dio, no neke sitnice ce se doticati iskljucivo Debiana kao takvog. Imajte na umu da je Debian, koji je temeljen na Linuxu, slobodan - sto vama kao korisnicima konkretno znaci da ga mozete preuzeti i (izmedju ostalog) koristiti bez odgovornosti prema ikome u bilo koje svrhe.

Kako poceti?

U principu, korisnik moze instalirati gotovo sve inacice Debiana po zelji, no preporucam netinst (Network install) CD zbog toga sto ne zahtijeva nikakav oblik postojece mreze u operativnom stanju a moguce je sa njime instalirati apsolutno sve da mreza proradi. Napraviti cemo skriptu koja ce se izvrsavati prilikom svakog pokretanja racunala i u njoj ce biti postavke firewalla, NAT-a i port forwardinga.

Sve potrebno mozete preuzeti odavde:

http://www.debian.org/CD/netinst/

Instalacija je izuzetno jednostavna i moguce je namjestiti da jezik instalacije bude hrvatski sto korisnicima koji imaju poteskoce s engleskim moze pomoci. Sluzbena pomoc dostupna je na:

http://www.debian.org/releases/stable/i386/

docim je Internet, drzim, i vise nego prepun razno raznih instalation guideova, howtowa i slicnog, pa se stoga ne zelim u ovom trenutku previse obazirati na instalaciju, osim u tri mala segmenta. Prvi od njih je particioniranje. Debian installer moze se pobrinuti za tu sitnicu u vase ime i najcesce prosjecan korisnik routera nece biti nezadovoljan s tim izborom. OTOH, tko zeli znati vise, za domacu zadacu moze Googlati kako su strukturirane particije na *nixu i na sto treba obratiti paznju ako ce router sluziti ipak za nesto vise osim portala za p0rna do vaseg racunala. Druga stvar je da, ako se mozete "rasipati" prostorom, instalirate "Standard system" paket kada dodjete do izbora paketa. Nista ostalo odavde vam nije potrebno, no racunajte da za to trebate imati barem 300-400 MB prostora. Takodjer, ako vase mrezne kartice budu prepoznate out of the box (sto u strahovito velikom broju kartica bude slucaj), konfigurirajte samo jednu, i to fiksno. Potrudite se da klasa, range i subnet odgovara trenutnoj (ili zeljenoj) konfiguraciji vase (buduce) mreze.

I jos nesto - *niposto* nemojte ukljucivati nikakvu enkripciju particije! Zasto je to bitno reci cu kasnije.

Takodjer, ne zaboravite staru modifikaciju Popeove uzrecice: "To err is human, to really fuck up things require root password." Pazljivo kreirajte korisnike i grupe te uvijek koristite kvalitetne passworde. User password vam moze biti ime najdrazeg Teletubbyja ili nadimak iz ljetnog kampusa u Ulcinju '79, no root password birajte kao alfanumericku kombinaciju mixed caseova te se libite koristenja specijalnih znakova.

Ne zaboravite, *nix ima strahovito staru i vec sada klimavu korisnicku autentifikaciju te korisnicke grupe. Drugim rjecima, il si hadzija, il si raja - pa stoga kada ste hadzija, pazite da dirlija uopce ne dize graju...

I sto sad?

Instalirali ste sustav, buljite u monitor i sada pise "login:". Nema lijepih sarenih ikonica - one nam (a) zaista ne trebaju i (b)zauzimaju previse memorije, a kao sto smo rekli, (a), pa mozemo bez straha i cupanja kose te urlika "gdje je moj Welcome window" nastaviti dalje. *Ni pod razno se ne logirajte kao root*. Ljudi koji to rade bez pravog razloga su ruzni, debeli, pristavi, postanu vegani i prijatelji zivotinja te obicno umiru vrlo mladi i sami. To isto vrijedi i za one koji (s)uludo koriste su(lu)do. Ako nikada niste radili u nekome od Linux shellova, vrijeme je da to promjenite, a jos jednom cete (vise ili manje kvalitetne) upute naci na Googleu allmightyju. Odvojite 20-30 minuta i pregledajte osnove rada te se pokusajte upoznati s nekim od jednostavnijih tekstualnih editora (pico/nano, primjerice; zanemarimo hard core vi/emacs/ed fanove i njima slicne) - nije puno vremena, niti je cjepanje atoma da se ne moze nauciti, a u toliko vremena naucit cete i vise nego sto ce vam ikada biti potrebno za ovaj guide. Da bi nastavili dalje, potrudite se da barem znate izlistati direktorij, prijeci iz jednog direktorija u drugi, napraviti, kopirati, micati, preimenovati file/folder i slicno. Bez toga, jednostavno nema smisla truditi se i citati dalje.

Sama filozofija *nixa potice iz potrebe OS-a za programere. To ukratko znaci da imate hrpu cudnovatih "naredbi" (tocnije, programa) koji su maleni, brzi i dobro uradjeni (bugless). Za svaki od njih postoji, za prvu ruku, dostatna dokumentacija u obliku tzv. "man pagea", tj. prirucnika koji ce vas postediti skracenica a la RTFM ili "pokusaj potraziti gospodina Manuela". Njoj mozete pristupiti tako da napisete "man"(bez znakova interpunkcije, i ovo je zadnji put da to pisem mada bi trebalo biti jasno as is, ali nije zgorega ponovno reci). Bubuci da nam za prvu ruku korisnici kao takvi nece previse znaciti, moramo ici odmah u glavu i postati sef na racunalu, sto cemo uraditi naredbom "su". Naredba "su" sluzi za promjenu trenutnog korisnika a bez ikakovog argumenta predpostavlja da zelimo promjeniti korisnika u root. Biti cete upitani za password, pa ga unesite. Naoko se vjerojatno nece (jos) dogoditi zapravo nista, osim sto cete upisivanjem naredbe "whoami" dobiti "root" kao output.

Obicno se ovakve situacije svode da covjek sjedi na nekoj lokaciji sa monitorom i tipkovnicom viska, ili je cak morao odspojiti svoje racunalo kako bi spojio taj cuveni router i slicno. Pa se taj isti covjek s pravom upita i kaze - "Pa dobro majku mu staru, ja ne vidim pod hardverskim zahtijevima nikakve tipkovnice i monitore. Osim sto sad imam ogromno cudo umjesto svoje male bijele Kasde, jos moram imati posebno i monitor i tipkovnicu?". Odgovor je - naravno da ne, da pace. Dakle, prva stvar koju moramo uraditi je imati uredjenu mreznu infrastrukturu. Za pocetak to zahtijeva jednu ispravno podesenu mreznu karticu koja ce sluziti kao poveznica vaseg routera i ostatka LAN-a. Na drugu mreznu karticu koju necemo konfigurirati prikljucit cemo modem tj. uredjaj koji vas spaja s internetom. Kako se vise nebi zebli u podrumu, kucali na staroj Mitsumi tipkovnici i gledali u nekakav 14" ADI kupljen u najboljim danima polarisa ranih 90' prosle godine, potreban nam je mrezni protokol kojime cemo moci upravljati racunalom sa udaljene lokacije. Ako je taj protokol jos i siguran, nema druge nego da se zove "ssh" (Secure Shell). Ovdje cemo se morati upoznati s jos jednom stvari, a to je paketni sustav. Ime mu je APT i jako je dobro dokumentiran na sluzbenim stranicama:

http://www.debian.org/doc/manuals/apt-howto/

a naravno, staro dobro pravilo kaze - ako nezna sluzbeni manual (a to u ovom slucaju ne bi trebalo biti istinito), zna Google sigurno! Nekoga tko nije upoznat s filozofijom i nacinom rada zaista bi moglo oduseviti koliko je jednostavno, nekad cak i jednostavnije od instalacije u svepopularnim Windowsima, instalirati aplikaciju ili programski paket preko package managera. In a nutshell - odredjeni paket je moguce automatski povuci iz raznih repozitorija. Neki se nalaze na vasem CDROM-u i nije potrebna internet veza za njih, dok se ostali mogu naci preko Debianovih repozitorija. Broj paketa je zaista velik (preko 20k, IIRC) i moglo bi vas iznenaditi koliko stvari tu ima.

http://packages.debian.org/stable/

Za pocetak, nemojmo dirati nikakve konfiguracije i upoznajmo se sa alatima. Najcesce cemo koristiti "apt-get", "apt-cache" i "dpkg". Pocnimo s drugim: "apt-cache search ". Upisujuci, primjerice, "apt-cache search ssh server" dobiti cemo kao rezultat, izmedju ostalog, i "openssh-server - Secure shell server, an rshd replacement", gdje je "openssh-server" ime paketa koji zelimo, dok je ostatak kratak opis. Kada lociramo paket koji zelimo instalirati, tada napisemo "apt-get install imepaketa". Rekosmo da postoji i nekakav "grep". "grep" po definiciji sluzi za pronalazenje uzoraka u datoteci. Mi datoteku nemamo, ali imamo standardni izlaz naseg "dpkg"-a a imamo i pipe - "dpkg --list | grep -i ssh" ce nam ispisati svaki redak u kojem se pojavljuje regularni izraz "ssh". "-i" je ovdje jer je "grep" po definiciji osjetljiv na velika i mala slova. I opet, za one koji zele znati vise, "man", Google ili lokalni Linuks guru. Huh. Ako sve prodje dobro, kojom god metodom isli, trebali bi vidjeti nesto ovakvo:

...
ii openssh-server 4.3p2 - 9 Secure shell server, an rshd replacement
...


Ako je tomu tako, imamo server. Treba vidjeti radi li on uopce. Nas SSH server pokrenuti ce se kao "daemon" (i ovo je zadnji put da pisem, za sve kojima nesto nije jasno... you know the drill), sto nama zapravo znaci da ce vjerojatno na kraju imena procesa imati slovo "d". Jos uvijek, od mrke konzole i hladne supe, nevini korisnik udarit ce Ctrl+Shift+Esc u nadi da ce iskociti task manager, ali avaj... Za to ce nam pomoci "ps". "ps" je program koji ce izlistati trenutne procese. Da budemo strahovito jednostavni (i izostavimo da "BSD-aski" ispis izgleda neusporedivo ljepse a i korisniji je), "ps -A" ce izlistati sve procese (pazite, *nix je case sensitive!) a buduci da ce biti pokoji, opet cemo morati koristit uzorak s predhodnog "dpkg" primjera, dakle, pipe i nesto s cime cemo si olaksati pretragu. Ako potvrdimo da je sshd medju aktivnim procesima, vrijeme je da spremimo router na njegovo mjesto, zavalimo se u udobnu fotelju u toplini sobe te buljimo u neki mastodontski LCD bez da nas bole oci. Ovdje cu se osvrnuti zasto smo rekli NE enkripciki (koju Debian installer nudi pri instalaciji). Naime, tada ce vam trebati password za pristup sustavu (NE root password, nego poseban password za dekriptiranje) koji se mora upisati *prije* nego li se ssh daemon podigne. Drugim rjecima, svaki puta kada deda na tavanu ukljuci elektricni hoblic i nakon pola sata, kada je skuzio da je iskljucio cudnu bijelu zujavu kutiju u kutu i da ce unuk popizditi kad vidi pa bolje da vrati kako je sve bilo, ponovno ukljuci racunalo, vi cete morati nositi svu silu skalamerije od monitora i tipkovnice na tavan da bi, de facto, "ukljucili" racunalo. To vam NE treba! openssh_server dolazi uglavnom, barem za pocetak, pristojno izkonfiguriran, osim jedne sitnice. Apsolutno i bezrezervno ce te odmah sada odmah onemoguciti root login. Rekli kakvi su ljudi koji se logiraju kao rootovi, a zamislite onda kakvi su tek ljudi koji se *remote* logiraju kao rootovi. Dakelm, buduci da ste vec apsolvirali baratanje konzolom, potrazite SSH konfiguracijsku datoteku u /etc/ssh/sshd_config te editirajte "PermitRootLogin" iz "Yes" u "No". Ovo ce iziskivati restart daemona, a to cete uraditi ovako - "/etc/init.d/ssh restart" (op.a, ovo je "naredba"; mozete prvo zaustaviti server mjenjajuci "restart" u "stop" pa ga ponovno pokrenuti sa "start"). Ok, dakle, nakon sve sile provjera i konfiguracija, mozete napraviti reboot (i to nevjerojatnom naredbom "reboot") te otici na drugo racunalo preko kojega ce te se spajati i od sada nadalje, raditi sve potrebne konfiguracije. Ovo cinite meni na spomen... ne ne ne, krivo. Dakle, iako ovo nije nuzno, biti ce vam najbolja provjera jeste li stvarno dobro instalirali SSH server, dok se jos imate volje vracati u supu po repete na ADIju...

Ako ste na Windowsima, najjednostavnije vam je koristiti putty:

http://www.chiark.greenend.org.uk/~sgtatham/putty/

Ovdje, kao i obicno, imate svu dokumentaciju i sve sto bi vam eventualno moglo zatrebati, no ukratko:



Spajanje bi trebalo biti relativno brzo, osim ako nemate neku *zaista* sporu masinu. Ipak, pustite malo stvar da ohane; prvo ce vas traziti da privhatite kljuc



a nakon toga cete se ulogirati sasvim normalno, sto sve vec i prosli. Sve ostalo vrijedi kao i za rad u supi, samo imate puno vecu fleksibilnost.

Kako do Neta?

Ok, sada kada je puno lakse baratati a gotovo da niste nicime ograniceni (stovise); prvo je potrebno inicijalizirati vezu s internetom, barem do naseg routera. Pod pretpostavkom da, koji god provider i/ili uslugu koristili, je vas uredjaj u bridge modu - sto se tice onih s kablovskim modemima koji su konstantno spojeni na net, stvar je po tom pitanju manje vise gotova. Vrlo je vjerojatno da prikljucivsi kablovski modem u drugu karticu vec mozete "surfati", barem na routeru, pa pokusajte pingati neku web stranicu. Ako stvar iz nekog razloga ne radi, postoji mogucnost da name serveri nisu dobro namjesteni (ili bolje receno "pokupljeni", sto bi trebalo biti), pa citajte dalje. Sto se tice pak onih koji imaju ADSL, njima je potrebno nesto sto ce inicijalizirati PPPoE vezu. Program koji ce nam u tome pomoci zove se "pppoeconf". Nakon sto ga instalirate, pokrenite konfiguraciju s jednako tako intuitivnom naredbom "pppoeconf". Tu ce program za vas napraviti veliku vecinu posla - pronaci mrezno sucelje na kojemu je modem i kreirati konfiguracijsku datoteku. Ne zaboravite odgovoriti potvrdno na pitanje zelite li pokrenuti spajanje prilikom bootanja. Ako ste potvrdno odgovorili i na pitanje zelite li pokrenuti vezu odmah, nakon sto izadjete iz konfiguratora, dobiti cemo mali uvid u alatke koje se bave mrezom u Linuxu. Prvi komad koji nam je potreban je "ifconfig". Kada upisete "ifconfig -a", dobiti cete ispis svih mreznih sucelja koja su prisutna na vasem racunalu. Ako se medju njima pojavi i jedno koje pocinje sa "pppx" (x je integer), na konju ste! Kako to otprilike izgleda:



Dio preventivnog troubleshoota koji se odnosi i na DSL i na cable korisnike su name serveri. Idealan slucaj ce u /etc/resolv.conf upisati name servere bez vase interakcije. Ako se to ne dogodi ili zelite promijeniti name servere (aka DNS servere), morat cete rucno konfigurirati resolv.conf datoteku tako da dodate "nameserver xxx.yyy.zzz.www". Bilo kako bilo, provjerite sto pise u resolv.conf kako bi ste bili sigurni da je sve na mjestu. U ovom trenutku trebali bi ste biti u stanju izvrsiti uspjesan ping prema vanjskim serverima, stovise, mozete cak i surfati! (hint: apt-cache search i par kljucnih rjeci mogu vas dovesti do uzit^H^H^H^H... zeljenog rezultata).

Svi na net!

Uzevsi da ste uspjesno izvrsili sve potrebne konfiguracije do sada te imate pristup internetu, napravimo samo jos jednu stvar prije nego nastavimo. Do sada ste sve pakete instalirali preko svog CD-a. Na njemu se nalazi zaista ono osnovno "za prezivljavanje", ali citavo more se nalazi, naravno, na netu. Lista "izvora" paketa APT sustava nalazi se u /etc/apt/sources.list. Otvorite tu datoteku i dodajte na listu mirrora (ako vec nije, a vjerojatno nije) slijedecu liniju

deb http://ftp.de.debian.org/debian etch main

Pospremite promjene i pokrenite "apt-get update" (do sada smo koristili "samo" install). Time ste si omogucili ogromnu (ali zaista ogromnu) bazu paketa na dohvat tipkovnice!

Slijedeca stvar koju moramo uraditi je zastitit sebe i druge firewallom, proslijediti javnu IP adresu ostalim racunalima u mrezu NAT-om (ne NATO-om ) te otvoriti svim p0rn majstorima portove i proslijediti ih na odgovarajuce IP adrese.

Za to cemo koristiti Netfilter odnosno jedan od njegovih alata, iptables. Kao i obicno, sva sila korisne sluzbene dokumentacije nalazi se ovdje:

http://www.netfilter.org/

Za pocetak, biti ce nam potrebna informacija o tome koje je mrezno sucelje "okaceno" na LAN. Naucili smo sto i kako radi naredba "ifconfig", pa pomocu nje otkrijte o kojemu se sucelju radi (hint: to je ono koje ima fiksnu IP adresu iz private networking rangea).

Skripta ide otprilike ovako (*vazna napomena*: biti ce posebno naglasena mjesta gdje morate vlastotipkovnicki unijeti podatke koji odgovaraju vama i vasoj konfiguraciji!)

#!/bin/sh
#tzv. shellbang - kazujemo sustavu da zaista radimo skriptu, te dajemo punu putanju do shell interpretera. iz tehnickih razloga, jedino je ovaj komentar *ispod* linije na koju se odnosi. svi ostali komentari, ako drukcije nije navedeno, nalaze se iza znaka "#" i odnose se na linije ispod samog komentara.


#takodjer, dajemo punu putanju lokacije iptables-a
iptables=/sbin/iptables

#brisemo sva eventualna postojeca pravila
$iptables -F
$iptables -t nat -F

#zadana pravila za nekategorizirani promet
$iptables -P INPUT ACCEPT
$iptables -P OUTPUT ACCEPT
$iptables -P FORWARD DROP

#definirajmo LAN i WAN sucelja {ATTN: ovdje trebate upisati podatke koji odgovaraju vasoj konfiguraciji, recimo eth0/eth1/ppp0 i slicno}

LAN="***"
WAN="***"

#omogucujemo pristup svim servisima samo lokalnoj mrezi
$iptables -I INPUT 1 -i ${LAN} -j ACCEPT
$iptables -I INPUT 1 -i lo -j ACCEPT
$iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
$iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT

#ovdje mozemo omoguciti pristup odredjenim uslugama (portovima) iz vana {ATTN: umjesto tri zvjezdice (***) potrebno je upisati broj porta; moguce je otvoriti i citav range portova, recimo 100:200 otvara sve portove od 100 do 200. za pojedinacno otvaranje portova, liniju je moguce kopirati (sa razlicitim portom po potrebi mnogo puta}
$iptables -A INPUT -p TCP --dport *** -i ${WAN} -j ACCEPT

#izbacivanje UDP/TCP paketa na privilegirane portove
$iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
$iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP

#NAT {ATTN: umjesto zvjezdica * potrebno je upisati vas IP range a umjesto usklicnika ! vas subnet}
$iptables -I FORWARD -i ${LAN} -d ***.***.***.0/!!!.!!!.!!!.!!! -j DROP
$iptables -A FORWARD -i ${LAN} -s ***.***.***.0/!!!.!!!.!!!.!!! -j ACCEPT
$iptables -A FORWARD -i ${WAN} -d ***.***.***.0/!!!.!!!.!!!.!!! -j ACCEPT
$iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

#omogucujemo port forwarding u samom kernelu
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#definiramo port forwarding prema racunalima u mrezi {ATTN: umjesto zvjezdica * je potrebno upisati port koji zelimo forwardati (vrijedi sve isto kao i za otvaranje portova a umjesto usklicnika ! IP adresu racunala prema kojem zelimo otvoriti port. liniju je takodjer moguce kopirati po potrebi mnogo puta}
$iptables -t nat -A PREROUTING -p tcp --dport *** -i ${WAN} -j DNAT --to !!!.!!!.!!!.!!!

Evo malo ljepsi primjer sa konkretnim vrijednostima:

#!/bin/sh
iptables=/sbin/iptables
$iptables -F
$iptables -t nat -F
$iptables -P INPUT ACCEPT
$iptables -P OUTPUT ACCEPT
$iptables -P FORWARD DROP
LAN="eth1"
WAN="ppp0"
$iptables -I INPUT 1 -i ${LAN} -j ACCEPT
$iptables -I INPUT 1 -i lo -j ACCEPT
$iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
$iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT
$iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
$iptables -A INPUT -p TCP --dport 80 -i ${WAN} -j ACCEPT
$iptables -A INPUT -p TCP --dport 443 -i ${WAN} -j ACCEPT
$iptables -A INPUT -p TCP --dport 21 -i ${WAN} -j ACCEPT
$iptables -A INPUT -p TCP --dport 6666 -i ${WAN} -j ACCEPT
$iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
$iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
$iptables -I FORWARD -i ${LAN} -d 192.168.1.0/255.255.255.0 -j DROP
$iptables -A FORWARD -i ${LAN} -s 192.168.1.0/255.255.255.0 -j ACCEPT
$iptables -A FORWARD -i ${WAN} -d 192.168.1.0/255.255.255.0 -j ACCEPT
$iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
$iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.1.253
$iptables -t nat -A PREROUTING -p tcp --dport 6666 -i ${WAN} -j DNAT --to 192.168.1.22

U ovom primjeru otvoreni su portovi 21, 22, 80, 443 i 6666. Eksplicite portovi koji su forwardani su 80 (HTTP) na drugi web server u lokalnoj mrezi te port 6666 koji je otvoren zbog torrenta i usmjeren prema IP adresi klijentskog racunala. Svi ostali portovi, kada su otvoreni te kada im se pristupa iz vana, reagiraju direktno na routeru.

Sada je potrebno pospremiti nasu skriptu, te joj mozemo dati nastavak .sh, cisto da se zna o cemu se radi. Pospremit bi je trebali u /etc/init.d i jos nam samo fali to da ju ucinimo aktivnom pri svakom bootu. To cemo uraditi naredbom "update-rc.d" i to ovako: "update-rc.d defaults". Ako sve prodje dobro, nasa skripta ce se pokrenuti prilikom svakog pokretanja operativnog sustava. Ako pak zelimo mijenjati neke parametre tijekom rada, dovoljno je napisati "sh " i citava stvar ce biti ponovno ucitana (zbog toga i jesmo na pocetku skripte odlucili pobrisati sva eventualna postojeca pravila).

Summa summarum (barem za part 1, ako ih uopce bude jos)

Ukoliko ste djelima (makar je i samo citanje do ovdje uspijeh ) dosli do kraja ovog kratkog, sturog i ne bas previse tehnickog... "vodica", ili kako god ga zelite nazvati, imate prilicno opaku i mocnu zvijerku u rukama. Ne samo da ste u potpunosti u kontroli nad svojim mreznim prometom, nego mozete nadogradjivati racunalo, sukladno njegovim mogucnostima, raznim drugim rolama, kao sto je web server, FTP server, NNTP server, NTP server i slicno te ga uz to koristiti i za potrebe lokalne mreze kao file server, print server, DHCP/DNS server i slicno. Nadam se da ce ovo cudo, ako vec ne pomoci nekom direktno, onda barem dati na uvid ljudima da se sa razmjerno malo truda i minimalno ulaganja mogu dobiti mocni i fleksibilni mrezni alati.

Bilo kako bilo, revni recenzenti se trazi i da pace, pozeljni su, so, šut evej!

HTH,

Bubba
__________________
Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest.

Zadnje izmijenjeno od: Bubba. 30.03.2008. u 10:33.
Bubba je offline   Reply With Quote
Staro 30.03.2008., 00:57   #2
razor i2c
Premium
Moj komp
 
razor i2c's Avatar
 
Datum registracije: Nov 2007
Lokacija: Hercegovina
Postovi: 363
čestitke i pohvale za trud i ovliko pisanja
__________________
Sig 50 kb max :-)
razor i2c je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 30.03.2008., 01:01   #3
Baja 001
Banned
Moj komp
 
Baja 001's Avatar
 
Datum registracije: Aug 2006
Lokacija: Split
Postovi: 7,504
Svaka čast Bubba stvarno je korisno!
Baja 001 je offline   Reply With Quote
Staro 30.03.2008., 03:54   #4
Fleks
JDM
 
Fleks's Avatar
 
Datum registracije: Sep 2004
Lokacija: Zagreb
Postovi: 6,137
Bubba super. A sad mi to u ponedjeljak dodji slozit. Jos mi mozes i pofarbat unisys (ex aquanta) uber kuciste u crno. Mozda ti dam malo mega pr0n prospekata sa es5000/7000
Fleks je offline   Reply With Quote
Staro 30.03.2008., 08:55   #5
coconut
Premium
Moj komp
 
coconut's Avatar
 
Datum registracije: Mar 2006
Lokacija: Opatija
Postovi: 33,323
Lijepo. Popravi prvi link (math2...) jer se i zadnja uglasta zagrada ubacila u link kao i '/' pa klikom na njega dobijaš 'Server not found'.
__________________
"Dvije stvari su beskonačne - svemir i ljudska glupost. Za svemir nisam siguran." A. Einstein
coconut je offline   Reply With Quote
Staro 30.03.2008., 10:13   #6
danij3l
Premium
 
danij3l's Avatar
 
Datum registracije: Nov 2005
Lokacija: NA
Postovi: 2,620
nice.

nije komplicirano za konfiguraciju, ali ipak preferiram gotova rijesenja za takve stvari.
i ja sam planirao napisati nesto u tom stilu u svrhu skidanja p0rnjave. dakle server koji ce skidati s torrenta, newsa , gnutelle i narafno http i ftp-a (ovdje ulazi i rapidshare), a poslovi bi se dodavali preko web sucelja (server bi bio dostupan i izvana, tj. dostupan s bilokojeg racunala na netu.)
danij3l je offline   Reply With Quote
Staro 30.03.2008., 10:59   #7
Bubba
E Pluribus UNIX
Moj komp
 
Bubba's Avatar
 
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,544
Citiraj:
Autor DaNiJ3L Pregled postova
nije komplicirano za konfiguraciju, ali ipak preferiram gotova rijesenja za takve stvari.
Ovo je malo u kontradikciji s ovime dole...

Citiraj:
i ja sam planirao napisati nesto u tom stilu u svrhu skidanja p0rnjave. dakle server koji ce skidati s torrenta,
rtorrent

Citiraj:
newsa,
apache + URD

Citiraj:
gnutelle
Probaj s Cokolino krem namazom...

Citiraj:
narafno http i ftp-a (ovdje ulazi i rapidshare)
wget + malo kodiranja, predpostavljam

Citiraj:
a poslovi bi se dodavali preko web sucelj