我将 nftables 设置为在丢弃数据包时进行记录。我正在尝试具体解决 Docker 容器之间的通信是如何被阻止的。
日志显示以下条目:
IN=br-0353a07849d5 OUT= PHYSIN=veth8e2058a MAC=XXXXX SRC=172.19.0.3 DST=172.17.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=53 ID=40709 PROTO=TCP SPT=46580 DPT=5432 WINDOW=1024 RES=0x00 SYN URGP=0
为什么OUT=
这里是空白?这是否意味着它是一个INPUT
数据包?或者只是规则导致它在知道要去哪里之前就被阻止了?我预计这是一个从到 的FORWARD
数据包。br-0353a07849d5
docker0
答案1
172.17.0.1是属于主机的本地地址。因此该数据包不会被转发:它是在 INPUT 挂钩中从br-0353a07849d5
接口接收到的。如果此本地 IP 地址设置为docker0
、lo
、 或,这并不重要,br-0353a07849d5
它仍然是本地 IP 地址,因此它不会被路由/转发,而是由路由堆栈接收以进行本地套接字处理(并由 Netfilter/nftables 防火墙丢弃到此处)基础设施)。