家庭NAS的实用性就在于可以用最少的money实现局域网内资源共享。家庭NAS的优点有很多,比如说可以多设备同时查看或者修改同一份文档,也可以看视频、音频等。它打破了局域网内设备不能互联的状态。但是出了这个局域网就gg了,如果你有份文档存在NAS里,而你出门要用,那就有点麻烦了。。。
不过通过frp进行内网穿透,将你的家庭NAS端口映射到公网IP上就可以实现外网访问家庭NAS了。无论你在哪儿,只要你随身携带的移动终端(笔记本、平板、手机)等有网络,就可以随时随地查看你放在家中树莓派上的文件了。
什么是frp?
frp是一个高性能的反向代理应用,可以帮助您轻松进行内网穿透,对外网提供服务,支持tpc,http,https等协议类型,并且web服务支持根据域名进行路由转发。
准备:
在使用frp之前,需要一台有公网IP的服务器,一台需要实现内网穿透的机器(树莓派),SSH工具。
下面开始搭建外网NAS:
1.登录云服务器,根据服务器的操作系统,在Release页面中找到对应的frp程序,然后分别在服务器和树莓派中下载它。
下面所示范用的frp程序是基于i686CPU的云服务器和树莓派4b.
云服务器操作:
首先使用SSH连接上云服务器,使用wget指令下载frp程序。
wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_386.tar.gz
使用tar指令解压tar.gz文件
tar -zxvf frp_0.16.0_linux_386.tar.gz
然后进入解压出来的文件夹
cd frp_0.16.0_linux_386
然后修改服务器配置文件,即frps.ini文件,使用nano指令对目标文件进行编辑。
sudo nano frps.ini
打开文件之后将文件里的内容改成
[common]
bind_port = 7000
[common]部分是必须有的配置,其中bind_port是自己设定的frp服务端端口。
保存上面的配置后,使用以下指令启动frp服务端。
./frps -c ./frps.ini
到此服务器端的配置就告一段落。
树莓派操作:
树莓派安装的frp程序跟云服务器端的程序是不一样的,树莓派要选择arm版的,前一部分操作跟云服务器端是相同的。
wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_arm.tar.gz
#这里版本号要相同!!!!!!
tar -zxvf frp_0.16.0_linux_arm.tar.gz
cd frp_0.16.0_linux_arm
sudo nano frpc.ini
客户端的配置如下:
上面的配置和服务器要一一对应起来:
server_addr后面要填云服务器的IP
server_port后面填云服务器的bind_port
[ssh_pi]中的内容备注如下:
local_ip后面填树莓派的内网IP,也可以直接用这个!
local_port后面填树莓派的SSH端口,一般是22
remote_port后面填的端口可以随意,但是不要占用特定端口
[samba]中的内容备注如下:
local_port后面填445端口(如果没有修改默认端口的话)
lremote_port后面填4545,这是转发端口,记住用这个就对了!
后面的可以复制粘贴了,最后是账号和密码
保存配置,然后运行客户端
./frpc -c ./frpc.ini
此时如果树莓派命令行出现了"start proxy success"字样,就证明连接成功了!
如果出现connecting timed out字样,证明云服务器没有将端口放在安全组内,下面以阿里云服务器开启安全组端口为例
打开主控台之后选择安全组,然后右上角有一个创建安全组
以打开6000端口为例
然后再重新运行一下,就能够使客户端连接上服务端了!
后台运行frp
这儿使用的是nohup指令
nohup ./frpc -c ./frpc.ini#在客户端
nohup ./frps -c ./frps.ini#在服务端
后续!!!
考虑到每次开机都要 输入nohup命令,在这儿再接一个自启动教程
使用systemctl来控制启动
首先创建一个文件
sudo vi /lib/systemd/system/frpc.service
在里面内容如下:
[Unit]
Description=frpc.service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/your/path/frpc -c /your/path/frpc.ini
[Install]
WantedBy=multi-user.target
然后启动frpc
#启动frpc
sudo systemctl start frpc
#自启动frpc
sudo systemctl enable frpc
#重启frpc
sudo systemctl restart frpc
#停止frpc
sudo systemctl stop frpc
服务器端与客户端类似的配置。
官网参考文档