服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-13 简米科技 4,600 字 11 分钟阅读

内网穿透虚拟机如何实现外网访问,安全配置步骤有哪些

导读内网穿透虚拟机,本质上是通过隧道技术把公网请求安全地转发到虚拟机内部服务,最稳妥的做法是使用frp等反向代理工具,配合强认证和TLS加密, 这篇内容会从方案对比、实操配置、安全加固到成本分析,一步步说清楚,顺便把那些容易踩的坑也挑明,内网穿透虚拟机怎么设置?先分清三种主流思路很多人在虚拟机里搭好服务,比如Web……

内网穿透虚拟机,本质上是通过隧道技术把公网请求安全地转发到虚拟机内部服务,最稳妥的做法是使用frp等反向代理工具,配合强认证和TLS加密。 这篇内容会从方案对比、实操配置、安全加固到成本分析,一步步说清楚,顺便把那些容易踩的坑也挑明。

内网穿透虚拟机怎么设置?先分清三种主流思路

很多人在虚拟机里搭好服务,比如Web站点、SSH、数据库,却只能在自己家里访问,想从外网连进来,得先明白一个事实:大多数家庭宽带没有公网IP,运营商分配的是运营商级NAT地址,这种情况下,传统的路由器端口映射根本不管用,必须借助内网穿透。

端口映射,前提是运营商给你公网IP

如果你打电话给运营商,要到了动态公网IP,那可以在路由器上做虚拟服务器映射,把公网端口转发到虚拟机的IP和端口,这种方式最直接,但有两个痛点:一是公网IP会变化,需要配合DDNS;二是暴露端口后,扫描器会24小时盯着你,安全配置稍有不慎就容易出事。

反向代理隧道,frp是主力

frp(Fast Reverse Proxy)是目前使用最广泛的工具,它的核心逻辑是:你有一台公网云服务器作为跳板,虚拟机主动连接云服务器,云服务器再帮你在公网上暴露一个端口,这样虚拟机不需要公网IP,也不需要在路由器上做任何配置,所有流量都封装在一条安全连接里,可控性很强。

异地组网,ZeroTier和Tailscale更省心

这类方案把虚拟机和你自己的电脑放进同一个虚拟局域网,就像人在外地却插在同一台交换机上,你不需要单独买云服务器,注册账号、装客户端就能互通,它适合个人远程办公、访问家里NAS,但如果要把服务开放给陌生用户,就不太合适,因为对方也得装客户端或者通过额外网关转换。

方案 是否需要公网服务器 上手难度 适合场景
路由器端口映射 是(有公网IP) 低 单一服务,技术老手
frp反向代理 是(云服务器) 中 需对外提供服务,可定制
ZeroTier/Tailscale 否 低 个人多设备远程访问

我的建议是:如果要让“外面的人”访问,比如同事、客户,选frp;如果只是自己手机、笔记本访问虚拟机,ZeroTier或Tailscale就足够了。

虚拟机frp内网穿透配置教程:从下载到联调

这里以Ubuntu虚拟机 + Windows云服务器为例,实际操作步骤是一样的,你只需要准备一台有公网IP的云服务器,最低配置就行,比如1核1G。

第一步:分别下载frp服务端和客户端

内网穿透虚拟机如何实现外网访问,安全配置步骤有哪些

frp是同一个压缩包,里面的frps是服务端,frpc是客户端,下载时注意选对系统架构,云服务器通常是Linux x64,虚拟机也可能是Linux,在GitHub的frp Releases页面找到对应版本,复制链接后,在服务器和虚拟机上分别执行:

wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz
tar -zxvf frp_0.61.0_linux_amd64.tar.gz
cd frp_0.61.0_linux_amd64

如果访问GitHub慢,可以找国内镜像源。

第二步:配置服务端,改frps.toml

frp从0.52版本开始,配置文件后缀是.toml,编辑frps.toml,写入基础内容:

bindPort = 7000
auth.token = "这里改成你的强密码,至少16位"
# 可以限制客户端能使用哪些端口,防止被乱用
allowPorts = [
  { start = 10000, end = 10200 }
]

保存后启动服务端:

./frps -c frps.toml

记得在云服务器的安全组里放行TCP 7000端口,以及你后面要用的10000-10200端口区间,这一步最容易漏,很多人排错半天发现是云防火墙挡了。

第三步:配置客户端,改frpc.toml

把整个frp目录复制到虚拟机上,或者单独下载客户端文件,编辑frpc.toml:

serverAddr = "你的云服务器IP"
serverPort = 7000
auth.token = "和上面一样的强密码"
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 10000

这里的意思是:虚拟机的SSH在22端口,通过frp映射到云服务器的10000端口,外部用户访问云服务器IP:10000,就相当于访问虚拟机的22端口,启动客户端:

./frpc -c frpc.toml

看到提示“start proxy success”,说明隧道已经建立。

第四步:验证联调

在外部电脑上执行:

ssh -p 10000 用户名@云服务器IP

如果登录成功,内网穿透已经生效,如果失败,先用云服务器本机测试frps是否正常,再检查客户端日志和防火墙规则。

内网穿透安全吗?默认配置下有哪些坑

这是被问得最多的问题。从根本上说,内网穿透只是把一个内部端口放到了公网上,安全性取决于你怎么配置。 默认情况下,frp只做了基本传输,并没有强制加密,端口彻底暴露在公网上,扫描器每秒都可能来探测。

坑一:token太简单,被当成跳板

