问题描述:如何在路由器上做 端口映射(NAT 转发),把公网 IP 的请求转发到你这台服务器。
非常好 👍,这是实现公网访问公司服务器的关键一步。我来一步步教你如何在路由器上做 端口映射(NAT 转发 / Port Forwarding) ,让外网访问你的服务器。
🧠 一、原理图(先理解一下)
互联网(公网)
│
公网IP:123.45.67.89 ← 分配给你公司宽带
│
【公司路由器】
│
内网:192.168.1.0/24
│
服务器:192.168.1.100(运行 Nginx/Spring Boot)
💡 目标:
当外网访问 http://123.45.67.89:80 时,
让路由器把请求转发到公司内网的服务器 192.168.1.100:80。
⚙️ 二、设置 NAT 端口映射的步骤
不同品牌路由器界面略有不同(华为、TP-Link、中兴、H3C、MikroTik 等),但原理完全一样。
✅ 第 1 步:登录路由器后台
-
在公司电脑浏览器中输入路由器网关地址,例如:
http://192.168.1.1 或 http://192.168.0.1 -
输入管理员账号密码登录(不知道可以问网络管理员)。
✅ 第 2 步:找到端口映射/NAT设置
在菜单中查找如下名称(各品牌略有不同):
- “端口转发”
- “虚拟服务器”
- “NAT 映射”
- “Port Forwarding”
- “应用规则(Application Rules) ”
✅ 第 3 步:添加一条端口映射规则
| 字段 | 示例值 | 说明 |
|---|---|---|
| 名称 | web-server | 规则备注 |
| 协议 | TCP | 一般只选 TCP |
| 外部端口(WAN端口) | 80 | 访问公网端口 |
| 内部端口(LAN端口) | 80 | 服务器上运行的端口(如 Nginx) |
| 内部IP地址 | 192.168.1.100 | 你的服务器内网地址 |
| 状态 | 启用(Enable) | 开启规则 |
📍 如果你的后端是 Spring Boot,监听 8080 端口,则:
外部端口:8080
内部端口:8080
内部IP:192.168.1.100
✅ 第 4 步:保存并重启路由器(某些型号需要)
✅ 第 5 步:测试是否成功
-
在外网电脑(非公司 Wi-Fi)上访问:
http://你的公网IP:80或(若配置了域名解析)
http://www.example.com -
如果出现你服务器的页面,说明端口映射成功 🎉。
🧩 三、可选:多端口映射
你可以根据需要开放多个端口:
| 服务 | 外部端口 | 内部端口 | 协议 |
|---|---|---|---|
| Nginx 网站 | 80 | 80 | TCP |
| HTTPS | 443 | 443 | TCP |
| Spring Boot 接口 | 8080 | 8080 | TCP |
| MySQL(不推荐) | 3306 | 3306 | TCP |
⚠️ 安全建议:尽量不要开放数据库端口(如 3306)到公网!
🔒 四、安全注意事项
-
固定服务器内网 IP
在路由器 DHCP 设置中,将服务器的192.168.1.100绑定到它的 MAC 地址,避免重启后 IP 变化导致转发失效。 -
关闭多余端口
只开放必要的端口(80、443、8080)。 -
防火墙放行端口
Windows 或 Linux 防火墙要允许对应端口访问:# Windows netsh advfirewall firewall add rule name="WebServer" dir=in action=allow protocol=TCP localport=80 # Linux(CentOS) firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload
🧰 五、检查公网是否真的通
-
查看公网 IP
在浏览器访问 ip138.com
→ 显示的 IP 就是你公司对外公网 IP。 -
测试端口开放情况
在外网电脑(或用手机4G)访问:http://123.45.67.89:80或使用命令:
telnet 123.45.67.89 80如果能连通,就表示 NAT 转发生效 ✅。
💡 六、标准端口号对照(常见参考)
| 端口号 | 默认用途 | 协议 |
|---|---|---|
| 20/21 | FTP(文件传输) | TCP |
| 22 | SSH 远程登录 | TCP |
| 25 | SMTP 邮件发送 | TCP |
| 53 | DNS 域名解析 | TCP/UDP |
| 80 | HTTP(网站) | TCP |
| 90 | 🔸无默认用途,可自定义使用 | TCP |
| 110 | POP3(邮件接收) | TCP |
| 143 | IMAP(邮件接收) | TCP |
| 443 | HTTPS(加密网站) | TCP |
| 3306 | MySQL | TCP |
| 8080 | HTTP 备用端口(常用于测试) | TCP |
| 9000+ | 常用于 Web 服务、开发调试等 | TCP |