位置:海鸟网 > IT > linux/Unix >

OpenVPN在Linux下的安装配置和使用简介

OpenVPN是一个基于OpenSSL库的应用层VPN实现。和传统VPN相比,它的优点是简单易用。

这里简单介绍一下基于CA,采用数字证书认证,可以划分多个网段的OpenVPN配置方法。

Note1:VNN和OpenVPN很像。

Note2:这个东西对于突破国内网络封锁,保护通信自由很有意义,值得大力推广。

安装OpenVPN

Linux下的安装

首先,Kernel必须支持TUN/TAP设备。在2.6.x内核中,对应的Kernel选项是“UniversalTUN/TAPdevicedriversupport”。

确认Kernel支持TUN/TAP后,可以下载OpenVPN编译并安装。这一步很easy,不多说了。

Windows下的安装

从(http://www.openvpn.se/)下载安装包安装,这里的安装包带一个ClientGUI工具,很好用。

配置OpenVPN

配置OpenVPNServer

只说明在Linux下的配置。Windows类似。创建/etc/vpn/server.conf,内容如下:

以下为引用的内容:

  port1494
  protoudp
  devtun
  caca.crt
  certserver.crt
  keyserver.key
  dhdh1024.pem
  server10.1.0.0255.255.255.0
  push"route10.1.0.0255.255.255.0"
  push"route10.1.1.0255.255.255.0"
  client-config-dir/etc/vpn/ccd
  route10.1.1.0255.255.255.0
  client-to-client
  keepalive10120
  usernobody
  groupnobody
  persist-key
  persist-tun
  log-appendopenvpn.log
  verb3
 
其中ca.crt,server.key,server.crt可以用以前贴出的ca工具创建,dh1024.pem用OpenVPN自带的工具创建。

这个配置文件创建了两个网段:10.1.0.*和10.1.1.*,VPN服务器将从这两个网段中给Client分配IP地址。VPNServer自身IP将是10.0.0.1。

“client-config-dir”指明Client的专有配置文件目录。在这个目录下可以针对特定用户建立配置文件。例如,要为用户abc指定一个IP地址(如10.1.1.5)而不是让VPNServer自动分配,可以在配置目录/etc/vpn/ccd下建立一个abc文件,内容如下:

ifconfig-push10.1.1.510.1.1.6

那么VPNServer就会自动给abc用户分配10.1.1.5这个地址。注意第一个IP地址的最后一个数字(这里是5)必须是4*n+1的数。

问题是,VPNServer怎么知道哪个用户是abc呢?它是Client数字证书中的CommonName域来判断的。就是说,在连接协商时如果Client端数字证书的CommonName是abc,那么VPNServer就找配置目录下abc这个文件。

配置OpenVPNClient

在Client机器上OpenVPN安装目录的config目录下建立如下client.ovpn文件:

修改remote一行填上对应VPNServer的IP和端口。ca.crt和服务端ca.crt一样,必须把这个ca.crt也放在config目录下。

关键是cryptoapicert"SUBJ:abc"这行。这一行指定客户端的数字证书从Windows证书Store里取。在IE的“选项->内容->证书”页面能看到你的个人数字证书。

SUBJ:abc指明选择证书主题中含有abc的证书。客户端数字证书也可以用以前贴的ca工具生成,如果要给用户abc签发数字证书,只用指明CommonName是abc即可,然后把生成的abc.p12传给abc用户并告诉导入口令。abc导入这个数字证书后,VPNClient就可以工作了。

启动OpenVPN

服务端启动

在/etc/vpn目录下,执行:

openvpn--daemon--configserver.conf

客户端启动

OpenVPN带一个GUI小工具,会装在系统托盘里。点菜单里的connect即可。

常见问题

无法得到IP地址

通常是因为DHCPClient服务没有启动。在服务管理里启动即可。