Hugo博客公告弹窗

仅允许特定IP或Cloudflare访问docker端口

需求:

  • 禁止使用ip+端口访问
  • 无需nginx反代
  • 可使用域名访问

方法:

  1. 解析好域名,开启小黄云
  2. 规则 – Origin Rules – 创建规则

Image

指定端口,⚠️ 注意:这里的端口为外部端口,即宿主机端口。

Image

备份现有iptables规则

修改前务必备份当前规则,以便回滚。

sudo iptables-save > ~/iptables-backup-$(date +%F-%H%M%S).bak

查看备份:

ls ~/iptables-backup-*.bak

恢复备份:

sudo iptables-restore < ~/iptables-backup-xxx.bak

仅允许特定IP访问容器端口

示例:仅允许192.168.1.11访问5021端口

sudo iptables -I DOCKER-USER 1 -s 192.168.1.11 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 2 -p tcp --dport 5021 -j DROP

⚠️ 注意:5021为容器内部端口


允许Cloudflare IP段访问容器端口

若使用Cloudflare CDN,需允许其节点IP访问容器指定端口。

示例:允许Cloudflare IPv4段访问5021端口,⚠️ 注意:5021为容器内部端口

sudo iptables -I DOCKER-USER 1 -s 103.21.244.0/22 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 2 -s 103.22.200.0/22 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 3 -s 103.31.4.0/22 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 4 -s 104.16.0.0/13 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 5 -s 104.24.0.0/14 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 6 -s 108.162.192.0/18 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 7 -s 131.0.72.0/22 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 8 -s 141.101.64.0/18 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 9 -s 162.158.0.0/15 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 10 -s 172.64.0.0/13 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 11 -s 173.245.48.0/20 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 12 -s 188.114.96.0/20 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 13 -s 190.93.240.0/20 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 14 -s 197.234.240.0/22 -p tcp --dport 5021 -j ACCEPT
sudo iptables -I DOCKER-USER 15 -s 198.41.128.0/17 -p tcp --dport 5021 -j ACCEPT
# 默认拒绝其他来源
sudo iptables -I DOCKER-USER 16 -p tcp --dport 5021 -j DROP

允许Cloudflare IPv6段访问5021端口

sudo ip6tables -I DOCKER-USER 1 -s 2400:cb00::/32 -p tcp --dport 5021 -j ACCEPT
sudo ip6tables -I DOCKER-USER 2 -s 2606:4700::/32 -p tcp --dport 5021 -j ACCEPT
sudo ip6tables -I DOCKER-USER 3 -s 2803:f800::/32 -p tcp --dport 5021 -j ACCEPT
sudo ip6tables -I DOCKER-USER 4 -s 2405:b500::/32 -p tcp --dport 5021 -j ACCEPT
sudo ip6tables -I DOCKER-USER 5 -s 2405:8100::/32 -p tcp --dport 5021 -j ACCEPT
sudo ip6tables -I DOCKER-USER 6 -s 2a06:98c0::/29 -p tcp --dport 5021 -j ACCEPT
sudo ip6tables -I DOCKER-USER 7 -s 2c0f:f248::/32 -p tcp --dport 5021 -j ACCEPT
# 默认拒绝其他来源
sudo ip6tables -I DOCKER-USER 8 -p tcp --dport 5021 -j DROP

检查并保存规则

查看当前iptables规则

sudo iptables -vnL DOCKER-USER --line-numbers

查看当前ip6tables规则

sudo ip6tables -L DOCKER-USER -n -v --line-numbers

保存规则,防止重启丢失

sudo iptables-save > /etc/iptables/rules.v4

删除或重置规则

删除指定规则(如删除第一条)

sudo iptables -D DOCKER-USER 1

删除指定IP访问规则并清除DROP规则

sudo iptables -D DOCKER-USER -s 192.168.1.11 -p tcp --dport 5021 -j ACCEPT
sudo iptables -D DOCKER-USER -p tcp --dport 5021 -j DROP

临时清空DOCKER-USER链(恢复全部访问)

sudo iptables -F DOCKER-USER
CC BY-NC-SA 4.0 转载请注明
最后更新于 2025-05-02 16:22
clarity统计