FRP | 内网穿透
下载&安装
在 https://github.com/fatedier/frp/releases 中下载系统对应的版本(服务端和客户端都在一个压缩包中)
将对应的压缩包分别解压到服务端和客户端的任意文件夹中
配置&启动
服务端
编辑frps.toml
bindPort = 7000
#FRP服务所绑定的端口,可更改
./frps -c ./frps.toml
Windows系统下要去掉命令前面的
./
客户端
编辑frpc.toml
serverAddr = "x.x.x.x"
#部署FRP服务的服务器地址
serverPort = 7000
#FRP服务所绑定的端口,必须与服务端配置中的"bindPort"一致,可更改
[[proxies]]
name = "tcp"
#FRP隧道名称,可更改
type = "tcp"
#连接类型
localIP = "127.0.0.1"
#本地服务的IP
localPort = 10000
#本地服务的端口(内网端口)可更改
remotePort = 6000
#本地服务映射到公网的端口(外网端口)可更改
./frpc -c ./frpc.toml
Windows系统下要去掉命令前面的
./
注:
若您使用nat机,请在服务商提供的控制面板为以下配置中绑定的端口创建端口映射。建议内网端口与外网端口一致。
frps.toml
中的bindPort
frpc.toml
中的remotePort
启动服务后,可以通过x.x.x.x:6000
访问部署FRP客户端的主机上以10000
端口运行的服务
实践
基础
A作为服务端(具有公网IP
1.2.3.4
,FRP在7000
端口上运行)B作为客户端,运行本地端口为
25565
的Minecraft Java服务器
编辑服务端A中的frps.toml
bindPort = 7000
#FRP服务所绑定的端口
编辑客户端B中的frpc.toml
serverAddr = "1.2.3.4"
#部署FRP服务的服务器地址
serverPort = 7000
#FRP服务所绑定的端口,必须与服务端配置中的"bindPort"所绑定的端口一致
[[proxies]]
name = "minecraft"
#FRP隧道名称
type = "tcp"
#连接类型
localIP = "127.0.0.1"
#本地服务的IP
localPort = 25565
#本地服务的端口(内网端口)
remotePort = 6000
#本地服务映射到公网的端口(外网端口)
启动服务端和客户端后,可以通过1.2.3.4:6000
来访问在B上以25565
端口运行的服务器
进阶
A作为服务端(具有公网IP
1.2.3.4
,FRP在7000
端口上运行)B作为客户端,运行本地端口为
25565
的Minecraft Java服务器
通过ProxyProtocol显示真实IP
编辑服务端A中的frps.toml
bindPort = 7000
#FRP服务所绑定的端口
Minecraft服务端中需要启用
proxy protocol
,部分服务端不支持开启此功能Fabric服务端中,可添加
Fabric-Haproxy
模组以支持 https://github.com/wallenjos01/fabric-haproxy
编辑客户端B中的frpc.toml
添加proxies.transport
配置
serverAddr = "1.2.3.4"
#部署FRP服务的服务器地址
serverPort = 7000
#FRP服务所绑定的端口,必须与服务端配置中的"bindPort"所绑定的端口一致
[[proxies]]
name = "minecraft"
#FRP隧道名称,可更改
type = "tcp"
#连接类型
localIP = "127.0.0.1"
#本地服务的IP
localPort = 25565
#本地服务的端口(内网端口)
remotePort = 6000
#本地服务映射到公网的端口(外网端口)
[proxies.transport]
proxyProtocolVersion = "v2"
#推荐使用v2版本
启动服务后,通过1.2.3.4:6000
访问时,可以在后台看到玩家的真实IP而非127.0.0.1
域名绑定
例如:将1.2.3.4:6000
绑定至mc.example.com
- 感谢你赐予我前进的力量