Loading... <p>前言</p> <p> 之前为了方便远程办公时访问公司的内部系统,如:svn、OA、wiki、禅道等等;通通在防火墙上做了端口映射。然后有个内部系统被黑了,各种弱口令没办法。果断关闭端口映射,看来还是得搭建个VPN服务器,vpn设备感觉大材小用。马上就想到了开源的openvpn,下面就来介绍openvpn的安装配置过程。</p> <p>openvpn简介</p> <p> 官方网站:https://openvpn.net 打不开请爬墙</p> <p> openssl原理:http://www.178linux.com/archives/2704 参考书生的博客,哈哈</p> <p> openvpn原理:http://freeloda.blog.51cto.com/2033581/1354768 参考往期学员的博客,此处就不赘述了。</p> <p>安装配置步骤</p> <p> 1、安装openvpn软件</p> <p> 2、生成服务器证书</p> <p> 3、修改主配置文件</p> <p> 4、生成并签署客户端证书</p> <p> 4、客户端配置并连接</p> <p> </p> <p>一、安装openvpn软件 </p> <p> 安装epel源</p> <pre class="brush:bash;toolbar:false">[root@qin ~]# rpm -ivh http://mirrors.zju.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm Retrieving http://mirrors.zju.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm Preparing... ########################################### [100%] 1:epel-release ########################################### [100%]</pre> <p> 安装openvpn</p> <pre class="brush:bash;toolbar:false"> [root@qin ~]# yum -y install openvpn</pre> <p> 下载easyesa,创建CA、生成证书都需要它</p> <pre class="brush:bash;toolbar:false">[root@qin ~]# wget https://github.com/OpenVPN/easy-rsa/archive/master.zip [root@qin ~]# unzip master.zip [root@qin ~]# mv easy-rsa-master/ /etc/openvpn</pre> <p>二、生成服务器证书</p> <p> 先切换目录到/etc/openvpn/easy-rsa-master/easyrsa3以便生成证书</p> <p><img alt="cd.png" src="//cto.wang/usr/uploads/2016/07/20160703160300-47.png" title="1430984320468557.png" /></p> <p> pki目录初始化,此动作会删除pki目录下所有证书及密钥文件</p> <p><img alt="initpki.png" src="//cto.wang/usr/uploads/2016/07/20160703160300-97.png" title="1430984340104529.png" /></p> <p> 创建根证书,密钥文件需要设置密码保护,并指定一个名称</p> <p><img alt="buildca.png" src="//cto.wang/usr/uploads/2016/07/20160703160300-15.png" title="1430984351563431.png" /></p> <p> 生成一个服务器端的证书请求文件,不需要密码保护</p> <p><img alt="gen-req.png" src="//cto.wang/usr/uploads/2016/07/20160703160301-12.png" title="1430985523447340.png" /></p> <p> 签署服务器端的请求证书,需要输入根证书的密码授权</p> <p><img alt="sign-req.png" src="//cto.wang/usr/uploads/2016/07/20160703160301-62.png" title="1430985652757701.png" /></p> <p> 生成 Diffie Hellman 参数</p> <p><img alt="gen-dh.png" src="//cto.wang/usr/uploads/2016/07/20160703160301-69.png" title="1430985829138522.png" /></p> <p> 查看服务器端生成的所有证书及密钥文件</p> <p> <img alt="treepki.png" src="//cto.wang/usr/uploads/2016/07/20160703160301-9.png" title="1430985785118586.png" /></p> <p> 为方便查看及配置,把服务器端需要用到的证书及密钥文件放到/etc/openvpn目录下</p> <p><img alt="cp.png" src="//cto.wang/usr/uploads/2016/07/20160703160301-36.png" title="1430986021995698.png" /></p> <p>三、修改主配置文件,</p> <p> 默认没有主配置文件,需要从/usr/share/doc下复制一个模版文件过来</p> <pre class="brush:bash;toolbar:false">[root@qin ~]# cp /usr/share/doc/openvpn-2.3.6/sample/sample-config-files/server.conf /etc/openvpn [root@qin ~]# vim /etc/openvpn/server.conf local 192.168.18.42 port 2285 proto udp dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key # This file should be kept secret dh /etc/openvpn/dh.pem server 10.38.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt ;push "redirect-gateway def1 bypass-dhcp" #启用后,客户端连接后所有上网请求都走VPN网关 push "route 192.168.0.0 255.255.0.0" push "dhcp-option DNS 114.114.114.114" keepalive 10 120 comp-lzo max-clients 100 persist-key persist-tun status /var/log/openvpn-status.log log /var/log/openvpn.log log-append /var/log/openvpn.log verb 3 [root@qin ~]# service openvpn start</pre> <p> 需要启用路由转发</p> <pre class="brush:bash;toolbar:false">[root@qin ~]# sysctl -w net.ipv4.ip_forward=1</pre> <p> </p> <p> 服务启动后会生成一个VPN网关</p> <p><img alt="ip.png" src="//cto.wang/usr/uploads/2016/07/20160703160301-35.png" title="1430993203454149.png" /></p> <p> 在硬件防火墙上做端口映射后,openvpn就可以提供连接服务了</p> <p> 服务器iptables没启动,此处略过,可以参考示例文件 /usr/share/doc/openvpn-2.3.6/sample/sample-config-files/firewall.sh</p> <p>四、生成并签署客户端证书</p> <p> 生成一个证书请求文件,在服务器端或客户端都可以生成;设置密码保护并指定一个名称</p> <pre class="brush:bash;toolbar:false">[root@qin ~]# cp -r /etc/openvpn/easy-rsa-master/ /tmp [root@qin ~]# cd /tmp/easy-rsa-master/easyrsa3/ [root@qin easyrsa3]# ./easyrsa init-pki</pre> <p><img alt="genclient.png" src="//cto.wang/usr/uploads/2016/07/20160703160301-49.png" title="1430988855224012.png" /></p> <p> 导入客户端证书请求文件</p> <pre class="brush:bash;toolbar:false">[root@qin ~]# cd /etc/openvpn/easy-rsa-master/easyrsa3/ [root@qin easyrsa3]# ./easyrsa import-req /tmp/easy-rsa-master/easyrsa3/pki/reqs/client1.req client1</pre> <p> 签署客户端证书,同样,需要需要输入根证书密码授权</p> <p><img alt="signclient.png" src="//cto.wang/usr/uploads/2016/07/20160703160301-82.png" title="1430989087118118.png" /></p> <p>五、客户端配置并连接</p> <p> 到官网下载相应的软件 https://openvpn.net/index.php/open-source/downloads.html</p> <p> 默认会安装到 C:\Program Files\OpenVPN 下</p> <p> 下载根证书、客户端证书、客户端密钥这三个文件,放到 C:\Program Files\OpenVPN\config下</p> <pre class="brush:bash;toolbar:false">/etc/openvpn/easy-rsa-master/easyrsa3/pki/ca.crt /etc/openvpn/easy-rsa-master/easyrsa3/pki/issued/client1.crt /tmp/easy-rsa-master/easyrsa3/pki/private/client1.key</pre> <p> 修改客户端配置文件,默认没有此文件,需要从 C:\Program Files\OpenVPN\sample-config\client.ovpn 复制一份到config目录下</p> <pre class="brush:bash;toolbar:false">client dev tun proto udp remote 192.168.18.42 2285 #指向openvpn服务器ip及端口 resolv-retry infinite nobind persist-key persist-tun ca ca.crt #指向证书,默认路径无需指定 cert client1.crt key client1.key comp-lzo verb 3</pre> <p><img alt="client.png" src="//cto.wang/usr/uploads/2016/07/20160703160302-25.png" title="1430990489101266.png" /></p> <p> 注意:config目录下没有证书和配置文件时,软件是不能使用的,如图</p> <p><img alt="vpn.png" src="//cto.wang/usr/uploads/2016/07/20160703160302-74.png" title="1430990920852277.png" /></p> <p> 有配置文件和证书后,点击connect并输入client1.key的密钥密码后即可连接,如图</p> <p><img alt="vpn.png" src="//cto.wang/usr/uploads/2016/07/20160703160302-24.png" title="1430991027603214.png" /></p> <p></p> <p>写的比较简单,不要见怪哈~</p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信