1.Openvpn简介

1)什么是Open×××

×××直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,Open×××无疑是Linux下开源×××的先锋,提供了良好的性能和友好的用户GUI。该软件最早由James Yonan编写。Open×××允许参与建立×××的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,以及SSLv3/TLSv1协议。Open×××能在Linux、xBSDMac OS XWindows2000/XP上运行。它并不是一个基于Web的×××软件,也不与IPsec及其他×××软件包兼容

2)Openvpn原理

   OpenVpn的技术核心是虚拟网卡,其次是SSL协议实现,由于SSL协议在其它的词条中介绍的比较清楚了,这里重点对虚拟网卡及其在OpenVpn的中的工作机理进行介绍:虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统下都有相应的实现,这也是OpenVpn能够跨平台一个很重要的理由。

在OpenVpn中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,通过SOCKET从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡,则应用软件可以接收到,完成了一个单向传输的过程,反之亦然。


2.部署拓扑


Openvpn搭建_其他

1.安装Openvpn

安装之前

先确定×××的时候和本地的时间是否一致

yum -y install *gcc* openssl-devel  make

关闭防火墙和selinux

安装lzo

tar -zxvf lzo-2.06.tar.gz -C /usr/src/

cd /usr/src/lzo-2.06/

./configure --prefix=/usr/local/lzo

  make && make install

安装openvpn

  tar -zxvf openvpn-2.1.4.tar.gz -C /usr/src/

  cd /usr/src/openvpn-2.1.4/

  [root@localhost openvpn-2.1.4]# ./configure --prefix=/usr/local/openvpn \

> --with-lzo-headers=/usr/local/lzo/include/ \

> --with-lzo-lib=/usr/local/lzo/lib/ \

> --with-ssl-headers=/usr/include/openssl/ \

> --with-ssl-lib=/usr/lib

make && make install

echo “export PATH=/usr/local/openvpn/sbin/:$PATH” >>/etc/profile

source /etc/profile

配置Server端

  1)创建证书

  cp -rfp /usr/src/openvpn-2.1.4/easy-rsa/ /usr/local/openvpn/

  cd /usr/local/openvpn/easy-rsa/2.0/

vim  vars在最后行修改

  export KEY_COUNTRY="ZN"

定义国家最多两个字符

export KEY_PROVINCE="TJ"

定义省份

export KEY_CITY="tianjin"

定义城市

export KEY_ORG="openvpn-nscc"

定义组织

export KEY_OU="nscc-tj"

定义单位

export KEY_EMAIL=sunfx@nscc-tj.gov.cn

定义邮箱

source vars

NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/local/openvpn/easy-rsa/2.0/keys

./clean-all

./build-ca 创建CA证书用于签发server和client证书一路回车既可以

Generating a 1024 bit RSA private key

..........++++++

.++++++

writing new private key to 'ca.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [ZN]:

State or Province Name (full name) [TJ]:

Locality Name (eg, city) [tianjin]:

Organization Name (eg, company) [openvpn-nscc]:

Organizational Unit Name (eg, section) [nscc-tj]:

Common Name (eg, your name or your server's hostname) [openvpn-nscc CA]:

Name []:openserver

Email Address [sunfx@nscc-tj.gov.cn]:

./build-dh为服务器生成Diffie-Hellman文件后面配置openvpn用到这个文件

./build-key-server server为服务器生成证书和密钥

Openvpn搭建_其他_02

./build-key client1  为客户端申请密钥

Openvpn搭建_其他_03

2)配置openvpn

cp -rfp /usr/src/openvpn-2.1.4/sample-config-files/server.conf  /usr/local/openvpn/

cd /usr/local/openvpn/

mv server.conf server.conf.bak

grep -v ^# server.conf.bak | sed '/^[[ :space: ]]* $/d' | sed /^$/d > server.conf

port 1194

proto tcp

dev tap

ca /usr/local/openvpn/easy-rsa/2.0/keys/ca.crt

cert /usr/local/openvpn/easy-rsa/2.0/keys/server.crt

key /usr/local/openvpn/easy-rsa/2.0/keys/server.key  # This file should be kept secret

dh /usr/local/openvpn/easy-rsa/2.0/keys/dh1024.pem

server 172.16.0.0 255.255.0.0

ifconfig-pool-persist /usr/local/openvpn/ipp.txt

push "route 172.16.0.0 255.255.0.0"

client-to-client

keepalive 10 120

comp-lzo

max-clients 100

user nobody

group nobody

persist-key

persist-tun

status openvpn-status.log

log         /var/log/openvpn.log

log-append  /var/log/openvpn.log

verb 5

;mute 20

启动服务

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


echo “/usr/local/openvpn/sbin/openvpn --config /usr/local/openvpn/server.conf  &

”  >> /etc/rc.local

写到rc.local里面让他开机自动启动