阳光梦的专栏

Linux Server

Linux环境下OpenVPN服务端安装

一、Linux环境下OpenVPN服务端安装:


OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。OpenVPN使用方便,运行性能优秀,支持Solaris、Linux 2.2+(Linux 2.2+表示Linux 2.2及以上版本,下同)、OpenBSD 3.0+、FreeBSD、NetBSD、Mac OS X、Android和Windows 2000+的操作系统,并且采用了高强度的数据加密,再加上其开源免费的特性,使得OpenVPN成为中小型企业及个人的VPN首选产品。

使用OpenVPN配合特定的代理服务器,可用于访问Youtube、FaceBook、Twitter等受限网站,也可用于突破公司的网络限制。由于OpenVPN支持UDP协议,还可以配合HTTP代理(HTTP Proxy)使用,使得只要是能够打开网站或上QQ的地方,就可以访问外部的任何网站或其他网络资源。

1、依赖环境配置及OpenVPN源码编译安装

首先在安装之前,让我们了解一下OpenVPN所依耐的软件环境:

  • gcc g++ [gcc g++为系统需要的编译工具]
  • lzo库 [Lzo库的功能是对虚拟链路进行压缩]
  • openssl [囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议]

gcc及g++编译工具:

编译工具gcc及g++在此不做安装说明,因为一般的Linux环境自带此项工具;若实在没有,请自行上网查找相关安装方法。

Lzo库的编译安装:

登录http://www.oberhumer.com/opensource/lzo/download/,下载lzo-2.02.tar.gz源码包。

或者采用命令:

wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz

安装lzo库:

# tar -zxvf lzo-2.02.tar.gz

# cd lzo-2.02

# ./configure –prefix=/usr/local/lzo && make && make install

添加动态编译库路径:

# vi /etc/ld.so.conf

