CentOS7 自动部署脚本实现内网穿透服务器

2020-11-10  本文已影响0人  往后余生9375

脚本

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

上一篇 下一篇

猜你喜欢

热点阅读