很多人图省事,token写成admin或者123456,攻击者可以暴力破解后,通过frp访问你的内网服务,甚至利用服务器转发流量。强密码是最便宜的安全设备。

坑二:服务端端口全部开放,扩大了攻击面

内网穿透虚拟机如何实现外网访问,安全配置步骤有哪些

frps默认允许客户端映射任意端口,如果客户端设备被入侵,攻击者就能开辟任意端口通道,设置allowPorts白名单,把可映射端口限制在一个小范围内。

坑三:明文传输,密码被截获

frp默认不加密隧道,在不可信网络上,数据包可能被中间人抓取,在frps.toml和frpc.toml中同时启用TLS:

transport.tls.enable = true

这样流量会经过TLS加密,嗅探者看到的只是乱码。

更稳妥的三条防线

  • 将frpc的源IP限制为云服务器IP,用防火墙实现。
  • 在虚拟机上,只允许来自frp隧道的连接访问敏感服务,例如通过iptables只放行来源端口7000的包。
  • 对暴露的Web服务再加一层身份认证,比如Nginx的Basic Auth或反代后的登录页。

行业共识认为,内网穿透的安全风险并非工具本身,而是暴露面的失控,你越清楚自己开了哪些端口、为什么开,风险就越可控。

内网穿透软件哪个好?自建与托管方案对比

除了frp,还有nps、ngrok、ZeroTier、Tailscale等日常被提到的工具,选哪款,关键看你手里的牌。

  • frp:配置灵活,支持TCP、UDP、HTTP、HTTPS,国内社区活跃,遇到问题容易搜到答案,需要自建云服务器。
  • nps:自带Web管理界面,可视化配置,对新手友好,但项目维护频率不如frp,功能丰富度稍弱。
  • ngrok:有官方托管服务,下载客户端后一条命令就能把本地服务暴露到公网,免费版有随机域名限制,还伴随流量限制。
  • ZeroTier:异地组网,建立虚拟局域网,不暴露多余端口,免费版支持25台设备,个人完全够用。
  • Tailscale:基于WireGuard协议,连接更稳定,官方帮你管理密钥,同样不需要云服务器,但配置了企业级SSO,个人用起来有点重。

业内专家指出,没有“最好”的内网穿透软件,只有“最合适”的方案。如果只是临时演示,ngrok最省事;如果长期固定服务,frp最可控;如果是自己设备的远程互联,Tailscale体验最好。

内网穿透虚拟机如何实现外网访问,安全配置步骤有哪些

工具 类型 需要云服务器 对外提供服务 管理界面
frp 自建反向代理 是 适合 无,需改配置
nps 自建反向代理 是 适合 有Web面板
ngrok 托管服务 否 适合 官方Dashboard
ZeroTier 异地组网 否 不适合直接暴露 有Web控制台
Tailscale 异地组网 否 不适合直接暴露 有Web控制台

内网穿透服务器价格:自建成本与托管套餐怎么选

价格是个永恒的话题,很多人在想,究竟是花时间自建,还是直接买现成的服务。

自建成本拆解

自建frp只需要一台轻量云服务器,国内主流厂商的轻量服务器,每年价格大约在几百元区间,具体看配置和带宽,2核2G、带宽3Mbps左右的机器,足够支撑几十个内网穿透连接,如果你已有现成的云服务器,那额外成本几乎为零,只需要在安全组里多开几个端口。

托管服务价格范围

ngrok免费版适合体验,付费版按连接数和带宽计费,个人场景月付大概几十元到上百元不等,国内的花生壳、神卓互联等也有类似服务,免费版限流量,付费版按年收费,相对灵活,但要注意,托管服务的带宽峰值通常不如自建云服务器稳定,而且域名是对方提供的,被限制时有换域名的麻烦。

怎么选更划算

多年长期使用,自建是更优解,一次性配置好,后续只需维护token和更新版本,短期项目或偶尔演示,托管服务按需付费更省钱,还有一点容易被忽略:自建时你自己的云服务器还顺带解决了备案问题,如果穿透的是Web服务且域名解析到国内服务器,就必须要备案;如果穿透的是非HTTP协议,不涉及域名,则不需要。

内网穿透虚拟机并不复杂,选对工具是第一步,安全配置才是决定你能否睡得安稳的关键。 先想清楚自己的场景,再照着配置走一遍,大概率一两小时就能跑通。

关于内网穿透虚拟机外网访问的3个高频问题

虚拟机里用frp穿透后,物理宿主机会不会暴露?

不会,frpc运行在虚拟机内部,它主动向外发起连接,宿主机不需要开放任何入站端口,只要不在宿主机上运行frpc,外部流量就无法直接触达宿主机。

内网穿透的域名解析怎么处理?

使用frp时,可以在frps.toml中绑定自定义域名,比如映射HTTP服务时,把子域名解析到云服务器的公网IP,然后在frpc配置里设好customDomains,访问这个域名就能到达虚拟机上的Web应用,如果使用ZeroTier,则直接用虚拟局域网IP访问,不需要解析,域名解析的核心原则是:域名指向云服务器的IP,而不是虚拟机。

穿透多个服务时要注意什么?

每个服务在frpc中配置一个proxies条目,每个代理对应一个remotePort,注意这些端口在云服务器上不能冲突,同时要在allowPorts范围内,如果穿透的服务数量超过十个,考虑用域名代理代替端口映射,这样外部访问时只需要开放80和443端口,管理和安全度都更高。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