架设游戏私服——内网穿透工具frp
适用场景: 拥有一台云服务器服务商提供的拥有公网ip的低配服务器。 拥有一台高配家用机,但是位于动态ip的家庭网络甚至是多级子网络中。 服务器能够架设公网ip的服务端用于玩家访问,但是配置撑不住服务端。 家用机配置足够承受服务端运算,但是没有公网ip用于加入游戏服务端。
frp下载地址:
选择64位windows系统的windows_amd64.zip版本,下载并且解压缩。
可以看到,除了LICENSE之外,所有的文件都有frps和frpc两者之一的名称。 意思也很简单,s就是服务端server,c就是客户端client
原本的压缩包中所有文件都混在了一起,实际使用时可以按frps和frpc归到两个地方,服务端frps的文件放在有公网ip的云服务器上,而客户端frpc的文件则是放到实际运行游戏服务端的家用机上。
1. 服务端
服务端配置较为简单,只需要编辑frps.ini文件: 这里的bind_port可以随意设置,它并不是你要映射的端口,而是frp程序本身运行的端口,但是不要和你的游戏服务端抢占端口。
如果你在意安全问题的话,可以查一下相关文档中的sk属性,它是个连接的密钥,需要服务端与客户端的一样才能匹配,内容随便自己写。如果你无所谓安全问题的话,直接不写也行。 本文不涉及加密的安全性问题。
[common] bind_port = 7000
然后在服务端文件夹中写一个start.sh脚本方便双击启动【以windows系统为例,如果你用的是linux那就写个.sh脚本】:
start frps.exe -c ./frps.ini
2. 客户端
举个栗子【不是错别字 】 假如我想在这台电脑上开【Minecraft】, 【Starbound】和【Empyrion-Galactic Survival】三个游戏的服务端,首先我要确认这些游戏服务端运行的端口,查询官方默认端口或者自己配置的端口。 查找发现,【Starbound】的默认开服端口是21025,而【Minecraft】是25565,【Empyrion-Galactic Survival】则更加复杂一些,它要使用30000-30004的所有端口来进行通讯。
再考虑到之前在服务端把frp的运行端口设置为了7000,那么就将frp的客户端frpc.ini文件配置为: 注:0.0.0.0的位置是填入你的云服务器公网ip,别照抄了。
[common] server_addr = 0.0.0.0 server_port = 7000 [range:tcp_port] type = tcp local_ip = 127.0.0.1 local_port = 21025,25565,30000-30004 remote_port = 21025,25565,30000-30004 use_encryption = false use_compression = false [range:udp_port] type = udp local_ip = 127.0.0.1 local_port = 21025,25565,30000-30004 remote_port = 21025,25565,30000-30004 use_encryption = false use_compression = false
local_port是本地端口,remote_port是云服务器的端口,将两者绑定起来。
然后在客户端文件夹中写一个start.sh脚本方便双击启动【以windows系统为例,如果你用的是linux那就写个.sh脚本】:
start frpc.exe -c ./frpc.ini
此时你在家用机启动服务端,就可以用云服务器的公网ip进入游戏服务器了~
3. exe消失之谜
如果你在启动脚本或者直接通过命令行运行后,发现程序没有工作,而且exe文件反而神秘消失了,那么十有八九你需要检查一下你电脑上那些无声的杀手——潜行的杀毒软件没错迈克菲我说的就是你这个装机自带的坑货 。
警惕迈克菲或者windows防火墙这种无形之中杀你文件的坑货,建议选用火绒这样安静的小可爱~