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

Есть ли утилита или способ быстро получить PMTU / MTU удаленной системы?

Есть ли встроенная утилита или Linux для быстрого получения PMTU / MTU удаленной системы (предпочтительно менее 1 секунды)? Если да, то что это такое и какой синтаксис для этого требуется?

Сегодня поиск в Google мне не особо понравился, и единственное решение, которое я нашел, - это полноценная трассировка трассировки, которая может занять более 30 секунд.

Я нашел решение после долгих поисков. Просто собираюсь связать это здесь для всех, кого это волнует:

https://github.com/ValdikSS/p0f-mtu

У него есть API, который вы можете вызывать с полной поддержкой сокетов. Так что, хотя технически это демон, он делает свое дело.

Что я бы попробовал:

  • Пытаться этот скрипт nmap, который использует nmap выполнить PMTUD. Не пробовал, не знаю, насколько быстро.

  • напишите небольшую программу, которая открывает TCP-соединение с включенным PMTUD, и считывает значение обратно из ядра. Потенциально это может быть довольно быстро. Я недостаточно знаю о том, как это сделать, чтобы рассказать вам больше, но вопрос, на который я указал в своем комментарии, содержит некоторые детали, которые должны помочь вам двигаться в правильном направлении.

  • если вы ограничены существующими командами оболочки, попробуйте параллельно отправлять эхо-запросы разного размера. ping -M do -s 1472 remote-host отправит пакет размером 1500 байт (1472 байта данных + заголовки ICMP и IP). -M do сообщает ему явно делать PMTUD. http://muzso.hu/2009/05/17/how-to-determine-the-proper-mtu-size-with-icmp-pings

  • вы упоминаете traceroute - если вы пытаетесь выяснить где MTU ограничен, но хотите что-то быстрее, чем traceroute, попробуйте mtr; он отправляет группу пакетов с разным таймаутом параллельно, а не последовательно, как это делает traceroute.

К сожалению, у меня нет немедленного доступа к каким-либо системам с разными MTU, поэтому мои возможности для экспериментов ограничены.