使用树莓派当服务器,无法在外网访问
需要用一台公网的服务器,将树莓派的 端⼝A 映射到服务器的 端⼝B 上
到时候访问端口B,就可以访问到树莓派的端口A
软件名称: frp
官⽹网: https://github.com/fatedier/frp
版本号:
服务器( debian 9 amd64): https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz
客户端( raspberry pi 3) : https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_arm.tar.gz
安装服务端
创建⽬目录
mkdir ~/frp && cd ~/frp
下载软件 (卡了了就多试⼏几次)
wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz
解压软件
tar -zxvf frp_0.16.1_linux_amd64.tar.gz && cd frp_0.16.1_linux_amd64
配置软件
rm frps.ini && vim frps.ini (先按⼀一下 i 键, 才可以拷⻉贝, 左下⾓角提⽰示INSERT), 再按ESC, 然后输入:wq 即可
[common]
# 监听端⼝
bind_port = 7000
# 传输过程压缩
use_compression = true
# ⽹⻚查看端⼝
dashboard_port = 7777
# 登录账号
dashboard_user = frp
# 登录密码
dashboard_pwd = 123456
# 认证码,树莓派只有提供了这个码,才可以连接成功
privilege_token = 20182018
启动脚本编写
touch /etc/init.d/frps && chmod u+x /etc/init.d/frps && vim /etc/init.d/frps
#!/bin/sh
### BEGIN INIT INFO
# Provides: frps
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: frps server
### END INIT INFO
RETVAL=0
FRP_PATH='/root/frp/frp_0.16.1_linux_amd64'
start(){
echo "frp service is started..."
${FRP_PATH}/frps -c ${FRP_PATH}/frps.ini &
}
stop(){
echo "frp service is stoped..."
killall frps
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop && start
;;
*)
echo "/etc/init.d/frp start | stop | restart";;
esac
exit $RETVA
开机自启动
touch /etc/systemd/system/frps.service && chmod 755 /etc/systemd/system/frps.service && vim /etc/systemd/system/frps.service
# frps service
[Unit]
Description=/etc/init.d/frps
After=network.target
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run
[Service]
ExecStart=/etc/init.d/frps start
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
[Install]
WantedBy=multi-user.target
Alias=frps.service
# 重启服务器
reboot
本例 腾讯云Centos 7,开机自启动方法未成功,登录服务器再手动开启服务:
/etc/init.d/frps
sh frps start
#或者
cd /etc/init.d
service frps start
# 打开浏览器 http://服务器的IP:7777/static/#/
默认会让你输入账号密码:
# 登录账号
dashboard_user = frp
# 登录密码
dashboard_pwd = 123456
客户端 (raspberry pi 3)
创建⽬目录
mkdir ~/frpc && cd ~/frpc
下载软件 (卡了了就多试⼏几次)
wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_arm.tar.gz
tips:如果太慢,就不要在树莓派上直接下,建议在自己的服务器上先下载,再复制到树莓派;
解压软件
tar -zxvf frp_0.16.1_linux_arm.tar.gz && cd frp_0.16.1_linux_arm
配置软件
rm frpc.ini && vim frpc.ini (先按⼀一下 i 键, 才可以拷⻉贝, 左下⾓角提⽰示INSERT), 再按ESC, 然后输入:wq 即可
[common]
server_addr = 47.94.80.118
server_port = 7000
# 这个密码与服务端设置⼀致
privilege_token = 20182018
login_fail_exit = false
[pi-ssh]
type = tcp
local_ip = 127.0.0.1
# 本地的端⼝22
local_port = 22
# 服务器端⼝8022
remote_port = 8022
注意:server_addr要改成自己的服务器IP;
保存然后执行./frpc -c ./frpc.ini启动,这是前台启动,后台启动命令为nohup ./frpc -c ./frpc.ini &
vi frpc.ini 添加以下命令,实现树莓派VNC,外网登录
[VNC——5900]
type = tcp
local_ip = 127.0.0.1
# 本地的端⼝5900
local_port = 5900
# 服务器端⼝5900
remote_port = 5900
# 自启动
sudo vim /etc/rc.local (在最后⼀一⾏行行exit 0; 之前插入 下列列语句句)
/home/pi/frpc/frp_0.16.1_linux_arm/frpc -c /home/pi/frpc/frp_0.16.1_linux_arm/frpc.ini
上面的没有测试成功,折腾了好久,终于实现开机自动启动了:
编写简单脚本:
cd到目录:、
cd /home/pi
nano新建脚本文件frpc.sh
nano frpc.sh
编写内容,cd进入frpc目录,然后后台运行frpc;
#!/bin/sh
#nohup /home/pi/frpc/frp_0.16.1_linux_arm/frpc -c /home/pi/frpc/frp_0.16.1_linux_arm/frpc.ini &
#sleep(10)
cd /home/pi/frpc/frp_0.16.1_linux_arm/
nohup ./frpc -c ./frpc.ini &
非常重要!!更改权限:
chmod 777 frpc.sh
sudo打开rc.local,进行编辑:
sudo nano /etc/rc.local
加入启动脚本:/home/pi/frpc.sh &
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
/home/pi/frpc.sh &
exit 0
需要映射的端口
服务 | 树莓派端口 | 服务端端口 |
ssh | 22 | 8022 |
注意:
多设备,多个端口,名称不能相同,
增加设备端口前:
新设备新端口,不改名称,会报错,提示名称占用,修改名称就能正常使用。
增加设备端口后:
感觉frp比ngork免费版的更快更稳,ngork容易掉线,免费的比较慢,隧道有时会出问题,不过使用也比较简便;
感兴趣的可以参考这个教程自己体会下:
树莓派3B+ Sunny-Ngrok TCP转发,外网访问快速设置
https://blog.csdn.net/jacka654321/article/details/80748081
frp教程参考链接:
内网穿透
https://www.bilibili.com/video/av23396284?spm_id_from=333.338.__bofqi.29
内网穿透 树莓派
笔记:
https://pan.baidu.com/s/1ewZsX1vvwycg5YnPGnwkhg
十分钟教你配置frp实现内网穿透
https://blog.csdn.net/u013144287/article/details/78589643/