我正在尝试找出防火墙阻止端口的位置;无论是在到主机的途中还是由主机本身阻止。
如果我运行 nmap,我可以看到端口被过滤了。但是,这可能意味着主机 192.168.1.74 或两者之间的任何防火墙。有没有办法找出确切的位置?
joel@bohr ~ $ nmap -A 192.168.1.74 --traceroute
Starting Nmap 5.21 ( http://nmap.org ) at 2011-12-18 20:27 GMT
Warning: Traceroute does not support idle or connect scan, disabling...
Nmap scan report for android-63731d6ebec9e01.lan (192.168.1.74)
Host is up (0.040s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
2222/tcp filtered unknown
答案1
防火墙可以通过两种方式阻止数据包:丢弃和拒绝。如果拒绝,防火墙的 IP 堆栈将发送 ICMP 数据包目标不可达,代码为 9、10 或 13:
http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml#icmp-parameters-codes-3
这意味着不允许通信。
但有些人认为,告诉攻击者什么是允许的,什么是不允许的,是出于安全考虑。那些家伙不会拒绝数据包,而是丢弃数据包。
在这种情况下,您没有机会直接检测防火墙。您只能间接检测防火墙。如果您没有收到任何响应,则很可能存在防火墙,因为如果系统不存在,路由器会向您发送 ICMP 不可达数据包。这是 nmap 在您的案例中所做的假设。