外网映射端口怎么设置
把内网服务暴露到公网,外网最直接的映射办法就是在路由器上做端口映射。但很多人卡在第一步:登录路由器后台,端口翻遍菜单也找不到“端口映射”四个字。设置不同品牌叫法不一样,外网TP-Link 叫“虚拟服务器”,映射华硕叫“端口转发”,端口小米叫“端口映射”,设置OpenWrt 里又是外网另一套逻辑。名字不统一,映射功能是端口一回事。
先确认一件事:你的设置宽带有没有公网 IP。电信、外网联通多数地区可以打客服电话申请,映射移动基本不给。端口没有公网 IP,端口映射做了也白做,外面访问不到。判断方法很简单,看路由器 WAN 口拿到的地址是不是 100.64.x.x 或者 10.x.x.x 这类内网段。是的话,先解决公网 IP 问题,或者改用 frp、Tailscale 这类内网穿透工具。
有公网 IP 之后,登录路由器管理页面。以 TP-Link 为例,找到“应用管理”里的“虚拟服务器”,点添加。外部端口填你希望公网访问的端口号,比如 8080;内部端口填服务实际监听的端口,比如 80;IP 地址填内网那台机器的固定 IP,比如 192.168.1.100。协议选 TCP 或 ALL。保存,生效。
这里有个坑:内网机器的 IP 必须固定。DHCP 租约到期后 IP 变了,映射就失效。要么在路由器里做静态 IP 绑定,要么在设备系统里手动设固定 IP。我见过有人映射完当天能用,第二天怎么都连不上,折腾半天才发现是 IP 换了。
另一个常见问题是运营商封端口。80、443、8080 这些常用端口,很多地区直接封掉。你映射了也访问不了。换个高位端口,比如 23456、34567,成功率大得多。访问的时候带上端口号:http://你的公网IP:23456。
防火墙也得看。路由器本身有防火墙,设备系统也有。Windows 上如果服务跑在 80 端口,系统防火墙默认可能不放行。去“高级安全 Windows Defender 防火墙”里加一条入站规则,放行对应端口。Linux 上用 iptables 或 ufw 检查一下。很多人只改了路由器,忘了本机防火墙,结果外面死活连不上。
测试方法:用手机切到 4G/5G 网络,浏览器访问你的公网 IP 加端口。能打开就说明映射成功。别在内网里测,内网访问走的是局域网路径,测不出映射有没有生效。这个细节很容易被忽略。
还有一点,公网 IP 是动态的。重启光猫或过一段时间,IP 会变。解决办法是用 DDNS,把域名绑定到动态 IP 上。路由器一般自带 DDNS 功能,选个服务商,注册账号,填进去就行。之后用域名访问,不用记 IP。
安全方面别大意。端口映射等于把内网服务直接扔到公网,任何人扫到都能尝试访问。至少设个强密码,能改默认端口就改。别把数据库、Redis 这类服务直接映射出去,见过太多被挖矿的案例。真要暴露,加一层反向代理或者 VPN,别裸奔。
如果路由器拿不到公网 IP,又不想折腾 frp,可以试试 IPv6。现在很多宽带都下发 IPv6 地址,每个设备都有独立公网 IPv6。在路由器防火墙里放行对应端口,用 IPv6 地址直接访问。缺点是有些网络环境不支持 IPv6,比如部分公司网络和手机热点。
端口映射本身不复杂,难的是排查。连不上就按顺序查:公网 IP 有没有、端口有没有被封、内网 IP 是否固定、本机防火墙是否放行、测试方式对不对。五步走完,基本能定位问题。