更新 防火墙.MD
This commit is contained in:
@@ -290,3 +290,95 @@ systemctl restart nftables
|
||||
```
|
||||
|
||||
执行完后,`nft list ruleset` 可以看到完整规则。
|
||||
|
||||
## 配置开机自动填充网段
|
||||
|
||||
Debian12 `if‑pre‑up.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 访问本机 40000‑50000 端口 (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
|
||||
Reference in New Issue
Block a user