应公司业务部门要求,需要将公司内部的内网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
修改配置文件
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