puertos comandos comando cluster abiertos linux udp iptables packet

linux - comandos - ¿Cuáles son las razones por las que los paquetes UDP se eliminan por la pila de red?



iptables linux firewall (2)

Al final resultó que los paquetes se eliminaron mediante filtrado RPF. Consulte la configuración net.ipv4.all.rp_filter en Linux.

Veo paquetes UDP que llegan a mi caja de Linux (a través de tcpdump) con el puerto de destino establecido en 25555. Sin embargo:

nc -l -u 25555

no muestra tráfico

Ya revisé:

  1. iptables está apagado
  2. la dirección MAC de destino coincide con la interfaz entrante
  3. la dirección IP de destino coincide con la interfaz entrante
  4. La suma de comprobación de IP está bien
  5. Suma de comprobación UDP está bien

Además, todos los paquetes se están descartando, por lo tanto, no es un problema con el exceso de buffers rx.

¿Alguna idea de qué más puede hacer que se descarten los paquetes?


Tiene otro proceso en su máquina que lee los datagramas que llegan al puerto 25555. Podemos verlo desde su /proc/net/udp :

sl local_address rem_address st tx_queue rx_queue tr rexmits tm->when uid timeout inode ref pointer drops 104: 00000000:63D3 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 1779298 2 fff810266fe0c 0

Entonces, el proceso que "roba" los datagramas que desea es propiedad de root (uid = 0). Y el inodo del socket es 1779298, que puede buscar en /proc/PID/fd para los PID propiedad de root. Una vez que descubra qué proceso está escuchando allí, tendrá que decidir si lo rescinde para que nc pueda escucharlo.

Los datagramas UDP de unidifusión solo terminarán yendo a un solo proceso en un sistema Linux, incluso si hay varios procesos que intentan leer desde la misma dirección.