FRP

Wesley13
• 阅读 707

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

互联网普及率的日渐攀升与 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 ,下载完成后解压。

FRP

服务器(frps)

  1. 首先要配置一下入方向的安全组规则,需要穿透的端口得放行,我这里直接开放了一个端口范围,一劳永逸,各位按需开放即可。FRP

  2. 接下来配置一下设置,解压后有两个配置文件,一个是 frps.ini 另一个是 frps_full.ini 。 frps_full.ini 是全配置,里面所有的配置都有,玩法很多,各位自行研究,这里只挑几个有用的。将下面配置代码复制到 frps.ini 后保存。控制台可以输入“服务器IP:端口号”进行访问,如“1.2.3.4:7500”。
    ```ini
    [common]
    bind_port = 7000 ;要绑定的端口

    dashboard_user = admin ;控制台的用户名
    dashboard_pwd = password ;控制台的密码
    dashboard_port = 7500 ;控制台的端口
    ```

  3. 然后把配置文件 frps.ini 与程序 frps.exe 复制到服务器。

  4. 最后使用 cmd 或 power shell 切换到相应目录运行即可
    ini frps -c frps.ini
    power shell 要使用
    ini .\frps.exe -c frps.ini

内网设备(frpc)

  1. 首先配置一下 frpc.ini
    ```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 切换到相应目录运行即可
    ini frpc -c frpc.ini
    power shell 要使用
    ini .\frpc.exe -c frpc.ini

内网设备开启远程桌面

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

FRP

运行远程桌面

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

FRP

绑定域名

  1. 这里域名的服务商是阿里云(万网),在域名控制台中对相应的域名选择“解析”。跳转到云解析界面后点击“添加记录”。我们需要添加一条类型为 A 的记录。记录值为服务器 IP。FRP
  2. 配置 frpc.ini 。加一行 custom_domains = xxx.yourdomain.xxx 。如
    ini [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 的遗憾罢了。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这