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