最近朋友需要,想通过5G手机玩3d大作的游戏,或者用CRT显示器玩,这时我就要解决几个问题:
1、固定IP
2、网络延时
3、访问者的机器,不能考虑其性能,只能当它是个显示器,才能流畅;
采取两种方法尝试,与比较
第一种 通过服务器连接
第二种 P2P连接;通过服务器连接后,客户端和访问端隧道开启打洞,无视服务器带宽(延时完全取决于客户端和访问端的自身带宽)(很有意义)
两种方式区别:第一种方式,访问端不用在系统里配置frp软件,直接用远程桌面应用程序就能访问远程电脑;而第二种,需要在访问端,客户端,服务器端都配置好frp程序,形成一个三角形网络结构,当通讯成功后,就客户端和访问端之间访问;第一种方法简单,第二种节省流量,且速度奇怪,就好像迅雷下载。
下载连接在文章最后
开始动手
第一种方法尝试-测试成功
解决第一个问题,很容易,我在AWS上租用了个最低配的EC2服务器,带宽1M(这里我特意强调1M,是因为后面我将要通过P2P方法,实现服务器带宽不够的情况下,通过打洞方式,解决这个问题),如何申请服务器,我就不描述了,各位可以百度,阿里,腾讯都可以,核心方法一样,下图是我的EC2服务器的【安全组】截图,你要访问的端口一定要在这里打开,不然无法使用,当然后期有方法验证端口问题;
服务端配置
通过ssh登录到服务器中,下载FRP的linux版本,并进行配置,下载连接我后面会放出,下图是frps.ini的文件配置内容
记得给出frp.ini权限:chmod 777 frps.ini
启动服务端的frps服务:
nohup ./frps -c frps.ini
让服务在后台运行:
nohup ./frps -c frps.ini &
nohup: ignoring input and appending output to ‘nohup.out’
jobs (命令查看服务,出现以下,正常服务了)
[1]+ Running nohup ./frps -c frps.ini &
客户端配置(win的配置方法,linux方法相同)
假定你下载了“frp_0.22.0_windows_amd64.zip”,将其解压在了C盘根目录下,并且将文件夹重命名为“frp”,可以删除其中的frps和frps.ini文件。
用文本编辑器打开frpc.ini,与服务端类似,内容如下(我们以登录win的远程桌面为例)
[common]
server_addr = 1.1.1.1(你的远程IP地址)
server_port = 7000
token = xxxxx(你的登录服务器的密码,和客户端的token要一致)
[rdp]
type = tcp(通讯协议)
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001 (远程开放的端口)
将客户端frp文件夹放入C盘,并制作一开机自动启动的frp.bat文件
打开个记事本,复制下面的代码,并保存为frpc.bat,将frp.bat文件放入windows的启动文件夹位置:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,每次开机自己启动
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd C:\frp
frpc -c frpc.ini
exit
测试启动(启动成功)
打开win的远程桌面,或者通过一下指令
cmd -> mstsc -> 你的远程IP地址:打开的端口号
第二种P2P连接方法
我们先看这个逻辑图
frpc(客户端)与Visitor(访问端)间通过UDP传输(适合frpcs服务端小水管食用,Client于Visitor之间不受服务端带宽限制,主要看C与V的出口带宽和你的宽带质量。)
frp 提供了一种新的代理类型 xtcp 用于应对在希望传输大量数据且流量不经过服务器的场景。使用方式同 stcp 类似,需要在两边都部署上 frpc 用于建立直接的连接。但目前不太稳定,我们这里使用stcp测试。
服务端配置
frps 除正常配置外需要额外配置一个 udp 端口用于支持该类型的客户端:
bind_udp_port = 7001
客户端frpc配置(图右)
启动 frpc,转发RDP远程桌面 服务,配置如下,不需要指定远程端口:
[common]
server_addr = 1.1.1.8
server_port = 7000
token = xxxxxxxx
[p2p_rdp]
type = stcp
sk = 1234
local_ip = 127.0.0.1
local_port = 3389
代码含义如下:
[common]
server_addr = 你的frpc服务器地址,上面用1.1.1.8举例
server_port = 你的frpc服务器端口,注意vps的iptables、firewalld或者vps管理端安全组放行该端口!
token = 本端与服务器端认证密码,与服务器端配置一致!
[p2p_rdp] 名字稍微注意一下,下文中visitor端配置用到。
type = stcp 重点!!拓扑图中示例为xtcp,就稳定性和使用成功率而言目前xtcp不够成熟,优选stcp协议!
sk = client端和visitor端认证密码,注意两端要一致,与服务器无关
local_ip = 127.0.0.1
local_port = 你需要开放出去的端口,拓扑中以windows远程桌面为例
在要访问这个服务的机器上启动另外一个 frpc,配置如下:
[common]
server_addr = 1.1.1.8
server_port = 7000
token = xxxxxxxx
[RDP_visitor]
type = stcp
role = visitor
server_name = p2p_rdp
sk = 1234
bind_addr = 127.0.0.1
bind_port = 53389
代码含义如下:
[common]
server_addr = 1.1.1.8
server_port = 7000
token = xxxxxxxx
[RDP_visitor] 随意
type = stcp 与client端一致
role = visitor 好理解,这是“访客端”
server_name = p2p_rdp 注意上文中的提示,与client端配置一致
sk = 1234 还要再讲一次不?看笔记
bind_addr = 127.0.0.1
bind_port = 53389 你远程配置的tcp端口号
测试启动(启动成功)
打开win的远程桌面,或者通过一下指令
cmd -> mstsc -> 你的远程IP地址:打开的端口号
大家注意看,打通方式的不同,访问的是一个电脑远端,但访问地址却不一样,第二种就是P2P的方式,速度会很快,而且不用考虑服务器带宽,非常好。
过程中遇到的问题
- 整个测试过程,大问题没遇到什么,主要是在服务器端的端口开或者没开,会记错,年纪大了。。。。
- 重要,重要,重要,访问端和客户端最好同运营商,意思就是要么都电信,或者要么都移动、联通,不然延时高,有卡顿,同运营商完全没有卡顿现象
- 还有一开始安全组设置的时候,选错安全组。。。郁闷
- 另外,机器务必打开运行【远程连接】的选项,找不到自己百度吧,
还有个坑,Windows的家庭版远程连接被阉割,要升级到专业版才能看到打开远程连接的选项。 - 手机APP端下载微软的【远程桌面】输入远程IP:端口既能访问你的电脑,目前我只测试了手机端用第一种方式,可以;第二种方式需要root手机,和安装虚拟机,还没空测试。
- 小米手机测试横屏问题,打开【远程桌面】前,把手机横屏放着,哈哈,下图都是我的手机打开的远程电脑应用。
【teamviewer】,人人动手你咋办。。。
各个版本FRP下载链接:
https://download.csdn.net/download/lijiajin1228/12233102