Узнайте MTU между мной и IP-адресом назначения

Вопрос или проблема

В случае, если я могу использовать только UDP и ICMP протоколы, как я могу определить, в байтах, path MTU для передачи пакетов с моего компьютера на целевой IP?

Я думаю, что проще всего это сделать с помощью traceroute --mtu <target>; возможно, с переключателем -6, в зависимости от ваших интересов. Linux traceroute по умолчанию использует UDP, если вы считаете, что вам повезет больше с ICMP, попробуйте также -I.

Быстрый поиск с помощью apropos mtu на CentOS5 дал следующие результаты:

tracepath отслеживает путь к сетевому хосту, определяя MTU вдоль этого пути.

Эта команда даже работает без привилегий в пользовательском пространстве.

На Python вам нужно всего лишь установить один пакет:

python -m pip install ofunctions.network

Затем вы можете запустить следующий код на Python

from ofunctions.network import probe_mtu

print(probe_mtu(target_IP))

Это самый простой синтаксис, но вы также можете заставить работать обнаружение ICMPv6 или ICMPv4 и ограничить минимальные и максимальные настройки проб для более быстрого проведения проб.

В виде однострочной команды, чтобы определить реальный MTU для kernel.org

python -c "from ofunctions.network import probe_mtu; print(probe_mtu('kernel.org'))"

Отказ от ответственности: Я автор ofunctions 😉

Ответ или решение

Для определения максимального размера передаваемого пакета (MTU) между вашим компьютером и целевым IP-адресом, используя только протоколы UDP и ICMP, вы можете воспользоваться несколькими подходами.

  1. Использование команды traceroute:

    На большинстве систем Linux вы можете использовать команду traceroute для определения MTU. Эта команда по умолчанию использует UDP, но для лучшей совместимости вы можете добавить опцию -I, чтобы использовать ICMP. Пример команды:

    traceroute --mtu <целевой_IP> -I

    При использовании этой команды система будет исследовать путь до целевого компьютера и определять максимальный размер пакетов, которые могут проходить через сетевые сегменты без фрагментации.

  2. Использование команды tracepath:

    Команда tracepath также позволяет находить MTU на пути к целевому хосту. Это удобный инструмент, который можно выполнять без административных привилегий. Чтобы узнать MTU, выполните:

    tracepath <целевой_IP>

    Результат этой командной строки предоставит информацию о каждом узле на пути и их значении MTU.

  3. Использование Python:

    Если вы предпочитаете программный подход, вы можете использовать Python, установив библиотеку ofunctions.network. Установите библиотеку с помощью следующей команды:

    python -m pip install ofunctions.network

    Затем выполните следующий код для определения MTU:

    from ofunctions.network import probe_mtu
    
    target_IP = '<целевой_IP>'
    print(probe_mtu(target_IP))

    Вы также можете изменить параметры, используя дополнительные аргументы, чтобы настроить минимальные и максимальные значения при пробировании.

    Для выполнения команды в одну строку, чтобы определить реальный MTU для kernel.org, используйте следующий код:

    python -c "from ofunctions.network import probe_mtu; print(probe_mtu('kernel.org'))"

Эти методы помогут вам эффективно определить параметр MTU между вашим компьютером и целевым IP-адресом. Убедитесь, что у вас есть необходимые права доступа и установлены все требуемые инструменты для выполнения команд.

Оцените материал
Добавить комментарий

Капча загружается...