frp部署

0.官方文档

https://gofrp.org/docs/overview/

 

1.frp简介

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

 

2.环境配置

云服务器端:10.133.246.218

本地客户端:172.16.0.115

 

#云服务端操作

3.配置go环境

(1)下载地址

go地址:https://golang.org/doc/install#requirements

go软件包:go1.18.3.linux-amd64.tar.gz

(2)环境变量配置

vim /etc/profile

#最后添加

export PATH=$PATH:/usr/local/go/bin

(3)环境变量生效

source /etc/profile

 

4.下载frp软件(下载最新版本)

说明:平台一样的情况下,frp云端和本地客户端使用的包是一样的,只是配置文件不通,服务端是frps.ini,客户端是frpc.ini

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

frp软件包:frp_0.47.0_linux_amd64.tar.gz

 

5.云服务器端配置文件修改

(1)配置文件说明

[common]                        # 通用配置段
bind_addr = 0.0.0.0             # 绑定的IP地址,支持IPv6,不指定默认0.0.0.0;
bind_port = 7000                # 服务端口;
bind_udp_port = 7001            # 是否使用udp端口,不使用删除或注释本行;
kcp_bind_port = 7000            # 是否使用kcp协议,不使用删除或注释本行;
# proxy_bind_addr = 127.0.0.1   # 代理监听地址,默认和bind_addr相同;

# 虚拟主机
vhost_http_port = 80            # 是否启用虚拟主机,端口可以和bind_port相同;
vhost_https_port = 443
vhost_http_timeout = 60         # 后端虚拟主机响应超时时间,默认为60s;

# 开启frps仪表盘可以检查frp的状态和代理的统计信息。
dashboard_addr = 0.0.0.0        # frps仪表盘绑定的地址;
dashboard_port = 7500           # frps仪表盘绑定的端口;
dashboard_user = admin          # 访问frps仪表盘的用户;     
dashboard_pwd = admin           # 密码;
assets_dir = ./static           # 仪表盘页面文件目录,只适用于调试;

# 日志配置文件
log_file = ./frps.log           # 日志文件,不指定日志信息默认输出到控制台;
log_level = info                # 日志等级,可用等级“trace, debug, info, warn, error”;
log_max_days = 3                # 日志保存最大保存时间;

token = 12345678                # 客户端与服务端通信的身份验证令牌

heartbeat_timeout = 90          # 心跳检测超时时间,不建议修改默认配置,默认值为90;?

# 指定允许客户端使用的端口范围,未指定则没有限制;
allow_ports = 2000-3000,3001,3003,4000-50000

max_pool_count = 5              # 每个客户端连接服务端的最大连接数;
max_ports_per_client = 0        # 每个客户端最大可以使用的端口,0表示无限制

authentication_timeout = 900    # 客户端连接超时时间(秒),默认为900s;

subdomain_host = frps.com       # 自定义子域名,需要在dns中将域名解析为泛域名;

tcp_mux = true                  # 是否使用tcp复用,默认为true;
                                # frp只对同意客户端的连接进行复用;

 

(2)配置文件示例

cat  /data/frp_0.47.0_linux_amd64/frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 7000

# Virtual host configuration
vhost_http_port = 80
vhost_https_port = 443

# Dashboard configuration
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

# logs
log_file = ./frps.log
log_level = info
log_max_days = 3

# auth token
token = 12345678

max_pool_count = 5
max_ports_per_client = 0
authentication_timeout = 900
tcp_mux = true

 

6.云服务端开机自启动配置

[root@ecs-54099138 /data ]# cat /lib/systemd/system/frps.service

[Unit]

Description=frps daemon

After=syslog.target network.target

Wants=network.target

[Service]

Type=simple

ExecStart=/data/frp_0.47.0_linux_amd64/frps -c /data/frp_0.47.0_linux_amd64/frps.ini

Restart=always

RestartSec=1min

[Install]

WantedBy=multi-user.target

 

7.云服务器端web页面地址

http://36.133.246.218:7500/static/#/

admin/admin

 

#本地客户端操作

1.下载frp

说明:由于我的本地客户端是arm架构的,所以下载arm架构的frp软件包

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

frp软件包:frp_0.47.0_linux_arm64.tar.gz

2.修改本地客户端frpc.ini配置文件

[root@cambricon /home/nvidia/aibox/frp]16 cat frpc.ini 

[common]
server_addr = 10.133.246.218
server_port = 7000
token = Keshen2023#
admin_addr = 0.0.0.0
admin_port = 7400
admin_user = admin
admin_pwd = admin@123

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 20022
remote_port = 20023

3.启动frp服务

说明:由于本地客户端没有systemctl命令,所以使用shell脚本去启停

[root@harbor frp]# cat frpc.sh 
#!/bin/bash

path=/home/nvidia/aibox/frp
cmd=$1
frpc_pid=`ps -ef | grep frpc.ini | grep color -v | grep grep -v | awk '{print $1}'`

if [[ "$cmd" == "start" ]];then
    echo "frpc start."
    nohup $path/frpc -c $path/frpc.ini > $path/frpc.log 2>&1 &
    if [[ -z "$frpc_pid" ]];then
        echo "0"
    else
        echo "1"
    fi
elif [[ "$cmd" == "stop" ]];then
    echo "frpc stop."
         kill -9 $frpc_pid
    if [[ -z "$frpc_pid" ]];then
                echo "0"
        else
                echo "1"
        fi
elif [[ $cmd == "reload" ]];then
    echo "frpc reload."
    kill -9 $frpc_pid
    nohup $path/frpc -c $path/frpc.ini > $path/frpc.log 2>&1 &
    if [[ -z "$frpc_pid" ]];then
                echo "0"
        else
                echo "1"
        fi
else
    echo "use: $0 [start|stop|reload]"

fi

 

4.本地客户端web页面地址

http://172.16.0.106:7969/static/#/

admin/admin@123

 

posted @ 2023-03-02 17:10  Leonardo-li  阅读(256)  评论(0编辑  收藏  举报