MC-frp映射搭建
Minecraft
MC, frp, 网络
字数统计: 1.2k(字)
阅读时长: 4(分)
MC-frp映射搭建
本篇使用Frp搭建了一个内网穿透,满足无公网的服务器的外网访问需求。
环境信息
- Frp版本:0.61.1
- 服务端:腾讯轻量级应用服务器-带公网IP
前言
官方文档地址:链接
frp项目地址:链接
frp经过多次升级,不仅可以实现普通的内网穿透,而且还能够实现xtcp实现P2P打洞穿透。
本文将在一个公网IP的服务器上架设一个frps,并在MC服务器端添加frpc服务,启用普通frp代理以及P2P内网穿透,实现服务器的外网访问。
服务器端frps
配置文件
服务端的配置较为简单,只需要设置端口和身份验证即可:
1 2 3 4
| bindPort = 7000
auth.token = "password"
|
需要注意的是,frp服务监听的端口和之后客户端要映射出去的端口都需要开放防火墙。
之后,使用命令即可开启服务:
设置为系统服务
由于我的服务器没有其他服务,直接使用screen运行即可。
客户端frpc
服务器端配置-被访问者
在MC服务器端需要运行frpc客户端,需要配置两种代理:一种是普通TCP代理,实现正常的内网穿透;另外一种为XTCP代理,实现P2P穿透。
配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| serverAddr = "x.x.x.x" serverPort = 7000 loginFailExit = false auth.token = "password"
[[proxies]] name = "mc1201" type = "tcp" localIP = "127.0.0.1" localPort = 25565 remotePort = 25565
[[proxies]] name = "mc1201_p2p" type = "xtcp"
secretKey = "password2" localIP = "127.0.0.1" localPort = 25565
[[proxies]] name = "mc1201_stcp" type = "stcp"
secretKey = "password3" localIP = "127.0.0.1" localPort = 25565
[[proxies]] name = "ssh" type = "stcp" secretKey = "password4" localIP = "127.0.0.1" localPort = 22
|
记得在frps端remotePort开放防火墙。
客户端配置-游戏客户端
游戏客户端可以使用frps公网ip访问,或者使用frpc客户端利用客户端访问。使用p2p访问配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| serverAddr = "x.x.x.x" serverPort = 7000 auth.token = "password"
[[visitors]] name = "p2p_mc1201_visitor" type = "xtcp"
serverName = "mc1201_p2p" secretKey = "password2"
bindAddr = "127.0.0.1" bindPort = 25565
keepTunnelOpen = true fallbackTo = "stcp_mc1201_visitor" fallbackTimeoutMs = 10000
[[visitors]] name = "stcp_mc1201_visitor" type = "stcp" serverName = "mc1201_stcp" secretKey = "password3" bindPort = -1
|
当连接 127.0.0.1:25565
超过 10s p2p 打洞还未成功的话,会回退到使用 stcp_mc1201_visitor 建立连接。
fallback 后,之前触发的打洞操作仍然会继续,一般来说打洞完成需要的耗时会比较长。
如果打洞成功,下次建立新的连接时,将不需要再次打洞,会很快完成连接建立,不会触发 fallback。
需要注意根据访问端和被访问端的延迟情况来合理设置超时时间,以避免超时时间太短,即使打洞成功连接也来不及建立,而一直触发 fallback。
stcp_mc1201_visitor 的 bindPort
设置为 -1 表示不需要监听物理端口,只接受 fallback 的连接即可。
对于腐竹,需要ssh管理,还需要以下配置:
1 2 3 4 5 6
| [[visitors]] name = "ssh" type = "stcp" serverName = "ssh" secretKey = "password4" bindPort = 8000
|
1 2
| # 使用以下命令访问机器 ssh -o Port=8000 test@x.x.x.x
|
服务端设置系统服务
为保证mc服务器正常进入代理,需要使用systemd
添加服务。
使用文本编辑器在 /etc/systemd/system
目录下创建一个 frpc.service
文件,写入内容:
1 2 3 4 5 6 7 8 9 10 11 12 13
| [Unit] # 服务名称,可自定义 Description = frp client After = network.target syslog.target Wants = network.target
[Service] Type = simple # 启动frpc的命令,需修改为您的frpc的安装路径 ExecStart = /path/to/frpc -c /path/to/frpc.toml
[Install] WantedBy = multi-user.target
|
之后启动服务:
1 2 3 4 5 6 7 8 9 10
| # 启动frp sudo systemctl start frpc # 停止frp sudo systemctl stop frpc # 重启frp sudo systemctl restart frpc # 查看frp状态 sudo systemctl status frpc # 设置开机自启 sudo systemctl enable frpc
|
连接服务器
在学校内网用户,直接使用服务器内网地址即可连接。
在学校外但网络环境好的用户,使用分发的frp客户端使用frpc.exe -c frpc.toml
启动连接,然后使用127.0.0.1进行连接。
在学校外但网络环境(nat)不好的用户,直接使用frps服务器地址即可连接。