更新 防火墙.MD

This commit is contained in:
2026-09-06 23:19:10 +08:00
parent c1f94a2b74
commit def164711b
+93 -1
View File
@@ -289,4 +289,96 @@ nft -f /etc/nftables.conf --check
systemctl restart nftables systemctl restart nftables
``` ```
执行完后,`nft list ruleset` 可以看到完整规则。 执行完后,`nft list ruleset` 可以看到完整规则。
## 配置开机自动填充网段
Debian12 `ifpreup.d` 在部分云 vps 网络时序会有问题(网络还没通就运行脚本),改用 **systemd service** 更稳定。
创建 systemd 服务文件:
```
cat > /etc/systemd/system/update-cn-ipset.service <<'EOF'
[Unit]
Description=Restart nftables && Load CN CIDR into nftables set
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart nftables
ExecStart=/usr/local/bin/update-cn-set.sh
[Install]
WantedBy=multi-user.target
EOF
```
启用开机自启:
```
systemctl daemon-reload
systemctl enable update-cn-ipset.service
```
>
> 测试运行这个 systemd 单元:
```
systemctl start update-cn-ipset.service
systemctl status update-cn-ipset.service
```
## 4、测试效果
1. 规则逻辑:**来自中国大陆 IP 访问本机 4000050000 端口 (TCP/UDP) 直接丢弃;其他 IP 不受影响;本机对外访问不受限制**。
2. SSH 端口只要不在 40000‑50000 区间不会被封。
3. 云服务器:**控制台安全组不能放行 40000‑50000,否则主机防火墙规则被绕过**。
## 5、排错
- 如果运行脚本卡住:github raw 访问失败。解决方案:预先下载`chnroutes.txt`上传服务器本地,修改脚本把 curl 那一行替换为 `cp /tmp/chnroutes.txt "$TMP"`
- 查看 nftables 完整规则依旧是你截图那样,集合内有大量网段 = 整套功能已经就绪。
## 快速回退命令
```
#清空所有nftables规则
nft flush ruleset
systemctl stop nftables
systemctl disable nftables
systemctl disable update-cn-ipset.service
```
---
执行完脚本后把 `nft list set ip filter cn_ip` 的结果看一眼,确认有网段就全部完成。
### 补充 crontab 定期刷新网段(可选)
每周凌晨 2 点更新 CN 网段:
```
crontab -e
#写入
0 2 * * 0 /usr/local/bin/update-cn-set.sh
```
>
> 提醒:raw.githubusercontent 访问不稳定,生产环境建议本地缓存一份`chnroutes.txt`做降级备用。
现在执行完后,`nft list set ip filter cn_ip`确认集合内有大量 CN 网段,整套规则就完整可用。
~~~
ipset destroy cn_ip
nft flush ruleset
/usr/local/bin/update-cn-set.sh
nft -f /etc/nftables.conf --check
systemctl start nftables
systemctl stop nftables
systemctl status nftables
systemctl enable nftables
systemctl disable nftables
systemctl restart nftables
nft list set ip filter cn_ip
nft list ruleset