четверг, 26 февраля 2015 г.

GRE traceroute

Потребовалось проверить на каком участке режется GRE тоннель (IP-пакеты c 47-м протоколом). Смог найти только одну программку для тестирования - hping.
Распространяется она в исходных кодах, требует для компиляции (на CentOS'е) libpcap-devel, неплохо работает без TCL. Процедура компилирования стандартная:
./configure --no-tcl
 make
 make install
При компиляции ругается
libpcap_stuff.c:19:21: error: net/bpf.h: Нет такого файла или каталога
Оказалось в моей версии libpcap (1.4.0-1.20130826) bpf.h расположен в каталоге pcap. Необходимо изменить 19-ю строчку в файле libpcap_stuff.c, заменить net/ на pcap/. После этого компилируется без ошибок и достаточно быстро.

Собственно для трассирования сети GRE-пакетами необходимо выполнить команду 
hping -0 -H 47 -e '0123456789' --traceroute <адрес>
где параметр -0 говорит что трассировка идет пакетами с произвольным содержанием;
параметр -H 47 - протокол IP-пакетов 47 (GRE);
параметр -e '0123456789' - содержимое пакетов (пустые пакеты не маршрутизируются).

Если при трассировании попадаются узлы которые не отвечают на пакеты, трассировка останавливается. Дальше можно продолжить в ручном режиме указав эти два ключа --tr-keep-ttl -t 13