Estoy operando un par de demonios de servidor que usan udp para comunicarse con una gran cantidad de clientes. ¿Cómo encuentro y enumero todas las "conexiones" activas de udp que están hablando con los servidores para estimar el número de clientes activos que están conectados a los demonios del servidor? No podría pensar en una manera fácil de hacer esto además de rastrear los paquetes con tshark o tcpdump y mirar la ip de origen de los paquetes udp que van a los demonios del servidor y sí, sé que UDP no tiene conexión y es un protocolo sin estado.
linux
networking
udp
packet-analyzer
Pedernal
fuente
fuente
sudo lsof -iUDP
Respuestas:
UDP es un protocolo sin estado, por lo que no hay estados.
Para ver qué está escuchando UDP:
fuente
Puede registrar cada conexión UDP usando iptables:
Quizás desee limitarlo a algunos puertos. Compruebe la documentación aquí o, preferiblemente,
man iptables
.fuente
En Linux, suponiendo que iproute2 esté instalado, puede ejecutar el comando ss para extraer sockets udp de esta manera:
O todos los sockets udp, con el proceso asociado:
Aquí hay ejemplos adicionales que puede usar con ss, que incluyen obtener conexiones por proceso.
http://www.cyberciti.biz/files/ss.html
fuente
ss
solo muestra los sockets UDP, no la conexión .ss -pa
yss -upa
en el ejemplo? ¿Se debe eliminar la mitad?Como otros han mencionado, UDP no tiene conexión, por lo que el estado no se rastrea en las ubicaciones estándar que podría buscar.
Un método que podría usar es simplemente configurar algunas reglas simples de netfilter que usen la
--state
opción. Esto obligará a netfilter a rastrear el estado relacionado con UDP. Una vez que configure las reglas, puede usar una herramienta como conntrack para ver la tabla de estado de netfilter. Aquí, por ejemplo, es cómo se ve uno de mi sistema. Puede ver que hay un par de sistemas que se comunican con frecuencia a udp / 1194 (OpenVPN).Sus reglas de netfilter podrían ser tan simples como esto.
fuente
inspirado por esta respuesta , descubrí que la siguiente
ss
sintaxis funciona para mí:... porque "escuchar" los sockets UDP son como sockets TCP "cerrados".
fuente