提前准备:/root目录下:

checkpsw.sh ## 官方提供的自定义脚本,可在http://openvpn.se/files/other/checkpsw.sh下载

openvpn@.service #openvpn的服务启动文件,centos8缺失unit文件,从CentOS7复制文件或者自己写一个。

windows客户端需要提前下载客户端:https://openvpn.net/community-downloads/

点击查看代码
#!/bin/bash
#
#********************************************************************
#Author: wangdayu
#QQ: 965507991
#Date: 2022-08-20
#FileName: autovpn.sh
#URL: https://blog.51cto.com/dayu
#Description: The test script
#Copyright (C): 2022 All rights reserved
#********************************************************************
. /etc/init.d/functions
server=dayuserver
client=wangdayu
serverIP=`hostname -I|awk '{print $1}'`
# 安装openvpn和easy-rsa
install(){
if yum repolist |grep -i epel ;then
yum install -y openvpn easy-rsa
else
cat > /etc/yum.repos.d/epel.repo <<EOF
[epel]
name=EPEL
baseurl=https://mirror.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch
gpgcheck=0
enabled=1
EOF
yum install -y openvpn easy-rsa
fi
}
# CA环境部署和初始化生成ca证书
CA_init(){
cd /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa/3/ /etc/openvpn/easy-rsa
cp /usr/share/doc/easy-rsa/vars.example /etc/openvpn/easy-rsa/vars
sed -r -i.bak 's/^#(set_var EASYRSA_CA_EXPIRE).*[0-9]+.*/\1 36500/' /etc/openvpn/easy-rsa/vars
sed -r -i.bak 's/^#(#set_var EASYRSA_CERT_EXPIRE).*[0-9]+.*/\1 3650/' /etc/openvpn/easy-rsa/vars
cd /etc/openvpn/easy-rsa
./easyrsa init-pki <<EOF EOF
./easyrsa build-ca nopass <<EOF EOF
}
# 创建服务器证书
server_init(){
cd /etc/openvpn/easy-rsa
./easyrsa gen-req $server nopass <<EOF EOF
./easyrsa sign server $server <<EOF
yes
EOF
./easyrsa gen-dh
cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/server/
cp /etc/openvpn/easy-rsa/pki/issued/$server.crt /etc/openvpn/server/
cp /etc/openvpn/easy-rsa/pki/private/$server.key /etc/openvpn/server/
cp /etc/openvpn/easy-rsa/pki/dh.pem /etc/openvpn/server/
mkdir /var/log/openvpn
chown openvpn.openvpn /var/log/openvpn
[ -e /etc/openvpn/checkpsw.sh ] || cp /root/checkpsw.sh /etc/openvpn/checkpsw.sh ; echo "已拷贝/root/checkpsw.sh至/etc/openvpn/checkpsw.sh";
chmod +x /etc/openvpn/checkpsw.sh
}
# 创建服务器配置文件
server_config(){
cat > /etc/openvpn/server.conf <<EOF
port 1194
proto tcp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/$server.crt
key /etc/openvpn/server/$server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "route 172.30.0.0 255.255.255.0"
keepalive 10 120
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
max-clients 1000
user openvpn
group openvpn
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
mute 20
script-security 3
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
username-as-common-name
EOF
}
# 用户名密码
userPW(){
read -p "请输入创建的用户名:" user
read -p "请输入密码:" password
echo "$user $password" >> /etc/openvpn/psw-file
}
# 启动openvpn服务
start_openvpn(){
[ -e /lib/systemd/system/openvpn@.service ] || cp /root/openvpn@.service /lib/systemd/system/
systemctl daemon-reload
systemctl enable --now openvpn@server
}
# 创建客户端证书
client_req(){
cd /etc/openvpn/easy-rsa
sed -r -i.bak 's/^#(#set_var EASYRSA_CERT_EXPIRE).*3650.*/\1 90/' /etc/openvpn/easy-rsa/vars
./easyrsa gen-req $client nopass <<EOF EOF ./easyrsa sign client $client <<EOF
yes
EOF mkdir /etc/openvpn/client/$client
find /etc/openvpn/easy-rsa/ -name "${client}*" -exec cp {} /etc/openvpn/client/${client}/ \;
cp pki/ca.crt ../client/$client/
}
# 创建客户端配置文件
client_config(){
cat > /etc/openvpn/client/$client/$client.ovpn <<EOF
client
dev tun
proto tcp
remote $serverIP 1194 #生产中为OpenVPN服务器的FQDN或者公网IP
resolv-retry infinite
nobind
ca ca.crt
cert $client.crt
key $client.key
remote-cert-tls server
cipher AES-256-CBC
verb 3 #此值不能随意指定,否则无法通信
compress lz4-v2 #此项在OpenVPN2.4.X版本使用,需要和服务器端保持一致,如不指定,默认使用comp-lz压缩
auth-user-pass
EOF
cd /etc/openvpn/client/$client
tar zcvf /root/$client.tar.gz * && echo "客户端文件已打包至/root/$client.tar/gz"
}
# 吊销证书
revoke_user(){
cd /etc/openvpn/easy-rsa
read -p "请输入需要吊销证书的用户名:" revokeuser
cd /etc/openvpn/easy-rsa
./easyrsa revoke $revokeuser
./easyrsa gen-crl
echo "crl-verify /etc/openvpn/easy-rsa/pki/crl.pem" >> /etc/openvpn/server.conf
systemctl restart openvpn@server.service
}
# 删除用户
deluser(){
read -p "请输入需要删除的用户名:" DELuser
sed -i "/^$DELuser/d" /etc/openvpn/psw-file
} # 增加iptables
vpn_iptables(){
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j MASQUERADE
echo 'iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j MASQUERADE' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p
}
Menu(){
PS3="请选择:"
select MEMU in 创建CA 配置服务器 生成客户端文件 创建用户名密码 吊销证书 删除用户 增加iptables 退出;do
case $MEMU in
创建CA)
install && action "安装成功" || action "安装失败" false
CA_init && action "CA证书完成" || action "CA错误" false
;;
配置服务器)
server_init && action "服务器证书颁发完成" || action "服务器证书颁发错误" false
server_config && action "服务器配置文件生成" || action "服务器配置文件错误" false
start_openvpn && action "openvpn服务器配置完成,服务已启动" || action "服务启动失败" false
;;
生成客户端文件)
client_req && action "客户端证书颁发完成" || action "客户端证书颁发错误" false
client_config && action "客户端配置文件生成" || action "客户端配置文件错误" false
;;
创建用户名密码)
userPW && action "用户已创建" || action "创建失败" false
;;
吊销证书)
revoke_user && action "证书已吊销" || action "吊销失败" false
;;
删除用户)
deluser && action "删除用户成功" || action "删除失败" false
;;
增加iptables)
vpn_iptables && action "增加iptables完成" || action "增加iptables条目失败" false
;;
退出)
exit
;;
esac
done
}
Menu

