
Tengo una aplicación escuchando en el puerto 20514:
$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 192.168.100.213:20514 0.0.0.0:* 3629/python3
Puedo ver paquetes ingresando a mi computadora con tcpdump
$ sudo tcpdump -i enp0s25 -n -N udp port 20514
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s25, link-type EN10MB (Ethernet), capture size 262144 bytes
15:54:56.832307 IP 172.18.248.3.514 > 192.168.100.213.20514: SYSLOG user.critical, length: 111
iptables está (en este punto) permitiendo todo. Tenga en cuenta que no informa ningún paquete que coincida con la regla de 172.18.248.0/28, a pesar de que vimos uno arriba. En cualquier conversión, -P INPUT es ACEPTAR
$ sudo iptables -L -v
Chain INPUT (policy ACCEPT 134 packets, 79373 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- any any 192.168.100.0/24 anywhere tcp dpt:ssh
4745 282K ACCEPT tcp -- any any 10.8.0.0/24 anywhere tcp dpt:ssh
0 0 ACCEPT all -- any any 172.18.248.0/28 anywhere
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 533 packets, 89933 bytes)
pkts bytes target prot opt in out source destination
Chain DOCKER (0 references)
pkts bytes target prot opt in out source destination
Chain DOCKER-ISOLATION-STAGE-1 (0 references)
pkts bytes target prot opt in out source destination
Chain DOCKER-ISOLATION-STAGE-2 (0 references)
pkts bytes target prot opt in out source destination
Chain DOCKER-USER (0 references)
pkts bytes target prot opt in out source destination
Chain LOGACCEPT (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- any any anywhere anywhere LOG level info prefix "INPUT:ACCEPT:"
0 0 ACCEPT all -- any any anywhere anywhere
Entonces parece que los paquetes se detienen después de ingresar a la interfaz pero antes de llegar al firewall.
¿Dónde más puedo buscar para ver por qué los paquetes que ingresan a mi máquina no llegan a la aplicación?
Respuesta1
El problema resultó ser que Docker estaba creando interfaces con redes que se superponían a la dirección de origen de los paquetes.
Aunque había borrado todas las reglas que Docker creó en IPtables, terminé teniendo que cambiar /etc/docker/daemon.json para iniciar redes en un rango de IP diferente. Luego eliminé todos mis contenedores y eliminé todas las redes que había creado Docker. Puede que haya una forma menos destructiva de eliminar las interfaces de red de Docker, pero no estaba conectado a nada.
Después de eso empezaron a llegar paquetes. Así que parecían ser las propias interfaces de red las que estaban interfiriendo.