Некоторые пакеты останавливаются до достижения брандмауэра

Некоторые пакеты останавливаются до достижения брандмауэра

У меня есть приложение, прослушивающее порт 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

Я могу видеть пакеты, входящие на мой компьютер, с помощью 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 (на данный момент) разрешает все. Обратите внимание, что он не сообщает ни о каких пакетах, соответствующих правилу из 172.18.248.0/28, несмотря на то, что мы видим его выше. В любом случае, -P INPUT принимает значение ACCEPT

$ 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

Похоже, что пакеты останавливаются после входа в интерфейс, но до того, как они достигнут брандмауэра.

Где еще я могу узнать, почему пакеты, поступающие на мой компьютер, не доходят до приложения?

решение1

Проблема оказалась в том, что Docker создавал интерфейсы с сетями, которые перекрывали исходный адрес пакетов.

Несмотря на то, что я очистил все правила, созданные docker в IPtables, мне пришлось изменить /etc/docker/daemon.json, чтобы запустить сети в другом диапазоне IP. Затем я удалил все свои контейнеры и удалил все сети, созданные Docker. Возможно, есть менее разрушительный способ удалить сетевые интерфейсы docker, но я не был ни к чему привязан.

После этого пакеты стали проходить. Так что, похоже, мешали сами сетевые интерфейсы.

Связанный контент