脚本
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(){
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 frp
cd frp
# 删除客户端使用的配置文件 服务器不需要
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 "frp服务器安装完成,版本:0.34.1,为了使用请修改frps.ini里面的最后一行。填入您当前服务器的域名"
}
# 卸载frps
uninstall_frps(){
rm -rf /usr/local/frp
echo "frp服务器卸载完成"
}
# 启动服务
run_frps(){
cd /usr/local/frp
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
客户端配置
[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
控制台
http://你的域名:7500/
注意事项
如果你的服务器对应域名是q.abc.com 你必须新增一个*.q.abc.com到服务器IP下。
客户端打印
frpc -c frpc.ini
image.png
让本地http支持https访问
https://blog.csdn.net/Linuxprobe18/article/details/108821251
网友评论