
ポート 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 ネットワーク インターフェイスを削除するには、より破壊的でない方法があるかもしれませんが、私は何にも接続していませんでした。
その後、パケットが通過するようになりました。つまり、ネットワーク インターフェイス自体が干渉していたようです。