Tengo dos computadoras Linux separadas, A y B, que necesitan comunicarse a través de UDP en el puerto 3000. Cada una está detrás de un enrutador diferente y tengo reglas de reenvío de puertos configuradas en cada enrutador.
Por alguna razón, la única forma en que B puede recibir paquetes UDP de A es si B envía un paquete a A primero.
Caso de trabajo:
# Computer A Listens (IP 1.2.3.4)
netcat -ul 3000
# Computer B Initiates
netcat -u 1.2.3.4 3000
En el caso anterior, los dos se "conectan" a través de netcat y puedo enviar y recibir datos en ambos sentidos. Esto me lleva a creer que no se trata de un problema de enrutamiento o reenvío de puertos.
Caso roto:
# Computer B Listens (IP 5.6.7.8)
netcat -ul 3000
# Computer A Initiates
netcat -u 5.6.7.8 3000
En este caso roto, los dos no pueden "conectarse" a través de netcat y no puedo enviar ningún dato entre ninguno de los puntos finales.
También intenté usar herramientas de envío de paquetes directo para enviar paquetes UDP entre A y B. Sucede lo mismo, B no puede recibir nada de A hasta que B envíe un paquete a A.
No tengo idea de por qué sucedería algo como esto, especialmente con UDP. ¿Alguna idea de qué podría estar causando el problema?
EDITAR
Verificó el reenvío de puertos en B. Aquí está la configuración actual de iptables:
$iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT udp -- anywhere anywhere udp dpt:3000 to:192.168.3.2:3000
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE 0 -- anywhere anywhere
$iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT 0 -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT 0 -- anywhere anywhere
ACCEPT udp -- anywhere 192.168.3.2 udp dpt:3000
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
¿Me falta algo en mi configuración de iptables para el reenvío adecuado de cualquier lugar: 3000 a 192.168.3.2:3000 para UDP?