树莓派+阿里云+frp 实现内网穿透
注意:!!!!! 树莓派+阿里云+frp实现内网穿透的方案 仅适用于有云服务器的情况,没有云服务器的请尝试使用花生壳,cpolar等实现内网穿透。
前言:
服务器端:阿里云等服务器 -> 我的系统为阿里云debian云服务器
客户端:树莓派->我的为raspberry pi 3B+ 树莓派64位系统(rasbian11 64bit )
1、服务器端搭建
下载frp
#看一下最新版本Releases · fatedier/frp (github.com),
#服务器端下载的是x86,客户端如果是树莓派就是arm/arm64,如果是pc就是x86,这里用的是树莓派即arm64,
#因此服务器下载x86版本,客户端下载arm64版本
wget https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_386.tar.gz
解压
mkdir frp tar -zxvf frp_0.49.0_linux_386.tar.gz -C frp
进入目录
cd frp/frp_0.49.0_linux_386/
修改配置文件
sudo vim frps.ini
[common]
bind_port = 7000
vhost_http_port = 9000
auto_token = 123456
启动
网上说的是frps -c frps.ini 启动,但这样必须每次都开着,为了以后更好的管理和控制,我们使用systemd去管理,即用systemctl指令去作为一个服务管理
步骤
sudo cp frps /usr/local/bin/frps sudo mkdir /etc/frp/ sudo cp frps.ini /etc/frp/frps.ini
sudo vim /etc/systemd/system/frps.service
填写模板
[Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini [Install] WantedBy = multi-user.target
然后就可以使用systemd指令控制了
开启服务&&开机启动
# 启动frp
systemctl start frps
# 开启启动frp
systemctl enable frps
服务器端到此就搭建完毕了
2、客户端搭建
下载frp
#敲黑板!!!!看清楚,这个是arm64,服务器端是x86
wget https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_arm64.tar.gz
解压
mkdir frp tar -zxvf frp_0.49.0_linux_arm64.tar.gz -C frp
进入目录
cd frp/frp_0.49.0_linux_arm64/
修改配置文件
#看清楚了,服务器端是frps,客户端是frpc sudo vim frpc.ini
[common]
tls_enable = true
server_addr = 你自己的云服务器id
server_port = 7000
#这里往下就是你要内网穿透的端口了,所以看清了,它的原理是把你的服务端口映射到云服务的某个服务端口,你要加那个服务,自己就在下面添加,这里以ssh和vnc为例
#为了和云服务器区分,最好都存在的服务不要用本来的名字,如ssh,这样的话,可能两边的ssh有冲突,所以我们改个ssh1等等都行,只要不叫ssh都行
[ssh1]
type = tcp
local_ip = 你的树莓派ip
local_port = 22 #这里就是树莓派即客户端ssh的端口
remote_port = 6000 #这是你打算在云服务上映射的端口,那当然是没用过的,用过的不行用之前可以用netstat -ntlp看看是不是端口被占用,6000是举例,当然你也可以直接用
[VNC1]
type = tcp
local_ip = 你的树莓派ip
local_port = 5900 #这里就是树莓派即客户端vnc的端口
remote_port = 6900 #这是你打算在云服务上映射的端口,那当然是没用过的,用过的不行用之前可以用netstat -ntlp看看是不是端口被占用,6900是举例,当然你也可以直接用
启动
网上说的是frpc -c frpc.ini 启动,但这样必须每次都开着,为了以后更好的管理和控制,我们使用systemd去管理,即用systemctl指令去作为一个服务管理
步骤
#还是那句话,看清楚这里都是frpc,不是frps
sudo cp frpc /usr/local/bin/frpc sudo mkdir /etc/frp/ sudo cp frpc.ini /etc/frp/frpc.ini sudo vim /etc/systemd/system/frpc.service
启动&&开机启动
# 启动frp sudo systemctl start frpc # 开启启动frp sudo systemctl enable frpc
3、开放端口
至此就搭建完成了,接下来我们需要开放服务器,注意是服务器!不是树莓派!端口,因为用到了云服务安全级别比较高,我们除了系统放开外,还需要再阿里云等网页去设置
系统端口放开
#你用到哪个就开放哪个,以后添加新的端口映射记得要来这里放开端口 iptables -A INPUT -p tcp --dport 6000 -j ACCEPT iptables -A INPUT -p tcp --dport 6900 -j ACCEPT #这样还不行重启会失效,因此,我们需要将这个开放指令保存 #我们需要借助安装iptables-persistent 保存规则持续生效 sudo apt-get install iptables-persistent netfilter-persistent save netfilter-persistent reload #设置完成后指定端口就会持续放行了,记得每次放开端口都要这么保存一下
阿里云端放开
这个我就不多说了,相信用过云服务的都知道怎么开放,用到哪个开放哪个,
一切完成之后就完成了搭建
4、测试
可以拿一个ssh软件进行 测试
能看到登入信息证明搭建成功
END