需求:
- 禁止使用ip+端口访问
- 无需nginx反代
- 可使用域名访问
方法:
- 解析好域名,开启小黄云
- 规则 – Origin Rules – 创建规则
指定端口,⚠️ 注意:这里的端口为外部端口,即宿主机端口。
备份现有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