vps下安装openvpn
个人感觉成功一次后,会觉得同pptp一样简单。 (常见问题见文结尾)
环境: openvz型vps
centos
关键点: 开启TUN/TAP, iptables正确设置
简略步骤:
1. 安装iptables等:
yum install gcc gcc-devel openssl openssl-devel iptables
2. 下载Openvpn和lzo
mkdir /opt/software
cd /opt/software
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
wget http://openvpn.net/release/openvpn-2.0.9.tar.gz
3. 安装Openvpn和lzo
#cd /opt/software
#tar -zxvf lzo-2.03.tar.gz
#cd lzo-2.03
#./configure
#make && make install
#cd ../
#tar -zxvf openvpn-2.0.9.tar.gz
#cd openvpn-2.0.9
#./configure
#make && make install
4. 生成CA证书、Server Key和Client Key
1.)初始化参数
#cd /opt/software/openvpn-2.0.9/easy-rsa
#export D=`pwd`
#export KEY_CONFIG=$D/openssl.cnf
#export KEY_DIR=$D/keys
#export KEY_SIZE=1024
#export KEY_COUNTRY=CN
#export KEY_PROVINCE=GD
#export KEY_CITY=GZ
#export KEY_ORG="xxxx" (设置为自己的)
#export KEY_EMAIL=”xxx@xxx.com”(设置为自己的)
2.)生成CA证书
./clean-all //这行命令是清空Keys文件夹下的所有文件
./build-ca
接下来的信息你可以自己填写
3)建立Server Key
./build-key-server server
按提示设置填写信息就可以了
4)生成客户端 key
#./build-key client1 //client1为客户用户名,可以随便取
如果要创建多个vpn帐户,则同样如client1一样生成其他客户端证书/key
如: ./build-key client2
关键点: 注意在进入 Common Name (eg, your name or your server’s hostname) []: 的输入时, 每个证书输入的名字必须不同.server以及client证书这个填写要一样
5). 生成Diffie Hellman参数
/build-dh
(如果这里发生错误,请尝试:openssl dhparam -out ./keys/dh1024.pem 1024)
6). 将 keys 下的所有文件打包下载到本地 (主要是里面的客户端证书等)
5. 创建Openvpn vps服务器配置文件(vi /usr/local/etc/server.conf)
(可以复制/opt/software/openvpn-2.0.9/sample-config-files目录下的server.conf 进行修改),可以直接复制下面内容
注意修改:ip、端口、对应目录
local 2.2.2.2 (改为你的VPS IP地址)
port 1194
proto udp
dev tun
ca /opt/software/openvpn-2.0.9/easy-rsa/keys/ca.crt
cert /opt/software/openvpn-2.0.9/easy-rsa/keys/server.crt
key /opt/software/openvpn-2.0.9/easy-rsa/keys/server.key
dh /opt/software/openvpn-2.0.9/easy-rsa/keys/dh1024.pem
server 10.8.0.0 255.255.255.0 //自己设定
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1" //<font color="red">有些资料上是push "redirect-gateway def1 bypass-dhcp",多一个bypass-dhcp时我自己测试是失败的。 此行的作用是通知客户端使用openvpn服务端设置的路由,如果没有的话,客户端不知道走哪个路由</font>
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 208.67.220.220"
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
6. 启动OpenVPN (注意,后台开启模式)
setsid /usr/local/sbin/openvpn --config /usr/local/etc/server.conf (加上服务端配置文件启动)
(或者 /usr/local/sbin/openvpn --config /usr/local/etc/server.conf &)
如果需要开机启动 (vi /etc/rc.local,在最后面加入:
/usr/local/sbin/openvpn –config /usr/local/etc/server.conf &)
7. iptables转发设置
添加转发
iptables -t nat -I POSTROUTING -s 10.8.0.0/16 -j SNAT --to-source [vpsip] (openvz型vps用这个)
(如果是xen型vps,输入这个 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE 其中venet0是vps网卡. 有的文章说openvz也可以用这个,我没有进行测试)
保存规则
/etc/init.d/iptables save
重启iptables生效
/etc/init.d/iptables restart
8. 查看系统有没有实现ip4转发。
sysctl -a | grep for
如果以下是1就行
net.ipv4.ip_forward = 1
如果不是,就用下面命令进行修改
sysctl -w net.ipv4.ip_forward=1
9. Opnevpn windows 客户端安装设置
1)下载安装和服务器端配套的OpenVPN GUI For Windows:(http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe)
并安装。
2)将下载下来的key目录压缩包中的ca.crt client1.key client1.crt文件复制到你的OpenVPN GUI安装路径\OpenVPN\config文件夹下
3)修改client.ovpn
把你的OpenVPN安装路径\OpenVPN\sample-config下的client.ovpn文件复制到你的OpenVPN安装路径\OpenVPN\config文件夹下,用记事本打开client.ovpn
找到remote my-server-1 1194,把my-server-1改成你的VPS IP地址
找到 cert client.crt 把 client.crt改为client1.crt
找到 key client.key 把 client.key 改为 client1.key
4.) 双击 client.ovpn 即可启动 openvpn, 或者通过 OpenVPN 的控制启动 VPN
5)出现 Initialization Sequence Completed 表示成功
常见问题:
1. 如何确定自己的vps是XEN还是openvz
答:一般通过ifconfig命令,看网卡,XEN一般为eth0,而openvz为venet0
2. 如何确定openvz型vps是否开启TUN/TAP
答: 判断tun/tap有没有开启,可以用此命令cat /dev/net/tun,若出现 cat: /dev/net/tun: File descriptor in bad state 说明开启成功
3. 如何通过openvpn服务端设置客户端路由以及常用网站使用原来路由,而不因用了vpn减速。
答:在openvpn的服务端配置文件server.conf中使用push命令。
如:push "redirect-gateway def1" 告诉客户端使用服务端作为路由
push "dhcp-option DNS 8.8.8.8" 设置客户端的dns服务器
高级的可以用 push “route 24.0.0.0 255.0.0.0″ 设置此ip段用vpn的路由,而之外的将是用客户端原来线路。