<!--lang: shell-->
Include /etc/ld.so.conf/*.conf
/lib
/lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64 

# ldconfig 【动态编译库生效】

Openssl的编译安装:

登录:http://www.openssl.org/source/,下载openssl-1.0.0a.tar.gz源码包。

或者采用命令:

wget http://www.openssl.org/source/openssl-1.0.0a.tar.gz

安装openssl:

# tar -zxvf openssl-1.0.0a.tar.gz

# ./config –prefix=/usr/local/openssl && make && make install

OpenVPN的编译安装:

登录:http://www.openvpn.net/release/,下载openvpn-2.0.9.tar.gz源码包。

或者采用命令:

wget http://www.openvpn.net/release/openvpn-2.0.9.tar.gz

安装openvpn:

# tar -xvzf openvpn-2.0.9.tar.gz

# cd openvpn-2.0.9

# ./configure –prefix=/usr/local/openvpn –with-ssl-headers=/usr/local/openssl/include/ –with-ssl-lib=/usr/local/openssl/lib/

# make && make install

2、创建配置环境

创建配置文件存放路径,并拷贝源码目录相应文件:

# mkdir /etc/openvpn【创建配置文件存放路径】

# cd openvpn-2.0.9/【进入openvpn源码目录】

# cp -R easy-rsa/ /etc/openvpn【拷贝easy-rsa目录】

# cp sample-config-files/server.conf /etc/openvpn/【服务端运行配置文件】

# cp sample-config-files/client.conf /etc/openvpn/【客户端运行配置文件】

进入环境配置目录:

# cd /etc/openvpn/easy-rsa/2.0/

# ll

ll

对其中的脚本文件进行说明:

  • vars脚本 【是用来创建环境变量,设置所需要的变量的脚本】
  • clean-all脚本 【是创建生成CA证书及密钥 文件所需要的文件和目录】
  • build-ca脚本 【生成CA证书(交互)】
  • build-dh脚本 【生成Diffie-Hellman文件(交互);密钥交换】
  • build-key-server脚本 【生成服务器端密钥(交互)】
  • build-key脚本 【生成客户端密钥(交互)】
  • pkitool脚本 【直接使用vars的环境变量设置直接生成证书(非交互)】

编辑Vars脚本文件:

#vim vars

vim vars

<!--lang: shell-->
# 定义你所在的国家
export KEY_COUNTRY="CN"
# 你所在的省份
export KEY_PROVINCE="BJ"
# 你所在的城市
export KEY_CITY="Beijing"
# 你所在的组织
export KEY_ORG="OpenVPN ORG"
# 你的单位
export KEY_OU="OpenVPN"
# 你的邮件地址
export KEY_EMAIL="feiyang@163.com"

配置完成后,在当前bash环境下执行脚本文件:

#source ./vars

./vars

提示执行./clean-all将删除/etc/openvpn/easy-rsa/2.0/keys/下的文件:

# ./clean-all

生成服务端CA证书及密钥

# ./build-ca 【生成一个1024 bit的RSA密钥】

build-ca

我们可以查看在/keys/目录下生成文件:

# ls keys/

keys dir

生成服务器使用的VPN server ca证书

# ./build-key-server server【这里的server是服务端的证书及密钥命名】

build-key-server

将会在keys/路径下生成server.crt、server.csr、server.key三个文件。

生成客户端CA证书及密钥

# ./build-key client1 【这里的client1是客户端的证书及密钥命名】

build-key

将会在keys/路径下生成client1.crt、client1.csr、client1.key三个文件。

生成Diffie Hellman 文件

# ./build-dh

build-dh
table

修改服务器端的配置文件

# vim /etc/openvpn/server.conf

配置如下:

<!--lang: shell-->
local 192.168.4.112 #本地IP地址 
port 2000 #监听端口号            
proto udp #采用UDP协议;根据代理服务器的协议而定,若HTTP proxy,则使用TCP协议
;dev tap #基于桥接的隧道
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 10.8.0.0 255.255.255.0 #指定VPN子网段,10.8.0.1为服务端IP,其余分配给客户端
ifconfig-pool-persist ipp.txt #记录客户端所获得IP
client-to-client #允许客户端之间相互通讯
keepalive 10 120 #每隔120秒测试连接可用性,每次ping10秒
#duplicate-cn #允许多个客户端同时使用同一个证书和密钥。
#警告:测试结果显示,使用相同证书和密码的客户端同时连接时,有可能会造成VPN掉线
comp-lzo #开启VPN连接压缩.客户端必须做相同设置
;max-clents 100 #允许客户端并发连接的数量
persist-key 
persist-tun 
status /etc/openvpn/easy-rsa/2.0/keys/openvpn-status.log #openVPN状态记录文件
verb 3 #指定openVPN日志输出等级
push "dhcp-option DNS 10.8.0.1" 
push "dhcp-option DNS 192.168.4.202"

启动openVPN服务端

/usr/local/openvpn/sbin/openvpn –daemon –config /etc/openvpn/server.conf

其中–daemon为后台守护进程模型启动;

检测服务端是否已开启:

# netstat –ln

netstat

若检测未开启服务,则说明服务端配置参数有误,去掉–daemon运行参数,执行:

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

即可看到运行的错误提示信息,根据信息更改server.conf文件

若成功运行,执行ifconfig命令会多出一个tun0,即VPN的虚拟网卡

ifconfig

二、windows环境下OpenVPN客户端安装:

修改客户端的配置

打开client.conf配置文件

配置修改如下:

<!--lang: shell-->
client 
dev tun #基于路由的隧道
proto udp #采用UDP协议
remote 192.168.4.112 2000 #服务端IP及端口号
persist-key 
persist-tun 
ca ca.crt 
cert client1.crt 
key client1.key 
ns-cert-type server 
comp-lzo #采用lzo连接压缩,与服务端配置一致
verb 3 
redirect-gateway def1 #使客户端中所有流量经过VPN

将文件名称后缀改为client.ovpn

安装并配置客户端

运行客户端安装包openvpn-2.1.1-install.exe,按照默认安装。

将修改完成的client.ovpn、client1.crt、client1.key、ca.crt拷贝到客户端安装目录下的config文件夹(默认路径:C:\Program Files\OpenVPN\config)之中。

config dir

启动客户端

启动openVPN客户端:

vpn logo

右键小图标,点击"Connect”;

set connect

当连接成功后,服务器VPN会为客户端分配一个虚拟网卡IP。

检测是否成功搭建,ping服务器本地IP和VPN虚拟IP;

ping


注:本文部分内容参考了网上的一些文章,并且所有过程通过本人亲自实践,在此整理出来希望能给需要的各位一些借鉴,另外,若文中有不妥之处,望各位指出。

阅读更多
文章标签: OpenVPN
个人分类: 认证
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