{"title": "CentOS\u642d\u5efaOpenVPN\u670d\u52a1", "update_time": "2015-01-08 19:43:08", "tags": "openvpn", "pid": "176", "icon": "linux.png"}
## OpenVPN服务端配置 ### 1. 安装OpenVPN软件包 默认的Centos软件源里面没有OpenVPN的软件包,我们可以添加rpmforge的repo,从而实现yum安装openvpn #### 针对CentOS 5 ``` rpm -ivh http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm ``` #### 针对CentOS 6 ``` rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm ``` 安装完rpmforge的repo之后,执行yum命令安装OpenVPN ``` yum install -y openvpn ``` ### 2. 生成OpenVPN需要的证书 使用easy-rsa脚本产生OpenVPN所需的CA证书、CA私钥、服务端证书、服务端私钥、客户端证书、客户端私钥 先将easy-rsa脚本copy到/etc/openvpn,并添加可执行权限 ``` cp -R /usr/share/doc/openvpn-*/easy-rsa /etc/openvpn cd /etc/openvpn/easy-rsa/2.0 chmod +x * ``` 然后使用easy-rsa的脚本产生证书 ``` ln -s openssl-1.0.0.cnf openssl.cnf . vars ./clean-all ./build-ca server ./build-key-server server ./build-key client ./build-dh ``` 执行以上命令后将在/etc/openvpn/easy-rsa/2.0/keys/目录下产生对应的证书和秘钥,ls一下确认都已经生成,后面要用到。 ``` ls /etc/openvpn/easy-rsa/2.*/keys/ ``` ### 3.生成OpenVPN服务端配置文件 编辑/etc/openvpn/server.conf文件,内容如下: ``` port 1194 proto udp dev tun ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt cert /etc/openvpn/easy-rsa/2.0/keys/server.crt key /etc/openvpn/easy-rsa/2.0/keys/server.key dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem server 10.1.1.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" log /var/log/openvpn.log keepalive 10 120 verb 3 client-to-client comp-lzo persist-key persist-tun ``` ### 4.开启OpenVPN服务 将openvpn设置为开机自启动的服务 ``` chkconfig openvpn on ``` 立即启动openvpn服务 ``` /etc/init.d/openvpn start ``` 如果OpenVPN启动失败,请查看OpenVPN的启动日志`/var/log/openvpn.log`。 可能导致启动失败的原因是第3步使用easy-rsa生成的证书有问题,请重新按照第3步重新生成 ### 5.服务端开启nat功能 客户端拨入OpenVPN后,默认网关会指向OpenVPN服务器,为了能使客户端可以上网,需要在服务端开启nat功能 首先,打开ip forward功能 ``` sed -i '/net.ipv4.ip_forward/s/0/1/g' /etc/sysctl.conf sysctl -w net.ipv4.ip_forward=1 ``` 然后,配置iptables snat ``` iptables -t nat -A POSTROUTING -s 10.1.1.0/255.255.255.0 -j SNAT --to-source SERVER_IP ``` 将SERVER_IP替换为服务器的出口ip ## OpenVPN客户端配置 好了服务端准备就绪,接下来开始客户端配置 ### 对于Windows客户端 到http://openvpn.se/download.html 下载gui版的OpenVPN,按照提示安装完成后,进入到安装目录,如`D:\Program Files\OpenVPN`。将Linux服务端使用easy-rsa产生的客户端证书、私钥和ca证书下载到本地。即需要下载到本地的文件如下: ``` /etc/openvpn/easy-rsa/2.0/keys/ca.crt #ca证书 /etc/openvpn/easy-rsa/2.0/keys/client.crt #客户端证书 /etc/openvpn/easy-rsa/2.0/keys/client.key #客户端私钥 ``` 将这些文件下载到`D:\Program Files\OpenVPN\config`下。 编辑客户端OpenVPN配置文件client.ovpn,内容如下: ``` client dev tun proto udp remote SERVER_IP 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key comp-lzo verb 3 redirect-gateway def1 route-method exe route-delay 2 ``` 将SERVER_IP写成OpenVPN服务器的ip,然后打开OpenVPN的GUI,点击连接,完成OpenVPN拨入 ### 对于Mac 客户端 ### 到 http://sourceforge.net/projects/tunnelblick/ 下载OpenVPN 客户端软件 Tunnelblick