我的当前情况ufw status如下。UFW 设置为默认拒绝。
[ 1] SSH ALLOW IN 10.1.0.0/16
[ 2] DNS ALLOW IN 10.1.0.0/16
[ 3] DNS ALLOW IN 192.168.0.0/16
[ 4] 1900,3478,10001/udp ALLOW IN 10.1.0.0/16 # UniFi UDP ports
[ 5] 6789,8080,8443,8843,8880,27117/tcp ALLOW IN 10.1.0.0/16 # UniFi TCP ports
[ 6] 5353/udp ALLOW IN 10.1.0.0/16 # Multicast DNS aka Bonjour
Run Code Online (Sandbox Code Playgroud)
因此,从 10.1.0.0/16 块传入端口 8080 的 TCP 数据包都应该被允许,但在我的 ufw.log 中,我看到以下内容不断重复:
Mar 10 18:28:48 pi-hole kernel: [97820.380848] [UFW BLOCK] IN=eth0 OUT= MAC=b8:27:eb:ef:23:6a:b4:fb:e4:28:d2:48:08:00:45:00:00:34:52:72:40:00:40:06:d1:51 SRC=10.1.1.1 DST=10.1.1.254 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=21106 DF PROTO=TCP SPT=36656 DPT=8080 WINDOW=245 RES=0x00 ACK FIN URGP=0
Mar 10 18:29:10 pi-hole kernel: [97841.880829] [UFW BLOCK] IN=eth0 OUT= MAC=b8:27:eb:ef:23:6a:b4:fb:e4:28:d2:48:08:00:45:00:00:34:55:42:40:00:40:06:ce:81 SRC=10.1.1.1 DST=10.1.1.254 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=21826 DF PROTO=TCP SPT=36657 DPT=8080 WINDOW=245 RES=0x00 ACK FIN URGP=0
Mar 10 18:29:31 pi-hole kernel: [97863.530929] [UFW BLOCK] IN=eth0 OUT= MAC=b8:27:eb:ef:23:6a:b4:fb:e4:28:d2:48:08:00:45:00:00:34:87:7d:40:00:40:06:9c:46 SRC=10.1.1.1 DST=10.1.1.254 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=34685 DF PROTO=TCP SPT=36658 DPT=8080 WINDOW=245 RES=0x00 ACK FIN URGP=0
Run Code Online (Sandbox Code Playgroud)
意味着它正在阻止从 10.1.1.1 到端口 8080 的传入 TCP 数据包。
我尝试跑步ufw reload,但没有成功。我也尝试过允许来自任何 IP 地址的 8080,同样的问题。
我什至已经使用 UFW 完全删除apt purge ufw并重新安装并重建了我的规则,但仍然遇到同样的问题。
有任何想法吗?
根据上面的 https://askubuntu.com/questions/803276/ufw-block-syslog-tcp-ip-is-blocked-and-this-is-allowed-in-ufw-gps-tracking-t,问题围绕不同的供应商以不同的方式关闭连接。这会导致 UFW 在端口 8080 上接收一些数据包,这些数据包的源认为该连接仍处于打开状态,但 UFW 已关闭。为了解决这个问题,我们首先使用以下命令删除 ufw 中的允许端口 8080 规则sudo ufw delete <rule number of 8080 rule>
然后我们告诉 UFW 接受所有 8080 数据包,无论它们是否有效。我们通过编辑 ipv4 的 /etc/ufw/before.rules 和 ipv6 的 /etc/ufw/before6.rules 来实现此目的。在“丢弃无效数据包”部分之前的某个时间。
# quickly process packets for which we already have a connection
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Accept everything from tcp 8080
#Stops ufw.log filling with 8080 notices despite port 8080 being 'allowed'
-A ufw-before-input -p tcp --dport 8080 -j ACCEPT
# drop INVALID packets (logs these in loglevel medium and higher)
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
Run Code Online (Sandbox Code Playgroud)
提醒自己这条规则是个好主意,因为当你跑步时它不会出现ufw status。我有一条规则为同一服务(unifi 控制器)打开一些其他端口,所以我使用添加了注释
ufw allow from x.x.x.x to any proto tcp port 8443,27117 comment 'UniFi ports. Also see manual rule for 8080 in /etc/ufw/before.rules'
Run Code Online (Sandbox Code Playgroud)
ufw status显示评论:
8443,27117/tcp ALLOW 10.1.0.0/16 # UniFi ports. Also see manual rule for 8080 in /etc/ufw/before.rules
Run Code Online (Sandbox Code Playgroud)
我在我的实例中没有使用 ipv6,因此无法测试它,但您可以编辑 before6.rules 并在其中添加适当的规则。
| 归档时间: |
|
| 查看次数: |
11826 次 |
| 最近记录: |