Reakce na ICMP port unreachable (IRIX)

Dan Lukes dan at obluda.cz
Wed Oct 29 03:31:33 CET 2003


Jan Kasprzak wrote:
> 	narazil jsem na zajimavy problem: Je nekde definovano,
> jak se ma TCP stack a/nebo socketove API chovat pri zavolani connect(),
> na jehoz SYN packet druha strana odpovi "ICMP port unreachable"?
> Obvyklejsi je v tomto miste "TCP RST", je-li port neotevreny. ICMP
> zprava se muze posilat napriklad je-li port nekde filtrovan.
>
> 	Linux, FreeBSD a Solaris po obdrzeni ICMP port unreachable ihned
> ukonci connect() s ECONNREFUSED, zatimco IRIX 6.5 zda se tu ICMP zpravu
> ignoruje a proces visi uvnitr connect() dal (overil jsem tcpdumpem, ze IRIX
> tu ICMP zpravu vidi).
>
> 	Nenasel jsem jestli je to chyba IRIXu, nebo jestli jsou legalne
> mozne oba pristupy, nebo pripadne jestli se toto da nekde IRIXu nastavit.

	Pripomel bych, ze volani "connect()" neni vyhrazeno jen pro navazovani
TCP spojeni. A jelikoz seznam moznych IP protokolu neni uzavreny, je
nepravdepodobne, ze by existovala takova definice, o ktere mluvis.

	IMHO je to implementacni zalezitost - connect by mel zhavarovat, pokud
je zrejme, ze se spojeni nepodarilo.

	Nicmene, mozna je v tom IRIX preci jen nevinne. Veta "ICMP zprava se
muze posilat napriklad je-li port nekde filtrovan" totiz je i neni
pravda - zavisi to na vykladu - a chybny vyklad muze vest ke vzniku
popsanych problemu.

	Existuje totiz nazor zalozeny na RFC1122, ze PORT UNREACHABLE muze
zasilat vyhradne cilovy stroj. Ostatne, pokud je duvodem zaslani ICMP
filtr, mela by zasilana zprava byt ADMIN PROHIBITED nikoli PORT
UNREACHABLE.

	Nikoli uplne jasne nasledky ma i vyslovny zakaz pouzit PORT UNREACH v
pripadech, kdy transportni protokol ma vlastni mechanismus pro totez
(pricemz TCP RST je vyslovne zmineno jako priklad).


	Implementace IRIXu je tedy spravna - patrne dokonce spravnejsi nez
implementace ostatnich zminenych OS. Je tedy dost dobre mozne, ze zadna
"oprava" ani "nastaveni" pro zmenu chovani v tomto bode existovat nebude.


	V kazdem pripade, mas smulu pramenici z toho, ze se sebehly dve
neprijemne udalosti - ten, kdo ti onu ICMP zpravu zasila si vylozil RFC
dost nestastne a zasila ti ICMP, u ktereho neni uplne jasne, zda je to
"to prave" a zda takove vubec zasilat smi. Nedodrzel tak pravidlo "bud'
konzervativni v tom, co vysilas".

	IRIX se naprosti tomu zrovna v teto oblasti pomerne striktne drzi
vykladu, ktery je sice patrne spravny, ale neni uplne obvykly - a
prohresuje se proti pravidlu "bud' tolerantni k tomu, co prijimas" (ale
muze k tomu mit nejake duvody).


	Rada zadna (kontaktuj spravce filtru, at zacne posilat ADMIN PROHIBITED
- stejne by to mel delat). Snad ti pomuze alespon analyza.


						Dan




More information about the net mailing list