ot Beco(13-02-2006)

reiting (102)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Litsenz: CC Attribution-ShareAlike

Opisanie na litsenza: http://creativecommons.org/licenses/by-sa/2.5/


Povod:

Predi dva dni moi poznat stana klient na uslugata na Houmlan tip "ikonomichna". Razbira se, po star naroden obichai, uslugata be raznoobrazena s TTL filtur ot strana na dostavchika (vuprosniia Houmlan), ta da ne mozhe klientut da se izkushi da izpolzva v kushti marshrutizator i da ne mozhe da svurzhe prez nego kum uslugata poveche ot edin kompyutur. Dobre, no da si predstavim, che klientut ima IP telefon i tova na praktika e vtori potrebitel na Internet, zaedno s domashniia kompyutur. Razbira se, che za da ima IP telefon i svurzan kum internet kompyutur, shte se nalozhi da se napravi mrezhova adresna translatsiia - NAT (izvestna sred ekzaltiranite ot chatene s "pichki" v IRC mega oligofreni, kato "maskirane zad realen IP adres"). Razbira se, Houmlan triabva da sa po-naivni i ot napushen tineidzhur, za da poviarvat v ideite si i da si misliat, che niakoi shte si plati otdelen dostup po tarifi za internet svurzvane, za da ima v kushti IP telefon. Vekut na golemite utopii si zamina predi 6 godini.

Drug povod:

Ot sedmitsa veche Data.BG predlagat plateno pomestvane na sudurzhanie na survurite im za svoboden hosting (svoboden, no platen). Tuseshtata mashina sushto e platena. Ot druga strana Data.BG PRODAVAT trafika ot i kum tova sudurzhanie na drugi dostavchitsi na svurzanost. Znachi izliza taka - vednuzh klienta plashta za da kachi sudurzhanieto i vori put si plashta za da go iztegli. Perfektna debelashka sistema za pechelene na pari ot prodazhba na nelitsenzirano sudurzhanie. Houmlan sa internet kompaniia na Data.BG.

Da ne si pomislite obache, che opisanieto tuk e napraveno samo s tsel vklyuchvane na IP telefon. Po tozi nachin (koito shte opisha po-dolu), mozhete da vklyuchite tsialata si domashna mrezha kum Internet, ili kazano po-kratko vsichko, koeto ima mrezhova platka na sebe si.

Niakoi predvaritelni utochneniia:

* Izpolzvanata distributsiia za tselta e Fedora Core 4 (tova ne znachi, che ne stava i s drugi distributsii).

* Fedora Core 4 triabva da bude aktualizirana (deistvie, koeto se opisva s krasiviia i tolkova avtentichen bulgarski glagol "updeitvam"). Ako tova uslovie ne bude izpulneno, ima opasnost opisanata po-dolu tehnologiia da ne bude uspeshno ralizirana.

1. Nastroiki na marshrutizatora

Nastroikite po-dolu kasaiat tozi kompyutur, koito shte bude svurzan chrez PPPoE ili PPTP protokol kum mrezhata na dostavchika. Povecheto LAN dostavchitsi izpolzvat za vsichki domashni klienti "link" protokol PPPoE (za biznes klienti tova ne e taka), a niakoi PPTP, kudeto ne e nuzhno "link" svurzvane kum shlyuza za Internet. Sledovatelno mozhe da vi se nalozhi da napravite nastroiki s tsel rabota s tozi protokol, koito da zasegnat konfiguratsiiata na mrezhovite interfeisi. Poveche za tova mozhete da prochetete na sledniia adres:

http://hardtrance.blogspot.com/2005/11/pppoe-fedora-red-hat-enterprise-linux.html

Ubedete se, che svurzvaneto po protokol PPPoE e uspeshno i imate vruzka kum Internet.

