OpenVPN联合LDAP安装调试

一、 环境准备

1、Centos系统:CentOS7系统安装
2、openvpn官网:openvpn官网

二、 软件安装

本文采用 yum 方式安装

2.1 安装组件

安装基本组件(加密证书使用)

# yum install openssl-devel openssl easy-rsa

安装OpenVPN

 # yum install openvpn

三、 软件配置

3.1 配置并生成rsa密钥

将rsa工具包复制到openvpn安装目录下:

 # cp -R /usr/share/easy-rsa/2.0 /etc/openvpn/rsa/
 # cd /etc/openvpn/rsa

修改vars,根据实际情况修改一下,创建证书的时候是交互式操作,以免以后经常提示输入这些信息。

 export KEY_COUNTRY="CN"
 export KEY_PROVINCE="BeiJing"
 export KEY_CITY="DongCheng"
 export KEY_ORG="vpn"
 export KEY_EMAIL="vpn@cafintech.com"
 export KEY_OU=vpn
 export KEY_NAME=vpn.cafintech.com
 export PKCS11_MODULE_PATH=cafintech
 export PKCS11_PIN=1234
 export KEY_CN=vpn.cafintech.com 

//使修改的变量生效,然后生成各类文件。

 source ./vars
 ./clean-all
 ./build-ca
 ./build-key-server server
 ./build-dh
 cd /etc/openvpn/easy-rsa/2.0/keys
 cp dh2048.pem ca.crt server.crt server.key /etc/openvpn
 ./build-key client 生成客户端key
 生成TLS-auth密钥
 openvpn --genkey --secret keys/ta.key

3.2 使用脚本生成各类文件

为方便使用,制作成脚本:

 #!/bin/bash  #脚本执行路径
 # 进入密钥文件夹
 cd  /etc/openvpn/rsa/keys/ 
 # 复制密钥文件夹下所有文件到备份文件夹,
 # 因为下一步操作,会清空文件夹内所有文件,
 # 而ca.crt,ta.key等文件,在后续生成用户端文件还有用,
 # 第一次不用操作,第二次及以后需要打开注释。
 \cp -af * /etc/openvpn/rsa/keysbak/
 # 返回密钥生成目录
 cd /etc/openvpn/rsa/
 # 初始化配置文件,准备生成
 . ./vars
 # 清空 keys 文件夹下所有文件
 ./clean-all
 # 生成 ca.crt文件,仅第一次使用
 ./build-ca
 # 生成 dh2048.pem 文件,仅第一次使用
 ./build-dh
 # 生成服务器端密钥,仅第一次使用
 ./build-key-server server
 # 生成 tls-auth 密钥,仅第一次使用
 openvpn --genkey --secret keys/ta.key
 # 进入 keys 密钥目录,仅第一次使用 
 cd /etc/openvpn/rsa/keys
 # 复制dh2048.pem ca.crt server.crt server.key ta.key
 # 文件到openvpn安装根目录下 /etc/openvpn,仅第一次使用
 \cp -af  dh2048.pem ca.crt server.crt server.key ta.key /etc/openvpn/
 # 返回密钥生成目录,仅第一次使用。
 cd /etc/openvpn/rsa/
 # 进入密钥备份目录,第一次不使用
 cd /etc/openvpn/rsa/keysbak/
 # 复制所有文件到密钥目录,主要是ca.crt文件,第一次不使用
 \cp -af * /etc/openvpn/rsa/keys/
 # 返回密码生成目录
 cd /etc/openvpn/rsa/
 #使用for 命令,循环读取users文件中的用户,然后生成用户端文件
 #users 文件中,每行一个用户即可
 for line in $(cat users)
 do
 # 生成用户密码
    ./build-key "${line}"
 # 复制配置文件模板文件到密钥文件夹
 cp /etc/openvpn/rsa/template.ovpn /etc/openvpn/rsa/keys/"${line}".ovpn
 # 在配置文件中写入换行
    \echo -e "\n" >> /etc/openvpn/rsa/keys/"${line}".ovpn
 # 在配置文件中写入说明及换行,下同
    \echo -e "#CA证书\n<ca>\n" >> /etc/openvpn/rsa/keys/"${line}".ovpn
 # 将ca.crt 文件内容写入到配置文件,下同。
    cat /etc/openvpn/rsa/keys/ca.crt >> /etc/openvpn/rsa/keys/"${line}".ovpn
 # 写入换行,说明结尾新说明文件,下同。
    \echo -e "</ca>\n\n#用户端证书\n<cert>\n" >> /etc/openvpn/rsa/keys/"${line}".ovpn
 # 用户证书
    cat /etc/openvpn/rsa/keys/"${line}".crt >> /etc/openvpn/rsa/keys/"${line}".ovpn
 # 用户密钥
    \echo -e "\n</cert>\n\n#用户密钥\n<key>\n" >> /etc/openvpn/rsa/keys/${line}.ovpn
    cat /etc/openvpn/rsa/keys/"${line}".key >> /etc/openvpn/rsa/keys/"${line}".ovpn
    \echo -e "\n</key>\n\n#Tls-auth\n<tls-auth>\n" >> /etc/openvpn/rsa/keys/"${line}".ovpn
 # tls-auth 文件
    cat /etc/openvpn/rsa/keys/ta.key >> /etc/openvpn/rsa/keys/"${line}".ovpn
    \echo -e "\n</tls-auth>" >> /etc/openvpn/rsa/keys/"${line}".ovpn
 # 进入密钥文件夹
 cd /etc/openvpn/rsa/keys
 # 将生成的配置文件打包压缩。
     zip "${line}".zip "${line}".ovpn
 # 删除刚刚生成的配置文件
     rm -f ${line}.ovpn "${line}".crt "${line}".key "${line}".csr 
 # 返回密钥生成目录,继续生成下一个用户的文件
     cd /etc/openvpn/rsa/
 #结束循环读取
 done
 # 将本次生成的用户备份到备份文件中
 cat users >> users-bak
 # 进入密钥文件夹
 \cd /etc/openvpn/rsa/keys 
 # 下载所有打包文件到本地备用。
 sz *.zip
 #如果需要注销证书,则执行以下命令
 #\cp -af  /etc/openvpn/rsa/keys/crl.pem /etc/openvpn/
 cd /etc/openvpn/rsa/

