ot Valqk - Anton(28-03-2004)

reiting (53)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Zadavali li ste si vuprosa , kak moga da nakaram FreeBSD box-a mi da
izkara chast ot mrezhata mi /ili druga mrezha/ s ip koeto ne e ip-to po podrazbirane na rutera.

Tazi statiia dava otgovor na tozi vupros, mozhe bi dosta ot vas sa imali ili shte imat podoben problem.


Malko teoriia.

Pod FreeBSD nat-ut se izvurshva ot vunshna programa, narechena natd.
Tazi vunshna programa e dosta guvkava i dava vuzmozhnost za dosta nastroiki
i gudeli.
Za spravka : man 8 natd , man 8 ipfw ;

A sega, praktika :-).

Da si predstavim, che imame dve vutreshni mrezhi (vuzmozhno e da se raztsepi i edna pod-mrezha, no shte e po lesno razbiraemo s 2 mrezhi).

net1: 192.168.0.0/24 (255 adresa).
net2: 192.168.1.0/24 (255 adresa).

Imame 2 realni ip-ta , koito iskame da polzvame za tezi dve vutreshni mrezhi:

ip1: 80.72.67.118 -> 192.168.0.0/24
ip2: 80.72.67.119 -> 192.168.1.0/24

t.e. vsichki ip-ta koito sa ot 192.168.0.0 da izlizat prez 80.72.67.118 ,
a 192.168.1.0 prez 80.72.67.119

Po podrazbirane, vsichkiia trafik, koito v momenta izliza ot mashinata i za dvete mrezhi bi triabvalo da izliza ot default adresa na mrezhovata karta (ne ot aliasite), priemame che tova e 80.72.67.118.

Kak izliza tozi trafik?
Vuv pravilata ni na firewall-a ima pravilo koeto kazva
"vsichkiia trafik koito idva kum men prez vunshniia mi interfeis da se prenasochva kum port 8886.
Sled prenasochvaneto, na tozi port "slusha" natd programkata,
koiato vsushtnost translira adresite ot vutreshni kum vunshniia i podava zaiavkite kum survurite.
Tia pazi vsichki izprateni zaiavki vuv spisuk i sled vrushtaneto na zaiavkata ot survura kum koito e podadena natd translira obratno vsichkata informatsiia i ia podava kum klienta.

Pri startirane na natd, toi iziskva edna ot dvete optsii -
-n  - koeto ukazva imeto na vunshniia mrezhov interfeis
ili
-a - koeto ukazva koe ip da izpolzva za da izkarva trafika prez nego.
(za spravka man 8 natd za da vidite vsichki vuzmozhni parametri na natd).

Vuv variantite po podrazbirane se slaga -n optsiiata, koiato izpolzva ip-to  
kacheno na mrezhovata karta purvo(ne alias). V nashiia sluchai to e 80.72.67.118 .

Kak mozhe da nakarame chast ot zaiavkite da izliat prez drugo vunshno ip?

1. Triabva da "napravim" tova ip, taka che to da sushtestvuva na nashiia ruter.  
T.e. shte dobavim alias na vunshniia mrezhov interfeis (priemame che rabotim sus mrezhovi karti 3c905, tui kato vuv *BSD mrezhovite interfeisi se krushtavat s razlichni imena v zavisimost ot proizvoditelia i draivera koito polzva vuprosniia mrezhov interfeis - v moia sluchai xl0 i xl1).

I taka slagame alias na vunshniia ni interfeis.
#>ifconfig xl0 alias 80.72.67.119 netmask 255.255.255.224
sled izpulniavaneto na tazi komanda veche imame raboteshto ip na vunshniia ni mrezhov interfeis.

2. Triabva da kazhem na natd ot koia mrezha koi zaiavki da preprashta i nakude (tova stava prez ipfw(2), az lichno polzvam ipfw2 , tui kato ima mnogo poveche vuzmozhnosti).  

Malko teoriia: Tui kato port 8886 e po podrazbirane na natd-to toi sluzhi za vhodno/izhodniia trafik, no za da mozhem da raboti normalno natd sus ne-default port, se nuzhdae ot dva porta - vhoden i izhoden.

Izbiram si 65350 za izhoden(tozi kum koito se preprashta trafika ot vutreshnata mrezha kum natd-to) i 65351 za vhoden (tozi kum koito se preprashta trafika idvasht ot internet kum rutera).

Tui kato ipfw e rule-id based, priemam che praviloto po podrazbirane za natd-to e s nomer 1000.

