dnat规则本质是将公网ip特定端口请求精准转发至内网服务器对应端口,需确保设备支持、内网服务就绪、路径通畅及策略放行,并通过外网真实环境验证。

配置 DNAT 规则是让公网用户访问内网服务的核心操作,本质是把发往公网 IP 的特定端口请求,精准转发到内网某台服务器的对应端口。关键不在“怎么点按钮”,而在于前提是否成立、路径是否通、策略是否放行。
先确认能不能做 DNAT
不是所有带“NAT”字样的设备都支持 DNAT:
- 家用路由器:绝大多数支持,在「端口转发」「虚拟服务器」里就能配;
- 云平台 NAT 网关:阿里云标准型不支持 DNAT,需用增强型或搭配 ALB/CLB;腾讯云、华为云、天翼云新版通常支持独立 DNAT 规则页;
- 防火墙(如华三):支持 DNAT(常称“NAT Server”),但必须在正确安全域间放通策略;
- AWS NAT Gateway:原生不支持,得用 EC2+iptables 或 ELB 替代。
如果查不到 DNAT 配置入口,大概率平台不支持,别硬试——直接换方案更省时间。
确保内网服务和网络基础就绪
DNAT 是“转发”,不是“创造”。转发失败,90% 是后端没准备好:
- 目标服务器已运行 HTTPS/HTTP 服务,且监听在指定端口(如 443 或 8080);
- 该服务器使用静态内网 IP(如 192.168.1.100),不能靠 DHCP 分配,否则映射会断;
- 服务器本地防火墙(如 ufw、firewalld、Windows Defender)已放行对应端口;
- 从内网其他机器能直接访问 https://192.168.1.100,证明服务本身正常。
按场景配置 DNAT 规则
家用路由器(最常见):
- 登录后台(通常是 192.168.1.1),找「端口转发」「NAT 设置」或「虚拟服务器」;
- 新增规则:外网端口填 443,内网 IP 填 192.168.1.100,内网端口填 443(若服务跑在 8443 就填 8443);
- 协议选 TCP(HTTPS 不需要 UDP);
- 保存后,临时关闭路由器自带的「DoS 防护」或「SPI 防火墙」,避免误拦截。
Linux 网关(iptables):
- 开启 IP 转发:echo 1 > /proc/sys/net/ipv4/ip_forward;
- 加 DNAT 规则(假设 eth0 是公网口):iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.100:443;
- 放行转发:iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -d 192.168.1.100 -j ACCEPT;
- 保存规则(Debian/Ubuntu):iptables-save > /etc/iptables/rules.v4。
云平台(以天翼云为例):
- 进入「网络 > NAT 网关 > 公网 NAT 网关」,点击目标实例;
- 切换到「DNAT 标签页」→「添加 DNAT 规则」;
- 选择绑定的弹性公网 IP(EIP);
- 「类型」选「VPC 内主机」→ 选中目标云主机 → 选其内网网卡;
- 公网端口填 443,内网端口填 443,协议选 TCP;
- 提交后等状态变为「运行中」即生效。
验证与排错要点
别只在内网测,必须从真正外网验证:
- 用手机切到 4G/5G 网络,访问 https://你的公网IP(注意:不是路由器 LAN 口地址);
- 查公网 IP 是否真实:浏览器打开 ip.sb,结果要和路由器 WAN 口显示 IP 一致;若显示 100.64.x.x 或 10.x.x.x,说明你处在运营商级 NAT(CGNAT),无法直配 DNAT,得改用 FRP、ZeroTier 或云内网穿透;
- 检查云主机安全组:若用云平台,ECS 安全组必须放行来自公网或 CLB 的 443 端口,而不是只放行内网;
- 抓包辅助判断:在 Linux 网关上执行 tcpdump -i eth0 port 443,看请求是否进来;再在内网服务器上抓包,看是否收到转发流量。










