Frp:物联网边缘终端管理福音

原创
2020/12/30 17:23
阅读数 679

背景

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,在物联网终端场景情况下,网络环境复杂,通过frp满足远程调试和监控管理

10分钟安装

实现目标

  • (1)通过ssh访问边缘终端设备
  • (2)自定义绑定域名访问内网web服务
  • (3)内网服务stcp安全模式访问

配置前准备

  • 公网服务器1台,可以购买一台阿里云公网IP服务器
  • 内网服务器1台(我这里演示的是树莓派 linux环境)

安装步骤

  1. 下载地址是https://github.com/fatedier/frp/releases
    wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz
  2. 新建目录mkdir -p /usr/local/frp,上传frp_0.13.0_linux_amd64.tar.gz至linux服务器该目录下
  3. 解压tar -zxvf frp_0.13.0_linux_amd64.tar.gz
  4. 进入解压目录cd frp_0.13.0_linux_amd64,这里主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注两个文件。
  5. 服务端配置(公网服务器),首先删掉frpc、frpc.ini两个文件,然后再进行配置, vim ./frps.ini,
[common]
bind_udp_port = 6707
bind_port = 6706
vhost_http_port  = 7511
vhost_https_port = 7510

dashboard_port =   6708    #配置的frp管理页面,可以实时看各个连接终端情况
dashboard_user =  admin
dashboard_pwd =   admin123
token =   123456    #设定token验证

启动服务./frps -c ./frps.ini,这是前台启动,后台启动命令为nohup ./frps -c ./frps.ini &

7.客户端配置 vim ./frpc.ini

[common]
server_addr =  *.224.3.95  #公网服务器ip
server_port =  6706           #与服务端bind_port一致
token =    123456

#公网通过ssh访问内部服务器
[test_ssh]
type = tcp   #连接协议
local_ip = 127.0.0.1    #内网服务器ip,默认:127.0.0.1
local_port = 22   #ssh默认端口号
remote_port = 6707 #自定义的访问内部ssh端口号

#公网访问内部web服务器以http方式
[test_web]
type = http
local_port = 90   #内网web服务的端口号
custom_domains = agent.hippo.com  #所绑定的公网服务器域名,也可以在你访问机器上  绑定hosts

#公网访问内部web服务器以http方式,可以配多个
[test_web1]
type = http #访问协议
local_port = 91 #内网web服务的端口号
custom_domains = config.hippo.com  #所绑定的公网服务器域名,一级、二级域名都可以

保存然后执行./frpc -c ./frpc.ini启动,后台启动命令为nohup ./frpc -c ./frpc.ini &

8、访问方式 外网ssh访问内网服务器(直接使用配置里面数据演示) ssh -oPort=6707 pi@*.224.3.95 外网htpp访问内网服务器 curl agent.hippo.com:7511 curl config.hippo.com:7511

其它使用

安全地暴露边缘设备服务stcp

对于某些服务来说如果直接暴露于公网上将会存在安全隐患。 使用 stcp(secret tcp) 类型的代理可以避免让任何人都能访问到要穿透的服务,但是访问者也需要运行另外一个 frpc。 以下示例将会创建一个只有自己能访问到的 ssh 服务代理。 frps 的部署步骤同上。 1.启动 frpc,转发内网的 ssh 服务,配置如下,不需要指定远程端口:

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[secret_ssh]
type = stcp
sk = abcdefg   # 只有 sk 一致的用户才能访问到此服务
local_ip = 127.0.0.1
local_port = 22

2.在要访问这个服务的机器上启动另外一个 frpc,配置如下:

[common]
server_addr =   *.224.3.95
server_port =   6706
token =    123456
[A144465CDCF515089023C3DA23D48BAC_ssh_visitor]
type = stcp
role = visitor
server_name = A144465CDCF515089023C3DA23D48BAC_ssh
sk = abcdefg
bind_addr = 127.0.0.1
bind_port = 7513

3.通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=7513 test@127.0.0.1

客户端热加载配置文件

当修改了 frpc 中的代理配置,可以通过 frpc reload 命令来动态加载配置文件,通常会在 10 秒内完成代理的更新。 启用此功能需要在 frpc 中启用 admin 端口,用于提供 API 服务。配置如下:

frpc.ini

[common] admin_addr = 127.0.0.1 admin_port = 7400 之后执行重启命令:

frpc reload -c ./frpc.ini 等待一段时间后客户端会根据新的配置文件创建、更新、删除代理。

资料

https://github.com/fatedier/frp https://gofrp.org/docs/ https://blog.csdn.net/u013144287/article/details/78589643/ https://www.jianshu.com/p/ad7388fef8bc

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部