阿里云服务器上搭建openvpn
为了能从办公室直接连进ECS(阿里云服务器)进行调试,所以这几天断断续续是研究开源翻墙软件pptp和openvpn,直到今天才成功.(这里很鄙视阿里云的客服和售后工程师,一会说能搭建vpn,一会说又不能,我就*了;同时也很鄙视阿里的路由表,弄的我蛋都碎光了)
吐槽到此为止,接下来进入我们今天的正题:openvpn。
一)初识
OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。
OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1 协议函式库。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。
二)环境
vpn:CentOS release 6.5 (Final)
客户端:win8(其他客户端安装方法,请见博文最后)
三)安装
安装基础包
yum install openssl-devel pam-devel gcc -y
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz tar xvfz openssl-1.0.1g.tar.gz cd openssl-1.0.1g ./config --prefix=/usr/local make && make installs
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz tar zxvf lzo-2.06.tar.gz cd lzo-2.06 ./configure --prefix=/usr/local make && make install
2.安装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
3.生成证书
使用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 *
配置PKI
/etc/openvpn/easy-rsa/2.0 vi /etc/openvpn/easy-rsa/2.0/vars
找到“export KEY_SIZE=”这行,根据情况把1024改成2048或者4096
再定位到最后面,会看到类似下面这样的
export KEY_COUNTRY=”US” export KEY_PROVINCE=”CA” export KEY_CITY=”SanFrancisco” export KEY_ORG=”Fort-Funston” export KEY_EMAIL=”[email protected]“
这个自己根据情况改一下,不改也可以运行。其实不改vars这个文件,vpn也可以跑起来。
例如:
export KEY_COUNTRY=”CN” export KEY_PROVINCE=”SH” export KEY_CITY=”Shanghai” export KEY_ORG=”ucloud.cn” export KEY_EMAIL=”[email protected]“
注:在后面生成服务端ca证书时,这里的配置会作为缺省配置。
然后使用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
4.配置服务端
vim /etc/openvpn/server.conf
local # 设置监听端口,必须要对应的在防火墙里面打开 port 1194 # 设置用TCP还是UDP协议? ;proto tcp proto tcp # 设置创建tun的路由IP通道,还是创建tap的以太网通道路由IP容易控制,所以推荐使用它; # 但如果如IPX等必须使用第二层才能通过的通讯,则可以用tap方式,tap也就是以太网桥接 ;dev tap dev tun # 这里是重点,必须指定SSL/TLS root certificate (ca), # certificate(cert), and private key (key) # ca文件是服务端和客户端都必须使用的,但不需要ca.key # 服务端和客户端指定各自的.crt和.key # 请注意路径,可以使用以配置文件开始为根的相对路径, # 也可以使用绝对路径 # 请小心存放.key密钥文件 # 指定Diffie hellman parameters. dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem # 配置VPN使用的网段,OpenVPN会自动提供基于该网段的DHCP服务,但不能和任何一方的局域网段重复,保证唯一 # 维持一个客户端和virtual IP的对应表,以方便客户端重新连接可以获得同样的IP #ifconfig-pool-persist ipp.txt # 为客户端创建对应的路由,以另其通达公司网内部服务器 # 但记住,公司网内部服务器也需要有可用路由返回到客户端 ;push "route 192.168.20.0 255.255.255.0" #push "route 10.6.0.0 255.255.0.0" # 若客户端希望所有的流量都通过VPN传输,则可以使用该语句 # 其会自动改变客户端的网关为VPN服务器,推荐关闭 # 一旦设置,请小心服务端的DHCP设置问题 # 用OpenVPN的DHCP功能为客户端提供指定的DNS、WINS等 push "dhcp-option DNS 8.8.8.8" #push "dhcp-option WINS 10.8.0.1" # 默认客户端之间是不能直接通讯的,除非把下面的语句注释掉 # 下面是一些对安全性增强的措施 # For extra security beyond that provided by SSL/TLS, create an "HMAC firewall" # to help block DoS attacks and UDP port flooding. # # Generate with: # openvpn --genkey --secret ta.key # # The server and each client must have a copy of this key. # The second parameter should be 0 on the server and 1 on the clients. tls-auth ta.key 0 # This file is secret # 使用lzo压缩的通讯,服务端和客户端都必须配置 # 输出短日志,每分钟刷新一次,以显示当前的客户端 status /var/log/openvpn/openvpn-status.log # 缺省日志会记录在系统日志中,但也可以导向到其他地方 # 建议调试的使用先不要设置,调试完成后再定义 log /var/log/openvpn.log #log-append /var/log/openvpn/openvpn.log # 设置日志的级别 # # 0 is silent, except for fatal errors # 4 is reasonable for general usage # 5 and 6 can help to debug connection problems # 9 is extremely verbose
5.打开服务器路由转发功能
vim /etc/sysctl.conf
修改以下内容
net.ipv4.ip_forward = 1
# 然后使内核参数生效:
sysctl -p
路由转发 #iptables-t nat -A POSTROUTING -s 172.1.1.0/24 -o eth1 -j MASQUERADE #添加NAT 172.1.1.0/24是OPENVPN的地址 10.161.xxx.xxx是阿里ECS的内网地址(ifconfig eth0) iptables -tnat -A POSTROUTING -s 172.1.1.0/24 -j SNAT --to-source 10.161.XXX.XXX #保存iptables service iptables save
启动openvpn
chkconfig openvpn on
/etc/init.d/openvpn start
四)openvpn客户端配置
对于windows客户端
客户端安装完成后,进入到安装目录,如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 #客户端私钥
将这些文件下载到..\.\OpenVPN\config下。
编辑客户端OpenVPN配置文件client.ovpn,内容如下:
client dev tun proto tcp remote 115.29.xxx.xxx 1194 #阿里云的vpn外网ip和端口 resolv-retry infinite nobind persist-key persist-tun ca ca.crt #一系列证书位置 cert client.crt key client.key comp-lzo verb 3 ns-cert-type server ip-win32 dynamic 0 28800 #windows route-method exe route-delay 3
到这里算是大工完成了,主要是iptables和路由表会比较蛋疼,测试和排错的过程就不展示了。
下面给几个其他客服端的配置:
ubuntu:http://www.linuxidc.com/Linux/2013-06/86562.htm
Mac:
https://code.google.com/p/tunnelblick/
1.打开Tunnelblick
2.点击左下角+
3.我有设置文件
4.OpenVPN设置
5.打开私人设置文件夹
6.将key和新建的client.ovpn放到此目录下
本文出自 “Aaron” 博客,请务必保留此出处http://qishiding.blog.51cto.com/3381613/1613141
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。