2.1. Iztrivam pravilo 1000 tui kato shte triabva da se promeni - da ne prenasochva trafika idvasht ot vtoro realno ip kum default natd.
#> ipfw del 1000

2.2. Dobaviam novoto pravilo, koeto izklyuchva vuprosnoto ip.
#> ipfw add 1000 divert natd ip from not 80.72.67.119 to any via xl0
(ZABELEZHKA: Tuk mozhete da slozhite i tsialata podmrezha ot realni ip-ta koiato imate , no ako go napravite, niama da imate dostup do neia ot vutreshnata mrezha, ako adresite sa slozheni predi rutera!)

2.3. Dobaviam 2 pravila za da ukazha na tseliia trafik, koito idva ot vutreshnata mrezha (192.168.1.0/24) da minava prez drug port kum natd.

#> ipfw add 720 divert 65350 ip from 192.168.1.0/24 to any via xl0
#> ipfw add 721 divert 65351 ip from any to 80.72.67.109 via xl0
(VNIMANIE: pravilata za vtoriia natd TRQBVA da budat nad pravilata za default natd, tui kato ako sa sled te se divert-vat ot predishnoto pravilo koeto e za any[t.e. za vsichkiia ostanal trafik]).


3. Sega e vremeto da startiram vtora instantsiia na natd, koiato da se grizhi za trafika idvasht na portove 65350 i 65351 , kato i "kazha" da prekava vsichkiia trafik minavasht prez neia, prez adres 80.72.67.119.
#> natd -i 65350 -o 65351 -a 80.72.67.109
(Dopulnenie: Ako iskate da vidite tarika, i zashto mozhe da ne raboti slozhete optsiia -v.)


4. Dobaviam razreshenie za dostup do rutera ot mrezha 192.168.1.0/24
VNIMANIE: Tova triabva da stane POD pravilata za natd-to.

#> ipfw add allow ip from 192.168.1.0/24 to any via xl1
#> ipfw add allow ip from any to 192.168.1.0/24

5. Ako niamam razreshenie za drugata mrezha dobaviam i tiah.
#> ipfw add allow ip from 192.168.0.0/24 to any via xl1
#> ipfw add allow ip from any to 192.168.0.0/24


Sega veche trafika ot mrezha 192.168.1.0/24 triabva da izliza prez 80.72.67.119 ( mozhe da proverite tuk: http://showmyip.com )

Ako se interesuvate mozhe da poglednete sushtata statiia, s malko poveche/po malko neshta ot: http://valqk.ath.cx/howtos/FreeBSD/natd.html

Priemam vsiakakvi komentari, otzivi, popravki i preporuki na
valqk [at] lozenetz [dot] org

SHTe pomolia ako niakoi postva tuk, da mi pishe i na meila tui kato niama da sledia dali ima postnati komentari tuk.

Edno preduprezhdenie, ne si iztrivaite divert praviloto ako ne ste blizo do mashinata, ili v lokalnata mrezha, kudeto pravilata za natd-to ne vazhat, inache riskuvate da si srezhete klona na koito sedite :).

Nadiavam se tozi "dokument" da e polezen za vas.
Ako e taka mi pratete meil sus "hello world" , shte se radvam da go polucha :)

Vsichko nai-nai :) i veselo ! :)))

Bez malko da zabravia, SPECIAL 10x to Tbyte for this issue with natd!!!!

Malko komentari otnosno statiiata ot Tbyte s koito sum napulno suglasen.

1.Za da ne si otrezhete klona na ssh-a prez koito ste se vurzali,
mozhete da dobavite dve pravila:

#> ipfw add 500 allow tcp from me 22 to any
#> ipfw add 501 allow tcp from any to me 22

ZABELEZHKA: Imaite predvid, che tezi dve pravila triabva da sa predi praviloto za natd-to.

2. Po printsip ako ste dostavchik, e po dobre da pusnete purviia nat, koito nat-va tsialata vi mrezha ne na default ip-to a da kachite drug alias s ifconfig (ima go opisano kak stava po gore) i da pusnete purviia natd s optsiia -a alias_adres , za da mozhete da pravite vsiakakvi magii po rutera sus default ip-to bez da spirate trafika na potrebitelite si "intsidentno" , OPREDELENO E PREPORUCHITELNO :)))

Ako ima oshte komentari molia pishete!!!


<< Kakvo e Linuks? | PPP over SSL. CHast 2: Klient >>