Назад | Перейти на главную страницу

Как ping узнает, что мои пакеты отфильтрованы?

Я клиент ирландского интернет-провайдера, eircom, который начал цензуру пиратская бухта.

Когда я пытаюсь пинговать 194.71.107.15 который является IP-адресом thepiratebay.com, я получаю такой вывод:

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.c из пакета iputils-ping Debian etch, я вижу:

 
 /*
 *
 * pr_icmph --
 *      Print a descriptive string about an ICMP header.
 */
void pr_icmph(__u8 type, __u8 code, __u32 info, struct icmphdr *icp)
{

...
                case ICMP_PKT_FILTERED:
                        printf("Packet filtered\n");
                        break;
...

Похоже, что iptables reject добавляет это в ответ, см.

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

и выполните поиск по запросу «ICMP_PKT_FILTERED», хотя это может быть не единственный случай, когда эхо-запрос отправляет такое сообщение.

Ping определяет свое напечатанное сообщение в зависимости от Контрольное сообщение ICMP он получает в ответ на эхо-запрос.

Предположительно, я могу представить, что любое устройство фильтрации, которое Eircom использует для блокировки доступа к The Pirate Bay, генерирует сообщения ICMP Type 3, Code 9 (сеть административно запрещена) или Type 3, Code 10 (хост административно запрещен) сообщения в ответ на трафик, направляемый на IP-адрес The Pirate Bay.

Для подтверждения я бы предложил запустить захват пакетов (используя Wireshark или аналогичный) и просматривая ответные пакеты ICMP, которые вы получаете от 159.134.124.176.

Это означает, что устройство 159.134.124.176 блокирует пакеты ICMP (Ping) и отвечает вам с этой информацией. Возможные ответы ICMP перечислены в эта статья в вики.

ping получает ICMP_DEST_UNREACH и, в зависимости от типа возвращенного пакета icmp, возвращается ping знает, что он отфильтрован.

Я думаю, это означает, что 159.134.124.176 не позволяет вашим пингам достигать 194.71.107.15, то есть фильтрует (по крайней мере) 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, вероятно, с некоторой формой ответа ICMP о недоступности пункта назначения. Это, а также тот факт, что 159.134.124.176 не является исходной целью, означает, что пакеты фильтруются.