Sled tova e nuzhno da konfigurirate iadroto sus suotvetnite optsii taka, che da mozhe to da marshrutizira paketite ot vutreshnata mrezha kum Internet i obratno. Ne se plashete, ne e nuzhno da pravite nishto osven da redaktirate edin fail. Tozi fail e /etc/sysctl.conf. V nego namerete sledniia red (postavete go, ako go niama):

net.ipv4.ip_forward = 0

i go promenete taka (ako tova se nalaga, razbira se):

net.ipv4.ip_forward = 1

Za da vleze v sila tazi promiana (za da mozhe iadroto da prieme tazi nastroika i da zapochne da marshrutizira paketite), e nuzhno da izpulnite sledniia komanden red:

# sysctl -p

Tova e pravilniiat nachin za podavane na stoinosti na parametri na iadroto. Vsiakakvi drugi pornografii v stil "echo 1 > /proc/sys/net/ipv4/ip_forward" nabiti po sistemni skriptove, govoriat za iaka IRC shkolovka i mega zatupiavane, vodeshto do napravata na TNTM resheniia ot tip "raboti samo pri men".

2. Izbiagvane na filtratsiiata na paketi izlizashti ili idvashti kum visok nomer na port na marshrutizatora v usloviiata na NAT

Druga "mega" hvatka, koiato se polzva ot razni veliki dostavchitsi s tsel ogranichavane na prilaganeto na NAT ot strana na klientite, e avtomatichnoto otriazvane na paketite ot i kum visoki nomera na portove na klientskata mashina (tezi portove se izpolzvat imenno, kogato ima izvurshvane na NAT). Razbira se, takuv filtur mozhe da raboti samo, ako nasreshta si imat "lovtsi na pichki" v IRC i shofüori na avtomobili s emblematichnata marka VW Golf. Az izobshto ne sum proveriaval dali moiat dostavchik ima realizatsii na podobni filtri. Napravo zaobikolih takova ogranichenie (ako go ima). Za tselta otnovo se redaktira (v sluchaia e po-dobre da se kazhe dopulva) konfiguratsionniia fail za parametrite na iadroto /etc/sysctl.conf. V nego triabva da prisustva sledniia red:

net.ipv4.ip_local_port_range = 1024 32768

Sled kato toi bude zapisan vuv faila, zadadenite stoinosti triabva da se podadat za prochit kum iadroto. Tova stava s komandniia red:

# sysctl -p

3. Proverka za nalichnost na modula ipt_TTL.ko

Ako izpulnite komandata:

# modprobe ipt_TTL

i ne poluchite suobshtenie za greshka, a kursora v konzolata sleze na nov red, znachi modulut e nalichen v modulnata kolektsiia na iadroto. Nalichieto na modula ipt_TTL.ko absolyutno zadulzhitelno uslovie za da mozhe da bude nadhitren TTL filtura. Ne e nuzhno pri vseki start na sistemata ruchno da zarezhdate tozi modul. Instrumentut iptables pri prochit na s pravila, koito shte budat zadadeni, shte napravi tova avtomatichno slred purvoto sreshtane na "-j TTL".

4. Pravila za netfilter s tsel zaobikaliane na TTL filtura

Vuv Fedora Core i Red Hat Enterprise Linux i derivatite mu, vsichki pravila za netfilter, koito sled tova se chetat i prilagat ot instrumenta iptables, sledva da se namirat vuv faila /etc/sysconfig/iptables. Po printsip tozi fail ne sushtestvuva vurhu priasno instaliranata sistema. I e nuzhno da bude suzdaden. Nai-lesniiat nachin e da se vuvede niakakvo pravilo i da se izpulni

# iptables-save > /etc/sysconfig/iptables

Poveche za osobenostite za upravlenie na netfilter pod edora Core i Red Hat Enterprise Linux i derivatite mu, mozhete da nametrite tuk:

http://hardtrance.blogspot.com/2006/02/netfilter-fedora-core-red-hat.html

