服务器需要用到的配置,其中bind_port是frp的服务端口
开启特权连接后可以在客户端设置想要的端口,增加新的客户端不用修改服务端,比较方便
特权密码建议自己修改
启动命令 nohup frps -c frpsini & 此命令可以在终端退出后依旧后台运行
frpcini
common项目是客户端每个服务的共有属性设置好不用改变
差不多想要新增实例的话只要复制example及以下的字段
并修改两个端口和实例的名字就行
启动命令 nohup frpc -c frpcini &
一般来说将这两个配置文件分别保存为frpsini和frpcini,分别复制到服务器和客户端的执行目录下,frpcini需要吧service_ip替换成服务器的IP地址,按照命令启动起来就能用首先回答第一个问题,如果游戏本a设置全局代理到拥有公网IP的云服务器b,并在b上建立代理服务,则a的游戏服务器可以通过b的公网IP地址访问。但是,这并不意味着a的游戏服务器拥有公网IP地址。如果要让a的游戏服务器拥有公网IP地址,需要在云服务器b上建立端口映射或NAT转发等服务,将b的公网IP映射到a的游戏服务器上。
其次回答第二个问题,要让a的游戏服务器出现在steam服务器列表中,需要使用Steamworks SDK并在a的游戏服务器上实现相关功能。具体来说,需要在游戏服务器上使用Steamworks SDK提供的API,将a的游戏服务器注册到Steam服务器列表中。需要注意的是,Steamworks SDK只能用于Steam游戏。
关于第三个问题,如果使用樱花frp的TCP/UDP隧道,需要建立的隧道端口应该包括a的游戏服务器端口以及frp客户端与服务端通信所使用的端口。具体来说,需要在游戏本a上运行frp客户端,并通过frp客户端将a的游戏服务器端口映射到云服务器b上。同时,需要在云服务器b上运行frp服务端,并将b的公网IP地址与frp服务端通信所使用的端口映射到frp客户端所使用的端口上。这样,通过b的公网IP地址加上映射的端口即可访问到a的游戏服务器。
最后,如果不使用樱花frp而是在云服务器b上建立其他服务,可以考虑使用端口映射或NAT转发等服务,将b的公网IP映射到a的游戏服务器上。具体来说,可以在云服务器b上运行端口映射或NAT转发软件,将b的公网IP地址与a的游戏服务器端口进行映射。这样,通过b的公网IP地址加上映射的端口即可访问到a的游戏服务器。需要注意的是,端口映射或NAT转发可能会对网络安全造成一定的影响,需要谨慎使用。Frp的TCP模式问题,这里主要存在2个问题。
试想一下,frp的tcp模式相当于你的设备直接向公网暴露了一个tcp端口。任何设备都可以尝试连接这个端口。这里就会有很大的安全风险。
我的所有请求都需要进行frp的服务器进行中转,这里势必会造成比较大的网络延时。以及耗掉服务器流量,这对我们的服务响应速度和经济价值会造成较大影响。
对于安全问题,frp的思路是,既然这些服务有可能被坏人攻击,那我们只要限制特定设备能够使用这个端口就好了。
那么问题来了,我怎么知道哪些设备是允许使用的呢?
服务端配置?那就又陷入了内网穿透的问题。
最简单的方法是使用密钥验证。这就是frp的Secret TCP(stcp)模式的思路。
如下图所示,frp客户端1需要暴露一个tcp端口。于是他在向服务端注册时,额外传了一个密钥。
所有其他设备期望访问这个端口,必须要先验证这个密钥。
这样一来,我们就需要在发起请求的设备上也配置一个frp客户端,通过这个客户端带着密钥发起请求。
# frpcini 配置:
[common]
# 你的frp服务器的公网ip
server_addr = xxxx
# 你的frp服务器的默认端口
server_port = 7000
[rdp]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127001
# 远程桌面的本地端口号
local_port = 3389
# frpcini
[common]
# 你的frp服务器的公网ip
server_addr = xxxx
# 你的frp服务器的默认端口
server_port = 7000
[rdp_visitor]
type = stcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = rdp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
# 绑定本地端口用于访问 远程桌面 服务
bind_addr = 127001
bind_port = 6000
此时,你在客户端2,使用127001:6000即可访问客户端1的远程服务。
思考一下,我们的frp服务器主要目的是为了解决两台设备相互识别的情况。在正式运行时,其实并不需要服务端做什么事情。
frp客户端就好比两个相亲的对象,frp服务端是媒婆。媒婆介绍完之后,就应该有相亲对象自己聊天了。
这个就是点对点模式(p2p)。在frp中,这个可以通过设置xtcp实现。
服务端:配置需要增加一个udp端口 7001,增加完之后就是如下
# frpsini
[common]
bind_port = 7000
bind_udp_port = 7001
# frpcini
[common]
# 你的frp服务器的公网ip
server_addr = xxxx
# 你的frp服务器的默认端口
server_port = 7000
[rdp]
type = xtcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127001
# 远程桌面的本地端口号
local_port = 3389
# frpcini
[common]
# 你的frp服务器的公网ip
server_addr = xxxx
# 你的frp服务器的默认端口
server_port = 7000
[rdp_visitor]
type = xtcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = rdp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
# 绑定本地端口用于访问 远程桌面 服务
bind_addr = 127001
bind_port = 6000
此时,你在客户端2,使用同样的方式,以127001:6000即可访问客户端1的远程服务。
不过需要注意的是,目前frp的p2p服务还不完善,很多nat设备还是不能够穿透的。
此时大家还是需要切换回stcp来使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)