FRP内网穿透访问家中的NAS和路由器后台

前言

自从入手了蜗牛星际以后,一直在折腾,先是安装了软路由,现在换成了PVE下虚拟LEDE软路由和黑群晖。可以远程访问的NAS才是一个完整的NAS,由于在宿舍大家一块用一条网线,虽然有公网地址,但联通公司不给改桥接,后来想想也挺麻烦的,而且宿舍的网线也只有4芯,即使路由器拨号也无法多播,就放弃DDNS了。于是开始研究内网穿透。

为什么要用FRP

1.没钱购买花生壳的付费服务,免费的局限性太大 2.学习一些新的东西

对FRP的理解

感觉frp和远程代理很像,支持的底层协议也很丰富,配置相对简单,而且不需要安装。通过命令行方式启动,有一点Linux基础的用户就可以完美驾驭。 作者 github主页 根据作者的介绍,frp的基础功能是实现远程tcp访问和ssh链接。而用的更多的确实http协议带来的远程web链接,访问家中的NAS和路由器后台。

下载以及配置

直接在github页面下载即可(注意服务的与客户端的版本尽量相同) 配置过程 下载frp: wget https://github.com/fatedier/frp/releases/download/v0.26.0/frp_0.26.0_linux_amd64.tar.gz 解压: tar -zxvf frp_0.26.0_linux_amd64.tar.gz 进入解压后的文件夹: cd frp_0.26.0_linux_amd64.tar.gz 编辑服务端配置文件: vi frps.ini 输入i进入编辑模式 i
根据文章后面的内容进行具体配置 编辑完成后按一下键盘左上角esc键退出编辑 输入:wq保存并退出 启动frp服务端并保持后台运行 (第一次测试时不需要&符号即可前台运行,ctrl+c即可退出) nohup ./frps -c ./frps.ini &
客户端和服务端类似,不过将frps更换为frpc (这里的s就是server服务端,c就是client客户端) 下载frp: wget https://github.com/fatedier/frp/releases/download/v0.26.0/frp_0.26.0_linux_amd64.tar.gz 解压: tar -zxvf frp_0.26.0_linux_amd64.tar.gz 进入解压后的文件夹: cd frp_0.26.0_linux_amd64.tar.gz 编辑客户端配置文件: vi frpc.ini// 输入i进入编辑模式 i
根据文章后面的内容进行具体配置 编辑完成后按一下键盘左上角esc键退出编辑,保存并退出 :wq 记得按esc退出编辑状态 启动frp服务端并保持后台运行 nohup ./frpc -c ./frpc.ini &

服务端配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[common] 
#服务器ip
bind_addr = 0.0.0.0  
#frp端口 
bind_port = 7000
#口令配置
token = xxx 
##frp协议和端口配置 (根据自己的需要保留即可)
bind_udp_port = 7001
kcp_bind_port = 7002
vhost_http_port = 80     
vhost_https_port = 443

##frp的统计信息,可以浏览器输入http://服务器ip:7500查看,账号密码为admin,可以在下面配置中修改
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin 

##frp日志配置 
log_file = ./frps.log
log_level = info
log_max_days = 3

客户端配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[common]
####IP也可以是域名 
server_addr = x.x.x.x  
frp服务器端口
server_port = 7000
#口令配置,要和服务端一致
token = xxx 
##frp日志配置 (根据自己的需要保留或者删除)
log_file = ./frpc.log
log_level = info
log_max_days = 3

#[]里面的内容自定义,建议用作标示
[lede] 
type = http
local_ip = 192.168.123.1  
local_port = 80				
custom_domains = xxx.youdomain.com	

[nas]
type = http     
local_ip = 192.168.123.102               
local_port = 5000           
custom_domains = yyy.youdomain.com  

[pve]
type = https
local_ip = 192.168.123.100
local_port = 8006
custom_domains = zzz.youdomain.com
#这里我的客户端配置,三个域名分别对应三个不同的web页面
#custom_domains是自己的域名
## 解决远程Transmission无法使用 修改Transmission的配置文件settings.json ,启动密码登录即可(大约在第43行开始) 个人猜测这个白名单在内网穿透时无效。(未经验证) ``` "rpc-authentication-required": true, "rpc-bind-address": "0.0.0.0", "rpc-enabled": true, "rpc-host-whitelist": "", "rpc-host-whitelist-enabled": true, "rpc-password": "{925c1d0775d6e63d3ccd87a8f97f48d38e9f013fupumAV6s", "rpc-port": 9091, "rpc-url": "/transmission/", "rpc-username": "admin", "rpc-whitelist": "", "rpc-whitelist-enabled": false, ``` ## 总结

FRP整体配置还是比较简单的,只要了解了其原理就能轻松使用。