centos7下编译安装openvpn2.3.18

由于openvpn最新更新是2.4.4,制作证书工具变成easyrsa3.0,且不能支持AD下认证,所以要想AD下认证openvpn,只能装之前的版本。废话少说,步入正题。
下载openvpn2.3.18,地址链接:https://pan.baidu.com/s/1SUTr6mdGRoAAe3gHWVwrNQ 密码:707e
下载easy-rsa2.0,地址链接:https://pan.baidu.com/s/1MC2iR4dUKydCp0MXvr8VZg 密码:bpkp
下载lzo搭建环境,地址链接:https://pan.baidu.com/s/16W2GsQIwqbgxZmLYWIR9XQ 密码:9myo
1.yum install lrzsz #安装上传下载组件
2.mkdir /etc/download #在etc下创建download目录
3.cd /etc/download
4.rz 然后选择下载好的文件,上传到这里
5.如图所示,传完目录下有3个文件centos7下编译安装openvpn2.3.18
6.```
tar -zxvf openvpn-2.3.18.tar.gz
tar -zxvf lzo-2.06.tar.gz


            unzip easy-rsa-old-master.zip   #分别解压3个压缩包
     7.搭建编译环境并安装相应的组件
        yum install gcc #安装GCC套件
            yum install -y openssl-devel #安装openssl-devel组件
            yum install net-tools #安装net-tools组件
            cd lzo-2.06
             ./configure --prefix=/usr/local/ 
            make && make install #进入lzo目录并安装
          yum install pam-devel #安装:pam-devel
     8.安装openvpn
        cd /etc/download/openvpn-2.3.18
            ./configure --prefix=/usr/local/openvpn
            make && make install
            mkdir /etc/openvpn #在etc下创建openvpn目录
            cp -Rf sample/ /etc/openvpn/ # 拷贝模板到/etc/openvpn下
            cp /etc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/ #复制配置文件到主目录下
     9.创建证书
       cp -Rf easy-rsa-old-master/ /etc/openvpn/easy-rsa #拷贝证书制作工具到/etc/openvpn并重命名为easy-rsa
         cd /etc/openvpn/easy-rsa/easy-rsa/2.0 #进入证书目录
         vi vars #自定义内容,可以不更改直接使用
         source ./vars #使vars文件生效
         ./clean-all #清除之前生成的所有证书。注:如果执行./clean-all 就会清空/etc/openvpn/easy-rsa/2.0/keys/下所有文件
         ./build-ca #生成服务端ca证书
        ./build-key-server server #生成服务器端秘钥key,后面的server是服务器名,自定义#注:缺省配置一路回车,最后面两个选项一定要选择“y”,否则生成的是空证书
        ./build-key client #生成客户端key ,后面的client是客户端名,可自定义
        ./build-dh #注:生成diffie hellman参数用于增强openvpn安全性生成需要漫长等待,可以去休息一会儿
        cd keys #进入证书目录
        cp dh2048.pem ca.crt server.crt server.key /etc/openvpn/ ##复制证书文件到openvpn根目录
    10.配置OpenVPN
    cd /etc/openvpn #
    mv server.conf server.conf.bak #默认配置文件修改内容太多,修改配置麻烦,我们先备份一下默认配置文件,然后新建一个配置文件
    vi server.conf 
    配置文件参考及解释、
    port 1194 #Openvpn 服务器监听端口
proto tcp #设置用TCP还是UDP协议。使用udp一般不会有DoS攻击,而且能能防止端口被扫描,能保证更安全。
dev tun #推荐tun
#定义openvpn运行时使用哪一种模式,openvpn有两种运行模式一种是tap模式,一种是tun模式。
#tap模式也就是桥接模式,通过软件在系统中模拟出一个tap设备,该设备是一个二层设备,同时支持链路层协议。
#tun模式也就是路由模式,通过软件在系统中模拟出一个tun路由,tun是ip层的点对点协议。
#具体使用哪一种模式,需要根据自己的业务进行定义。
ca ca.crt #定义openvpn使用的CA证书文件,该文件通过build-ca命令生成,CA证书主要用于验证客户证书的合法性。
cert server.crt #定义openvpn服务器端使用的证书文件。
key server.key #定义openvpn服务器端使用的秘钥文件,该文件必须严格控制其安全性。
dh dh2048.pem #指定 Diffie hellman parameters(密钥交换算法协议)
server 10.8.0.0 255.255.255.0 #配置 VPN 使用的网段,OpenVPN 会自动提供基于该网段的 DHCP 服务,但不能和任何一方的局域网段重复,保证唯一 。server 端 ip 默认会设为10.8.0.1的地址。
ifconfig-pool-persist ipp.txt #维持一个客户端和 virtual IP 的对应表,以方便客户端重新连接可以获得同样的 IP
push "redirect-gateway def1 bypass-dhcp" #重定向客户端的网关到openvpn服务器
push "route 192.168.0.0 255.255.255.0" #向客户端推送的路由信息,假如客户端的IP地址为10.8.0.2,要访问192.168.1.0网段的话,使用这条命令就可以了。可以添加多条路由
push "dhcp-option DNS 114.114.114.114" #向客户端推送的DNS信息
push "dhcp-option DNS 192.168.0.8" #向客户端推送的DNS信息
cipher AES-256-CBC #选择一种连接加密算法,Server端和Client端必须一样
user nobody
group nobody
#定义openvpn运行时使用的用户及用户组,建议加上这两条配置更安全
client-to-client #这条命令可以使客户端之间能相互访问,默认设置下客户端间是不能相互访问的
duplicate-cn #定义openvpn一个证书在同一时刻是否允许多个客户端接入,默认没有启用。
keepalive 10 120 #设置服务端检测的间隔和超时时间 每 10 秒 ping 一次,如果 120 秒没有回应则认为对方已经 down
comp-lzo #启用允许数据压缩,客户端配置文件也需要有这项
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys。
persist-tun #通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的。否则网络连接,会先linkdown然后再linkup。
status openvpn-status.log #把openvpn的一些状态信息写到文件中,比如客户端获得的IP地址。
log-append openvpn.log #记录日志,每次重新启动openvpn后追加原有的log信息。
verb 3 #设置日志要记录的级别。 
#0 只记录错误信息。 
#4 能记录普通的信息。 
#5 和 6 在连接出现问题时能帮助调试 
#9 是极端的,所有信息都会显示,甚至连包头等信息都显示(像tcpdump)
mute 20 #相同信息的数量,如果连续出现 20 条相同的信息,将不记录到日志中。
11.防火墙配置和开启路由转发功能
firewall-cmd --permanent --add-port=1194/tcp #添加openvpn端口
firewall-cmd --permanent --add-masquerade #开启转发
firewall-cmd --reload #动态重启防火墙
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf #添加net.ipv4.ip_forward = 1到/etc/sysctl.conf文件最后一行,如果已存在,修改或者无视
sysctl -p #使修改立即生效
12.启动并设置开启自动启动openvpn服务
/usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/server.conf & #启动openvpn服务
echo "/usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/server.conf > /dev/null 2>&1 &" >> /etc/rc.local #开机启动
ps aux|grep openvpn  #启动正常的话应该有这个进程![](http://i2.51cto.com/images/blog/201804/23/0a6b33256ca45f4ab06ba6f15b23bca9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
13.Windows客户顿设置
将服务端生成的部分证书放在客户端vpn安装路径下的config文件夹中,可以用过winscp这个软件进行拷贝,需要拷贝的证书:ca.crt、client.crt、client.key ,文件位于服务器的/etc/openvpn/easy-rsa/2.0/keys中
在客户端vpn安装路径下找到sample-config文件夹,在文件夹中找到client.ovpn文件,将其复制到上层目录中的config文件夹中
修改config文件夹中的client.ovpn文件,以记事本的方式打开
client
#定义这是一个client,配置从server端pull拉取过来,如IP地址,路由信息之类,Server使用push指令推送过来。
dev tun
#定义openvpn运行的模式,这个地方需要严格和Server端保持一致。
proto tcp
#定义openvpn使用的协议,这个地方需要严格和Server端保持一致。
remote X.X.X.X 1194
#设置Server的IP地址和端口,这个地方需要严格和Server端保持一致。
resolv-retry infinite
#始终重新解析Server的IP地址(如果remote后面跟的是域名),保证Server IP地址是动态的使用DDNS动态更新DNS后
#Client在自动重新连接时重新解析Server的IP地址。这样无需人为重新启动,即可重新接入VPN。
cipher AES-256-CBC #选择一种连接加密算法,Server端和Client端必须一样
nobind
#定义在本机不邦定任何端口监听incoming数据。
persist-key
persist-tun
ca ca.crt
#定义CA证书的文件名,用于验证Server CA证书合法性,该文件一定要与服务器端ca.crt是同一个文件。
cert client.crt
#定义客户端的证书文件
key client.key
#定义客户端的密钥文件。
comp-lzo
#启用允许数据压缩,这个地方需要严格和Server端保持一致
verb 3
#设置日志要记录的级别。

启动客户端
在开始中找到openvpn文件夹,点击openvpn gui,这是右下角会有一个锁的图形
右击右下角锁的图形,选择connet,过一会我们会发现连上openvpn了,服务端给我们非配了一个之前设置的局域网的ip
此时在网络连接中我们发现多出了一个本地连接TAP-Windows Adapter V9,此时是出于连接状态,右下角的那个锁状图形颜色会变成绿色

PS:目前openvpn服务器已经搭建完成了,但是有个问题,只要有上述三个证书文件和服务器IP信息,任何人都可以连接服务器,为了安全考虑,我们可以采取用户认证的方式管理,详情见:OpenVPN使用用户密码认证登录

猜你喜欢

转载自blog.51cto.com/terry520/2106709