基于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 分析上面的端口转发

云服务器端口外部访问对应端口功能
700021111与树莓派建立tcp链接, 这里在树莓派配置的server_port中添加的是21111, 含义是树莓派客户端通过tcp向云服务器7000请求建立链接
600022222转发树莓派22端口数据, 这里在树莓派中直接使用6000, 因为树莓派已经与云服务器建立了链接, 所以此时就是云服务器的里面;
800023333外网访问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. 具体数据流如下

  1. 树莓派<tcp>21111(云服务器的7000端口); 这里tcp建立链接后, 两方内部直接暴露给对方
  2. 外网请求树莓派22==>请求22222(云服务器6000端口==>22)树莓派
  3. 树莓派数据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下载对应的版本

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落子无悔!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值