新闻资讯

frp 内网穿透反向代理实现 windows 远程桌面连接

内网穿透 | 2025-02-26

在网络环境中,当我们的 Windows 设备处于内网且没有公网 IP,却又需要实现远程桌面连接时,FRP(Fast Reverse Proxy)内网穿透反向代理技术就能派上用场。FRP 是一个高性能的反向代理应用,通过它可以将内网的 Windows 远程桌面服务暴露到公网,从而实现远程访问。下面详细介绍如何使用 FRP 实现这一目标。

环境准备

1、公网服务器:需要一台拥有公网 IP 的服务器来部署 FRP 服务端,服务器的操作系统可以是 Linux(如 Ubuntu、CentOS 等)或 Windows Server。这里以 Ubuntu 系统为例进行讲解。
2、内网 Windows 设备:即需要被远程访问的目标设备,确保 Windows 系统已开启远程桌面功能。在 Windows 设备上,按下 Win+I 键打开设置,选择 “系统”,点击 “远程桌面”,将 “启用远程桌面” 开关切换至 “开” 的状态。同时,在 “远程桌面” 设置页面中,点击 “高级设置”,添加允许远程连接的用户账号。

安装与配置 FRP 服务端(以 Ubuntu 系统为例)

1、下载 FRP:登录到公网服务器,切换到指定目录,比如/opt目录,使用wget命令下载 FRP 安装包。例如,下载 v0.60.0 版本的 FRP:
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz
2、解压与重命名:下载完成后,执行解压命令:
sudo tar -zxvf frp_0.60.0_linux_amd64.tar.gz
解压后,对 FRP 应用进行重命名,方便后续操作:
mv frp_0.60.0_linux_amd64 frp_0.60.0
3、配置服务端文件:进入 FRP 服务端目录,编辑frps.toml配置文件。主要配置项如下:
[common]
bind_addr = "0.0.0.0" # 绑定地址,一般为0.0.0.0
bind_port = 7000 # 服务端监听端口,可自行设定,需确保未被占用
auth.method = "token" # 认证方式,这里使用token
auth.token = "your_secret_token" # 自定义的认证令牌,用于客户端和服务端通信验证
dashboard_addr = "0.0.0.0" # 管理面板地址
dashboard_port = 7500 # 管理面板端口,可自行设定
dashboard_user = "admin" # 管理面板用户名
dashboard_pwd = "your_password" # 管理面板密码
4、配置 systemd 管理 FRP 服务端:为了方便管理 FRP 服务端的启动、停止和开机自启,使用 systemd 进行配置。执行以下命令创建frps.service文件:
sudo vim /etc/systemd/system/frps.service
在文件中写入以下内容:
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
ExecStart = /opt/frp_0.60.0/frps -c /opt/frp_0.60.0/frps.toml # 根据实际路径修改

[Install]
WantedBy = multi-user.target
5、启动 FRP 服务端:完成上述配置后,执行以下命令启用开机自启并启动 FRP 服务端:
sudo systemctl enable frps && sudo systemctl start frps
可以使用命令sudo systemctl status frps检查服务是否正常运行。

安装与配置 FRP 客户端(Windows 设备)

1、下载 FRP 客户端:在需要被远程访问的内网 Windows 设备上,从 FRP 官方 GitHub 仓库下载对应版本的 FRP 客户端压缩包。
2、解压客户端文件:解压下载的压缩包,得到frpc.exe和frpc.ini等文件。
3、配置客户端文件:编辑frpc.ini文件,配置内容如下:
[common]
server_addr = your_public_server_ip # 公网服务器的IP地址
server_port = 7000 # 服务端监听端口,需与服务端配置一致
auth.method = "token"
auth.token = "your_secret_token" # 与服务端配置的认证令牌一致

[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 # Windows远程桌面默认端口
remote_port = 103389 # 公网访问的端口,可自行设定,需确保未被占用,且在公网服务器防火墙上放行
4、启动 FRP 客户端:打开命令提示符,切换到 FRP 客户端所在目录,执行命令frpc -c frpc.ini启动客户端。也可以将 FRP 客户端配置为 Windows 服务,实现开机自启。以 Windows Server 2019 为例,使用nssm工具(可从官网下载)进行配置:
(1)下载并解压nssm工具,将nssm.exe文件复制到 FRP 客户端所在目录。
(2)以管理员身份打开命令提示符,执行命令nssm install frpc,在弹出的窗口中,设置应用程序路径为frpc.exe的路径,启动参数为-c frpc.ini,然后点击 “Install service” 完成服务安装。之后,就可以通过 Windows 服务管理界面来管理 FRP 客户端服务。

远程连接测试

完成 FRP 服务端和客户端的配置并启动后,在外网设备上,打开远程桌面连接,输入公网服务器的 IP 地址和在 FRP 客户端配置中设置的remote_port(如 103389),点击 “连接”,然后输入内网 Windows 设备上允许远程连接的用户账号和密码,即可尝试连接到内网的 Windows 设备。


拓展阅读

1、FRP 除了实现远程桌面连接,还能用于哪些场景:FRP 还可用于远程调试 Web 应用、暴露内网 API 服务、远程访问 NAS 设备等场景,通过灵活配置不同的协议和端口映射,满足多种远程访问需求。
2、如何保障 FRP 内网穿透的安全性:设置高强度的认证令牌,定期更换;合理配置防火墙规则,只允许必要的 IP 地址访问;启用 TLS 加密传输,确保数据在传输过程中的安全性。
3、在 Windows 系统中如何查看端口占用情况:在命令提示符中使用netstat -ano命令查看所有网络连接和端口占用情况,通过findstr命令可以筛选出特定端口的占用信息,如netstat -ano | findstr 3389可查看 3389 端口的占用情况。