Я управляю парой серверных демонов, которые используют udp для связи с большим количеством клиентов. Как мне найти и перечислить все активные «соединения» udp , которые общаются с серверами, чтобы оценить количество активных клиентов, которые подключены к демонам сервера? Я не мог придумать простой способ сделать это, кроме прослушивания пакетов с помощью tshark или tcpdump и просмотра исходного ip пакетов udp, идущих к демонам сервера, и да, я знаю, что UDP - это протокол без установления соединения и без сохранения состояния.
linux
networking
udp
packet-analyzer
кремень
источник
источник
sudo lsof -iUDP
Ответы:
UDP - это протокол без сохранения состояния, поэтому нет состояний.
Чтобы увидеть, что прослушивает UDP:
источник
Вы можете регистрировать каждое UDP-соединение, используя iptables:
Возможно, вы захотите ограничить его некоторыми портами. Проверьте документацию здесь или, предпочтительно,
man iptables
.источник
В Linux, предполагая, что iproute2 установлен, вы можете запустить команду ss для извлечения сокетов udp следующим образом:
Или все сокеты udp со связанным процессом:
Вот дополнительные примеры, которые вы можете использовать с ss, включая получение соединений на процесс.
http://www.cyberciti.biz/files/ss.html
источник
ss
отображает только UDP-сокеты, а не соединение .ss -pa
иss -upa
в примере? Половина должна быть удалена?Как уже упоминалось, UDP не требует подключения, поэтому состояние не отслеживается в стандартных местах, которые вы можете посмотреть.
Один из методов, который вы можете использовать, - это просто установить несколько простых правил сетевого фильтра, которые используют эту
--state
опцию. Это заставит netfilter отслеживать состояние, связанное с UDP. После настройки правил вы можете использовать такой инструмент, как conntrack, чтобы просмотреть таблицу состояний netfilter. Вот, например, как выглядит одна из моих систем. Вы можете видеть, что есть пара систем, которые часто взаимодействуют с udp / 1194 (OpenVPN).Ваши правила сетевого фильтра могут быть такими простыми.
источник
Вдохновленный этим ответом , я обнаружил, что следующий
ss
синтаксис работает для меня:… Потому что «слушающие» сокеты UDP похожи на «закрытые» сокеты TCP.
источник