最近更新
要想在互联网上访问本地文件,就需要通过内网穿透技术,将本地服务暴露到公网中,此时内网穿透工具就显得格外重要。
FRP(Fast Reverse Proxy)是一款优秀的内网穿透工具,能够帮助我们轻松地搭建内网穿透服务,实现本地文件的外网访问, 支持 TCP、UDP、HTTP、HTTPS 等多种协议。
部署过程包含两部分:
假设:
your_server_public_ip
。127.0.0.1:8080
)。步骤一:在公网服务器上部署 FRP 服务器端 (frps)
(通常服务器是 Linux 系统,这里以 Linux 为例。如果你需要在 Windows 服务器上部署 frps,过程类似,只是文件名和运行方式略有不同)
linux_amd64
) 下载最新的 frp_..._linux_amd64.tar.gz
文件。wget
下载 (版本号可能需要更新):
wget https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz
tar -zxvf frp_0.58.1_linux_amd64.tar.gz
cd frp_0.58.1_linux_amd64
。frps.ini
文件(如果不存在则创建,但通常解压后会有一个 frps.toml
或 frps.ini
示例,新版本推荐 frps.toml
,这里用 .ini
举例,语法类似)。[common]
# frps 服务端监听的端口,用于接收 frpc 客户端的连接
bind_port = 7000
# 设置一个身份验证令牌,frpc 连接时需要提供此令牌
token = YourSecretToken123
# (可选) Dashboard 仪表盘,方便查看 frp 状态
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin_password
bind_port
: frps 和 frpc 之间通信的端口,必须在服务器防火墙上允许外部访问。token
: 用于身份验证,防止未经授权的 frpc 连接。请务必修改为你自己的复杂密码。dashboard_port
: 如果启用,这个端口也需要在服务器防火墙上放行,但建议只允许特定 IP 访问或配置反向代理增加安全性。http://web.yourdomain.com
)访问 HTTP 服务,还需要配置 vhost_http_port = 80
和/或 vhost_https_port = 443
,并在防火墙放行这些端口。ufw
, firewalld
) 以及云服务商的安全组规则允许 入站 流量访问你配置的 bind_port
(例如 7000) 和 dashboard_port
(例如 7500)。vhost_http_port
或 vhost_https_port
,也需要放行这些端口(通常是 80 和 443)。sudo ufw allow 7000/tcp
sudo ufw allow 7500/tcp # 如果启用了 Dashboard
# sudo ufw allow 80/tcp # 如果使用 vhost_http_port
# sudo ufw allow 443/tcp # 如果使用 vhost_https_port
sudo ufw enable
sudo ufw status
./frps -c ./frps.ini
按 Ctrl+C
停止。nohup ./frps -c ./frps.ini > frps.log 2>&1 &
这会在后台运行 frps
,并将日志输出到 frps.log
文件。步骤二:在本地 Windows 机器上部署 FRP 客户端 (frpc)
windows_amd64
) 下载 frp_..._windows_amd64.zip
文件。C:\frp
)解压下载的 .zip
文件。你会看到 frpc.exe
和 frpc.ini
(或 frpc.toml
) 等文件。frpc.ini
文件。[common]
# frps 服务器的公网 IP 地址
server_addr = your_server_public_ip
# frps 服务器监听的端口 (必须与 frps.ini 中的 bind_port 一致)
server_port = 7000
# frps 服务器设置的身份验证令牌 (必须与 frps.ini 中的 token 一致)
token = YourSecretToken123
# --- 定义第一个要穿透的服务:本地 Web 服务 ---
[web_service_http]
# 类型:tcp, udp, http, https, stcp, xtcp 等
type = tcp
# 本地服务的 IP 地址 (通常是 127.0.0.1)
local_ip = 127.0.0.1
# 本地服务的端口号
local_port = 8080
# 在 frps 服务器上监听的端口,外部通过这个端口访问你的本地服务
# 这个端口必须是你的 frps 服务器上未被占用的端口
remote_port = 8081
# (可选) 如果 frps 配置了 subdomain_host,可以用 http 类型和 subdomain
# type = http
# local_port = 8080
# subdomain = mylocalweb # 访问地址将是 http://mylocalweb.yourdomain.com (需配置 DNS)
# --- 定义第二个要穿透的服务:Windows 远程桌面 (RDP) ---
[windows_rdp]
type = tcp
local_ip = 127.0.0.1
# RDP 默认端口是 3389
local_port = 3389
# 在 frps 服务器上为 RDP 分配一个端口
remote_port = 7001
server_addr
: 你的公网服务器 IP。server_port
: 必须和服务器 frps.ini
中的 bind_port
相同。token
: 必须和服务器 frps.ini
中的 token
相同。[<service_name>]
: 每个方括号定义一个要穿透的服务,名称自定义(如 web_service_http
, windows_rdp
)。type
: 服务的协议类型。tcp
和 udp
是最通用的,会直接转发端口。http
和 https
通常用于 Web 服务,可以配合 subdomain
或 custom_domains
使用域名访问。local_ip
, local_port
: 你本地服务的监听地址和端口。remote_port
: 公网服务器上用于接收外部访问的端口。外部用户将通过 your_server_public_ip:remote_port
来访问你的本地服务。确保这个端口在服务器防火墙上也是放行的!subdomain
/ custom_domains
: 如果使用 http
或 https
类型,并且服务器配置了 vhost_http_port
/vhost_https_port
和 subdomain_host
,可以用这些参数通过域名访问,而不需要指定 remote_port
。这需要你将域名或子域名解析到你的服务器 IP。frpc.exe
访问网络,选择“允许”。frpc.exe
访问(通常 127.0.0.1
之间的访问是被允许的)。cd
命令切换到你存放 frpc.exe
和 frpc.ini
的目录。例如:
cd C:\frp
.\frpc.exe -c .\frpc.ini
观察输出。如果看到类似 "login to server success" 和 "start proxy success" 的信息,表示连接和代理设置成功。保持这个窗口打开,服务就在运行中。关闭窗口则停止 frpc。nssm.exe
。nssm install frpc
...
按钮,选择你的 frpc.exe
文件路径 (例如 C:\frp\frpc.exe
)。frpc.exe
所在的目录 (例如 C:\frp
)。-c frpc.ini
(注意 frpc.ini
是相对于 Startup directory 的路径,如果它们在同一目录,这样写即可)。I/O
标签页,可以设置日志文件路径,方便排查问题。Install service
按钮。nssm start frpc
或在 Windows 服务管理器 (services.msc
) 中找到名为 frpc
的服务,手动启动它,并可以设置其启动类型为“自动”。nssm start frpc
, nssm stop frpc
, nssm restart frpc
, nssm status frpc
, nssm edit frpc
, nssm remove frpc
。步骤三:测试访问
frpc.ini
配置进行访问:http://your_server_public_ip:8081
(使用你在 remote_port
配置的端口)。你应该能看到你本地 127.0.0.1:8080
上的 Web 服务内容。mstsc.exe
),输入 your_server_public_ip:7001
(使用你在 remote_port
配置的端口),然后尝试连接。你应该会看到 Windows 登录界面。mylocalweb.yourdomain.com
)已经通过 DNS 解析指向了 your_server_public_ip
。然后直接在浏览器中访问 http://mylocalweb.yourdomain.com
。安全注意事项:
frps.ini
和 frpc.ini
中的 token
一定要设置复杂且保密。remote_port
,只开放你确实需要从公网访问的那些。如果可能,限制访问 remote_port
的源 IP 地址。type=https
, plugin=https2http
等方式,或者在本地服务就启用 HTTPS 并使用 type=https
或 type=tcp
转发。type = stcp
。这需要在访问端也运行一个 frpc 客户端,提供更高的安全性,因为它不会在服务器上直接暴露端口。按照以上步骤操作,你应该就能成功地在 Windows 上使用 FRP 将你的本地服务穿透到公网了。如果在过程中遇到问题,请仔细检查配置文件、防火墙设置以及 frps 和 frpc 的运行日志。