3.3 服务器配置

启动防火墙

 systemctl status firewalld.service #查看状态
 service firewalld start    #stop 停止 restart 重启
 firewall-cmd --list-services  #查看允许通过列表
 firewall-cmd --permanent --add-service=openvpn #添加允许openvpn通过。

最后添加masquerade,开户防火墙IP伪装,和NAT转换性质差不多:

 firewall-cmd --permanent --add-masquerade
 firewall-cmd --query-masquerade 查看是否成功。

在sysctl中开启IP转发

 vi /etc/sysctl.conf 打开并添加以下语句,开户IP转发,保存
 # Controls IP packet forwarding
 net.ipv4.ip_forward = 1
 #查看IP转发是否生效
 sysctl -p

启动openvpn,并开户自启动

 systemctl start openvpn@server
 systemctl enable openvpn@server

3.4 服务器端配置

服务器端配置(server.conf):

 ;local a.b.c.d #监听IP
 
 Port 1194 # 监听端口
 
 Proto udp #使用协议
 
 Dev tun
 
 ca ca.crt
 
 cert server.crt
 
 key server.key # This file should be kept secret #各类证书
 
 dh dh2048.pem
 
 server 172.17.10.0 255.255.255.0 #给远程客户端分配的网段
 
 ifconfig-pool-persist ipp.txt
 
 push "route 172.17.1.0 255.255.255.0"
 
 push "route 172.17.2.0 255.255.255.0"
 
 push "route 172.17.3.0 255.255.255.0"
 
 push "route 172.17.5.0 255.255.255.0"
 
 push "route 172.17.6.0 255.255.255.0"
 
 push "route 172.17.7.0 255.255.255.0"
 
 push "route 172.17.10.0 255.255.255.0" #可访问的内网网段
 
 push "redirect-gateway def1 bypass-dhcp" #默认网关,DHCP
 
 push "dhcp-option DNS 172.17.2.11"
 
 push "dhcp-option DNS 219.141.140.10"
 
 push "dhcp-option DNS 8.8.8.8" #远端客户机 DNS
 
 keepalive 10 120 #检测连接状态
 
 tls-auth ta.key 0 # This file is secret 加密文件,服务器端为0 客户端为1 (本次一直不通,就出错在此处)
 
 user nobody
 
 group nobody
 
 persist-key
 
 persist-tun
 
 status openvpn-status.log
 
 log openvpn.log
 
 log-append openvpn.log #监听日志及日志文件
 
 verb 3

3.5 客户端配置

客户端配置(脚本生成时,已经配置完毕,这里做一下说明):

 client      # 客户端
 
 dev tun      # 使用tun方式
 
 proto udp     # 使用udp协议
 
 remote *.*.*.* 1194 # 远程服务器的IP及端口
 
 resolv-retry infinite
 
 nobind
 
 persist-key
 
 persist-tun
 
 ca ca.crt    # ca证书文件
 
 cert client.crt   # 客户端证书文件
 
 key client.key   #客户端密钥
 
 tls-auth ta.key 1  #tls-auth文件,服务器端为0,客户端为1
 
 comp-lzo
 
 verb 3

四、 文章引用

easy-rsa-3.0使用方法

后续:使用证书密钥+用户名密码登录。

待续。。。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 long@longger.xin

文章标题:OpenVPN联合LDAP安装调试

字数:1.8k

本文作者:Longger

发布时间:2018-01-08, 13:10:49

最后更新:2024-11-05, 22:14:17

原始链接:https://www.longger.xin/article/d9ef6a55.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

github