游客发表

怎么做内网穿透

发帖时间:2026-10-17 04:44:39

半夜两点,做内我盯着路由器上那盏红灯,网穿想死的做内心都有。人在外地出差,网穿公司服务器上的做内数据库突然挂了,运维同事远程连不上,网穿电话那头的做内声音越来越急。那一刻我意识到,网穿所谓内网穿透,做内不是网穿一个技术名词,而是做内救命的绳子。

说白了,网穿内网穿透就是做内让你家里的电脑,能被外网直接访问。网穿正常情况下,做内你家路由器后面那台机器,外网根本摸不着——就像你住在一个没有门牌号的小区,快递员永远找不到你。穿透干的事,就是给你开一扇看得见的窗户。

最土的办法,是端口映射。登录路由器管理页,找到“虚拟服务器”或者“端口转发”,把内网某台机器的IP和端口,映射到路由器的公网IP上。比如你家公网IP是1.2.3.4,内网机器是192.168.1.100,端口3389,你就在路由器里写:外部端口3389,转发到192.168.1.100的3389。完事。外网访问1.2.3.4:3389,就直接怼到你那台机器上。

但这办法有个硬伤——你得有公网IP。国内大多数家庭宽带,运营商给的是大内网IP,你看着路由器WAN口那个地址,其实是个假的,外面根本连不进来。这时候就得换思路。

用现成的穿透工具,比如frp、ngrok、花生壳。原理都一样:你内网机器主动连出去,连到一台有公网IP的服务器上,建立一条长连接。服务器那边再开一个端口,把访问这个端口的数据,原封不动通过这条长连接传回你内网机器。等于你在公网上租了个前台,所有找你的电话都打到前台,前台再转给你。

以frp为例,你有一台云服务器(哪怕最便宜的1核1G都行),装上frps服务端。配置文件里写死一个bindPort=7000,用来接收内网机器连上来。再开一个vhostHTTPPort=8080,用来接收外部HTTP请求。内网那台机器装frpc客户端,配置文件里这么写:
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

意思是:把内网机器的22端口(SSH)映射到云服务器的6000端口。你人在外面,直接ssh -p 6000 用户名@云服务器IP,就连回家了。

注意,frp的客户端要主动连服务器,所以哪怕你家没公网IP,甚至防火墙再严,只要你能正常上网,就能穿透。我那次出差救急,用的就是frp——提前在公司内网一台Windows机器上跑着frpc,云端跑着frps,数据库端口直接映射过去。我人在酒店,用笔记本连上云服务器IP的映射端口,像坐在公司工位前一样操作。

有个坑必须提醒你:frp的配置文件里,remote_port别乱填,有些云服务商的安全组默认只开放少数端口,你得先在云控制台把6000端口放行。否则你本地配得再对,外面也连不进来。我第一次就栽在这上面,折腾了半小时,最后发现是阿里云安全组没开端口。

还有更轻的招儿——如果你只是临时给人看个网页或者API,用ngrok。装好之后一条命令:ngrok http 8080,它会给你一个随机域名,比如xxxx.ngrok.io,外网访问这个域名,就直接打到本地8080端口。不用自己买服务器,免费版够用,就是域名每次重启会变,不适合长期固定服务。

说到底,内网穿透不是玄学,核心就一句话:让内网机器主动外联,借用一台公网中转。选哪种方案,看你手里有什么资源。有公网IP,端口映射最简单;没公网IP,又不差一台云服务器,frp最稳;临时演示,ngrok最快。

那个半夜的危机最后怎么解决的?我花了五分钟检查frpc进程,发现它不知道什么时候被Windows更新重启给干掉了。设了个开机自启,再也没出过岔子。工具再牛,不如你提前把每一个细节都想到。

    热门排行

    友情链接