Продолжаем знакомиться с полезными командами Linux, сегодня немного затронем тему сетевого траблшутинга.
Утилита присутствует в стандартных репозиториях Debian и доступна для запуска от имени обычного пользователя:
sudo apt update && sudo apt install 2ping
Описание
2ping позволяет определить в каком направлении происходит потеря пакетов, благодаря поддержке работы как в режиме прослушивателя, так и в режиме клиента.
Запуск прослушивателя
На стабильном хосте запускаем прослушиватель с помощью команды
'2ping --listen' . Он не отправляет никаких запросов и настроен только на приём пакетов.
Для правильного определения причины потери пакетов, прослушиватель должен запускаться на стабильном сетевом узле, правильная настройка сети которого не должна вызывать сомнений.
Периодический вывод краткой статистики
Можно настроить вывод краткой статистики через определённый промежуток времени, указанный в параметре '--stats':
Запуск проверки
На машине, которую необходимо протестировать, запускаем '2ping <IP/host>':
IPv4 / IPv6
Если хотите использовать конкретную версию протокола, укажите её с помощью параметров --ipv4 (краткая форма -4) или --ipv6 (краткая форма -6).
Ограничить число запросов
По умолчанию число отправляемых запросов не ограничено. Чтобы установить лимит, используйте параметр '--count=<кол-во>' или его краткую форму '-c <кол-во>':
Ограничить работу утилиты по времени
При нестандартной задержке между отправкой пакетов (об этом ниже) будет удобнее ограничить работу команды не по количеству отправленных пакетов, а по времени. За это отвечает параметр --deadline (-w), он останавливает работу утилиты по истечении указанного количества секунд:
Тихий вывод
Если хотите видеть лишь результат, используйте параметр --quiet, он же -q:
Звуковое сопровождение
Добавьте параметр '-a', чтобы каждый раз при получении пакета воспроизводился системный звуковой сигнал.
Адаптивный пинг
По умолчанию утилита выжидает одну секунду перед тем, как отправить следующий запрос. С помощью параметра '--adaptive' или '-A' можно ускорить передачу пакетов в сетях с низким значением rtt.
Будьте осторожны с этим параметром, т.к. чем ниже rtt, тем больше пакетов будет передано:
Режим флуда
Необходимо максимально ускорить отправку пакетов? Используйте параметр '--flood' или '-f':
Интервал отправки запросов
Чтобы увеличить интервал между запросами, используйте параметр
'--interval=<секунды>' или краткую форму '-i <секунды>':
Адрес интерфейса
Для проверки конкретного адреса, укажите его у клиента или слушателя в параметре '--interface-address=IP' или '-I IP'.
Обратите внимание, что в значении параметра указывается адрес, а не имя интерфейса. Если на одном интерфейсе слушателя установлено несколько адресов, ответ может поступать с основного адреса, установленного для ответов.
Порт
По умолчанию утилита использует порт 15998, но вы можете установить своё значение с помощью параметра --port. Для установки случайного порта используйте --port=-1
SRV-записи DNS
Чтобы использовать SRV-запись, укажите на клиенте параметр '--srv'.
При использовании --srv значение порта берётся из DNS-записей.
Отправка запросов без ожидания ответа
Чтобы отправить несколько пакетов не дожидаясь подтверждения, используйте параметр --preload=<кол-во>, он же -l <кол-во>:
Ожидание потерянных пакетов
По умолчанию 2ping ждёт 10 секунд, прежде чем запросить информацию о потерянном пакете. Указать свой интервал можно с помощью параметра
'--inquire-wait'.
Эмуляция потери пакетов
Параметр --packet-loss позволяет сэмулировать потерю входящих:исходящих пакетов в процентах. Если указано одно число, оно будет применено и к входящим, и к исходящим пакетам:
Управление данными
Минимальный размер пакета
С помощью параметра --min-packet-size можно установить минимальное значение полезных данных в байтах (по умолчанию: 128). Если полезные данные окажутся меньше установленного значения, в конец пакета будет добавлено заполнение, шаблон которого устанавливается с помощью параметра --pattern.
Для совместимости ICMP можно использовать параметр --packetsize-compat, он же -s. В этом случае минимальный размер пакета будет на 8 байт больше установленного числа.
Шаблон заполнения
С помощью параметра --pattern или -p можно указать какими байтами будет заполнен пакет, например, -p ff дополнит пакет последовательностью из единиц.
Параметр лишь дополняет часть пакета, не трогая данные полезной нагрузки. Если полезные данные превышают минимальный размер пакета, установленный с помощью параметра --min-packet-size, шаблон заполнения игнорируется.
Максимальный размер пакета
Максимальный размер пакета задаётся параметром --max-packet-size. Значение по умолчанию: 512 байт, минимум: 64 байта.
Если полезные данные превысят установленный размер, будет предпринята попытка разбить их по пакетам.
Расшифровка пакетов
Параметр --verbose (-v) расшифрует информацию об отправленных и полученных пакетах:
Подробный вывод
Редим отладки позволяет вывести максимальное количество информации о пакетах (параметр --debug):
Прикрепить сообщение к пакету
Используйте параметр --notice для своих комментариев:
Шифрование пакетов
Авторизация на основе ключа
Укажите ключ в параметре --auth, чтобы хэшировать информацию о пакетах.
На клиенте и на прослушивателе должен быть задан один и тот же ключ:
Алгоритм хэширования
По умолчанию используется хэш-функция md5. Всего поддерживаются следующие хэш-функции: hmac-md5, hmac-sha1, hmac-sha256 и hmac-sha512. Установить любую из них позволяет параметр --auth-digest:
Шифрование пакетов
Для включения шифрования укажите значение ключа в параметре --encrypt:
Для использования этой возможности потребуется установленный пакет python3-pycryptodome. Шифрование происходит с помощью алгоритма hkdf-aes256-cbc.
Заключение
На этом знакомство с 2ping подошло к концу. Если я не затронул какие-то важные моменты при использовании этой команды, буду рад их услышать от вас в комментариях.
Пожалуйста, оцените мой труд лайком и подпиской, это позволит вам чаще видеть в ленте подобный контент. Всего доброго!)
---
Другие статьи по теме Linux:
Поддержать материально:
- Сбербанк: 2202 2013 5155 5152