当前位置: 首页 > news >正文

linux服务-frp内网穿透工具

frp内网穿透工具

参考:Frp原理分析

请求原理

  • 请求流程图

    请添加图片描述

  • Frp请求流程

    1. 首先,frpc 启动之后,连接 frps,并且发送一个请求 login(),之后保持住这个长连接,如果断开了,就重试frps 收到请求之后,会建立一个 listener 监听来自公网的请求
    2. 当 frps 接受到请求之后,会在本地看是否有可用的连接( frp 可以设置连接池),如果没有,就下发一个 msg.StartWorkConn 并且 等待来自 frpc 的请求
    3. frpc 收到之后,对 frps 发起请求,请求的最开始会指名这个连接是去向哪个 proxy 的
    4. frps 收到来自 frpc 的连接之后,就把新建立的连接与来自公网的连接进行流量互转
    5. 如果请求断开了,那么就把另一端的请求也断开

安装示例

  1. 下载地址:https://github.com/fatedier/frp/releases

  2. 解压并使用

    ~]# tar xf frp_0.21.0_linux_amd64.tar.gz 
    ~]# cd frp_0.21.0_linux_amd64
    frp_0.21.0_linux_amd64]# lsfrpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE
    
  3. 配置 frps.ini

    [common]
    # 绑定的外网端口
    bind_port = 6666   # 注意这个端口需要做NAT映射,服务端的端口
    # 虚拟web主机端口,可不用配置
    vhost_http_port = 6081
    # 客户端认证密码
    auto_token = 123456
    # 服务器看板的访问端口
    dashboard_port = 7500  # 通过这个端口可以看到服务的连接状态
    # 服务器看板账户
    dashboard_user = admin
    dashboard_pwd = admin
    

    请添加图片描述

  4. 启动

    ]# cat /usr/local/frp/startfrp.sh 
    #!/bin/bash
    #
    # 自启frp服务
    /usr/local/frp/frps -c /usr/local/frp/frps.ini > /usr/local/frp/frps.log &
    echo $! > /usr/local/frp/frps.pid]# cat /usr/local/frp/stopfrp.sh 
    #!/bin/bash
    #
    # 停止frp服务
    PID=$(cat /usr/local/frp/frps.pid)
    kill -9 $PID
    rm -rf /usr/local/frp/frps.pid
    
  5. 配置frpc.ini

    ]# cat /usr/local/frp/frpc.ini 
    [common]
    server_addr = 这里写服务端的外网地址
    server_port = 666666
    log_file = ./frpc.log
    auto_token = 服务端的密码[ssh_50000]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22   # 服务端要监听的本地端口
    remote_port = 50000  # 通过frp穿透服务的端口
    
  6. 连接

    ]# ./frpc -c ./frpc.ini 2020/06/22 20:55:41 [I] [control.go:220] [63f674aa3fcb4587] control writer is closing
    2020/06/22 20:55:41 [I] [proxy.go:73] [63f674aa3fcb4587] [ssh_50000] proxy closing
    2020/06/22 20:55:41 [I] [proxy.go:119] [63f674aa3fcb4587] [ssh_50000] listener is closed
    2020/06/22 20:55:41 [I] [control.go:292] [63f674aa3fcb4587] client exit success
    2020/06/22 20:59:16 [I] [service.go:319] client login info: ip [1.1.1.1:1779] version [0.21.0] hostname [] os [linux] arch [amd64]]# ssh 外网地址 50000  # 也可以是其它端口或者协议
    
http://www.dtcms.com/a/564988.html

相关文章:

  • 宣城高端网站建设延吉网站开发
  • Springboot+BannerBanner(启动横幅)
  • 护照阅读器:公安安全检查的科技新助力
  • 网站支持ipv6做哪些改造余姚响应式网站建设
  • 建自己的网站多少钱网页设计与网站建设分析
  • Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的对抗训练与鲁棒性提升
  • Go语言设计模式:中介者模式详解
  • 使用Spring Boot、Spring AI、MongoDB Atlas 向量搜索和 OpenAI 构建 RAG 应用
  • 数据结构——三十七、关键路径(王道408)
  • 嵌入式软件的几种程序架构
  • 网站开发适合女生吗网页设计程序代码
  • 某游戏大厂的常用面试问题解析:Netty 与 NIO
  • 网站建设去哪可接单做押韵句子的网站
  • Memos:一款不打扰的笔记工具,使用cpolar远程后体验再升级
  • Uni APP中关于Android原生插件UniComponent的使用
  • Hadess零基础学习,如何管理Docker制品
  • 石家庄购物网站排名网站检测器
  • 《嵌入式硬件(二十):基于IMX6ULL的LCD操作》
  • 日志系统设计 与 策略模式实现
  • 电子规划书商务网站建设城市分站cms
  • 【android驱动开发十三】内核常见的十种死机类型
  • Flutter 移动端性能优化指南:内存、电量与 UI 渲染
  • 广告网站建设网wordpress登录更改域名后
  • 【JUnit实战3_25】第十五章:表现层测试(上)—— HtmlUnit 在网页测试中的用法
  • OpenComic,一款跨平台的漫画阅读器
  • 基于springboot的社区疫情物资管理系统的设计与实现(代码+数据库+LW)
  • 3.3V与5V电平转换方法、电路原理分析
  • python mysql-connector、PyMySQL基础
  • 【Javascript】如何硬拷贝一个数组?
  • 少儿编程不止学技术:6 大学习习惯的蜕变与思维能力的跃迁