shell脚本之一键部署openV~P~N的更多相关文章

  1. 【shell脚本】一键部署LNMP===deploy.sh

    一键部署mysql,php,nginx,通过源码安装部署 #!/bin/bash # 一键部署 LNMP(源码安装版本) menu() { clear echo " ############ ...

  2. Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务

    文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...

  3. 编写shell脚本实现一键创建KVM虚拟机

    shell脚本一键创建虚拟机 代码如下: #!/bin/bashname=$1 #把位置变量$1重新定义为name(创建虚拟机的名字)path1=/var/lib/libvirt/images/ #i ...

  4. 写了shell脚本想一键启动三台虚拟机的Zookeeper,却不知道为啥总是启动不了

    首先,一键启动的shell脚本是这样的 #! /bin/bash case $1 in "start"){ for i in node01 node02 node03 do ssh ...

  5. 急速安装lnmp 编译版本-wiki-shell脚本实现一键部署

    shell脚本lnmp.sh 环境:centos 6.5 .64位 #!/bin/bash yum install -y nano vim wget wget http://www.atomicorp ...

  6. shell脚本编写nginx部署脚本

    下面为shell脚本编写的nginx的安装及修改nginx.conf的脚本,脚本比较简单: #!/bin/bash function yum_install(){ yum install epel-r ...

  7. 自己开发shell脚本实现一键化安装。

    一.说明在现实环境中可能需要批量部署服务器,那么在我们已经部署好一台服务以后如果实现剩下的服务批量安装呢: 使用shell能否实现功能: 假设我们要部署lamp或者是lnmp如何实现脚本部署? 使用以 ...

  8. shell脚本编写-自动部署及监控

    1.编写脚本自动部署反向代理.web.nfs: I.部署nginx反向代理两个web服务,调度算法使用加权轮询 II.所有web服务使用共享存储nfs,保证所有web都对其有读写权限,保证数据一致性: ...

  9. 使用shell脚本完成自动化部署及秒级回滚

    一.部署机代码目录结构 使用www用户进行代码部署,所有部署机上需要创建www用户,并赋予根目录权限,同时配置公私钥认证建立信任关系. [www@ansible-node1 deploy]$ tree ...

