废话不多说直接上干货
FRP官方:https://github.com/fatedier/frp
FRP中文网站:https://gofrp.org/zh-cn/
准备环境:
- 带公网的VPS
- 内网Linux主机
一、在VPS上下载frp安装包
这里下载最新版的0.61.0
wget -P /frps https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz
解压
tar -zxvf frp_0.61.0_linux_amd64.tar.gz
mv frp_0.61.0_linux_amd64 frp0.61.0
配置frps.toml
文件
[root@qingtongc frp0.61.0]# cat frps.toml
bindPort = 7000
auth.method = "token" #简单的身份认证方式,建议配置
auth.token = "xksiewhd" # 默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0。
webServer.addr = "0.0.0.0"
webServer.port = 7500
# dashboard 用户名密码,可选,默认为空
webServer.user = "admin"
webServer.password = "frpadmin"
webServer.tls.certFile = "/ssl/cert/cert.crt"
webServer.tls.keyFile = "/ssl/cert/cert.key"#放通的端口范围
allowPorts = [{ start = 30000, end = 40000 },
]
使用systemd
vim /etc/systemd/system/frps.service
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /frps/frp0.61.0/frps -c /frps/frp0.61.0/frps.toml[Install]
WantedBy = multi-user.target
启动
systemctl daemon-reload && systemctl restart frps && systemctl enable frps
查看状态
systemctl status frps
二、内网服务器配置
先准备好所需的配置文件放在vps服务器上 frpc.toml
serverAddr = "www.qingtongqing.cc"
serverPort = 7000
auth.method = "token"
auth.token = "xksiewhd"[[proxies]]
name = "cilent_id1_ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = id1#如果需要映射多个端口,可以按照格式继续编辑
这边主动注册脚本可以放在VPS上直接拉取下来执行
#! /bin/bashdownload_url=https://example.com #替换为自己的公网域名或者IP地址
tag1='frp_0.61.0_linux_amd64.tar.gz'
tag2='frp_0.61.0_linux_arm64.tar.gz'
config_file=frpc.toml
mkdir -p /frpcssh_port=$((RANDOM % 10001 + 30000))system_check(){arch=$(uname -m)if [ "$arch" == "x86_64" ]; thenecho -e "\e[33m------正在执行------\e[0m"wget -P /frpc $download_url/packages/$tag1 > /dev/null 2>&1elif [[ "$arch" == "aarch64" ]]; thenecho -e "\e[33m------正在执行------\e[0m"wget -P /frpc $download_url/packages/$tag2 > /dev/null 2>&1elseecho -e "\e[31m无法识别的系统\e[0m"fi
}install_frpc(){if [ -f /frpc/$tag1 ]; thentar -xf /frpc/$tag1 -C /frpcmv /frpc/frp_0.61.0_linux_amd64 /frpc/frp0.61.0elif [ -f /frpc/$tag2 ]; thentar -xf /frpc/$tag2 -C /frpcmv /frpc/frp_0.61.0_linux_arm64 /frpc/frp0.61.0elseecho -e "\e[31m下载失败\e[0m"fi
}modify_config(){curl -s -o /frpc/frp0.61.0/$config_file $download_url/frp/$config_filesed -i "s/id1/$ssh_port/g" /frpc/frp0.61.0/$config_file
}add_frpc(){cat <<EOF > /usr/lib/systemd/system/frpc.service
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
ExecStart = /frpc/frp0.61.0/frpc -c /frpc/frp0.61.0/$config_file[Install]
WantedBy = multi-user.target
EOFsystemctl daemon-reload && systemctl restart frpc && systemctl enable frpc > /dev/null 2>&1
}add_success(){echo -e "\033[35m快捷登录方式为 ssh $download_url $ssh_port\033[0m"rm -f /frpc/$tag1 /frpc/$tag2
}main(){system_checkinstall_frpcmodify_configadd_frpcadd_success > /frpc/frpc.txtadd_success
}main
执行效果
清除脚本
remove_frpc(){# 停止并禁用服务systemctl stop frpcsystemctl disable frpcecho "frpc 服务已停止并禁用"# 删除服务文件rm -f /usr/lib/systemd/system/frpc.servicesystemctl daemon-reloadecho "frpc 服务文件已删除"# 删除安装目录rm -rf /frpcecho "/frpc 目录已删除"
}main(){remove_frpc
}main