端口转发因令人困惑而闻名。它出现在每个游戏指南、每个家庭服务器教程和每个 IP 摄像机设置指南中 - 通常隐藏在带有神秘字段的路由器设置中,并且没有解释它的实际用途。
2026 年 10 月 8 日更新: 添加了有序的故障排除清单以及 CGNAT、双 NAT 和发夹 NAT 指南的链接。 DHCP 网络上的
本指南跳过了术语并解释了实际发生的情况,因此您可以就是否需要它做出正确的决定,并在需要时正确设置它。
心智模型:你的路由器是接待员
您的路由器位于家庭网络和互联网之间。您家中的每台设备(电话、笔记本电脑、智能电视、游戏机)共享一个由 ISP 分配的公共 IP 地址。在内部,您的路由器为每个设备提供了自己的私有 IP(例如 192.168.1.x).
可以把它想象成一家只有一个电话号码但有很多员工的公司。当有人拨打总机号码时,接待员需要知道将呼叫转接到哪个分机。
端口转发是告诉您的路由器的规则列表: “当互联网上的某人连接到端口 25565 时,将该连接转移到位于 192.168.1.50 的 PC。”
如果没有这条规则,路由器不知道将传入连接发送到哪里 - 因此它会丢弃它。
什么是端口
每个网络连接都使用两件事:IP 地址(哪台计算机)和端口号(该计算机上的哪个应用程序)。
端口只是从 0 到 65535 的数字。您可能见过的常见端口:
| 端口 | 服务 |
|---|---|
| 80 | HTTP(网络) |
| 443 | HTTPS(安全网络) |
| 22 | SSH |
| 25565 | 我的世界 Java 版 |
| 3389 | Remote Desktop (RDP) |
| 32400 | Plex 媒体服务器 |
当你打字时 google.com 在您的浏览器中,您的计算机在端口 443 上连接到 Google 的 IP。当您的朋友尝试连接到您的 Minecraft 服务器时,他们会在端口 25565 上连接到您的公共 IP。
如果没有端口转发,您的路由器就不知道将 Minecraft 流量发送到您的游戏 PC,而不是直接丢弃它。
当你确实需要端口转发时
运行您家以外的人连接到的服务器。
这才是真正的答案。如果您在路由器的 IPv4 NAT 后面托管服务并想要直接入站连接,通常需要端口映射。中继、出站隧道或覆盖 VPN 可以提供无需手动转发的访问。 IPv6 使用防火墙规则而不是 IPv4 NAT 映射。
具体案例:
- Minecraft Java 服务器 — 端口 25565,网络之外的朋友没有它就无法加入
- Plex 远程访问 — 端口 32400,没有它,外部 Plex 客户端无法访问您的服务器
- 从工作场所通过 SSH 连接到您的家庭服务器 — 端口 22(或自定义端口)
- 远程桌面 — 通常为 TCP 3389;更喜欢通过 VPN 访问它而不是直接暴露它
- 网络摄像机 — 使用受支持的安全访问方法;避免直接暴露他们的管理界面
- 自托管 VPN(WireGuard、OpenVPN) — 需要 VPN 端口上的端口转发
共同点: 东西 外面 您的网络正在尝试发起连接 进入 您的网络。
当你不需要端口转发时
这是大多数指南都会跳过的部分。
作为客户端玩网络游戏不需要端口转发。 您连接到 EA 的服务器、Steam 服务器或 PlayStation Network — 这是您的路由器自动处理的出站连接。无需端口转发。
现代游戏和应用程序使用 NAT 穿越技术(STUN、ICE、UDP 打洞)来建立点对点连接,而不需要手动打开端口。诸如此类的事情:
- 玩《使命召唤》、《堡垒之夜》、《火箭联盟》
- 使用 Discord 语音聊天
- Zoom、Teams、Google Meet 上的视频通话
- 在 Netflix、YouTube、Twitch 上串流
全部出站。所有工作都无需任何端口转发。
游戏指南告诉你打开一堆端口“以获得更好的 NAT 类型”?有时对非常特定的平台(Xbox、PlayStation NAT 类型评级)很有帮助,但实际上很少需要玩在线游戏。
UPnP 自动处理许多情况。 许多路由器默认启用通用即插即用功能。当应用程序需要打开端口时,它会直接询问路由器,路由器会自动打开它。 Plex 使用这个,很多游戏都使用它。缺点是安全性较差——应用程序可以在您不知情的情况下打开端口。
如何设置端口转发
确切的 UI 因路由器品牌而异,但过程在任何地方都是相同的:
步骤 1:为您的设备提供静态本地 IP
端口转发指向本地网络上的特定 IP 地址。如果您的设备的 IP 发生变化(DHCP 租约到期并重新分配),转发就会中断。通过以下任一方法修复此问题:
- 在设备本身上设置静态 IP(在网络设置中),或者
- 在路由器的 DHCP 设置中为该设备的 MAC 地址保留 IP
步骤 2:找到路由器的管理面板
通常 192.168.1.1 或 192.168.0.1 在浏览器中。如果不确定,请检查路由器上的标签。
第三步:找到端口转发部分
查找:“端口转发”、“虚拟服务器”、“NAT”或“应用程序和游戏”——因品牌而异。
步骤 4:创建规则
您需要填写:
- 外部端口 (有时称为“服务端口”或“公共端口”):传入流量到达的端口号
- 内部IP:您要转发到的设备的本地IP
- 内部端口 (有时称为“本地端口”):通常与外部端口相同,除非您要重新映射
- 协议:TCP、UDP 或两者 — 检查文档以了解您的应用程序需要什么
第五步:保存并测试
保存规则。端口转发在大多数路由器上立即处于活动状态。
验证您的端口转发是否确实有效
首先确认应用程序正在运行并且可以在 LAN 内访问。然后使用 端口检查器 与您当前的公共 IP 和 外部 TCP 端口。测试时保持服务运行。 TCP 检查器不会验证仅 UDP 服务,例如典型的 WireGuard 端点;与其实际的客户端进行测试。
如果测试失败,请按顺序完成这些检查。当您发现第一个失败的步骤时停止。
1.确认服务正在本地监听
找到主机当前的LAN地址,然后检查监听套接字。将 25565 替换为应用程序的 TCP 端口。
Windows PowerShell:
Get-NetTCPConnection -State Listen -LocalPort 25565
Linux:
sudo ss -lntp 'sport = :25565'
监听器仅绑定到 127.0.0.1 接受本地连接,而不是转发到主机 LAN 地址的普通连接。根据其文档将应用程序配置为侦听预期的 LAN 接口。仅侦听器并不能证明应用程序正常工作。
2. 从其他 LAN 设备连接
使用应用程序的客户端连接到主机当前的私有IP和内部端口。对于来自另一台 Windows 计算机的 TCP 测试:
Test-NetConnection 192.168.1.50 -Port 25565
替换为实际地址和端口。如果 LAN 访问失败,请先修复服务、主机防火墙或网段隔离,然后再更改路由器的转发。仅允许所需的流量;不要禁用整个防火墙。
3.匹配转发规则中的所有字段
确认目的IP、外部端口、内部端口、TCP/UDP协议。首选 DHCP 预留,这样目的地就不会移动。如果外部端口 30000 映射到内部端口 25565,则外部客户端必须连接到 30000。
对于不熟悉的目的地,请使用我们的 设备识别工作流程 将规则匹配到正确的计算机。
4. 检查上游 NAT 层
将路由器的 WAN IPv4 地址与您的进行比较 当前公共 IPv4 地址,使用相同的互联网连接,无需 VPN 或代理。不匹配表明上游转换或不同的流量路径;确实如此 不是 自行证明CGNAT。
WAN 地址 10.0.0.0/8, 172.16.0.0/12, 或 192.168.0.0/16 是私人的。它可能来自您控制的 ISP 网关或 ISP 操作的 NAT。地址位于 100.64.0.0/10 是常用于CGNAT的共享地址空间;与您的 ISP 确认安排。
- 您控制的两个路由器:按照 双NAT指南.
- ISP 运营的上行 NAT:遵循 CGNAT检查指南 并询问公共地址或其他支持的访问方法。
- 匹配WAN和公共IPv4:继续外部测试;仅匹配并不能证明传入流量是允许的。
5. 从真正的外部连接进行测试
在 Wi-Fi 关闭的情况下使用蜂窝数据手机,或使用在线 TCP 检查器。从您自己的 LAN 内部测试您的公共地址可能会失败,因为路由器不支持环回。如果外部访问有效但内部访问无效,请使用 发夹NAT指南.
如果连接重新启动,请再次检查您的公共IP。如果您使用域名,请使用以下命令将其 A 记录与当前公共 IPv4 进行比较 DNS 查找。单独检查其 AAAA 记录:IPv6 连接将遵循 IPv6 路由和防火墙规则,而不是 IPv4 转发。
6. 解释失败而不是打开更多端口
| 结果 | 它意味着什么 | 下一步检查 |
|---|---|---|
| 本地申请失败 | 服务或应用程序配置问题 | 启动服务并确认其绑定地址 |
| 本地工作正常,另一个局域网设备出现故障 | 主机防火墙、隔离或错误目的地 | 检查狭窄的防火墙规则和网段 |
| LAN 工作,外部 TCP 测试被拒绝 | 端点或防火墙主动拒绝连接 | 确认目的地、侦听器、映射和拒绝规则 |
| LAN 工作,外部 TCP 测试超时 | 流量或回复可能会被丢弃或错误路由 | 检查WAN地址、上行NAT、路由器规则、ISP策略 |
| 外部工作正常,LAN 到公共 IP 失败 | 可能缺少 NAT 环回 | 尝试 LAN 地址或拆分 DNS |
| TCP端口打开,应用仍然失败 | TCP可达性只是服务的一部分 | 检查应用程序日志、TLS、身份验证和所需协议 |
请在确认本地服务和路由器映射后,向您的 ISP 询问入站端口限制。超时本身无法识别哪个防火墙或网络丢弃了流量。我们的 TCP 握手指南 解释了拒绝和沉默之间的区别。
关于安全的一句话
端口转发将您设备上的服务直接公开到互联网。这就是重点——但它也伴随着风险。
一些值得遵循的做法:
不要将默认端口用于敏感服务。 在端口 22 上运行 SSH 可保证持续不断的自动登录尝试。将其移至非标准端口可能会减少例行扫描噪音,但这不是访问控制措施,也不会阻止发现。
使用强身份验证。 如果您要转发 SSH 或 RDP,请确保您使用基于密钥的身份验证或强密码,如果只有少数位置需要访问,请考虑将 IP 列入白名单。
定期审核您的转发。 偶尔查看路由器的端口转发列表并删除不再需要的任何内容。指向不再存在的设备的旧转发只是攻击面。
考虑使用 VPN。 如果您需要对家庭网络进行常规远程访问(而不仅仅是一项特定服务),那么设置 WireGuard VPN 服务器比打开多个端口更安全。您公开一个 UDP 端口,其后面的所有内容都会受到保护。
底线
一旦了解了底层逻辑,端口转发就很简单了。默认情况下,您的路由器会丢弃所有未经请求的入站连接 - 端口转发是您说“除了这个”的方式。
对于 NAT 后的直接入站 IPv4 访问,请在本地验证服务,确认映射和上行路径,然后在外部进行测试。对于私人管理,请考虑使用 VPN 或支持的隧道。
设置好,然后 验证它是否真的有效 在你花一个小时调试错误的事情之前。并在开始之前检查 CGNAT 是否是一个问题——再多的路由器配置也无法修复丢失的公共 IP。
技术参考
的 IETF 共享地址空间规范 定义 100.64.0.0/10。微软文档 获取 NetTCPConnection 和 测试网络连接.