随机推荐

  1. HEXO-admin安装和使用(汉化版)

    hi,大家好,我是KINGWDY,众所周知我用的是hexo,写博文首先要在终端输入hexo n xxxxx,然后打开MWeb PRO开始写md,但是,这很麻烦,就在我一筹莫展之际,我看到了这篇博文-- ...

  2. [CISCN2019 华北赛区 Day1 Web2]ikun-1

    考点:JWT身份伪造.python pickle反序列化.逻辑漏洞 1.打开之后首页界面直接看到了提示信息,信息如下: 2.那就随便注册一个账号进行登录,然后购买lv6,但是未发现lv6,那就查看下一 ...

  3. SpringBoot中maven项目Plugins里resources报红

    错误原因:刚开始下载依赖时下载错误导致的 参考:解决idea中maven plugins标红的问题 - 走看看 (zoukankan.com) 如果还不行: 就根据上面提示的地址找到maven的配置包 ...

  4. 浅析websocket的基本应用spring boot + vue +C# + WPF

    1.基本概念 首先websocket是基于H5的一种通信.在网页中如果定时获取服务器端的实时数据,我们常采用long poll 和ajax轮询的方式.但是在轮询过程中,由于根本没有新数据的改变,而造成 ...

  5. KingbaseES 时间类型数据和oracle时间类型的区别

    Oracle日期时间类型有两类,一类是日期时间类型,包括Date, Timestamp with time zone, Timestamp with local time zone.另一类是Inter ...

  6. kingbaseES R6 读写分离集群修改ssh端口案例

    数据库环境: test=# select version(); version ------------------------------------------------------------ ...

  7. 从源码中理解Spring Boot自动装配原理

    个人博客:槿苏的知识铺 一.什么是自动装配 SpringBoot 定义了一套接口规范,这套规范规定:SpringBoot在启动时会扫描外部引用jar包中的META-INF/spring.factori ...

  8. Shell分析日志文件

    文章转载自:https://mp.weixin.qq.com/s/o63aIM2p9rc2OjhxiC6wgA 1.查看有多少个IP访问: awk '{print $1}' log_file|sort ...

  9. Linux病毒扫描工具ClamAV(Clam AntiVirus)安装使用

    在线检测木马病毒的网址:https://www.virustotal.com/gui/home/upload 一.简介 ClamAV(Clam AntiVirus)是Linux平台上的开源病毒扫描程序 ...

  10. 通过helm搭建Harbor

    文章转载自:http://www.mydlq.club/article/66/ 系统环境: kubernetes 版本:1.20.1 Traefik Ingress 版本:2.4.3 Harbor C ...