内网穿透是什么?为什么出门了就连不上家里的电脑?

IT那些事2026-10-02发布 WarpEdit
660 0 0

在家连着 Wi-Fi,能打开电脑里的相册网页;出门换成手机流量,同一个地址却打不开。常见原因是:那个地址只在家里的网络中使用,手机离开后,没有可用的路径连回去。内网穿透就是一类为外部设备建立访问内网服务路径的办法,中转隧道、点对点连接等方案,解决问题的方式并不相同。

手绘家中电脑与外出手机,通过连接通道访问家庭服务

家里的地址,出了门还能用吗

假设相册网页运行在家中电脑上,同一个家庭网络里的手机可以打开 192.168.1.20:8080。这个地址只用于举例:192.168.1.20 指向电脑,8080 是端口号,用来区分这台电脑上的网络服务。

这属于私有 IPv4 地址。别人的家里或办公室也可以使用 192.168.1.20,各自在自己的网络内,不会互相冲突[1]。所以,公网不能仅凭它,判断你要找的是哪一家的哪台电脑。

手机切换到流量后,就离开了这个局域网,也就是一定范围内设备共同使用的网络。除非已经通过 VPN 等方式接入家里的网络,否则直接输入原来的私有地址,不能据此找到家里的电脑。地址未必变了,变的是你所在的网络和可用的访问路径。

同一家庭Wi-Fi可访问相册私有地址,手机换流量后不能凭原地址定位家中电脑的对照示意
这里假设相册服务在家中网络已经可用,地址和端口用于举例。

这里说的“连接电脑”,实际还要落到一个服务上。相册网页、文件共享、远程桌面各有自己的服务程序和访问方式;找到电脑的网络地址,不代表这些功能都会自动可用。

能上网,为什么外面连不进来

在常见的家庭 IPv4 网络里,多台设备通过路由器上网。路由器通常使用 NAT(网络地址转换):设备向外发起连接时,它改写相关地址和端口,保留对应关系,把回来的数据交给正确的设备[2][3]。

例如,家里的电脑主动打开一个网站,路由器知道这次访问来自哪台设备,可以把网站的回复送回去。可你在外面主动来找家里的相册网页,是一条新的入站连接。即使知道对外的地址,也还需要相应的转发规则,说明请求该交给哪台电脑、哪个端口;防火墙也必须允许这类访问。能接到自己发出的请求的回复,不等于能接收任意外部设备发起的新连接。

有些宽带还隔着运营商级 NAT,常缩写为 CGN 或 CGNAT:多个用户共享公网 IPv4 地址,运营商再做一层地址转换[4]。家中路由器的端口映射只管自己这一层,没有替运营商设置转发规则;仅靠家中的设置,不能让外部请求一路进来。

也有能直接连接的情况。设备有可路由的公网 IPv6 地址[5],访问两端都支持 IPv6,路由、防火墙和服务配置也允许时,就可以直连。前面的私有 IPv4 场景,不能覆盖所有家庭网络。

中转隧道怎样把请求送回家

一种常见办法,是让家里的客户端先主动连接一台外部能访问的中转服务器。家中网络允许这条出站连接时,客户端就能与服务器建立通信通道。外部设备随后访问服务器提供的入口,服务器再通过通道,把请求送到家里的相册服务,服务的响应沿这条路径返回。

这类“隧道”把内网服务的数据放到已经建立的连接里传送。家中电脑仍然可以使用原来的私有地址,外部访问者用的是中转入口;并不需要把 192.168.1.20 变成一个全世界都能直接访问的地址。

frp 的中转方式就是这样的分工:服务端部署在有公网地址的机器上,内网客户端连接它,再按配置将外部入口的流量转发给本地服务[6][7]。frp 也支持其他模式,这里讲的是其中的中转路径。

家中客户端先连接公网中转服务器,外部设备访问中转入口,请求再经通道送给家中相册服务的流程示意
一种中转隧道的简化过程;点对点方案的数据路径可能不同。

回到相册例子,你在外面需要访问的是这个外部入口,而不是照搬家里的私有地址。入口对应哪个服务、允许谁访问,要由隧道和服务的配置决定。中转服务器的可用性和带宽也会影响体验;多一段转发路径,不会自动让家里的上传速度变快。

