最近更新
要想在互联网上访问本地文件,就需要通过内网穿透技术,将本地服务暴露到公网中,此时内网穿透工具就显得格外重要。
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 的运行日志。