ufw + ipset :仅允许大陆与 Cloudflare 访问 80/443

这是一套基于 UFW IPSet 方案,用于仅允许 中国大陆与 Cloudflare 访问网站的 80/443 端口。
脚本自动管理规则,兼容双栈网络,并支持每日更新 IP 段。

帖子结尾添加了nftable 版本

主要特色:

🧩 原生兼容 UFW:不修改现有规则,只在用户链中追加放行逻辑。

🌏 精准放行:限制访问来源为中国大陆与 Cloudflare。

🔄 自动更新:通过 systemd 定时任务每日刷新 IP 数据。

双栈支持:IPv4 与 IPv6 独立控制。


🚀 一键部署脚本

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/ufw_cn.sh && chmod  x ufw_cn.sh && ./ufw_cn.sh

说明: 脚本会自动检测现有 UFW 状态与规则,并在不影响原有策略的前提下,附加 CN 与 Cloudflare 放行规则。


🔍 查看当前规则

iptables -L ufw-user-input -n --line-numbers
ip6tables -L ufw6-user-input -n --line-numbers

🧹 删除规则(恢复原状)

该操作将清除 IPSet 与相关放行策略,使防火墙恢复默认状态:

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/cleanup_ipset.sh && chmod  x cleanup_ipset.sh && ./cleanup_ipset.sh

随后重新调整放行顺序以避免冲突:

# IPv4
sudo iptables -D ufw-user-input -p tcp --dport 80 -j ACCEPT
sudo iptables -D ufw-user-input -p tcp --dport 443 -j ACCEPT
sudo iptables -A ufw-user-input -p tcp --dport 80 -j ACCEPT
sudo iptables -A ufw-user-input -p tcp --dport 443 -j ACCEPT
# IPv6
sudo ip6tables -D ufw6-user-input -p tcp --dport 80 -j ACCEPT
sudo ip6tables -D ufw6-user-input -p tcp --dport 443 -j ACCEPT
sudo ip6tables -A ufw6-user-input -p tcp --dport 80 -j ACCEPT
sudo ip6tables -A ufw6-user-input -p tcp --dport 443 -j ACCEPT

验证规则是否正确加载:

iptables -L ufw-user-input -n --line-numbers
ip6tables -L ufw6-user-input -n --line-numbers

️ 其他命令

手动允许某个 IP:

sudo ipset add china 6.6.6.6

从集合中移除指定 IP:

sudo ipset del china 6.6.6.6

保存规则

ipset save > /etc/iptables/ipset.rules

放行bingbot(必应爬虫),以下是必应爬虫ip段

sudo ipset add china 157.55.39.0/24
sudo ipset add china 207.46.13.0/24
sudo ipset add china 40.77.167.0/24
sudo ipset add china 13.66.139.0/24
sudo ipset add china 13.66.144.0/24
sudo ipset add china 52.167.144.0/24
sudo ipset add china 13.67.10.16/28
sudo ipset add china 13.69.66.240/28
sudo ipset add china 13.71.172.224/28
sudo ipset add china 139.217.52.0/28
sudo ipset add china 191.233.204.224/28
sudo ipset add china 20.36.108.32/28
sudo ipset add china 20.43.120.16/28
sudo ipset add china 40.79.131.208/28
sudo ipset add china 40.79.186.176/28
sudo ipset add china 52.231.148.0/28
sudo ipset add china 20.79.107.240/28
sudo ipset add china 51.105.67.0/28
sudo ipset add china 20.125.163.80/28
sudo ipset add china 40.77.188.0/22
sudo ipset add china 65.55.210.0/24
sudo ipset add china 199.30.24.0/23
sudo ipset add china 40.77.202.0/24
sudo ipset add china 40.77.139.0/25
sudo ipset add china 20.74.197.0/28
sudo ipset add china 20.15.133.160/27
sudo ipset add china 40.77.177.0/24
sudo ipset add china 40.77.178.0/23

nftable版本

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/nft_cn.sh && chmod  x nft_cn.sh && ./nft_cn.sh

查看完整规则集

nft list ruleset

查看 IPv4 集合

nft list set inet filter china_ipv4

查看 IPv6 集合

nft list set inet filter china_ipv6

手动允许某个 IP:

sudo nft add element inet filter china_ipv4 { 6.6.6.6 }

从集合中移除指定 IP:

sudo nft delete element inet filter china_ipv4 { 6.6.6.6 }

删除规则

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/cleanup_nftables.sh \
&& chmod  x cleanup_nftables.sh \
&& ./cleanup_nftables.sh
点赞
  1. DmitChat说道:

    好东西

  2. Kaikei说道:

    好东西

  3. 路飞他哥说道:

    @imsnail #24 这个脚本可只允许cloudflare访问和添加白名单:

    curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/cloudflare-only.sh && chmod +x cloudflare-only.sh && ./cloudflare-only.sh
    

回复 Kaikei 取消回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