ICMP запросы часто используются, чтобы узнать, находится ли в данный момент сервер в сети. Проверка доступности узла осуществляется командой ping с указанием ip адреса.
ping xx.123.xx.123
Обмен пакетами с xx.123.xx.123 по с 32 байтами данных:
Ответ от xx.123.xx.123: число байт=32 время=3мс TTL=64
Ответ от xx.123.xx.123: число байт=32 время=3мс TTL=64
При этом удаленный сервер отправляет в этот момент ответы и по выводу команды понятно, что он доступен.
При это на удаленном сервере, на который мы посылаем запросы в логе не будет данных событий. Иногда нужно узнать кто в данный момент посылает icmp запросы, для этого мы будем использовать утилиту tcpdump
1. Установка tcpdump
apt update
apt install tcpdump
2. Определим сетевой интерфейс
apt install net-tools
ifconfig
Команда покажет все сетевые интерфейсы и нам нужно выбрать тот на котором мы будем прослушивать пакеты, в нашем случае enp3s0
tcpdump -i enp3s0 icmp and icmp[icmptype]=icmp-echo -n
listening on enp3s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
21:52:20.352600 IP xx.234.xx.234 > xx.123.xx.123: ICMP echo request, id 1, seq 57, length 40
21:52:21.360715 IP xx.234.xx.234 > xx.123.xx.123: ICMP echo request, id 1, seq 58, length 40
Для того чтобы записать в файл, используйте команду:
tcpdump -i enp3s0 icmp and icmp[icmptype]=icmp-echo -n >> /var/log/ping.log
Данная команда будет записывать в файл все ip адреса, которые когда-либо обращались к данному узлу по icmp протоколу.
Мы не рекомендуем оставлять включенной данную команду на постоянной основе, так как она затрачивает ресурсы оборудования. Данный пример предполагает использование на время отладки.