使用前提:
有域名,1panel 面板,debian 系统

我是小主机安装的 debian,想实现局域网内访问和外网使用泛域名访问
因为自带的映射一次只能设置一个 ip,而且 1panel 自带的防火墙和 DOCKER-USER 链平级,无法直接在 1panel 里设置防火墙影响容器端口的开放

教程开始:
前置 配置泛域名的方法

这两天在更新

第一步 查询当前 docker 使用 iptables 版本

echo "------ 账本 A: iptables-legacy (旧版) ------"
iptables-legacy -t nat -S DOCKER 2>/dev/null || echo "Legacy 中没有 DOCKER 链" echo "" echo "------ 账本 B: iptables-nft (新版/默认) ------"
iptables-nft -t nat -S DOCKER 2>/dev/null || echo "NFT 中没有 DOCKER 链" 

需要 debian 系统和 docker 使用同一版本,debian 新版基本上是 nft

第二步 添加 ipv6 和 ipv4 规程
局域网网段请自行更改
1panel 面板自带的反向代理是容器运行,所以需要额外开放 80 和 443
ipv4:

# 清空现有规则,重新排列
iptables -F DOCKER-USER

# 1. 基础规则:允许已建立连接、本机、局域网
iptables -A DOCKER-USER -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A DOCKER-USER -i lo -j ACCEPT
iptables -A DOCKER-USER -s 192.168.5.0/24 -j ACCEPT

# 2. 【新增】特赦反向代理端口 (允许外网访问 Docker 的 80443)
# 只有这样,外网流量才能到达你的 Nginx 容器
iptables -A DOCKER-USER -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A DOCKER-USER -p tcp -m tcp --dport 443 -j ACCEPT

# 3. 拒绝外网网卡的其他所有流量
# (把 enp1s0 换成你的实际网卡名,如果不确定就用 ! -i lo 表示非回环)
iptables -A DOCKER-USER -i enp1s0 -j DROP

# 4. 默认返回
iptables -A DOCKER-USER -j RETURN

ipv6:

ip6tables -F DOCKER-USER

# 1. 基础规则
ip6tables -A DOCKER-USER -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A DOCKER-USER -i lo -j ACCEPT
ip6tables -A DOCKER-USER -s fe80::/10 -j ACCEPT

# 2. 【新增】特赦 IPv6 下的 80443
ip6tables -A DOCKER-USER -p tcp -m tcp --dport 80 -j ACCEPT
ip6tables -A DOCKER-USER -p tcp -m tcp --dport 443 -j ACCEPT

# 3. 拒绝外网网卡的其他 IPv6 流量
ip6tables -A DOCKER-USER -i enp1s0 -j DROP

# 4. 默认返回
ip6tables -A DOCKER-USER -j RETURN 

完成后再次测试即可


📌 转载信息
原作者:
ak7876
转载时间:
2026/1/20 17:39:49

标签: docker, debian, iptables, 1Panel, 泛域名访问

添加新评论