openvpn之三(TLS模式之多数据中心高可用互联解决方案)待完善高可用部分

在该方案中需要用到openvpn的C/S架构,这种架构要求必须使用TLS进行验证

基础环境准备:

#在所有服务器上装如下软件
    yum install epel* -y
    yum install openvpn easy-rsa tcpdump wget tree -y

第一:创建CA服务器(这里将规划的server角色当作CA使用,注意easy3.0版本与之前的有不一样的地方)

#将easy-rsa复制到一个单独的工作目录
    mkdir -p /etc/openvpn/ca
    cp -drp /usr/share/easy-rsa/3/* /etc/openvpn/ca/

    #初始化pki,删除原有的CA等(查看帮助信息 /etc/openvpn/ca/easyrsa help init-pki )
    cd /etc/openvpn/ca
    ./easyrsa init-pki

    #创建CA根证书,这里的密码要记得哦,因为以后需要用它签发客户端证书(这里设置为1234)
    ./easyrsa build-ca

第二:为客户机/服务器生成并签发证书,然后分发到客户机/服务器上(当然也可在客户机上生成证书请求,然后用CA服务器签发)

#我们使用第一种方式,为客户机生成并签发证书,这里在CA服务上直接操作即可
++++++++++++++++
创建服务器端的证书(在CA服务上执行)

    mkdir -p /etc/openvpn/beihai
    cp -drp /usr/share/easy-rsa/3/* /etc/openvpn/beihai
    cd /etc/openvpn/beihai
    ./easyrsa init-pki

    #生成证书请求(若是不指定该nopass参数,以后就会每次调用都要输入密码)
    ./easyrsa gen-req beihai nopass
    #生成diffie hellman 参数(这是作为server角色所必须要的,客户端不需要该项)
    ./easyrsa gen-dh

    #用CA执行签发
    cd /etc/openvpn/ca
    ./easyrsa import-req /etc/openvpn/beihai/pki/reqs/beihai.req beihai
    #注意,这里北海服务器是作为服务器角色,所有要用server,其他客户端用client,不要搞错了
    ./easyrsa sign-req server beihai

    #在服务器端生成ta.key(用于openvpn控制通道的tls握手进行保护 )
    cd /etc/openvpn/beihai
    openvpn --genkey --secret ta.key

    #查看生成好的证书(检查)
    openssl x509 -in /etc/openvpn/ca/pki/issued/beihai.crt -text | more 

++++++++++++++++++
创建客户端的证书,这里只演示南昌客户端的创建,天津的请参看该步骤即可(在CA服务上执行)
    mkdir -p /etc/openvpn/nanchang
    cp -drp /usr/share/easy-rsa/3/* /etc/openvpn/nanchang
    cd /etc/openvpn/nanchang
    ./easyrsa init-pki

    #生成证书请求(若是不指定该nopass参数,以后就会每次调用都要输入密码)
    ./easyrsa gen-req nanchang nopass

    #用CA执行签发
    cd /etc/openvpn/ca
    ./easyrsa import-req /etc/openvpn/nanchang/pki/reqs/nanchang.req nanchang
    #注意,这里南昌服务器是作为客户端角色,所有要用client,不要搞错了
    ./easyrsa sign-req client nanchang

第三:将CA的根证书,服务器证书,服务器key,客户端证书,客户端密码,以及服务器端生成的TLS保护证书拷贝到各自服务器

#在CA服务器上操作(由于我们是在CA即server上执行的证书申请,所以不需要复制到server上,只需复制对应的大客户端上)

    #复制必要文件到南昌客户端
    #(注意复制过去后,需要nobody用户对/etc/openvpn/nanchang.crt文件以及nanchang.key有读权限,不然以nobody运行时会退出)
    scp /etc/openvpn/ca/pki/ca.crt root@192.168.20.2:/etc/openvpn/
    scp /etc/openvpn/ca/pki/issued/nanchang.crt root@192.168.20.2:/etc/openvpn/
    scp /etc/openvpn/nanchang/pki/private/nanchang.key root@192.168.20.2:/etc/openvpn/
    scp /etc/openvpn/beihai/ta.key root@192.168.20.2:/etc/openvpn/

    #复制必要文件到天津客户端(注意权限要可读哦)
    scp /etc/openvpn/ca/pki/ca.crt root@192.168.30.2:/etc/openvpn/
    scp /etc/openvpn/ca/pki/issued/tianjin.crt root@192.168.30.2:/etc/openvpn/
    scp /etc/openvpn/tianjin/pki/private/tianjin.key root@192.168.30.2:/etc/openvpn/
    scp /etc/openvpn/beihai/ta.key root@192.168.30.2:/etc/openvpn/

第四:创建openvpn服务器配置文件

#在服务器上操作(注意文件名一定要是server.conf这样才能方便后期由systemctl接管服务,实现开机自启动)
    #创建CCD目录(服务器端指定了该参数,就必须有该目录)
    mkdir /etc/openvpn/beihai/ccd

    cat /etc/openvpn/server.conf

proto tcp-server
port 1194
dev tun 
auth-nocache    #该参数能防止密码被缓存到内存中

topology subnet
push "topology subnet"
server 172.16.0.0 255.255.255.0

ca /etc/openvpn/ca/pki/ca.crt
cert /etc/openvpn/ca/pki/issued/beihai.crt
key /etc/openvpn/beihai/pki/private/beihai.key
dh /etc/openvpn/beihai/pki/dh.pem       #dh 是server必须要有的,客户端可以不要,它定义了如何进行密钥交换
tls-auth /etc/openvpn/beihai/ta.key 0

user nobody
group nobody
persist-key
persist-tun
comp-lzo        #开启压缩,若是服务端进行了压缩,客户端也要指定该压缩,否在无法进行通信
keepalive 5 20  #表示每隔5秒ping一下客户端/服务端,若是20秒内无响应,便判断客户端有可能断开了,要进行重新连接

client-config-dir /etc/openvpn/beihai/ccd
ifconfig-pool-persist /etc/openvpn/beihai/ipp.txt  #客户端与虚拟IP的对应表,不要用于同证书多拨入情况

#推送路由,若是推送失败,需要检查server 是否设置正常,该故障我遇到过,设置ifconfig-pool了,发现推送失效
#push "route 192.168.21.0 255.255.255.0"
#push "route 192.168.31.0 255.255.255.0"
#push "route 192.168.11.0 255.255.255.0"

log-append /var/log/openvpn.log
#状态文件(默认60s写入一次该文件),启用该参数后,需要关闭selinux后才能通过守护程序启动
status /var/log/openvpn-status.log      #需要关闭selinux

#若是您想了解每个参数表示什么意思,可以查看该文章
    https://wsfnk.com/archives/698.html

第五:创建客户端配置文件,以南昌客户端为例(注意文件名一定要是client.conf这样才能方便后期由systemctl接管服务,实现开机自启动)

    cat /etc/openvpn/client.conf

client
proto tcp-client
remote 192.168.10.2
port 1194
dev tun

user nobody
group nobody
persist-key
persist-tun
comp-lzo
keepalive 5 20      #客户端建议加上该参数,不管服务端down多久,恢复后可以重连

ca /etc/openvpn/ca.crt
cert /etc/openvpn/nanchang.crt
key /etc/openvpn/nanchang.key
tls-auth /etc/openvpn/ta.key 1      #该参数,服务端用0,客户端用1
log-append /var/log/openvpn-client.log

第六:启动服务端和客户端,并进行验证

    #在服务端上执行
    openvpn --config /etc/openvpn/server.conf

    #在客户端上执行
    openvpn --config /etc/openvpn/client.conf
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/456.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2022/12/4作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???