FRP (Fast Reverse Proxy)内网穿透
💻 第一步:准备工作
在开始配置前,需要确认以下几点:
阿里云主机(服务端):确保你的阿里云ECS实例有公网IP,且操作系统为Linux(本文以CentOS/Ubuntu为例)。
你的电脑(客户端):
VMware虚拟机网络:关键一步!请将虚拟机的网络模式设置为桥接模式,并为其配置一个静态内网IP(例如
192.168.1.100)。这样可以确保虚拟机的IP地址不会变化,且能与你的电脑互相通信。确认服务:确认你要穿透的虚拟机服务(如SSH的22端口、远程桌面的3389端口或Web服务的8080端口)已经正常启动并监听。
☁️ 第二步:配置阿里云主机(服务端)
在阿里云主机上执行以下操作:
开放安全组端口:登录阿里云控制台,找到你的ECS实例,进入“安全组”配置。在“入方向”规则中,至少添加以下端口的放行策略:
7000:FRP主服务端口,用于客户端连接。7500:FRP仪表盘端口,用于查看连接状态(可选但推荐)。6000(或其他你自定义的端口):用于最终访问虚拟机的端口。这一步很容易忘,务必确认!
下载并配置FRP服务端:
下载:通过SSH连接上你的阿里云主机,下载与你的操作系统匹配的FRP安装包。建议选择最新的稳定版本(如
v0.58.1或更高)。
wget https://github.com/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gz tar -zxvf frp_0.67.0_linux_amd64.tar.gz cd frp_0.67.0_linux_amd64配置 (
frps.toml):编辑服务端配置文件frps.toml,内容如下:bindPort = 7000 auth.token = "这里填写一个你自己设定的复杂密码,例如:MyToken@123" # 客户端连接时需要用到 webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" # 仪表盘登录用户名 webServer.password = "admin" # 仪表盘登录密码启动:在
frp_0.67.0_linux_amd64目录下,运行以下命令启动服务端:nohup ./frps -c frps.toml > frps.log 2>&1 &启动后,你可以访问
http://你的阿里云公网IP:7500,用刚才设置的用户名密码登录,查看服务端运行状态。
🖥️ 第三步:配置本地虚拟机(客户端)
在你的VMware虚拟机中操作,因为虚拟机通常也是Linux系统,步骤与服务端类似。
下载FRP客户端:在虚拟机中,下载与服务端版本完全相同的FRP安装包,并解压。
wget https://github.com/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gz tar -zxvf frp_0.67.0_linux_amd64.tar.gz cd frp_0.67.0_linux_amd64配置客户端 (
frpc.toml):编辑客户端配置文件frpc.toml,这是实现穿透的核心。serverAddr = "你的阿里云公网IP" serverPort = 7000 auth.token = "MyToken@123" # 必须与服务器端的token完全一致 [[proxies]] name = "vm-ssh" # 代理名称,可自定义 type = "tcp" # 协议类型 localIP = "127.0.0.1" # 虚拟机的本地IP,如果服务在本机就写127.0.0.1 localPort = 22 # 虚拟机内服务的端口,比如SSH是22 remotePort = 6000 # 阿里云主机对外开放的端口(需在安全组放行)配置解读:这段配置的意思是,将本机(虚拟机)的22号端口(SSH服务)映射到阿里云主机的6000号端口上。之后,任何人访问阿里云主机的6000端口,就等同于访问你虚拟机的22端口。
启动客户端:在虚拟机中运行客户端。
./frpc -c frpc.toml如果看到
start proxy success之类的日志,说明连接成功。
🚀 第四步:连接测试与高级用法
进行连接测试:
现在,在你的任何一台可以上网的电脑上(比如你的笔记本),尝试通过SSH连接你的虚拟机:
ssh 你的虚拟机用户名@你的阿里云公网IP -p 6000如果能够成功登录,那么恭喜你,内网穿透已经搭建成功!
映射更多服务:
如果你想访问虚拟机的其他端口(如远程桌面3389或一个Web服务8080),只需在客户端的
frpc.toml文件中,按照[[proxies]]的格式,继续添加新的配置块即可。[[proxies]] name = "vm-rdp" type = "tcp" localPort = 3389 remotePort = 63389 # 另一个公网端口,也需要在安全组开放 [[proxies]] name = "vm-web" type = "tcp" localPort = 8080 remotePort = 68080