最近研究了一下FRP,功能的确很强大。在这里写一下我的心得。项目地址https://github.com/fatedier/frp
家里路由器有刷老毛子的固件,内置有FRP功能,于是想利用手上闲置的VPS+FRP管理家里路由器。
1.首先用自己的域名做一个A记录 xxx.xxx.com 解析到VPS的公网IP。
2.从https://github.com/fatedier/frp 找到合适自己vps系统版本的release下载到vps上。例如目录为/root/frp
3.修改frps.ini为如下:
[common]
bind_port = 7000
#vhost_http_port vps监听的端口,
vhost_http_port = 80
#dashboard_port 控制面板端口,访问http://vps公网IP:7500 即可看到。
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin
privilege_mode = true
#privilege_token要与客户端一直
privilege_token = 12345
max_pool_count = 50
#log_file = ./frps.log 设置为这个可以便于调试,调试无问题后可以关闭日志记录,也就是日志输出到/dev/null
log_file = /dev/null
log_level = info
log_max_days = 3
4.启动frps服务:cd ~/frp && ./frps -c ./frps.ini &
5.在固件中找到frp脚本。修改客户端配置脚本如下:
[common]
server_addr = VPS公网ip
server_port = 7000
#privilege_token 这个要与服务器配置的一样,不然无法连接到服务端
privilege_token = 12345
[web]
privilege_mode = true
#与远端服务器监听的vhost_http_port相对应
remote_port = 80
type = http
#local_port 本地需要被访问到的端口
local_port = 80
use_gzip = true
custom_domains = xxx.xxx.com 第一步解析的域名。
use_encryption = true
# http username and password are safety certification for http protocol
# if not set, you can access this custom_domains without certification
http_user = admin
http_pwd = admin
#host_header_rewrite = 实际你内网访问的域名,可以供公网的域名不一致,如果一致可以不写
log_file = /dev/null
log_level = info
log_max_days = 3
6.启动路由器的frpc(frp客户端),访问xxx.xxx.com:80(80是frps服务端配置的vhost_http_port监听端口,也可以配置为非80端口,但是客户端remote_port一定要与服务端vhost_http_port一致。)即可管理家里的路由器。(http_user = admin
http_pwd = admin 这两个请修改为自己的用户名和密码,而且一定要设置,不然好像可以直接访问,不知道是不是老毛子的bug.)
7.因为老毛子固件其实是linux系统,也可以把ssh映射出去,外网ssh登录到家里路由器。可以在
客户端配置添加以下代码:
[common]
***
***
[ssh]
type = tcp
#local_ip路由器管理的IP地址
local_ip = 192.168.123.1
local_port = 22
# use_encryption 消息加密,客户端与服务端通信是否加密
use_encryption = false
# use_compression 数据压缩,开启可能会增加路由器负担
use_compression = false
remote_port = 6001
8.重启服务端,重启客户端。然后可以 ssh -oPort=6001 admin@vps公网IP(域名)访问家里路由器的ssh~