树莓派 frp内网穿透

使用树莓派当服务器,无法在外网访问

需要用一台公网的服务器,将树莓派的 端⼝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

树莓派 frp内网穿透_第1张图片

树莓派 frp内网穿透_第2张图片

# 自启动

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

树莓派 frp内网穿透_第3张图片

 

上面的没有测试成功,折腾了好久,终于实现开机自动启动了:

编写简单脚本:

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内网穿透_第4张图片

树莓派 frp内网穿透_第5张图片

新设备新端口,不改名称,会报错,提示名称占用,修改名称就能正常使用。

树莓派 frp内网穿透_第6张图片

增加设备端口后:

树莓派 frp内网穿透_第7张图片

感觉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/

你可能感兴趣的:(树莓派)