OpenVPN安装与配置

OpenVPN简介

  1. VPN(Virtual Private Network)即虚拟专用网。
  2. 原理

OpenVpn的技术核心是虚拟网卡,其次是SSL协议实现,由于SSL协议在这不做介绍,这里重点对虚拟网卡及其在OpenVpn的中的工作机理进行介绍:

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

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

  1. 加密

OpenVPN使用OpenSSL库加密数据与控制信息:它使用了OpenSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法。它提供了可选的数据包HMAC功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。

  1. 验证

    OpenVPN提供了多种身份验证方式,用以确认参与连接双方的身份,包括:预享私钥,

第三方证书以及用户名/密码组合。预享密钥最为简单,但同时它只能用于建立点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个PKI证书体系。OpenVPN2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。

  1. 网络

OpenVPN所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。服务端具有向客户端"推送"某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。OpenVPN提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们,可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。IANA(Internet Assigned Numbers Authority)指定给OpenVPN的官方端口为1194。OpenVPN 2.0以后版本每个进程可以同时管理数个并发的隧道。

OpenVPN使用通用网络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代,尤其是在ISP(Internet service provider)过滤某些特定VPN协议的情况下。

在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。

TCP:有重传机制,端口固定,相比UDP会更加稳定。

UDP:无连接、无重传机制,端口不固定,不易受攻击。

服务器端安装部署

  1. 安装前准备

[[email protected] tools]# uname -r

2.6.18-194.el5

[[email protected] tools]# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 5.5 (Tikanga)

[[email protected] etc]# ntpdate pool.ntp.org #=>时间同步,很多软件因为时间不同步安装会报错

20 Aug 15:17:12 ntpdate[32021]: step time server 202.112.31.197 offset 22.427442 sec

  1. 下载安装包并安装

[[email protected] tools]# ll

总计 1924

drwxrwxrwx 13 postfix users   4096 08-20 11:08 lzo-2.02

-rw-r--r--  1 root    root  599387 2005-10-18 lzo-2.02.tar.gz

drwxrwxrwx 16 root    root    4096 08-20 12:42 openvpn-2.0.9

-rw-r--r--  1 root    root  669076 08-20 10:20 openvpn-2.0.9.tar.gz

Lzo编译安装

./configure

make && make install

openvpn编译安装

./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib

make && make install

  1. 生成证书

[[email protected] easy-rsa]# pwd

/root/tools/openvpn-2.0.9/easy-rsa/2.0

[[email protected] 2.0]# vim vars #=>修改vars文件,方便后面生成证书

export KEY_COUNTRY="CN"

export KEY_PROVINCE="BJ"

export KEY_CITY="Beijing"

export KEY_ORG="Thunder"

export KEY_EMAIL=[email protected]

[[email protected] 2.0]# source vars #=>使证书生效

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

[[email protected] 2.0]# ./clean-all

[[email protected] 2.0]# ./build-ca #=>生成CA证书

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) [CN]:

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

Locality Name (eg, city) [Beijing]:

Organization Name (eg, company) [thunder]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server‘s hostname) [thunder CA]: #=>不能为空

Email Address [[email protected]]:

[[email protected] 2.0]# ./build-key-server #=>生成服务器端证书

[[email protected] 2.0]# ./build-key #=>生成不加密码的客户端证书

[[email protected] 2.0]# ./build-key-pass  #=>生成加密码的客户端证书

[[email protected] 2.0]# ./build-dh #=>生成 Diffie Hellman 参数,必须为OpenVPN服务端生成此参数

  1. 配置server.conf

[[email protected] tools]# cp openvpn-2.0.9/sample-config-files/server.conf /etc/openvpn/

[[email protected] sample-config-files]# egrep -v "^#|^$|;" server.conf

port 1194

proto udp

dev tun

ca ca.crt

cert server.crt

key server.key  # This file should be kept secret

dh dh1024.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo

persist-key

persist-tun

status openvpn-status.log

verb 3

#需要加入的内容

push "route 192.168.0.0 255.255.0.0" #=>需要访问的内网网段

client-to-client

log /var/log/openvpn.log

配置说明:

样例配置文件使用虚拟TUN网络接口(路由模式for routing)创建一个VPN,它在 UDP端口1194(OpenVPN的官方端口)上监听客户端连接请求,并且从10.8.0.0/24 子网为连接的客户端分配虚拟地址。

