"Dva NATy" za jednim strojem

Richard Willmann mk7ygre33apsq23c at foo.sk
Thu Apr 16 01:23:26 CEST 2009


> Mozna bych k tomu pridal jeste smtp_bind_address - to by melo zajistit 
> prave pouziti spravne zdrojove adresy, zatim co inet_interfaces slouzi pro 
> naslouchani a ne odchozi data iniciovana "smtp klientem" postfixu. (pouze 
> v pripade, kdy inet_interfaces obsahuje pouze jednu adresu, se automaticky 
> pouzije i pro smtp klienta)
> Pokud opet nosim drivi do lese, tak se omlouvam... snazil jsem se :)

skusim dve vety k tomu:

server (=rozumej tcp server) musi pocuvat na "nejakych" IP adresach a 
"nejakych" portoch. Na urovni kniznicnych volani to vyzera obvykle takto:

socket()
bind()
listen()
accept()
...
close()

za accept moze v zavislosti na architekture serveru nasledovat napr. fork(). 
V pripade IO Multiplexing serveru to vyzera inak (cyklus a nejaka obdoba 
select()).

Volanie socket() iba vrati "spravny" (v zavislosti na protokole) deskriptor. 
Dolezity je bind(), ktorym sa soketu prideli "spravna" IP adresa a "spravny" 
port. Po volani listen() potom server pocuva tam kde ma. Su styri kombinacie 
IP addresa/port. IP adresa alebo port moze byt "nula" a vtedy prislusny 
parameter zvoli kernel. Priklad: 0.0.0.0:22 -> pocuvaj vsade na porte 22. 
Server obvykle zvoli port (bola by hlupost ak by nie, inak by klient nevedel 
kam sa ma pripojit - aj ked su vynimky napr. pri NFS a spol.). IP adresu 
moze ale nemusi zvolit. Zalezi na konkretnej situacii.

Toto robi asi ta prva direktiva.

Na druhej strane klient funguje obvykle takto (v tomto pripade - ked sa 
posiela mail):

socket()
connect()
write()/read()
close()

Kernel obvykle zvoli "najlepsiu" IP adresu - toto funguje tak, ze sa pozrie 
na cielovu IP adresu a vezme prvu IP adresu z iface, ktory je "najblizsie" k 
cielu. Zaroven vyberie jeden z volnych "vysokych" portov (rozsah sa da 
nastavit via sysctl).

Avsak aj klient si moze vybrat IP adresu a port, ktory chce pouzit. Obvykle 
si vsak vybera - ak vobec - iba IP adresu.

Toto je dolezite napr. ak su dva mail servre (master a relay) na jednom 
stroji. Je dobre pouzit dve IP adresy tak, aby kazdy z nich pouzival vlastnu 
(minimalne koli black listom napr.).

Toto by mohla robit ta druha direktiva o ktorej pisal Miroslav a ktora by 
mohla vyriesit problem s IP adresou z "ktorej data odchadzaju".

To co ktora direktiva robi co povie niekto kto vie robit s postfixom. Riesit 
to na urovni PF sa mi nezda spravne.

d~

rwi 




More information about the Users-l mailing list