ping如何知道我的数据包被过滤?

我是爱尔兰ISP的客户, eircom已经开始审查海盗湾。

当我尝试ping ping 194.71.107.15作为194.71.107.15的IP地址的194.71.107.15时,我得到这个输出:

 PING 194.71.107.15 (194.71.107.15) 56(84) bytes of data. From 159.134.124.176 icmp_seq=1 Packet filtered From 159.134.124.176 icmp_seq=2 Packet filtered From 159.134.124.176 icmp_seq=3 Packet filtered 

ping如何知道它被过滤了? 我怎样才能更多地了解它是如何被过滤的。 我的ping / nmap foo很弱。

Ping根据回应请求接收到的ICMP控制消息确定其打印的消息。

据猜测,无论Eircom用于阻止访问海盗湾的过滤设备是生成ICMPtypes3,代码9(networkingpipe理禁止)还是types3,代码10(主机pipe理禁止)消息以响应交通指向海盗湾的IP地址。

为了确认,我会build议运行一个数据包捕获(使用Wireshark或类似的方法)并查看您从159.134.124.176接收到的ICMP响应数据包。

看后

从iputils-ping到Debian etch的封装,我看到:

 
  / *
  *
  * pr_icmph  - 
  *打印一个关于ICMP头的描述性string。
  * /
 void pr_icmph(__ u8 type,__u8 code,__u32 info,struct icmphdr * icp)
 {

 ...
                案例ICMP_PKT_FILTERED:
                         printf(“过滤的数据包\ n”);
                        打破;
 ...

看起来像iptables拒绝在响应中添加这个,请参阅

http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/net/ipv4/netfilter/ipt_REJECT.c

并search“ICMP_PKT_FILTERED”,虽然它可能不是唯一的情况下,使ping回复这样的消息。

这意味着设备159.134.124.176阻止了ICMP(Ping)数据包并用这些信息回复给你。 这篇Wiki文章中列出了可能的ICMP回复。

ping收到一个ICMP_DEST_UNREACH,并根据返回的icmp包的types返回ping知道它被过滤。

我认为这意味着159.134.124.176不允许你的ping达到194.71.107.15,即它正在过滤(至less)ICMP。 当我做同样的事情时,我得到:

 \# ping 194.71.107.15 PING 194.71.107.15 (194.71.107.15) 56(84) bytes of data. 64 bytes from 194.71.107.15: icmp_seq=1 ttl=50 time=43.0 ms 64 bytes from 194.71.107.15: icmp_seq=2 ttl=50 time=42.0 ms 64 bytes from 194.71.107.15: icmp_seq=3 ttl=50 time=42.1 ms 

…一个迅速的WHOIS告诉我,159.134.124.176确实是Eircom拥有的东西。

基本的想法(希望有人可以帮我填写一些细节,因为我不是Linux专家)是你的ping发出一个ICMP回应请求,但没有从目标主机得到回应的标准回应。 而是由159.134.124.176回答,可能是某种forms的ICMP目的地不可达响应。 这和159.134.124.176不是原始目标的事实意味着数据包被过滤。