一部のパケットはファイアウォールに到達する前に停止されます

一部のパケットはファイアウォールに到達する前に停止されます

ポート 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からのルールに一致するパケットは報告されないことに注意してください。ただし、上記の例では1つあります。どのキャストでも、-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 がパケットの送信元アドレスと重複するネットワークとのインターフェースを作成していたことであることが判明しました。

IPtables で docker が作成したすべてのルールをクリアしたにもかかわらず、別の IP 範囲でネットワークを開始するには、/etc/docker/daemon.json を変更する必要がありました。その後、すべてのコンテナーを削除し、Docker が作成したすべてのネットワークを削除しました。docker ネットワーク インターフェイスを削除するには、より破壊的でない方法があるかもしれませんが、私は何にも接続していませんでした。

その後、パケットが通過するようになりました。つまり、ネットワーク インターフェイス自体が干渉していたようです。

関連情報