使用云服务器中转的方式实现。
相关:mac+云服务器内网穿透
安装frp服务端
# 下载最新版本(以 0.52.0 为例)
wget https://github.com/fatedier/frp/releases/download/v0.52.0/frp_0.52.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.52.0_linux_amd64.tar.gz给解压的文件夹重命名
cp -r frp_0.52.0_linux_amd64 frp进入文件夹,可以看到有四个文件。其中frps是服务端(server),frpc是客户端(client)
frps
frps.toml
frpc
frpc.toml配置文件格式有要求,使用自带的修改启动会报错。在网上找的配置文件就不会,不清楚为什么
成品配置文件
# frps.toml bindPort = 7000 # 服务端与客户端通信端口 transport.tls.force = true # 服务端将只接受 TLS链接 auth.token = "replace-with-a-random-token" # 身份验证令牌,frpc要与frps一致 # Server Dashboard,可以查看frp服务状态以及统计信息 webServer.addr = "0.0.0.0" # 后台管理地址 webServer.port = 7500 # 后台管理端口 webServer.user = "admin" # 后台登录用户名 webServer.password = "replace-with-a-strong-password" # 后台登录密码
启动服务:
./frps -c frps.toml看到下面就是启动成功
将程序注册为服务:
sudo vim /etc/systemd/system/frps.service编辑文件,粘贴下面
[Unit]
Description=frp server
After=network.target
[Service]
Type=simple
ExecStart=/workspace/frp/frps -c /workspace/frp/frps.toml
Restart=on-failure
[Install]
WantedBy=multi-user.target启动并设置开机自启
sudo systemctl start frps
sudo systemctl enable frps
sudo systemctl status frps客户端启动
去GitHub下载客户端
https://github.com/fatedier/frp/releases
解压,编辑其中的frpc.toml文件
成品配置文件
serverAddr = "your_server_ip" # frps的地址(服务端) serverPort = 7000 # 交换数据的端口 auth.method = "token" # 鉴权方式 auth.token = "replace-with-a-random-token" # 鉴权token [[proxies]] name = "itsm" type = "tcp" localIP = "127.0.0.1" # 本地的IP localPort = 8000 # 本地服务的端口 remotePort = 8000 # 访问服务器的端口
启动,和服务端一样
.\frpc.exe -c frpc.toml也可以使用bat文件的方式来启动
@echo off
cd /d D:\app\frp\frp_0.65.0_windows_amd64\
frpc.exe -c frpc.ini
pause以下非必要:因为就算配了域名,也会被云服务器提供商拦截未备案
如果服务端使用了子域名的配置
subDomainHost = "yoleo.top"则需要在服务端加入配置
bindPort = 7000
subDomainHost = "yoleo.top"
vhostHTTPPort = 80 # HTTP 端口
# vhostHTTPSPort = 443客户端加入配置,注意需要删除remotePort
serverAddr = "your_server_ip"
serverPort = 7000
auth.method = "token"
auth.token = "replace-with-a-random-token"
[[proxies]]
name = "itsm"
type = "http"
localIP = "127.0.0.1"
localPort = 8000
subdomain = "itsm"这样配置可以访问 itsm.yoleo.top访问本地8000端口的服务。
经过实践发现,这样搞有些问题,访问不通。例如本地需要搞一个什么TLS类型的连接,frp的后台管理也连不上了。
可以使用本地端口映射服务器80端口的方案,然后域名解析到服务器,一样的效果。