QuFirewall 是 QNAP NAS 设备上的防火墙功能,用于管理网络流量、控制数据包的流向和访问权限。在启用 QuFirewall 防火墙时,默认不会存在开放所有端口的规则,以提高网络安全性。
开启 - 接口[ALL] - 服务端口[任何] - 协议[任何] - 来源[任何] - 权限[允许]
因为拥有这样的规则将导致防火墙不再限制任何端口的流量,仅进行一些基础的安全防护。例如,在指定时段内多次尝试登录失败时,系统将自动阻止恶意 IP 地址,提高对 SSH、FTP、HTTP/HTTPS 等服务的破解抵抗能力。
在大局域网中,NAS 设备相对较为安全。但在公网环境下,用户可能希望开放部分服务端口以供外部访问,同时又需要限制不必要的 IP 段的扫描。这时可以配置 QuFirewall 仅允许来自中国的流量,以有效保护免受互联网上的恶意扫描攻击。
当用户使用 ZeroTier、Tailscale 等服务时,它们通常会创建虚拟网络设备。由于 QNAP 防火墙无法识别第三方创建的虚拟网络设备,导致流量无法通过这些设备进入 NAS,只能从 NAS 流出。这可能导致 NAS 可以 ping 通其他设备,但其他设备无法 ping 通 NAS 的 IP。
QNAP 无法识别虚拟网络设备的情况下,可能导致 NAS 无法建立到虚拟网络的双向通信。这是因为防火墙默认不会包含虚拟设备的规则,导致进入 NAS 的流量被阻止,仅有流出的权限。
为了解决虚拟网络设备流量无法进入 NAS 的问题,可以使用 Linux 系统命令iptables
`手动配置防火墙规则。当启用QuFirewall防火墙时,系统会自动创建一个名为
`QUFIREWALL
`的链,用于配置防火墙策略。通过运行命令
`iptables -L QUFIREWALL -v
可以查看当前防火墙规则。
要手动添加虚拟网络设备,可以使用以下命令:
iptables -I QUFIREWALL 1 -i ztfp6pggry -j ACCEPT
也可以使用下面代码,避免多次运行导致规则列表中出现冗余的重复规则
iptables -C QUFIREWALL -i ztfp6pggry -j ACCEPT || iptables -I QUFIREWALL 1 -i ztfp6pggry -j ACCEPT
这将允许虚拟网络设备 ztfp6pggry 的所有流量通过QUFIREWALL防火墙。
运行 iptables -L QUFIREWALL -v
可以查看数字部分(如 pkts bytes),表示有多少数据包和字节数通过该规则,如果这个数值不断变大,表示该设备有流量通过,证明我们说的这个设备已经被系统防火墙接纳。
以下是运行iptables -L QUFIREWALL -v
的示例输出:
Chain QUFIREWALL (1 references)
pkts bytes target prot opt in out source destination
250 85642 ACCEPT all -- lxcbr0 any anywhere anywhere
0 0 ACCEPT all -- docker0 any anywhere anywhere
0 0 ACCEPT all -- lxdbr0 any anywhere anywhere
0 0 NFLOG all -- !lo any anywhere anywhere match-set PSIRT.ipv4 src nflog-prefix "RULE=4 ACT=DROP"
48 21272 ACCEPT all -- br0 any 192.168.1.0/24 anywhere
9 456 ACCEPT all -- !lo any anywhere anywhere -m geoip --source-country CN
18 5684 NFLOG all -- !lo any anywhere anywhere nflog-prefix "RULE=15 ACT=DROP"
18 5684 NFLOG all -- !lo any anywhere anywhere nflog-prefix "RULE=15 ACT=DROP" nflog-group 1
18 5684 DROP all -- !lo any anywhere anywhere
如果需要删除已添加的虚拟网络设备,可以使用以下命令:
iptables -D QUFIREWALL -i ztfp6pggry -j ACCEPT
通过以上配置,用户可以更灵活地管理防火墙策略,确保 NAS 免受来自互联网的潜在威胁。