写在前面

2020快点过去吧。。。早起一看朋友圈都沸沸扬扬的…
接着上回映射端口联机超级鸡马的方式。利用SakuraFrp可以很方便快捷的实现将本地端口开放给公网IP从而让小伙伴通过该端口和你一起就像在本地一样玩耍。而这个公网IP是SakuraFrp提供给你的(忍不住再吹一波)那么如果你拥有属于自己的云服务器与公网IP,可不可以自己动手将本机的端口映射到自己的公网IP上呢?
本着折腾的原则,对frp这一神器再进行一点浅显的学习。

所需材料

  1. 云服务器。(需要公网IP)
  2. FRP。FRP (Fast Reverse Proxy) 是一个使用 Go 语言开发的高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。功能强大,这里只学习简单的使用方法。

开始做菜!

因为此次使用的目的在于将本地游戏端口开放出去,实际上只是使用了FRP中最最基础的一部分简单功能。更多强大功能日后再慢慢学习吧

分别安装服务器端与客户端FRP

我的电脑作为客户端是windows系统,服务端云服务器是Ubuntu16.04。各位使用的时候依自己的使用情况选择响应版本

服务端

Linux下如果不确定自己云服务器版本内核信息可以通过以下命令查看

lsb_release -a

frp版本页找到服务器对应版本进行下载

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

下载并解压后,目录下应该有8个文件,作为服务端,我们重点研究看frps frps.ini frps_full.ini三个。
编辑frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 7000
bind_udp_port = 7001

token = DNMD

dashboard_addr = 0.0.0.0
dashboard_port = 7500

dashboard_user = admin
dashboard_pwd = admin

其中
token用于服务端与客户端之间进行验证,自设
dashboard_port开放该端口供我们网页上直观观察工作情况,可以不开,不需要的话最后四行都不需要。
dashboard_user/dashboard_pwd作为该页面的登录身份验证凭证。
我们这里只研究了一些端口的开放
frps.ini中还可以添加更多配置,格式可以在frps_full.ini中查看。

利用虚拟屏幕后台运行服务端

配置完成后,通过虚拟屏幕screen将其在后台开启(效果类似nohup,都是为了让服务在后太运行,即使退出shell工具也不会受影响)

screen -S frp

创建名为frp的屏幕并进入

./frps -c frps.ini

此时在frp窗口下启动了frp服务端服务,按下Ctrl+a+d退出该屏幕。
查看各屏幕运作情况

screen -ls

可以看到此时frp窗口属于“Detached”说明该屏幕已转入后台了,并且可以看到其进程号
重新进入已挂起的后台屏幕

screen -r frp

关闭/杀死不需要的屏幕

用kill+进程号就可

检查服务端是否启动(需要配置时开启dashboard)

登录你的公网IP:dashboard_port
123.123.23.23:7500
如果需要登录就登录看看,如果打得开该页面则说明服务端已经成功启动了。

客户端

windows系统则下载对应版本
其配置过程类似服务端,如果服务端成功启动的话那么客户端就更好理解了。
这里以之前启动超级鸡马联机端口为例
编辑frpc.ini(frpc,c对应Client)

[common]
server_addr = 你的公网IP
server_port = 7000
token = DNMD
dns_server = 114.114.114.114

[UltimateChickenHorse]
type = udp
local_ip = 127.0.0.1
local_port = 17778
remote_port = 6789
use_encryption = 0
use_compression = 0

server_port与服务端配置相同,取默认7000就可。

token需要与服务端一致,毕竟是验证的凭证

启动服务名称[UltimateChickenHorse]

协议为udp

本地端口 17778 映射到 远程端口 6789

服务器的6789未必对外开放,最好再安全规则那里配置一下开放包含要用远程端口的安全组

云服务器 ip 云服务器Ip映射_游戏


这里我开放了多个端口,具体几个自己看吧,要包含你需要用到的就行。

最后启动客户端

windows下进入cmd

我的Frp文件位于D盘下名为FRP的文件夹内

云服务器 ip 云服务器Ip映射_游戏_02


因此cmd中

云服务器 ip 云服务器Ip映射_游戏_03

首先进入D盘 ,进入FRP文件夹,启动客户端

:D
cd FRP
frpc.exe -c frpc.ini

windows下命令行与linux不太一样。。具体上网查询吧

看到启动端口开放成功提示就好啦,此时端口已经成功映射到云服务器了

最后检查一下

云服务器 ip 云服务器Ip映射_IP_04

一点弯路

  1. 服务器上下载frp版本一定要选对!!!本人整的时候是晚上12点多了,,脑袋犯浑MD装的版本完全不对,每次启动都是无响应,有点怀疑人生。。。看来以后出了问题第一时间不应该怀疑机器出问题而是先反思自己。。。
  2. 也是第一次使用screen,以为自己是在层层嵌套的窗口中(以为陷入套娃陷阱把自己搞蒙了)用着用着把自己绕进去了,渐渐迷失自我。。已经是搞不清自己是在第几层了,在自我怀疑中耗去1h。。
  3. 多数游戏联机走的是udp。第一次使用一直没考虑到这点,写的TCP…
    windows查看本地端口占用情况的一个小方法:
    首先确保该端口(17778)正被占用;