我正在使用docker和ufw。我将以下内容添加到文件 /etc/ufw/after.rules 中:
*filter
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16
-A DOCKER-USER -j ufw-user-forward
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12
-A DOCKER-USER -j RETURN
COMMIT
它来自这个网站。这是有效的,我可以在端口 80 和 443 上访问我的站点。我有两个应用程序应该通过公共域进行通信。所以应用程序 a 正在尝试连接到https://appb.mydomain.de但它不工作。我认为它不起作用,因为 ufw 阻止了连接。
这是日志条目:
Nov 20 21:49:37 test kernel: [1734126.807194] [UFW BLOCK] IN=br-d4ae9febff15 OUT= PHYSIN=vethea6c129 MAC=02:42:78:ff:3a:25:02:32:ad:18:00:08:08:00 SRC=172.24.0.8 DST=95.214.42.122 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=21125 DF PROTO=TCP SPT=34675 DPT=443 WINDOW=64240 RES=0x00 SYN URGP=0
d4ae9febff15 是连接到的 docker 网络应用程序的名称。
NETWORK ID NAME DRIVER SCOPE
d4ae9febff15 test bridge local
ufw状态:
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp ALLOW FWD Anywhere
443/tcp ALLOW FWD Anywhere
80/tcp (v6) ALLOW FWD Anywhere (v6)
443/tcp (v6) ALLOW FWD Anywhere (v6)
应用程序 b 可以通过 docker 网络访问应用程序 a 没有任何问题。但是应用程序 a 也可以从外部访问(例如https://appA.mydomain.de)。所以应用程序 b 应该能够访问这个应用程序,但 ufw 阻止了这个。我如何告诉 ufw 允许这种连接?