0x00 写在前面
继之前 frp 的简单安装及使用之后,也想试试自带的 dashboard。捣鼓了半天,愣是访问不了,记录一下事情经过。
0x01 dashboard 配置
服务端所有的配置都在源码仓库中有详细介绍及示例,可以参考 frps_full_example
这里摘抄 dashboard 部分的配置
# Configure the web server to enable the dashboard for frps.
# dashboard is available only if webServer.port is set.
# 这一项是监听地址,想要只能本地访问就填 127.0.0.1 想要公网访问就填 0.0.0.0
webServer.addr = "0.0.0.0"
webServer.port = 7500
# 用户名密码
webServer.user = "xxxx"
webServer.password = "xxxxxxx"
# webServer.tls.certFile = "server.crt"
# webServer.tls.keyFile = "server.key"
# dashboard assets directory(only for debug mode)
# webServer.assetsDir = "./static"
# Enable golang pprof handlers in dashboard listener.
# Dashboard port must be set first
webServer.pprofEnable = false
配置好后重启 frps 服务即可。
0x02 问题排查
最可能的问题有俩:
-
云服务器的安全组出入规则没有开放 dashboard 监听的端口,解决方法是配置一个就行。
-
云服务器本机的防火墙没有开放,笔者就是因为这个问题导致一直连不上(其实之前是开了的,结果重装系统后给忘了,又一直记得是开着的,也就没排查这一块,做了半天无用功)
# 列出当前对外开放的端口 firewall-cmd --zone=public --list-ports # 或者指定端口查询 firewall-cmd --query-port=7500/tcp --zone=public # 开放对应的端口 --permanent 表示永久开启,不加则在重启后关闭 firewall-cmd --add-port=7500/tcp --zone=public --permanent # 重新加载 firewall-cmd --reload
0x03 使用域名访问 dashboard
借用 nginx 的反向代理功能,能够将访问指定域名的请求转发到对应的地址。同理,也能给 dashboard 配一个域名,前提是域名已经解析到服务器对应的地址,配置如下:
vim /etc/nginx/conf.d/dashboard.conf
server {
listen 80;
server_name "frp-dashboard.xxxxxxxxx.com";
location / {
proxy_pass http://127.0.0.1:7500;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
}
}
systemctl restart nginx
这样既可通过 frp-dashboard.xxxxxxxxx.com
访问 dashboard 了,注意:80 端口需要确认开放
0x04 写在后面
nginx 配置块配置项具体含义可参见 Nginx配置文件详解