更新 防火墙.MD
This commit is contained in:
@@ -289,4 +289,96 @@ nft -f /etc/nftables.conf --check
|
|||||||
systemctl restart nftables
|
systemctl restart nftables
|
||||||
```
|
```
|
||||||
|
|
||||||
执行完后,`nft list ruleset` 可以看到完整规则。
|
执行完后,`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