Po-dolu, v primernite nastroiki, se predpolaga, che interfeisut za svurzvane kum internet dostavchika vi e ppp0. Ako tova ne e taka, promenete imeto na interfeisa s izpolzvaniia ot vas. Predpolaga se i che adresnoto prostranstvo na domashnata chastna mrezha e 192.168.10.0/24. Promenete go s aktualnoto pri vas.

Eto i pravilata za netfilter, koito triabva da sa nalichni kum tablitsata mangle, za da mozhe da zaobikolite TTL filtura

Variant 1 - chrez vuvezhdane v konmanden red:

# iptables -t mangle -A PREROUTING -i ppp0 -j TTL --ttl-inc 1
# iptables -t mangle -A POSTROUTING -s 192.168.10.0/24 -o ppp0 -j TTL --ttl-inc 1

Variant 2 - chrez opisanie v konfiguratsionniia fail /etc/sysconfig/iptables:

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i ppp0 -j TTL --ttl-inc 1
-A POSTROUTING -s 192.168.10.0/24 -o ppp0 -j TTL --ttl-inc 1
COMMIT

Ako se izpolzva variant 2, sled zapisa na praviloto vuv faila /etc/sysconfig/iptables e neobhodimo da se restartira uslugata iptables. Tova mozhe da stane chrez komandniia red:

# service iptables restart

Pak napomniame, che ako ne izpolzvate PPPoE ili PPTP protokol za svurzvane, a samo chista eternet vruzka, zamestete ppp0 v gornite izrazi s imenata na eternet interfeisa (primerno eth0 ili eth1), koito vi svurzva s dostavchika vi.

5. Izgrazhdane na pravilo za mrezhova adresna translatsiia - NAT v netfilter

VNIMANIE!!! Praviloto ne se vliiae ot tova dali dostavchikut predostavia na klienta statichen ili dinamichen IP adres, kakto bez znachenie e dali adresut e publichen ili chasten.

Sled kato sa izpulneni po-gornite stupki, idva i red na poslednata stupka, a imenno zadavane na pravilo za mrezhova adresna translatsiia v netfilter. Konkretniiat vid na tova pravilo zavisi ot vida na svurzvaneto. Ako dostavchikut predostavia svurzanostta kum Internet chrez PPPoE ili PPTP, to interfeisut kum Internet e ppp0 ili ppp1 (vsushtnost ako niama drugi ppp vruzki, se izpolzva ppp0, ako i toi e zaet ppp1 i t.n, no tova e veche konkretna situatsiia pri klienta, koiato tuk niama da se obsuzhda). Za primerite shte priemame, che ako klientut izpolzva protokol PPPoE ili PPTP, to interfeisa kum Internet e ppp0, ako klientut e svurzan direktno prez eternet vruzka, bez dopulnitelna kapsulatsiia, to interfeisut kum Internet e eth0.

I taka, eto praviloto za netfilter, konkretizirano po sluchai:

a) pri izpolzvane na PPP kapsulatsiia (klientut e svurzan kum Internet chrez protokoli PPPoE ili PPTP):

- zadavane na praviloto v komanden red:

# iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE

- zadavane na praviloto v /etc/sysconfig/iptables

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT

b) pri izpolzvane na direktna svurzanost prez interfeis eth0

- zadavane na praviloto v komanden red:

# iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

- zadavane na praviloto v /etc/sysconfig/iptables

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT

Dobre e sled zadavane na praviloto v /etc/sysconfig/iptables da se restartira uslugata iptables:

# service iptables restart

6. Oshte tunkosti i hitrosti.

