脚本
frp.sh
!/bin/bash
# -*- coding: UTF-8 -*-
#############################################
# 作者:Dongzp
# 功能:自动化部署frp服务器实现内网穿透
# 兼容:适用于所有CentOS 7
# 参考:https://blog.csdn.net/qq_27229113/article/details/105118938
# Github:https://github.com/fatedier/frp
#############################################
# 下载frps并安装
install_frps(){
echo "请输入您的穿透服务器域名:"
read domain
wget https://myfilecdn.oss-cn-shenzhen.aliyuncs.com/frps/frp_0.34.1_linux_amd64.tar.gz
tar -xvf frp_0.34.1_linux_amd64.tar.gz -C /usr/local/
rm -rf frp_0.34.1_linux_amd64.tar.gz
cd /usr/local/
mv frp_0.34.1_linux_amd64 frps
cd frps
# 删除客户端使用的配置文件 服务器不需要
rm -f frpc frpc.ini LICENSE frpc_full.ini frps.ini frpcs_full.ini
cd systemd
# 删除客户端服务
rm -rf frpc.service frpc@.service
cd ../
# 下载配置文件
wget https://myfilecdn.oss-cn-shenzhen.aliyuncs.com/frps/frps.ini
chmod 777 frps.ini
echo "subdomain_host = ${domain}" >> frps.ini
echo -e "frps服务安装完成,路径/usr/local/frps,版本:0.34.1\n面板端口:7500,转发端口:7000,http端口:80,https端口:443\n面板用户名:admin,面板密码:admin123\n客户端连接token默认123456789\n如需修改配置文件请到安装目录修改,注意端口放行!"
}
# 卸载frps
uninstall_frps(){
kill_frps
rm -rf /usr/local/frps
echo "frp服务器卸载完成"
}
# 启动服务
run_frps(){
cd /usr/local/frps
pid=`ps -ef | grep frps | grep -v "grep"| awk -F " " '{print $2}'`
if [ $pid ] ; then
kill -9 $pid
fi
echo "启动服务成功"
nohup ./frps -c ./frps.ini &
}
# 杀死服务
kill_frps(){
pid=`ps -ef | grep frps | grep -v "grep"| awk -F " " '{print $2}'`
if [ $pid ] ; then
kill -9 $pid
echo "关闭服务成功"
fi
}
echo "1、安装frps服务端"
echo "2、卸载frps服务端"
echo "3、启动frps服务端"
echo "4、关闭frps服务端"
read num
case "$num" in
[1] )
install_frps
;;
[2] )
uninstall_frps
;;
[3] )
run_frps
;;
[4] )
kill_frps
;;
*) echo "选择错误,退出";;
esac
脚本直接安装
wget https://myfilecdn.oss-cn-shenzhen.aliyuncs.com/frps/frps.sh
chmod 755 frps.sh
./frps.sh
服务器插件
https://github.com/gofrp/fp-multiuser/
fp-multiuser 是 frp 的一个服务端插件,用于支持多用户鉴权。fp-multiuser 会以一个单独的进程运行,并接收 frps 发送过来的 HTTP 请求。
客户端配置
windows 客户端下载
https://myfilecdn.oss-cn-shenzhen.aliyuncs.com/frps/frp_0.34.1_windows_amd64.zip
[common]
server_addr = 172.16.100.100 //服务器地址
server_port = 7000 //服务器绑定端口
token = 12345678
# 通过 SSH 访问内网机器,外网通过6000可以访问22端口
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
# 通过自定义域名访问内网的 Web 服务,服务器已设置虚拟主机端口7500
[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
[web2]
type = http
local_port = 8080
custom_domains = www.yourdomain2.com
# 转发 DNS 查询请求
[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000
# 转发 Unix 域套接字
[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock
# 对外提供简单的文件访问服务
[test_static_file]
type = tcp
remote_port = 6000
plugin = static_file
# 要对外暴露的文件目录
plugin_local_path = /tmp/file
# 用户访问 URL 中会被去除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc
# 为本地 HTTP 服务启用 HTTPS
[test_htts2http]
type = https
custom_domains = test.yourdomain.com
plugin = https2http
plugin_local_addr = 127.0.0.1:80
# HTTPS 证书相关的配置
plugin_crt_path = ./server.crt
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp
# 安全地暴露内网服务
[secret_ssh]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
简单配置
[common]
server_addr = 你的IP
server_port = 7000
token = 你的token
# 自定义一个映射
[web]
type = http
local_ip = 127.0.0.1
local_port = 8081
subdomain = test
custom_domains = frp.51hengyi.com
[desktop]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
控制台
http://你的域名:7500/
注意事项
如果你的服务器对应域名是q.abc.com 你必须新增一个*.q.abc.com的泛解析到服务器IP下。
开放端口
7000 frp代理端口
7500 frp后端端口
3841 http端口(你的可能是80,看自己设置的参数,修改服务端frps.ini)
客户端打印
frpc -c frpc.ini
让本地http支持https访问
https://blog.csdn.net/Linuxprobe18/article/details/108821251