应公司业务部门要求,需要将公司内部的内网IP服务器与公司机房外网服务器进行链接。搭建×××

内网IP是172.16.16.101 172.16.16.102 172.16.16.103 3台

外网IP是221.122.127.* 114.113.233.* 2台 这里的*是个数字

下面是搭建过程——



server配置

openvpn2.2.2.tar.gz下载地址http://download.csdn.net/download/jonnter/9279577
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.04.tar.gz
解压到/usr/local/src/
安装lzo 
./configure
make && make install
安装openvpn
./configure
make && make install
创建openvpn配置文件目录
mkdir /etc/openvpn
cp -ra /usr/local/src/openvpn-2.2.2/easy-rsa/ /etc/openvpn/ 将模版考过来,默认/etc/openvpn是没有文件的
cd /etc/openvpn/easy-rsa/2.0
chmod +x * 加上可执行权限


vim vars 这里修不修改无所谓

export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="BeiJing"
export KEY_ORG="emarbox test"
export KEY_EMAIL="gongjiadong@emar.com" 

./build-ca     用于生成root证书颁发client证书准备一路回车即可
ls keys/
ca.crt ca.key已生成

./build-dh   vpnserver用到此证书
ls keys/
dh1024.pem index.txt serial

./build-key-server server       为服务器生成密钥和证书 #server是名称 提示有Y的地方输入Y回车

./build-key    client     为客户端生成证书  #client是名称,自己可以修改,比如说./build-key 101  这里生成的就是101.key 101.crt都是客户端使用的,一个客户端只能使用一个。


下面是我server的配置文件

vim /etc/openvpn/server.conf


port        1194
proto       tcp
mode        server
tls-server
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      192.168.100.0 255.255.255.0
push        "route 192.168.100.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


server 端开启服务 /etc/init.d/openvpn start


解释

port 1194   (这里设定的监听端口,默认是1194)

proto tcp (设定在传输层使用的协议,这里设定为默认的UDP协议,我修改为tcp)
dev tun(设定传输设备节点。如提示信息,tun是一个三层设备,tap是一个二层设备。而这里我们要的是IP路由,是三层的方式,因此选择tun)

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
#设定根证书CA、服务器证书、以及服务器密钥文件的位置
server 192.168.100.0 255.255.255.0 设定Server端虚拟出来的×××网段【开启服务之后,ifconfig可以看见tun0接口】
push “route 192.168.100.0 255.255.255.0″设定Push路由。当Client连接Server的时候,自动会得到这些路由条目并添加到它们的路由表中,由于是Server那里传过来的,因此叫Push路由。当Client从Server处断开的时候这些Push路由将自动在Client的路由表中删除。一个需要提醒注意的地方就是既然是加入路由,那么必须要填写的是”route 网段 子网掩码”的格式,如果不是像第三条那样是添加针对某一个主机的路由的话,那么一定要写的是网段!如果要针对一个目的网段的路由,而却写的是主机地址的话,那么这个Push路由将失败
client-to-client设定接入的Client之间能够被允许互相访问,默认情况下接入的Client是不能互相访问的。如果需要使它们互相访问的话请去掉默认的注释
keepalive 10 120(设定保活参数。这里的意思是每10秒钟通过Ping来确定Client是否存活,当然这个Ping的进行是在虚拟通道中而不是在真实外部链路上的,超过120秒无反馈表示丢失该Client
comp-lzo使用Lzo功能对虚拟链路进行压缩。如果Server端开启的话,那么连接它的Client端也要在配置文件中开启
persist-key 设定连接保持密钥功能。在由于keepalive检测超时后而重新启动×××的情况,不重新读取keys,而保留第一次使用的keys
persist-tun设定连接保持在线功能。在由于keepalive检测超时后而重新启动×××的情况,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup
log         /var/log/openvpn.log (设定Open×××的服务日志路径。注意,如果更改过Open×××服务宿主用户的话,请记得这里将此文件赋予宿主用户一定的权限
verb 3


客户端配置

客户端上在/etc/openvpn下面创建客户端配置文件就可以

ht16  ht16.ovpn  lgq118  lgq118.ovpn这是我创建的2个配置文件与存放证书的目录,把每个服务器生成的文件都放在都应的目录下,方便管理。

下面是写好的一个配置文件

vim /etc/openvpn/ht16.conf

client
dev tun
proto tcp
tls-client
remote 221.122.127.* 1194 这里的*是个数字
resolv-retry infinite
nobind
mute-replay-warnings
#redirect-gateway
ca /etc/openvpn/ht16/ca.crt
cert /etc/openvpn/ht16/103.crt
key /etc/openvpn/ht16/103.key
comp-lzo
verb 4

启动命令 openvpn /etc/openvpn/ht16.ovpn > /dev/null & 在后台运行,加上/dev/null 防止有输出,影响系统


将服务器上的证书与client的key文件拷贝过来,到对应的目录下

CA证书文件               (我这里是ca.crt ca.key)
Client证书文件           (我这里是103.crt)
Client密钥文件            (我这里是103.key) 
Client的SSL证书请求文件  (我这里是103.csr)

client(声明这个配置文件作用于客户端)
dev tun(使用tun三层虚拟连接设备)
proto tcp(使用tcp协议)
remote 221.122.127.* 1194 设定远程Server的IP地址和端口,这里要和Server对应起来
resolv-retry infinite(始终重新解析Server的IP地址,如果remote后面跟的是域名,保证Server IP地址是动态的使用DDNS动态更新DNS后,Client在自动重新连接时重新解析Server的IP地址,这样无需人为重新启动,即可重新接入×××)
nobind(表示Client端不像Server端那样需要开放特定的端口,nobind的意思就是Client的不绑定特定的监听端口)
ca /etc/openvpn/ht16/ca.crt
cert /etc/openvpn/ht16/103.crt
key /etc/openvpn/ht16/103.key(设定CA证书、Client证书以及Client密钥文件的路径。与之前我Server端的配置不同,这里我没有写绝对路径而只是写了一些文件名。这是因为我使用了默认的Open×××的主路径/etc/openvpn/。如果不是使用默认路径而是定制更改了这些文件的位置的话,那么就需要注上详细的绝对路径了)
comp-lzo
verb 4  (Debug等级)

openvz 内的vps不能搭建open vpn,解决办法 

在openvz虚拟机上搭建openvpn


在openvz宿主机上输入下面命令


[root@host187 easy-rsa]# modprobe tun 开启tun模块
[root@host187 easy-rsa]# vzlist 查看开启的虚拟机CTID
      CTID      NPROC STATUS    IP_ADDR         HOSTNAME
     10101         98 running   192.168.6.171   htstorm6171
    187172         49 running   192.168.6.172   htyqfstorm6172查看虚拟机对应的CTID
vzctl set $CTID --devnodes net/tun:rw --capability net_admin:on --save提示成功就OK了,$CTID 改为CTID的数字号就可以




windows openvpn客户端,去百度下载
一、安装
     安装目录D:\Program Files\Open×××

二、复制模版
D:\Program Files\Open×××\sample-config\client.ovpn
把客户端配置文件复制粘贴到D:\Program Files\Open×××\config

三、修改客户端配置文件
把Linux上生成的客户端key文件下载到本地,同样放到D:\Program Files \Open×××\config 

 Cent os 6.4 OpenVpn 搭建_openvpn
修改配置文件
remote openvpn服务器的IP 1194 (例子remote 101.200.236.24 1194)
proto udp改成proto tcp

ca ca.crt

cert gongjiadong.crt      #修改为自己的key名称
key gongjiadong.key      #修改为自己的key名称

 

保存配置文件,然后打开openvpn