Это дополнительный вопрос в моем классе Networks: мне нужно найти пункт назначения, для которого MTU пути <1500 байт.
Например, используя команду
traceroute -F www.uwaterloo.ca 1500
работает, и traceroute -F www.uwaterloo.ca 1501
не делает.
Поэтому мне нужно найти пункт назначения, который выйдет из строя ниже 1500 (и нет, это не может быть частная сеть, это было бы обманом).
Я подозреваю, что это уловка, потому что почти все реализации IP over Ethernet используют формат кадра Ethernet V2, который поддерживает 1500 MTU.
Любые идеи?
Сколько у тебя времени? Вы можете использовать грубую силу. Например, как этот сценарий bash:
while [ 1 ]
do
ip=`expr $RANDOM \* $RANDOM`;
traceroute -F -I $i 1472 2>/dev/null >/dev/null
if [ $? -ne 0 ]
then
echo Traceroute with 1472 bytes failed for $i
exit
fi
done
Предостережение: в этом сообщении IP-адреса отображаются как целое число, вам нужно будет преобразовать его в восьмеричный формат, разделенный точками. Также обратите внимание, что traceroute по умолчанию использует ICMP. В этом случае вам необходимо установить размер данных 1472 байта (1472 + 8 байтов заголовок ICMP + 20 байтов заголовок IP) = 1500 байтов.
Найдите в Интернете IP-адрес, назначенный модему ADSL (большинство из них используют PPPoE или PPPoA). Во время проверки связи запускайте tcpdump icmp
и обратите внимание на необходимость фрагментации ICMP (тип 3, код 4). Если вы видите, что вы нашли свою цель.