醉爱PHP

在OpenVZ下的VPS安装OpenVPN(CentOS 5)

by admin on 三.03, 2010, under php

朋友Sheneyan买了一个burst.net的VPS,想用它来做一个VPN,就不用为翻墙发愁了。是OpenVZ做的VPS (ad: https://www.burst.net/linvps.shtml ) ,据说用起来挺爽,有多种流行的Linux系统可供选择。然后选择了服务器也比较热门的CentOS系统。并且他购买的产品,可在控制面板自己打开 VPS的tun/tap,使得VPN能上网还要有iptable的。(默认的系统里就有)结合网上的多个教程,整理如下:

参考1:http://westlife.me.uk/459.html
参考2:http://www.lenghost.cn/site-news/burstnet-vps-openvpn-install/

安装步骤开始:

一:服务器

1.用Putty登录你的VPS(额 地球人都知道)

2. 下载LZO和OpenVPN (我用的OpenVPN是2.1.rc15版)

1
2
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
wget http://openvpn.net/release/openvpn-2.1_rc22.tar.gz

3.安装OpenSSL

1
yum install -y openssl-devel

4.安装Gcc ,这是用来编译后面的C语言的(我用的VPS默认没安装,如果已经安装的会有提示)

1
 yum install gcc

5. 安装LZO和OpenVPN

1
2
3
4
5
6
7
8
9
10
11
12
13
tar zxvf lzo-2.03.tar.gz //解压
cd lzo-2.03
./configure
make
make install //安装
cd ..
tar zxvf openvpn-2.1_rc15.tar.gz //解压
cd openvpn-2.1_rc15
./configure
make
make install //安装
cd ..
cp /root/openvpn-2.1_rc15/easy-rsa/ -r /etc/openvpn //拷贝文件

6.生成证书

初始化PKI

1
2
3
4
5
6
7
8
9
10
11
cd /etc/openvpn/2.0/
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=FJ
export KEY_CITY=FZ
export KEY_ORG="Rex"  //引号要用英文半角符号
export KEY_EMAIL="mail@mail.com"   //引号要用英文半角符号
. vars

7.创建证书颁发机构(CA)

1
2
./clean-all //这行命令是清空Keys文件夹下的所有文件
./build-ca

接下来的信息你可以自己填写

8. 建立server key

1
./build-key-server server

接下来的信息你可以自己填写

9. 生成客户端 key

1
./build-key client1 // client1 可以自定义 这个是客户的名字

接下来的信息你可以自己填写

10.以此类推建立其他客户端 key,当然你也可以不用,也可以在使用中在添加,不过比较麻烦,文章后会有教程

1
2
./build-key client2
./build-key client3

注意在进入 Common Name (eg, your name or your server’s hostname) []: 的输入时, 每个证书输入的名字必须不同.

11. 生成Diffie Hellman参数 (这个很重要)

1
./build-dh
(如果这里发生错误,请尝试:openssl dhparam -out ./keys/dh1024.pem 1024)

12. 将 keys 下的所有文件打包下载到本地(可以通过winscp,http,ftp等等……)

1
tar zcvf yourkeys.tar.gz keys/

13. 创建服务端配置文件

1
2
mkdir /etc/openvpn/2.0/conf
cp /root/openvpn-2.1_rc15/sample-config-files/server.conf /etc/openvpn/2.0/conf/server.conf

14.服务端配置文件(server.conf) 我建议使用winscp 把/etc/openvpn/2.0/conf/server.conf 下的server.conf 文件下载到本地用Notepad++工具编辑。这里给个参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
port 1194
proto udp
dev tun
ca /etc/openvpn/2.0/keys/ca.crt        //这个需要按照具体目录设置
cert /etc/openvpn/2.0/keys/server.crt  //这个需要按照具体目录设置
key /etc/openvpn/2.0/keys/server.key   //这个需要按照具体目录设置
dh /etc/openvpn/2.0/keys/dh1024.pem    //这个需要按照具体目录设置
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 208.67.222.222"
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

15.启动OpenVPN

1
2
setsid /usr/local/sbin/openvpn --config /etc/openvpn/2.0/conf/server.conf   // 这个命令是能在你退出Putty继续让服务工作
/etc/rc.d/init.d/iptables start

16. OpenVPN 访问外网的设置(如果不设置,你连上后只能在你和VPS之间建立VPN)

关闭Putty后重新登录   输入

1
ifconfig

输出:如:

venet0:1  Link en

cap:UNSPEC

Hwaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

inet addr:你的VPSIP地址  P-t-P: 你的VPSIP地址  Bcast: 你的VPSIP地址  Mask:255.255.255.255

“venet0”要记录下来!(不同的地方不一样)

继续输入

1
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
(如果你运行上面的出现 iptables: Unknown error 4294967295 这样的错误,可以尝试下面的)
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -j SNAT –to-source [你的IP地址]

其中的venet0 按情况更改

继续输入

1
2
/etc/init.d/iptables save
/etc/init.d/iptables restart

17.查看

输入

1
sysctl -a | grep for

查看结果 如:

1
2
3
4
5
6
7
8
9
10
11
net.ipv4.conf.tun0.mc_forwarding = 0
net.ipv4.conf.tun0.forwarding = 1
net.ipv4.conf. venet0.mc_forwarding = 0
net.ipv4.conf. venet0.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.forwarding = 1
net.ipv4.ip_forward = 1

如果你的主机上列数值不是为1, 则要将其改成1, 用这个命令

如:

1
sysctl -w net.ipv4.ip_forward=1

18. 设置 OpenVPN 服务器 reboot后自动启动 openvpn

1
2
vi /etc/rc.local
/usr/local/sbin/openvpn --config /etc/openvpn/2.0/conf/server.conf &

19.到此 基本就可以链接上去试试了,访问下如ip138.com 这类的网站,看看你的IP哦~

二:客户端配置

1. 下载 openvpn-2.1_rc22-install.exe(此版本集成 OpenVPN  GUI)
下载地址:http://openvpn.net/release/openvpn-2.1_rc22-install.exe

2.安装OpenVPN GUI(用默认安装)

3.配置

将上面yourkeys.tar.gz中的下列证书文件解压到 你的OpenVPN GUI安装路径\OpenVPN\config文件夹下

ca.crt client1.key client1.crt

记住ca.key 千万别泄露哦

4. 修改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

5. 双击 client.ovpn 即可启动 openvpn, 或者通过 OpenVPN 的控制启动 VPN

6.出现 Initialization Sequence Completed 表示成功

三、添加一个小脚本,用于继续添加客户端的KEY

cd /etc/openvpn/2.0/
vim bc.sh

#!/bin/bash

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=FJ

export KEY_CITY=FZ

export KEY_ORG=”Rex”

export KEY_EMAIL=”mail@mail.com”

./vars

./build-key $1

使用方法:./bc.sh client2

:

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...