CentOS VPS搭建OpenVPN全程实录

由于有些网路地区都会阻挡pptp 或 l2tp服务,因此我们需要一个比较安全又不会被阻挡的VPN环境,因此我决定用OPENVpn

等下教程的软体要下载,都从这里来源

OpenVPN http://openvpn.net/index.php/open-source/downloads.html
LZO http://www.oberhumer.com/opensource/lzo/download/
OpenSSL http://www.openssl.org/

1,安装基础软件包

yum install openssl openssl-devel pam pam-devel
2, 安装Lzo

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
make && make install

3,安装OpenVPN

tar -zxvf openvpn-2.2.2.tar.gz
mv openvpn-2.2.2 /usr/local/openvpn
cd /usr/local/openvpn
./configure --enable-password-save --with-ssl-headers=/usr/include/openssl --with-ssl-lib=/usr/lib --with-lzo-headers=/usr/local/include/lzo --with-lzo-lib=/usr/local/lib
make && make install

二,生成CA证书、Server Key和Client Key

1,环境参数文件修改

cd /usr/local/openvpn/easy-rsa/2.0/
vim ./vars,将最后几行修改为如下内容:
export KEY_COUNTRY="CN"
export KEY_PROVINCE="GD"
export KEY_CITY="GZ"
export KEY_ORG="cctv"
export KEY_EMAIL="[email protected]"
export [email protected]
export KEY_CN=cctv
export KEY_NAME=cctv
export KEY_OU=cctv
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234
从上到下依次是国家,省份,城市,组织名,邮箱,CN指Common Name,OU指Organizational Unit Name

source ./vars    #使修改的变量生效

2,生成CA证书

./clean-all  #清除原有不需要的证书文件
./build-ca   #生成证书,初始化参数一路按回车默认即可

3,建立服务端证书Server Key

./build-key-server myserver  #这里指定服务端的证书名为myserver
初始化参数一路按回车默认即可,下面几项需要手动填写:
A challenge password []:123.com  #输入一个密码
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y

4,建立客户端证书Client Key

./build-key client1  #这里指定客户端的证书名为client1
初始化参数一路按回车默认即可,下面几项需要手动填写:
A challenge password []:123.com  #输入刚才的密码
Name [changeme]:client1
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y

如果要创建多个vpn帐户,则同样如client1一样生成其他客户端证书

./build-dh  #证书加密,dh指Diffie Hellman

三,创建openvpn服务端和客户端配置文件

1,建立服务端配置文件

mkdir /usr/local/openvpn/etc  #建立目录以存放配置文件
配置文件的样例位于sample-config-files/server.conf,但这里我们不使用样例,直接手动建立配置文件
vim /usr/local/openvpn/etc/server.conf,将以下内容复制其中

 

local 1.1.1.1(改为你的VPS IP地址)
port 1194
proto udp
dev tun
ca /usr/local/openvpn/easy-rsa/2.0/keys/ca.crt
cert /usr/local/openvpn/easy-rsa/2.0/keys/myserver.crt
key /usr/local/openvpn/easy-rsa/2.0/keys/myserver.key
dh /usr/local/openvpn/easy-rsa/2.0/keys/dh1024.pem

server 10.8.0.0 255.255.255.0
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /usr/local/openvpn/easy-rsa/2.0/keys/openvpn-status.log
verb 4

push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

 

2,建立客户端配置文件

vim /usr/local/openvpn/etc/client.ovpn,将以下内容复制其中

client

dev tun
proto udp
remote VPS的IP地址 1194
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3
redirect-gateway def1

3,下载client key和client.ovpn文件

cp /usr/local/openvpn/etc/client.ovpn /usr/local/openvpn/easy-rsa/2.0/keys/
tar -zcvf /root/keys.tar.gz /usr/local/openvpn/easy-rsa/2.0/keys/

然后把/root/keys.tar.gz文件下载到本地。

四,配置OpenVPN启动和设置

1,修改本机OpenVPN VPS域名服务器

vim /etc/resolv.conf,加入如下两行:
nameserver 8.8.8.8
nameserver 8.8.4.4

2,打开转发功能

vim /etc/sysctl.conf
把net.ipv4.ip_forward的值改为1
sysctl -p

3,设置iptables

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source VPS的IP地址
/etc/init.d/iptables save
/etc/init.d/iptables restart

4,启动OpenVPN服务器

/usr/local/sbin/openvpn --config /usr/local/openvpn/etc/server.conf

5,设置OpenVPN开机自动启动

vim /etc/rc.d/rc.local,在最后面加入如下几行
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source VPS的IP地址
service iptables save
service iptables restart
/usr/local/sbin/openvpn --config /usr/local/openvpn/etc/server.conf > /dev/null 2>&1 &

五,windows客户端安装设置

终于配置到了客户端了,接下来在用户Windows 系统下的安装OpenVPN GUI程序就比较简单了。

1,下载安装和服务器端配套的OpenVPN GUI For Windows(http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe),直接点next安装即可;

2,将刚才下载到本地的keys.tar解压,全部放到OpenVPN GUI For Windows安装目录下的config目录下,检查一下至少要包含以下6个文件:
ca.crt | ca.key | client1.crt | client1.csr | client1.key | client.ovpn

3,在客户端双击client.ovpn即可启动OpenVPN GUI For Windows客户端,不用输入账号密码即可连接至vpn服务器。

4,如果多个客户端要用到多个vpn账号,OpenVPN的配置和上面相同,再将config文件目录里的 client1.crt,client1.csr,client1.key 替换成对应的 client2harry.xxx 即可,最后在

client.ovpn 中将cert client1.crt 和key client1.key的值改成client2harry.crt和client2harry.key。