使用样例配置文件之前,首先要编辑ca、cert、key 和dh 参数,使之指向你在上一节PKI中生成的文件。

这时服务端配置文件就可以使用了,也可以进一步修改它:

如果你使用以太网桥,则必须使用 server-bridge和dev tap而不是 server和dev tun。

如果想让OpenVPN服务端监听一个TCP端口而不是UDP端口, 使用proto tcp而不是proto udp。

如果你想使用不同于10.8.0.0/24的一个虚拟IP地址范围,则修改 server项。记住这一虚拟IP地址范围必须是在你的网络上没有使用的。

如果想让连接的客户端可以通过VPN互相访问,将client-to-client的注释去掉。 默认情况下客户端只能访问服务端。

如果你使用的是Linux、BSD或Unix,则可以将user nobody和group nobody 的注释去掉以增强安全性。

如果想在同一台机器上运行多个OpenVPN,每个VPN使用一个不同的配置文件, 是可以做到的:

每个VPN实例使用一个不同的port号(UDP和TCP使用不同的端口空间,所以 可以让一个VPN监听UDP-1194,另一个监听TCP-1194)。

如果在Windows下运行,则每一个OpenVPN配置都需要有一个自己的TAP-Win32虚拟网卡。可以使用Start Menu -> All Programs -> OpenVPN -> Add a new TAP-Win32 virtual ethernet adapter来增加TAP-Win32虚拟网卡。

如果你运行了多个OpenVPN,记住编辑指定输出文件的指令,避免一个VPN覆盖另一个VPN 的输出文件。这些指令包括log、log-append、 status和ifconfig-pool-persist。

  1. 启动openvpn服务

[[email protected] openvpn]# sed -i ‘s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/‘ /etc/sysctl.conf #=>开启内核转发功能

[[email protected] openvpn]# sysctl p =>使修改的内核参数生效

net.ipv4.ip_forward = 1

[[email protected] openvpn]# iptables L #=>检查iptables防火墙策略是否有阻止访问

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

[[email protected] openvpn]# /usr/local/sbin/openvpn --config /etc/openvpn/server.conf & #=>指定配置文件启动

[[email protected] openvpn]#iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

到此,服务器端配置完毕。

客户端配置

  1. 下载安装客户端

分32位和64位版本

下载地址: https://openvpn.net/index.php/open-source/downloads.html

  1. 配置客户端

安装完成后,把客户端证书文件和客户端配置文件放到安装路径\openvpn\conf\下面。

客户端配置文件在服务器安装目录下:

[[email protected] sample-config-files]# pwd

/root/tools/openvpn-2.0.9/sample-config-files

[[email protected] sample-config-files]# ll

总计 72

-rw-r--r-- 1 root root 3427 2005-11-01 client.conf

[[email protected] sample-config-files]# egrep -v "^#|^$|;" client.conf

client

dev tun

proto udp

remote my-server-1 1194 #=>openvpn服务器地址及端口号,端口映射环境即为映射后公网的地址

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt #=>CA证书名称,一般不用动

cert client.crt #=>客户端证书名称

key client.key #=>客户端私钥名称

comp-lzo

verb 3

客户端配置文件说明:

象服务端配置文件一样,首先编辑ca、cert和key 参数使之指向你在上一节PKI生成的文件。每一个客户端有自己的cert/key对。只有ca文件在服务端和所有客户端之间是通用的。

下一步,编辑remote指令使之指向服务端的主机名/IP地址和端口号。 (如果OpenVPN服务端运行在firewall/NAT-gateway之后的一台单网卡机子上,则使用网关的公用IP地址,和你在网关上配置的向OpenVPN服务端转发的端口)。 (if your OpenVPN server will be running on a single-NIC machine behind a firewall/NAT- gateway, use the public IP address of the gateway, and a port number which you have configured the gateway to forward to the OpenVPN server).

最后,确保客户端配置文件和服务端配置文件中指令的的一致性。主要检查的是 dev(tun/tap)和proto(udp/tcp)。还有comp-lzo和 fragment(如果使用了)则在客户端和服务端的配置文件中都必须提供。

重要:修改完配置文件后,把配置文件后缀名为ovpn

