使用 FRP 反向代理实现 Windows 远程连接

本文约 1839 字,包含 5 张图片,阅读时间约 5 分钟

QR Code

在手机上查看此页面

互联网普及率的日渐攀升与 IPv4 资源的持续减少,现在大部分家庭宽带都不会分配公网 IP ,这使一些网络应用的实现多了些困难,像个人的 NAS 和一些智能家居设备。对于分配公网 IP ,各地运营商的态度也不同,有的去找客服反应可以要一个公网 IP ,还有些则直接告诉你每年多少钱。这些情况在 IPv6 普及之前都不会改善。

前几天看到了人民网的一条新闻:阿里云联合三大运营商全面提供IPv6服务。虽然现在网上有部分人对中国大力发展 IPv6 的目的持怀疑态度,认为是出于监管的目的,但我对此还是很支持的。首先我是很爱国的,按现在的话说叫“小粉红”,这是精神层面的原因。其次是网络安全问题,这是本届政府的战略思想, IPv4 的发展我们没赶上,资源都在美国佬手中,我们是受制于人的,虽说没像中兴一样。还有就是互联网发展的势头太猛,中国是互联网大国,互联网+的国策一直推进,各种物联网设备激增,像工业数据采集和智能家居设备,这都需要大量的 IP 地址。

人民网北京6月21日电(记者孟哲)IPv6作为下一代互联网的技术基础,对物联网、车联网、人工智能等新兴产业的发展有着重大影响。昨日,阿里云宣布联合三大运营商全面对外提供IPv6服务,希望能在2025年前帮助中国互联网真正实现“IPv6 Only”。

阿里云联合三大运营商全面提供IPv6服务

什么是 FRP

FRP (Fast Reverse Proxy) 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP , UDP , HTTP , HTTPS 协议。下载https://github.com/fatedier/frp/releases

(说到这里,我的“互联网传输助手”也是一款反向代理应用,用于在互联网内安装此应用的设备间传输数据。配合“互联网传输助手-服务”程序,未分配公网 IP 的设备也可收发数据。“互联网传输助手-服务”程序我暂时没有发布,因为有时会出现传输数据丢失的情况,不知道是网络的原因还是其他,待我解决了再说。😂)

准备工作

1. 一台拥有公网 IP 的设备(云服务器、VPS ……)

这就是一台反向代理服务器,作为外网设备访问内网设备的一座桥梁。

2. 域名(可选)

如果你不想输入一大串 IP 地址的话,买个好记的域名吧。

安装 FRP

这里反向代理服务器使用的是阿里云的云服务器,安装 Windows Server 2016 Datacenter 。内网要远程连接的设备安装的是 Windows 10 1803 。如果使用的是 Linux 系统的服务器,只是 FRP 的安装过程不同,可以百度一下其他 FRP 的文章进行参考。考虑到如果只是用服务器进行反向代理的话,没有必要购买 Windows 服务器,因为相比于 Linux ,运行 Windows 的配置要高一些,价格也更贵一些。

下载链接在文章的开头已经给出,根据服务器的系统和处理器类型选择,这里选择 frp_0.20.0_windows_amd64.zip ,下载完成后解压。

服务器(frps)

  1. 首先要配置一下入方向的安全组规则,需要穿透的端口得放行,我这里直接开放了一个端口范围,一劳永逸,各位按需开放即可。
  2. 接下来配置一下设置,解压后有两个配置文件,一个是 frps.ini 另一个是 frps_full.ini 。 frps_full.ini 是全配置,里面所有的配置都有,玩法很多,各位自行研究,这里只挑几个有用的。将下面配置代码复制到 frps.ini 后保存。控制台可以输入“服务器IP:端口号”进行访问,如“1.2.3.4:7500”。
    [common]
    bind_port = 7000 ;要绑定的端口
    
    dashboard_user = admin ;控制台的用户名
    dashboard_pwd = password ;控制台的密码
    dashboard_port = 7500 ;控制台的端口
    
  3. 然后把配置文件 frps.ini 与程序 frps.exe 复制到服务器。
  4. 最后使用 cmd 或 power shell 切换到相应目录运行即可
    frps -c frps.ini
    
    power shell 要使用
    .\frps.exe -c frps.ini
    

内网设备(frpc)

  1. 首先配置一下 frpc.ini
    [common]
    server_addr = 1.2.3.4 ;服务器的 IP
    server_port = 7000 ;服务器上设置的服务绑定端口
    
    [RDP] ;这个是反向代理的名称,可以随意设置
    type = tcp ;RDP 是 TCP 协议的
    local_ip = 127.0.0.1 ;本机 IP
    local_port = 3389 ;远程桌面的默认端口
    remote_port = 7001 ;外网访问的端口
    
  2. 然后把配置文件 frpc.ini 与程序 frpc.exe 复制到内网设备。
  3. 最后使用 cmd 或 power shell 切换到相应目录运行即可
    frpc -c frpc.ini
    
    power shell 要使用
    .\frpc.exe -c frpc.ini
    

内网设备开启远程桌面

右击“此电脑”,选择“系统”——“远程设置”——“允许远程连接至此电脑”

运行远程桌面

在小娜或运行中输入“mstsc”或“远程桌面连接”,“计算机”中输入“服务器 IP:外网访问端口”,如“1.2.3.4:7001”。不出意外的话,是可以从外网访问到内网设备的。

绑定域名

  1. 这里域名的服务商是阿里云(万网),在域名控制台中对相应的域名选择“解析”。跳转到云解析界面后点击“添加记录”。我们需要添加一条类型为 A 的记录。记录值为服务器 IP。
  2. 配置 frpc.ini 。加一行 custom_domains = xxx.yourdomain.xxx 。如
    [RDP] ;这个是反向代理的名称,可以随意设置
    type = tcp ;RDP 是 TCP 协议的
    local_ip = 127.0.0.1 ;本机 IP
    local_port = 3389 ;远程桌面的默认端口
    remote_port = 7001 ;外网访问的端口
    custom_domains = xxx.yourdomain.xxx
    

这样就能使用 “你的域名:端口” 进行远程桌面连接了。

总结

FRP 的玩法很多,如果你的路由器是智能路由器的话,可以将 FRP 部署到你的路由器上,也可以搭建 NAS ,甚至将内网部署的 WEB 应用映射到外网(当然,在国内这是违法的,有条件的话还是要备案一下)等等。 但体验指数上完完全全取决于你的云服务器宽带。 内网穿透,反向代理,都只是弥补没有公网 IP 的遗憾罢了。