Ako po opisaniia po-gore nachin podlagate na NAT mashini s operatsionni sistemi razlichni ot Linux, e dobre da napravite taka, che vsichki izhodiashti ot tiah paketi da imat edin i sushti parametur TTL. Eto i kratko obiasnenie zashto mozhe da se nalozhi da se napravi tova. Linux iadrata po podrazbirane postaviat stoinost na parametura TTL ravna na 64 na izhodiashtite ot TCP/IP steka paketi. Pri drugi operatsionni sistemi tova ne e taka. Naprimer pri MS Windows stoinostta na parametura TTL za izhodiashtite ot TCP/IP steka paketi e 128. Neka sega da vidim, ako prilozhim shemata, koiato e opisana po-gore, kakuv shte e efekta pri izpolzvaneto na marshrtuizator s operatsionna sistema Linux i stantsiia s Windows zad nego, paketite ot koiato sa podlozheni na mrezhova adresna translatsiia - NAT. Ako paket ot Windows stantsiiata izleze kum Intenret prez Linux marshrutizatora, to toi shte e s TTL raven na 128 (ako niamashe praviloto v tablitsa mangle za uvelichavane na parametura TTL, shteshe da e sus stoinost 127, a mnogo dostavchitsi filtrirat paketi sus stoinost na TTL, koiato e nechetno chislo). Ako na purviia marshrutizator po putia, dostavchikut pravi opisanie na stoinostta na parametura TTL na izhodiashtite ot vas paketi, toi shte registrira tazi stoinost. Kakvo obache shte se sluchi, ako utre vi se nalozhi da aktualizirate paketite na Linux marshrutizatora ili prosto, ako vurhu nego ima uslugi, koito stantsiiata polzva, a poslednite ot svoia strana izpolzvat vruzkata kum internet? SHTe stane slednoto. Linux marshrutizatora shte izluchva svoite paketi kum Internet (t.e. te shte preminavat prez dostavchika) sus stoinost na parametura TTL ravna na 64. Ako dostavchika naistina pravi opisanie na stoinostta na TTL za izhodiashtite ot vas paketi, to tova shte e iasna indikatsiia, che internet vruzkata e spodelena mezhdu stantsii s razlichen TCP/IP stek (v nashiia primer mezhdu dve stantsii s razlichni TCP/IP stetsi).

Za da nadhitrite dostavchika si i v tozi sluchai, triabva da modifitsirate po sledniia nachin podavanite pravila kum iptables:

- otmenete praviloto, koeto samo inkrementira s edinitsa parametura TTL na izhodiashtite kum dostavchika paketi:

# iptables -t mangle -D POSTROUTING -s 192.168.10.0/24 -o ppp0 -j TTL --ttl-inc 1

- zamenete go s novo pravilo, koeto ukazva vsichki paketi kato izlizashti ot TCP/IP stek na operatsionna sistema Linux (TTL=64):

# iptables -t mangle -A POSTROUTING -s 192.168.10.0/24 -o ppp0 -j TTL --ttl-set 64

Ot gledna tochka na faila /etc/sysconfig/iptables, promenite, koito triabva da se napraviat v nego sa slednite:

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i ppp0 -j TTL --ttl-inc 1
-A POSTROUTING -s 192.168.10.0/24 -o ppp0 -j TTL --ttl-set 64
COMMIT

Otnovo napomniam, che ako ne izpolzvate PPP vruzka, t.e. ne izpolzvate za svurzvane kum dostavchika protokoli kato PPPoE i PPTP, a izpolzvate direktna eternet svurzanost, to triabva v gornite ukazaniia da zamestite imeto na interfeis ppp0 s imeto na suotvetniia eternet interfeis.

Druga tunkost, koiato tseli da ne budete hvanati, che imate vtori mrezhovi interfeis na mashinata (tova na praktika ne dokazva, che izvurshvate NAT), e da zabranite transliraneto v iadroto na ARP zaiavki (proxy arp), chrez koito da se vidi drug vash interfeis. Za da predotvratite tazi vuzmozhnost postavete sledniia red vuv faila /etc/sysctl.conf:

net.ipv4.conf.all.arp_ignore = 1

Sled tova izpulnete

# sysctl -p

za da vliazat promenite v sila.



<< SonyEricsson i Linuks | Instalirane na nVidia draiver pri Slackware >>