最后应有以下内容文件

  1. 启动客户端并连接

以管理员身份运行客户端,(不用管理员运行连接到vpn后,可能会ping不通通内网地址)

在通知区域打到openvpn图标并右击,点击连接,图标变绿后即代表连接成功。

时间: 2024-10-10 16:11:15

OpenVPN安装与配置的相关文章

[转]OpenVPN 安装与配置

一.服务器端安装及配置     服务器环境:干净的CentOS6.3 64位系统     内网IP:10.143.80.116     外网IP:203.195.xxx.xxx     OpenVPN版本:OpenVPN 2.3.2 x86_64-RedHat-linux-gnu 1.安装前准备 # 关闭selinux setenforce 0 sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config # 安装openssl和lzo,l

CentOS下OpenVPN安装、配置

安装OpenVPN的前提条件 在安装OpenVPN之前你必须确保你已经安装了C编译器(例如gcc).OpenSSL.LZO(一种无损压缩算法).PAM(一种可插入式的身份验证模块),安装方法就不用再说了. 安装Linux版OpenVPN 接着,我们使用tar命令,将该压缩文件解压到当前目录,完整命令为:tar zxf openvpn-2.3.3.tar.gz #调用configure ./configure #编译 make #安装 make install 配置防火墙规则以及IP转发 echo

openvpn安装与配置密码访问

rpm -ivh  http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -Uvh  http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm yum makecache yum -y install openvpn yum install easy-rsa

centos6.5 64位 openvpn安装配置

1 查看系统版本 2 cat /etc/redhat-release 3 CentOS release 6.5 (Final) 4 5 查看内核和cpu架构 6 uname -rm 7 2.6.32-431.el6.x86_64 x86_64 8 9 查看ip 10 ifconfig 11 eth0 Link encap:Ethernet HWaddr 08:00:27:5E:DF:74 12 inet addr:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.255 Mas

OpenVPN下载、安装、配置及使用详解

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安装配置教程总结 centosX64

1.安装openvpn依赖组件 2.安装openvpn 3.初始化CA证书 4.生成CA证书,生成server证书,生成client证书 5.编辑/etc/sysctl.conf,添加路由规则. 6.生成Diffie Hellman参数 7.将server 证书 dh1024.pem ca证书copy到 /etc/openvpn 8.将server.conf 复制到 /etc/openvpn目录下并依据自己要求编辑此配置文件 9.配置启动脚本启动server 端 10.配置客户端,连接客户端 详

OpenVPN+AD+Google authenticator 安装、配置

一.      网络环境如下 1.OpenVPN Server 外网卡eth1配置 IP:121.12.x.y MASK:255.255.255.128 GateWay:121.12.x.1 LAN eth0卡配置 IP:192.168.38.87 MASK:255.255.255.0 DNS:192.168.38.1 远程拨号DHCP池: 172.16.0.0  -172.16.0.127 掩码:255.255.255.128 2.内网三层交接口IP:192.168.38.254 二.网络配置

在Centos7系统环境下安装并配置Openvpn服务(附客户端使用说明及常见问题排错)

OpenVPN服务端配置 简介 OpenVPN是一个用于创建虚拟专用网络加密通道的软件包最早由James Yonan编写. OpenVPN允许参与建立VPN的单点使用公开密钥.电子证书.或者用户名密码来进行身份验证.它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库. 目前OpenVPN能在Solaris.Linux.OpenBSD.FreeBSD.NetBSD.Mac OS X与Windows 2000XPVista7上运行并包含了许多安全性的功能.它并不是一个基于Web的V

OpenVPN CentOS7 安装部署配置详解

一 .概念相关 1.vpn 介绍 vpn 虚拟专用网络,是依靠isp和其他的nsp,在公共网络中建立专用的数据通信网络的技术.在vpn中任意两点之间的链接并没有传统的专网所需的端到端的物理链路,而是利用公共网络资源动态组成的,可以理解为通过私有的隧道技术在公共数据网络上模拟出来的和专网有相同功能的点到点的专线技术,所谓虚拟是指不需要去拉实际的长途物理线路,而是借用公共的Internet网络实现. 2.vpn 作用 vpn可以帮助公司用的远程用户(出差,家里)公司的分之机构.商业合作伙伴及供应商等