• frp内网穿透搭建流程,UDP通讯测试


    Github地址:https://github.com/fatedier/frp

    参考文档地址:https://gofrp.org/docs/

    安装包下载地址(参考。本次以此版本安装):https://github.com/fatedier/frp/releases/tag/v0.35.1

    安装包下载

    • Centos7 64位可选择此版本frp_0.35.1_linux_amd64.tar.gz
    • 本次部署及测试环境:
      • 测试协议UDP
      • win10:访问测试
      • 阿里云ECS Centos 7:frp服务端
      • 虚拟机Centos 7 : frp客户端

    frp安装

    由于我的服务端和客户端都是Linux系列,所以我下载一个即可。

    如何区分服务端和客户端:

    看文件后缀:frp_
    frps为服务端。后缀为s
    frpc为客户端。后缀为c
    

    解压命令:

    tar -zxvf frp_0.35.1_linux_amd64.tar.gz
    
    • 下载后解压,文件目录如下:

    • systemd内文件如下:

    frp配置

    • 服务端简单配置:

      frps.ini

      [common]
      bind_port = 7000             #绑定端口,用于和客户端连接
      privilege_token = zxc1234    #用于连接认证,可以省略
      
      dashboard_port = 7001        #启动服务端UI页面,可以看到一些信息,无管理功能
      dashboard_pwd = zxc1234  #设置访问页面用户的密码。默认用户名为:admin
      
    • 客户端的简单配置:

      frpc.ini

      [common]
      server_addr = 39.156.69.79     #frp服务端的地址,换成你的公网IP
      server_port = 7000             #frp服务端的端口
      privilege_token = zxc1234      #连接认证
      
      [web]
      privilege_token = true        #是否使用认证
      type = udp                    #连接类型
      local_ip = 127.0.0.1          #默认值
      local_port = 6002             #本机服务端口,比如ssh的22,则填入22。6000可能会被系统使用。
      remote_port = 6001            #服务端转发至本机对外开放的端口
      
      

    frp启动测试

    启动顺序为:先服务端,后客户端。

    阿里云ECS需在网络规则中增开6001端口,协议选择UDP(默认TCP,会导致本次测试失败)>。

    两台主机都临时关闭防火墙:

    systemctl stop firewalld
    
    • 服务端:

      ./frps -c frps.ini
      #设置后台运行,开机启动参见文章末尾内容
      #检查端口监听情况使用命令:netstatus -nltp   (此处frp应监听三个端口:7000、7001、6001)
      #7000接收frp客户端连接、7001为UI面板、6001转发至frp客户端端口6001
      
    • 客户端:

      ./frpc -c frpc.ini
      #设置后台运行,开机启动参见文章末尾内容
      #检查端口监听情况使用命令:netstatus -nltp  (此处frp应监听两个端口:6001、6002)
      #6001接收外部流量转发至内部6002端口,6002端口由UDP服务端监听
      
    • 查看服务端UI面板(frp客户端未启动)

      访问:http://公网地址:7001

    • 查看服务端UI面板(frp客户端启动后)

    UDP通讯测试

    • win10下的一个UDP 客户端python脚本内容:

      import socket
      import time
      
      client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
      
      num = 0
      while 1:
          if num == 100:
              break
              
          #此处IP地址换成你的公网IP
          client.sendto("from client message".encode("utf-8"),("39.156.69.79",6001))
          data,server = client.recvfrom(1024)
          print("接收到服务端消息:", data.decode("utf-8"))
          
          num += 1
          print("发送第", num, "条")
          time.sleep(1)
      client.close()
      
    • 虚拟机中的一个UDP 服务端python脚本内容:

      #python3
      #coding:utf8
      import socket
      
      server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
      server.bind(("127.0.0.1", 6002))
      print("服务器已经启动")
      while True:
          data, client = server.recvfrom(1024)
          print("接受到客户端的消息:", data.decode("utf-8"))
          server.sendto("from server message".encode("utf-8"), client)
      
      
    • 如果能通则会输出对应内容,如果不通,建议先使用局域网进行测试(将39.156.69.79改为192.168.28.131[vmware虚拟网卡])

    使用systemctl 管理frp

    • 配置frp服务端service文件:

      移动frps.service文件至指定目录:

      cp ./frp_0.35.1_linux_amd64/systemd/frps.service /usr/lib/systemd/system/
      

      vi查看frps.service文件内容,记录frps文件位置和frps.ini文件位置(也可创建一个):

      vi /usr/lib/systemd/system/frps.service
      
      [Unit]
      Description=Frp Server Service
      After=network.target
      
      [Service]
      Type=simple
      User=nobody
      Restart=on-failure
      RestartSec=5s
      ExecStart=/usr/bin/frps -c /etc/frp/frps.ini     #注意此处内容
      
      [Install]
      WantedBy=multi-user.target
      
      

      frps文件和frps.ini复制到指定位置:

      cp ./frp_0.35.1_linux_amd64/frps /usr/bin/
      mkdir /etc/frp
      cp ./frp_0.35.1_linux_amd64/frps.ini /etc/frp
      

      测试启动:

      systemctl start frps 
      systemctl status frps
      #设置开机启动:
      systemctl enable frps
      #关闭开机启动:
      systemctl disable frps
      

    • 配置frp客户端service文件:

      参考服务端配置流程

  • 相关阅读:
    poj.1703.Find them, Catch them(并查集)
    uva.10020 Minimal coverage(贪心)
    Hdu.1325.Is It A Tree?(并查集)
    1455.Solitaire(bfs状态混摇)
    hdu.1430.魔板(bfs + 康托展开)
    hdu.1254.推箱子(bfs + 优先队列)
    hihoCoder挑战赛11.题目4 : 高等理论计算机科学(LCA)
    Codeforces Round #302 (Div. 2).C. Writing Code (dp)
    hdu.1198.Farm Irrigation(dfs +放大建图)
    hdu.1111.Secret Code(dfs + 秦九韶算法)
  • 原文地址:https://www.cnblogs.com/lisicn/p/14448280.html
Copyright © 2020-2023  润新知