Znalazłem taką opcje w zaporze RH Fedory, niby domyślna polityka ustawiona jest na ACCEPT a jednak ładnie wszystko odrzuca. Postanowiłem zbadać tą sprawę. Gdzieś w sieci natrafiłem na link do RFC1812, gdzie można trochę o tym poczytać:
5.3.9 Packet Filtering and Access Lists
...
The router SHOULD allow an appropriate ICMP unreachable message to be
sent when a packet is discarded. The ICMP message SHOULD specify
Communication Administratively Prohibited (code 13) as the reason for
the destination being unreachable.
Przeczytałem gdzieś również, że ktoś po testach stwierdził, iż rzeczywiście używanie tej opcji dla odrzucanych pakietów oszczędza pasmo. Postanowiłem również to przetestować.
Test jest prosty, na serwerze dodałem na samym końcu regułę:
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
Następnie użyłem prostego badania zamkniętego portu, pierwszy wynik jest baz powyższej reguły, a drugi już z:
root@home:/home/grzesiek# nmap x.xxx.pl -p 33 -PN
Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-04 21:17 CET
Interesting ports on x.xxx.pl (XX.18.194.XXX):
PORT STATE SERVICE
33/tcp filtered dsp
Nmap done: 1 IP address (1 host up) scanned in 2.20 seconds
Trwało to 2 sekundy, ale długo :)
# tcpdump -i eth0:1 port 33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0:1, link-type EN10MB (Ethernet), capture size 96 bytes
21:16:54.948070 IP PC-77-XX-24-XXX.xxx-net.pl.45056 > x.xxx.pl.33: S 2889941185:2889941185(0) win 2048 <mss 1460>
21:16:55.949049 IP PC-77-XX-24-XXX.xxx-net.pl.45057 > x.xxx.pl.33: S 2889875648:2889875648(0) win 2048 <mss 1460>
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel
Zostały odebrane dwa pakiety.
Teraz wersja z wysyłaniem przez serwer komunikatu zwrotnego ICMP:
root@home:/home/grzesiek# nmap x.xxx.pl -p 33 -PN
Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-04 21:52 CET
Interesting ports on x.xxx.pl (83.18.194.164):
PORT STATE SERVICE
33/tcp filtered dsp
Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds
Od razu widać - szybciej.
# tcpdump -i eth0:1 port 33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0:1, link-type EN10MB (Ethernet), capture size 96 bytes
21:51:59.989134 IP PC-XX-46-24-XXX.xxxx-net.pl.55250 > x.xxx.pl.33: S 868347170:868347170(0) win 1024 <mss 1460>
^C
1 packets captured
1 packets received by filter
0 packets dropped by kernel
Drugi pakiet był już zbędny, ponieważ nmap dostał jasny komunikat dlaczego port nie odpowiada - administracyjnie zabroniony.