今天说下树莓派上利用frp实现内网穿透,下面说下树莓派上利用frp实现内网穿透需要准备些什么?
树莓派3 如果不能在外网控制树莓派系统,可玩性也就降低了。这里介绍用frp开源软件进行内网穿透,让你在外面也能控制树莓派系统。
安装环境和需求
一台具有公网ip的服务器
一个域名
如果没有服务器和域名可以使用《zerotier内网穿透介绍及设置方法》
内网客户端使用Raspbian Pi 3b,Raspbian Stretch
公网服务端使用CentOS 7的小鸡
服务端上的配置
(本人喜欢把所有应用放到/home目录下)
先来个好听的名字 比如frp
mkdir /home/frp cd /home/frp
再来这里看一下坠新的版本是啥,我看的时候是0.14.1,服务端当然是选amd64啦
wget https://github.com/fatedier/frp/releases/download/v0.14.1/frp_0.14.1_linux_amd64.tar.gz
解压进去打开frps.ini
tar -zxvf frp_0.14.1_linux_amd64.tar.gz cd frp_0.14.1_linux_amd64 vi frps.ini
官方文档有对frps.ini的完整介绍,但我们只要内网穿透,因此只要跟着加简单几句就好了
# frps.ini [common] bind_port = 7000 vhost_http_port = 8080
保存退出后可以用下面的命令启动跑跑看
./frps -c ./frps.ini
出现Start frps success就好了,如果出错可以看看防火墙是否打开了相应端口
树莓派客户端上的配置
再来个好听的名字 比如还是frp
mkdir /home/frp cd /home/frp
这次下载的就是arm版啦
wget https://github.com/fatedier/frp/releases/download/v0.14.1/frp_0.14.1_linux_arm.tar.gz
如果使用上面命令下载失败,可以进https://github.com/fatedier/frp/releases然后手动下载拖进树莓派/home/frp文件夹内
老规矩解压进去打开配置文件,但这个配置文件比服务端的复杂一点
tar -zxvf frp_0.14.1_linux_arm.tar.gz cd frp_0.14.1_linux_arm/ vi frpc.ini
如果不想把ssh暴露在外网 可以全注释掉
输入
# frpc.ini [common] server_addr = x.x.x.x #这里是你的公网服务端ip server_port = 7000 [web] type = http local_port = 80 #Web服务的本地端口 custom_domains = www.yourdomain.com #域名,记得要解析到公网服务端
装完就可以起飞了
./frpc -c ./frpc.ini
出现Start proxy success就可以了
打开浏览器输入http://x.x.x.x:8080试试看
似乎一定要保证服务端一直且先开着才能连接成功
使用nohup制作一键启动脚本
客户端
因为本地的ssh工具一退出 树莓派的frpc就会退出 因此要想个好办法
可以用nohup或screen命令来保证frpc后台稳定运行,这里选择使用nohup
新建一个frp.sh
vi frp.sh
因为有时需要看log,所以就不加>/dev/null 2>&1 &了
#frp.sh(cilent nohup /home/frp/./frpc -c /home/frp/./frpc.ini &
设定权限后就可以起飞辣 777一劳永逸 去他妈的安全性(似乎应该用744)
sudo chmod 777 /home/frp/frp.sh ./frp.sh
服务端
同理,这里偷点懒,Xftp直接新建.sh权限改成744
#frp.sh(server nohup /home/frp/./frps -c /home/frp/./frps.ini &
如果不用sftp软件的话需要
sudo chmod 777 /home/frp/frp.sh
运行试试
./frp.sh
完成!这样就可以不用大段指令手动开启frp了
通过netstat -antpl查看是否有有7000端口,但退出需要kill pid,用ps aux慢慢找进程吧..
开机启动(Systemd)
这里用Systemd管理服务 比init.d和上面的破脚本不知道高到哪里去了
sudo vim /lib/systemd/system/frp.service
创建frp.service,输入
#frp.service [Unit] Description=frp Service After=network.target [Service] User=root Type=simple ExecStart=/home/frp/./frpc -c /home/frp/./frpc.ini [Install] WantedBy=multi-user.target
重载并设置开机启动
sudo systemctl daemon-reload sudo systemctl enable frp
//启动命令
sudo systemctl start frp
//停止命令
sudo systemctl stop frp
//重启命令
sudo systemctl restart frp
//查看状态
sudo systemctl status frp
完成!
官方QQ群号码:922069959