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

20

Я являюсь клиентом ирландского интернет-провайдера 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 / nmap foo слабый.

Рори
источник

Ответы:

14

Пинг определяет свое напечатанное сообщение в зависимости от управляющего сообщения ICMP, которое он получает в ответ на эхо-запрос.

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

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

Мурали Суриар
источник
29

Посмотрев на

ping.c из пакета Debian etch iputils-ping, я вижу:

 
 / *
 *
 * pr_icmph -
 * Напечатайте описательную строку о заголовке ICMP.
 * /
void pr_icmph (тип __u8, код __u8, информация __u32, структура icmphdr * icp)
{

...
                case ICMP_PKT_FILTERED:
                        printf («Пакет отфильтрован \ n»);
                        перемена;
...

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

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

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

Каролис Т.
источник
5
+1 за исходное погружение.
RainyRat
1
Определенно.
squillman
Еще одна вещь, которая может вызвать это, - это «частные» пакеты (использующие частный / внутренний IP-адрес), которые доставляют его в мир. Я видел это, когда разрывалось VPN-соединение и пакеты, идущие на 10.11.12.13, начали получать «отфильтрованные по пакетам» ответы от внешней системы, на которые они никогда не должны были идти. См. Также en.wikipedia.org/wiki/IP_address#IPv4_private_addresses
fencepost
4

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

Дуг Люксем
источник
1

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

rkthkr
источник
1

Я думаю, это означает, что 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.

RainyRat
источник
2
Вопрос был в том, «как» пинг знает, я думаю, что автору известно, что ICMP фильтруется. Он, вероятно, думает, что фильтровать означает фильтровать стиль черной дыры, ничего не возвращая, и это подняло вопрос о пинге «волшебным образом», зная, в чем дело.
Каролис Т.
1

Основная идея (и, надеюсь, кто-то может помочь мне уточнить некоторые детали, поскольку я не эксперт по Linux) заключается в том, что ваш пинг отправляет эхо-запрос ICMP, но не получает стандартный эхо-ответ от целевого хоста. Вместо этого на него был дан ответ 159.134.124.176, возможно, с какой-то формой ICMP-адреса, недоступного адресату. Это и тот факт, что 159.134.124.176 не является исходной целью, подразумевает, что пакеты фильтруются.

squillman
источник