• Frp(内网穿透)服务部署


    Frp(内网穿透)服务部署

    1.需求场景

    为使得内网环境下的服务能正常被公网访问。将内网端口通过映射到公网机器上实现正常访问。

    2.环境准备

    • 你需要有一台固定IP的公网服务器,建议使用固定带宽,因为内网穿透(非P2P模式)走的是公网流量,如果用按流量计费的服务器,内网服务器做网盘等应用会非常浪费流量。

    • 一台本地服务器,可以是windows、linux、macOS。

    • 公网服务器与本地服务器要打开相应的端口,才能使服务生效。

    • 公网服务器 IP:xx.xx.xx.xx

    • 内网服务器 IP:192.168.0.3

    • 系统:CentOS 7.9

    注意: 若使用虚拟机则推荐桥接模式固定IP,可以省去很多麻烦。具体本文不多做阐述。

    3.环境部署

    a.资源包下载

    下载地址:https://link.zhihu.com/?target=https%3A//github.com/fatedier/frp/releases

    在此链接下找到各自机型的资源包进行下载上传到服务器上。(推荐最新版)我这里使用的是最新的0.51.3版本。

    在这里插入图片描述

    b.资源包介绍

    • 解压资源包为/usr/local/bin/frp
    [root@frp ~]# tar -zxvf frp_0.51.3_linux_amd64.tar.gz -C /usr/local/bin/frp
    
    • 1
    • 查看资源包内容
    [root@frp ~]# tree /usr/local/bin/frp/
    /usr/local/bin/frp/
    |-- frpc
    |-- frpc_full.ini
    |-- frpc.ini
    |-- frps
    |-- frps_full.ini
    |-- frps.ini
    `-- LICENSE
    
    0 directories, 7 files
    [root@frp ~]# ll /usr/local/bin/frp/
    total 30784
    -rwxr-xr-x 1 1001 docker 14290944 Aug 14 12:04 frpc
    -rw-r--r-- 1 1001 docker    12669 Aug 14 12:09 frpc_full.ini
    -rw-r--r-- 1 1001 docker      132 Sep 21 23:37 frpc.ini
    -rwxr-xr-x 1 1001 docker 17186816 Aug 14 12:04 frps
    -rw-r--r-- 1 1001 docker     5933 Aug 14 12:09 frps_full.ini
    -rw-r--r-- 1 1001 docker      134 Sep 22 00:02 frps.ini
    -rw-r--r-- 1 1001 docker    11358 Aug 14 12:09 LICENSE
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    frps: 服务端启动文件

    1. frps_full.ini: frps_full.ini 是 frp 服务端的完整配置文件,其中包含了所有可用的配置选项和参数。这个文件通常用于整体配置 frp 服务器,包括绑定地址、端口、身份验证方式、通信加密等。使用 frps_full.ini,可以自定义 frp 服务器的行为以满足特定需求。
    2. frps.ini: frps.ini 是简化版的 frp 服务端配置文件,它只包含了最常用的配置项和参数,适用于一些简单的使用场景。相比于 frps_full.ini,它省略了某些高级功能和复杂配置,并提供了更为简洁的配置方式。如果只需进行基本的 frp 服务器配置,frps.ini 可能更适合。

    frpc: 客户端启动文件

    1. frpc_full.ini: frpc_full.ini 是 frp 的完整配置文件,其中包含了所有可用的配置选项和参数。这个文件通常用于整体配置 frp 客户端,包括服务器地址、端口、身份验证方式、代理规则等。使用 frpc_full.ini,可以灵活地配置 frp 客户端以满足特定需求。
    2. frpc.ini: frpc.ini 是简化版的 frp 配置文件,它只包含了最常用的配置选项和参数,适用于一些简单的使用场景。相比于 frpc_full.ini,它省略了某些高级功能和复杂配置,并提供了更为简洁的配置方式。如果只需进行基本的 frp 配置,frpc.ini 可能更适合。

    c.服务端部署

    • 下载解压资源包到公网服务器上解压步骤同上
    • 生成唯一token,将以下命令生成的随机token复制到下一步
    [root@frp ~]# openssl rand -hex 16
    
    • 1
    • 配置公网服务器的Frp文件
    [root@frp ~]# vim /usr/local/bin/frp/frps.ini
    [common]
    bind_port = 7000
    token = xxxxxxxxxxxxxxxxxxxxxx
    dashboard_port = 7001
    dashboard_user = admin
    dashboard_pwd = admin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    参数说明

    bind_port:用于服务器用户接收客户端连接的端口

    token:基于 Token 的身份验证方式比较简单,需要在 frpc 和 frps 的 [common] 段落中配置上相同的 token 参数即可。

    dashboard_port:启用 Dashboard 监听的本地端口

    dashboard_user:HTTP BasicAuth 用户名 (随意设置)

    dashboard_pwd: HTTP BasicAuth 密码(随意设置)

    dashboard 是用于监控FRP端口运行状态以及流量,设置好 dashboard 后可以通过 指定IP xx.xx.xx.xx:7001访问FRP的服务端仪表盘来查看运行状况。

    • 启动服务端

    配置文件编写好后,进入FRP所在目录通过 ./frps -c ./frps.ini 启动服务端

    至此,服务端搭建完成。

    c.客户端部署

    • 下载解压资源包到内网服务器上解压步骤同上
    • 配置内网服务器的Frp文件
    [root@Client ~]# vim /usr/local/bin/frp/frpc.ini
    [common]
    server_addr = xx.xx.xx.xx
    server_port = 7000
    
    token = xxxxxxxxxxxxxxxxxxxxxx
    
    admin_addr = 192.168.0.3
    admin_port = 7002
    admin_user = admin
    admin_pwd = admin 
    
    [FRP-module]
    type = tcp
    local_ip = 192.168.0.3
    local_port = 7002
    remote_port = 7002
    
    [HTTPD-module]
    type = tcp
    local_ip = 192.168.0.3
    local_port = 80
    remote_port = 8008
    
    [SSH-Module]
    type = tcp
    local_ip = 192.168.0.3
    local_port = 22
    remote_port = 2022
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    参数说明

    server_addr:连接服务端的地址

    server_port:连接服务端的端口

    token:鉴权使用的 token 值,需要和服务端设置一样的值才能鉴权通过

    admin_addr:启用 AdminUI 监听的本地地址(本地服务器IP地址)

    admin_port:启用 AdminUI 监听的本地端口

    admin_user:HTTP BasicAuth 用户名

    admin_pwd:HTTP BasicAuth 密码

    以上的admin_*是开启本地服务器的管理web界面以及设置用户密码

    [frp-admin]:仅在 frpc 中使用,用于配置单个代理的参数。代理名称必须唯一,不能重复(配置本地服务器管理 web界面 )

    type = tcp:代理类型

    local_ip = 192.168.0.3 :需要被代理的本地服务的 IP 地址,可以为所在 frpc 能访问到的任意 IP 地址

    local_port = 7002 :本地服务端口,配合 local_ip

    remote_port = 7002 :远程访问端口,用户访问此端口的请求会被转发到 local_ip:local_port

    • 启动客户端

    配置文件编写好后,进入FRP所在目录通过 ./frps -c ./frpc.ini 启动服务端

    至此,客户端搭建完成。

    4.服务测试

    浏览器访问公网IP:xx.xx.xx.xx:7001

    由于之前对内网服务器做了关机操作,所以这里的指标为offline正常情况下(内网服务器开启状态),以下红框中的status状态为绿色的online

    在这里插入图片描述

    5.扩展

    systemd接管frp服务端配置步骤

    # 配置服务端自动启动文件
    [root@frp ~]# vim /etc/systemd/system/frp.service
    [Unit]
    Description=Frp Service
    After=network.target
    
    [Service]
    Type=simple
    User=nobody
    Restart=on-failure
    RestartSec=5s
    ExecStart=/usr/local/bin/frp/frps -c /usr/local/bin/frp/frps.ini
    LimitNOFILE=1048576
    
    [Install]
    WantedBy=multi-user.target
    
    # 重新加载启动文件
    [root@frp ~]# systemctl daemon-reload
    # 启动frp服务
    [root@frp ~]# systemctl start frp.service
    # 设置开机自启动
    [root@frp ~]# systemctl enable frp.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    systemd接管frp客户端配置步骤

    # 配置服务端自动启动文件
    [root@Client ~]# vim /etc/systemd/system/frp.service
    [Unit]
    Description=Frp Client Service
    After=network.target
    
    [Service]
    Type=simple
    User=nobody
    Restart=on-failure
    RestartSec=5s
    ExecStart=/usr/local/bin/frp/frpc -c /usr/local/bin/frp/frpc.ini
    ExecReload=/usr/local/bin/frp/frpc reload -c /usr/local/bin/frp/frpc.ini
    LimitNOFILE=1048576
    
    [Install]
    WantedBy=multi-user.target
    
    # 重新加载启动文件
    [root@Client ~]# systemctl daemon-reload
    # 启动frp服务
    [root@Client ~]# systemctl start frp.service
    # 设置开机自启动
    [root@Client ~]# systemctl enable frp.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    6.注意事项

    • 公网,内网服务器都需要做好防火墙配置,放行所需端口
    • 内网服务器上端口是存在且必须能正常访问
    • 内网服务器要能正常访问公网
  • 相关阅读:
    elementui 表格自动滚动
    从Hugging Face下载数据测试whisper、fast_whisper耗时
    【优化算法】基于matlab象鼻虫损害优化算法 (WDOA)【含Matlab源码 2228期】
    【Tomcat目录详解】关于Tomcat你还需要了解的详细内容
    消防大数据分析
    Docker 学习笔记(十):Centos7 中 Docker 部署 Redis 集群,打包 SpringBoot 微服务
    numpy筛选指定的行或者列
    多线程DPDK应用的内存优化
    如何衡量算法的优劣??
    mysql面试题34:Hash索引和B+树区别是什么?在设计索引怎么选择?
  • 原文地址:https://blog.csdn.net/m0_52508197/article/details/133176480