工具下载
文章目录
- 1. 起源
- 2. 具体要求如下:
- 3. 具体操作如下
- 3.1. 配置服务端(在云服务器上配置)
- 3.2. 配置客户端(在本地树莓派上配置)
- 3.3 分析上面的端口转发
- 3.4 配置服务开机自启动
- 4. 具体数据流如下
- 5. 云服务器端口配置设置
- 5.1 设置对外端口
- 5.2 设置端口安全
- 5.3. 设置服务开机自启动
- 6. frp实现浏览器访问共享文件夹
- 6.1 效果图
- 6.2 frp客户端配置
- 注意
1. 起源
原来云服务器还可以这样用, 成功利用我的云服务器实现了一波内网穿透, 大体来讲, 就是利用云服务器作为一个反向代理服务器, 用于实现云服务器转发本地数据, 在任意台联网的机子上随时随地访问到本地数据; 试想一下, 你将所有的资料都存放到家里的机子上, 然后出差, 任何地点任何时间随时访问家里的资料, 在线看你在家里下载好的视频, 文档, 岂不是太快乐了;
另外该工作还解决了另外一个工作问题: 实验室的服务器用的是校园网, 所以只能通过学校的VPN在家进行访问, 如果将服务器与云服务器进行一个反向代理, 这样在家也能轻松的使用xshell访问实验室的资源, 或者跑模型了;
在此之前我也尝试使用多种工具来做内网穿透, 例如花生壳(费用高, 带宽差, 无需配置), utools(无需配置, 免费, 端口容易被占用), 最后终于找到了这个frp一个有用的解决方案;
2. 具体要求如下:
购买一个云服务器, 我买的是助学云3M带宽40G存储(一年才100块一百块, 花生壳光内网穿透就399…), 挂载一个frp, 平时上传下载能够达到1M即可
3. 具体操作如下
3.1. 配置服务端(在云服务器上配置)
# 下载
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_386.tar.gz
# 解压.
tar -zxvf frp_0.21.0_linux_386.tar.gz
# cd 到 frp 目录.
cd frp_0.21.0_linux_386
# 编辑配置文件
sudo vi frps.ini
# 内容如下
[common]
bind_port = 7000 # 云服务器的7000端口
vhost_http_port = 8080 # 云服务器的8080端口
dashboard_port = 8000 # 云台控制端口, 云服务器的,
# 相当于将8000端口链接到了8080端口, 用于运行时检测数据流, 在浏览器访问
# http://IP:8000/static/#/ 登录账号是pi, 密码是pipi
dashboard_user = pi # 云台控制账号
dashboard_pwd = pipi # 云台控制密码
privilege_token = pipipi
# 运行frp服务端
./frps -c ./frps.ini
3.2. 配置客户端(在本地树莓派上配置)
# 下载客户端工具
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_arm.tar.gz
# 解压
tar -zxvf frp_0.21.0_linux_arm.tar.gz
# 进入
cd frp_0.21.0_linux_arm
# 编辑配置文件
vi frpc.ini
# 添加如下内容
[common]
server_addr = 10.99.253.88 # 云服务器的外部IP地址
server_port = 21111 # 云服务器的外部端口, 对应云服务器里面的7000端口
# 这里的21111对应的就是云服务器端的7000端口
privilege_token = pipipi
login_fail_exit = false
[ssh]
type = tcp # 设置tcp链接
local_ip = 127.0.0.1 # 树莓派本地IP
local_port = 22 # 树莓派的22端口
remote_port = 6000 # 服务器里面的6000端口
# 远程访问服务端的6000端口, 就相当于访问了本地的22端口了
# 开启frp客户端
./frpc -c ./frpc.ini
3.3 分析上面的端口转发
云服务器端口
外部访问对应端口
功能
7000
21111
与树莓派建立tcp链接, 这里在树莓派配置的server_port中添加的是21111, 含义是树莓派客户端通过tcp向云服务器7000请求建立链接
6000
22222
转发树莓派22端口数据, 这里在树莓派中直接使用6000, 因为树莓派已经与云服务器建立了链接, 所以此时就是云服务器的里面;
8000
23333
外网访问http://IP:23333/static/#/
所以本地访问ssh pi@10.15.10.99.46
同外网访问ssh -p22222 pi@10.99.253.88
为何外网访问的是22222, 因为外部访问内部的6000, 就是使用外部端口进行访问的
3.4 配置服务开机自启动
利用systemctl
创建对应的开机自启动
sudo vim /lib/systemd/system/frpc.service # frpc就是对应的systemctl服务
# 写入下面内容---------------------------------------------------------------
[Unit]
Description=fraps client service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/home/pi/zjq/01_software/02_software/frp/frpc -c /home/pi/zjq/01_software/02_software/frp/frpc.ini
[Install]
WantedBy=multi-user.target
# --------------------------------------------------------------
sudo systemctl start frpc # 然后就启动frpc
sudo systemctl enable frpc # 再打开开机自启动
sudo systemctl restart frpc # 重启服务
sudo systemctl stop frps # 停止服务
sudo systemctl status frps # 查看服务日志
4. 具体数据流如下
- 树莓派<tcp>21111(云服务器的7000端口); 这里tcp建立链接后, 两方内部直接暴露给对方
- 外网请求树莓派22==>请求22222(云服务器6000端口==>22)树莓派
- 树莓派数据22==>6000==>22222
5. 云服务器端口配置设置
5.1 设置对外端口
5.2 设置端口安全
5.3. 设置服务开机自启动
# 本地客户端(这里树莓派)
sudo vi /etc/rc.local
# 填写下面内容
nohup /home/pi/zjq/frp_0.21.0_linux_arm/frpc -c /home/pi/zjq/frp_0.21.0_linux_arm/frpc.ini &
exit 0
# 云服务器端
sudo vi /etc/rc.local
# 填写下面内容
# ./frps -c ./frps.ini
nohup /root/zjq/frp_0.21.0_linux_386/frps -c /root/zjq/frp_0.21.0_linux_386/frps.ini &
exit 0
6. frp实现浏览器访问共享文件夹
6.1 效果图
6.2 frp客户端配置
vi frpc.ini
# 增加下面内容
#===============================================
# 对外提供访问服务 浏览器访问 http://云服务器对外IP:21777/static/ 出现的就是/home/pi/zjq/data/对应的文件夹, 通过zjq zjq登录网页, 点击文件即可下载
[test_static_file]
type = tcp
local_ip = 127.0.0.1
plugin = static_file
remote_port = 6002 # 外部外部端口是21777
plugin_local_path = /home/data/
plugin_strip_prefix = static
plugin_http_user = 浏览器登录账户
plugin_http_passwd = 密码
#===============================================
注意
遇到不同的硬件平台, 请使用 uname -a
测试好硬件后, 去GitHub下载对应的版本