背景
由于Ngrok开源版本已停止维护,经过调研后Frp比较合适:
- 服务端/客户端无需编译
- 支持多种客户端
- ...
引用:
// github
https://github.com/fatedier/frp
// doc
https://gofrp.org/docs/
环境
服务端:Centos 7
客户端:Linux、Mac...
Frp: 0.45
其他:supervisord
要求:服务器有公网ip+自有域名
域名解析
可以使用子域名,如: frp.xx.com; 可工作的地址: xx.frp.xx.com
这里需要配置两个域名解析
frp.xx.com ip
*.frp.xx.com ip (泛域名解析)
安装 - 服务端
下载
目前在最新版本为0.45,下载对应的Linux版本
frp_0.45.0_linux_amd64.tar.gz
zip包解压后有对应的服务端、客户端及对应的配置
.
├── LICENSE
├── frpc # 客户端
├── frpc.ini # 客户端简化配置
├── frpc_full.ini # 客户端完整配置
├── frps # 服务端
├── frps.ini # 服务端简化配置
└── frps_full.ini # 服务完整化配置
0 directories, 7 files
准备
这里我使用的目录:
/usr/local/frp
将frpc、frpc.ini拷贝到此目录中
- 配置文件
frps.ini
bind_port = 9443 # 客户端链接的端口
# if you want to support virtual host, you must set the http port for listening (optional)
# Note: http port and https port can be same with bind_port
# vhost_https_port = 443
vhost_http_port = 9443
subdomain_host = frp.xx.com # 配置子域名
# authentication_method specifies what authentication method to use authenticate frpc with frps.
# If "token" is specified - token will be read into login message.
# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token".
authentication_method = token # 这里选择token进行验证,可参考文档进行调整
# auth token
token = changeit # 这里是配置的token,客户端需要保持一致
# enable_prometheus will export prometheus metrics on {dashboard_addr}:{dashboard_port} in /metrics api.
enable_prometheus = true
启动
防止经进程挂掉,这里使用supervisor对frps进行管理
supervisor 配置
[program:frserver]
directory=/usr/local/frp
command=/usr/local/frp/frps -c /usr/local/frp/frps.ini
autostart=true
autorestart=true
startsecs=10
user=root
stderr_logfile=/usr/local/frp/log/frp_stderr.log
stdout_logfile=/usr/local/frp/log/frp_stdout.log
redirect_stderr=true
- 注意,supervisor使用的目录要预先创建好,比如这里的log目录
配置好后,执行
supervisord reload
supervisord status
# 结果
[root@cc etc]# supervisorctl status
frserver RUNNING pid 12464, uptime 1 days, 22:47:02
安装 - 客户端
以Mac环境进行演示
下载
与服务端版本一致,下载对应的Mac版本
frp_0.45.0_darwin_amd64.tar.gz
zip包解压后有对应的服务端、客户端及对应的配置
.
├── LICENSE
├── frpc # 客户端
├── frpc.ini # 客户端简化配置
├── frpc_full.ini # 客户端完整配置
├── frps # 服务端
├── frps.ini # 服务端简化配置
└── frps_full.ini # 服务完整化配置
0 directories, 7 files
准备
进入解压后的目录,修改客户端配置
- 配置文件
frpc.ini
[common]
authentication_method = token # 与服务端一致
server_port = 9443 # 与服务端一致
server_addr = frp.xx.com # 与服务端 subdomain_host 配置一致
token = changeit # 与服务端一致
[cc] # 子域名, 这里可自定义
local_port = 80 # 需要转发的本地端口,可自定义
subdomain = cc # 子域名, 这里可自定义
type = http
启动
执行
./frpc -c frpc.ini
2022/12/10 13:25:23 [I] [service.go:349] [4773c37ef35b5761] login to server success, get run id [4773c37ef35b5761], server udp port [0]
2022/12/10 13:25:23 [I] [proxy_manager.go:144] [4773c37ef35b5761] proxy added: [cc]
2022/12/10 13:25:23 [I] [control.go:181] [4773c37ef35b5761] [cc] start proxy success
结束
此时可通过客户端配置域名进行访问:
http://cc.frp.xx.com:9443
评论 (0)