端口映射、点对点有什么不同

“内网穿透”在日常交流中涵盖多种连接办法,不能只看到这个名字就认定数据一定经过中转。几种常见方式的差别,主要在于外部入口在哪里,以及数据怎样到达家中服务:

连接方式 数据怎样到家里 主要前提或限制
端口映射 外部请求到达家庭网络的公网入口,路由器按规则转给内网服务 公网入口须可达,你能配置相关转发和防火墙规则;运营商 CGN 等上游限制仍需解决
中转隧道 家中客户端先连接公网服务器,外部请求由服务器转发 家中客户端能连接服务器;入口和转发服务须配置正确,依赖中转路径
点对点连接 两端协调并尝试建立直接的数据通道 两端都要配合,能否直连取决于网络和 NAT 行为;有些方案会在直连失败时改用中继

私有组网工具可能让两端主动发包,尝试建立直接的数据路径,这常被叫作“打洞”。能否成功,取决于两端网络和 NAT 行为。Tailscale 就会尝试直连,不能直连时可改用中继[8];装了组网工具,不代表数据一定直连。

这里说的远程接入 VPN,是让外部设备通过受控通道接入一个私有网络,具体工具底层仍可能使用直连或中继。它和“中转服务器”不是同一层面的分类。仅给自己访问的服务,可以用私有通道限制访问范围;给别人临时访问的网页,则可能使用外部分享入口,仍要另外配置访问控制。

DDNS(动态域名解析)解决的是地址变化:公网地址变了,更新域名指向,就不用反复记新地址[9]。它不会建立转发规则、打通运营商 NAT 或放行防火墙。域名能找到入口,入口之后的路仍要能通。

通道通了,为什么还是打不开

连接通道解决的是数据能否送达,服务能否工作、你是否有访问权限,还要分开看:

  • 服务是否在线: 电脑需要开机、联网,相册程序或远程桌面服务需要运行。电脑关机或休眠后,原有通道无法替它继续提供服务;唤醒设备是另一项能力。
  • 是否指向正确的服务: 入口需要对应正确的设备和端口,相关防火墙规则要允许。把请求送到电脑,并不等于送到了相册程序;服务没开、端口不对,都可能导致失败。
  • 谁被允许访问: 访问者需要通过相应的身份验证并获得权限。难猜的地址不能替代登录验证;是否加密、是否对外公开,也要按具体方案确认。

Microsoft 的远程桌面文档也要求电脑开机联网、服务开启、账号获准和防火墙放行[10]。这些条件不会随着更换穿透工具自动满足。文档还提醒,直接把远程桌面端口暴露到互联网存在风险,建议优先使用 VPN[9]。

排查“出门就打不开”,起点是同一个服务在家中 Wi-Fi 下是否可用。家里也打不开,就检查电脑和服务;只有外面失败,再确认是否仍在用私有地址,以及外部入口或私有通道是否建立。路径通了还不能用,则继续查服务指向和访问权限。问题在哪一层,决定了该改哪一处。

参考资料

  • [1] RFC 1918 私有地址规则:https://www.rfc-editor.org/rfc/rfc1918.html
  • [2] OPNsense NAT 文档:https://docs.opnsense.org/manual/nat.html
  • [3] Tailscale 的 NAT 原理解说:https://tailscale.com/blog/how-nat-traversal-works
  • [4] RFC 6888 的 CGN 说明:https://datatracker.ietf.org/doc/html/rfc6888
  • [5] Netgate 的公私地址说明:https://docs.netgate.com/pfsense/en/latest/network/addresses.html
  • [6] frp 官方概述:https://gofrp.org/en/docs/overview/
  • [7] 客户端与服务端示例:https://gofrp.org/en/docs/examples/ssh/
  • [8] Tailscale 设备连接方式:https://tailscale.com/docs/reference/device-connectivity
  • [9] Microsoft 的外网访问与 DDNS 说明:https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/remotepc/remote-desktop-allow-outside-access
  • [10] 远程桌面启用条件:https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/remotepc/remote-desktop-allow-access
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...