CentOS7中OpenVPN的配置

最近需要在openstack中集成openvpn功能,故熟悉了一下openvpn的搭建流程,记录下来,供参考

版本:openvpn-2.3.4.tar.gz

下载地址:http://pan.baidu.com/s/1hq3iQJ6

操作系统:CentOS7

1. 准备

yum install -y gcc openssl-devel lzo-devel pam-devel

2. 安装OpenVPN

将下载的安装文件移动到/usr/local/文件夹中(你也可以自行移动到其他目录)。

使用tar命令,将该压缩文件解压到当前目录,完整命令为:tar zxf openvpn-2.3.4.tar.gz

依次执行如下命令:

#跳转到解压后的openvpn目录cd openvpn-2.3.4#调用configure./configure#编译make#安装make install

3. 配置OpenVPN

配置OpenVPN主要有两个步骤:

1. 生成服务器和客户端所需的各种证书

2. 编写服务器和客户端所需的配置文件。

3.1 下载easy-rsa

下载地址:http://pan.baidu.com/s/1o66Yaz4

将下载的easy-rsa-release-2.x.zip文件放在/root目录中

依次执行如下命令:

#转到easy-rsa安装文件所在目录cd /root/#解压该安装文件unzip -q easy-rsa-release-2.x.zip

执行结果如下图所示(其中的ls命令用于查看文件列表):

接着,将上图中所标注的easy-rsa-release-2.x/easy-rsa文件夹复制到OpenVPN的解压目录中,命令如下:

#复制解压后的easy-rsa目录到OpenVPN解压目录下cp -r easy-rsa-release-2.x/easy-rsa /usr/local/openvpn-2.3.4

然后执行命令cd /usr/local/openvpn-2.3.4/easy-rsa/2.0从而进入OpenVPN下的easy-rsa/2.0目录。

PS:实际上就只是下载了easy-rsa 2.0,并将解压后的easy-rsa子目录复制到了OpenVPN的主目录下

3.2 使用easy-rsa生成CA证书

在生成证书之前,我们建议你对2.0目录中的vars文件稍作修改。vars文件存储的是一些用户变量设置信息,每次生成证书都会使用到其中的某些变量。如下图所示,我们着重建议你关注红色矩形框内的变量,并选择性地对其进行修改(你可以不修改这些参数,但不要把这些参数留空)。

KEY_SIZE:表示密钥的长度,一般为1024或2048(长度越长,性能耗费越多)。

#下面是一些用户相关信息配置
KEY_COUNTRY:所在国家
KEY_PROVINCE:所在省
KEY_CITY:所在城市
KEY_ORG:所在组织
KEY_EMAIL:邮箱地址
KEY_OU:机构单位或部门名称

下面,开始来生成证书了。保持当前目录为OpenVPN根目录/easy-rsa/2.0。然后依次执行下列命令:

#初始化命令,用于设置后续命令所需的相关变量信息. ./vars#清除之前创建的所有证书和密钥./clean-all#生成CA证书和密钥./build-ca

PS:证书的用户信息可以根据需要自行输入。如果不输入、直接回车,则表示该字段使用"[]"中的默认值(也就是前面vars文件中设置的参数值);如果输入".",则表示该字段留空。在这里需要注意Common Name字段,这相当于证书的"用户名",请确保每个证书的Common Name字段是唯一的。

到这里,我们的CA证书和密钥就已经生成成功了,生成的证书和密码默认均存放在当前目录的子文件夹keys中。

3.3 生成服务器端证书

接下来,我们为服务器和客户端生成各自所需的证书和密钥(所有的证书和密钥都必须由OpenVPN服务器上的easy-rsa生成)。

我们可以执行命令./build-key-server server来生成服务器端所需的证书和密钥。如下图所示,与创建CA证书一样,我们先输入证书的相关信息,并在最后输入两次"y"确认生成即可。

3.4 生成客户端证书

与创建服务器端证书类似,我们可以使用命令./build-key clientName来生成客户端证书和密钥,其中clientName为自定义的客户端名称(例如:client1、client2、jim、tom)。如果需要为多个客户端生成证书,只需要分别执行多次即可。

3.5 生成迪菲·赫尔曼交换密钥

迪菲·赫尔曼交换密钥是一种安全协议,用以对数据进行加密。

3.6 生成TLS-auth密钥

这一步骤是可选操作。OpenVPN提供了TLS-auth功能,可以用来抵御Dos、UDP端口淹没攻击。出于安全考虑,你可以启用该功能;启用该功能,

执行命令openvpn --genkey --secret keys/ta.key来生成TLS-auth所需的密钥文件。

到这里,我们的证书生成就告一段落了。如果你以后想要生成新的客户端或执行其他操作,只需要先执行命令source ./vars,然后执行相应的命令即可,例如./build-key client2

最后,我们来看看我们一共生成了哪些证书和密钥。

编号①:CA证书和密钥
编号②:客户端client1的证书和密钥,
编号③:迪菲·赫尔曼交换密钥 (如果你的KEY_SIZE=1024,则该文件名称为dh1024.pem)。
编号④:服务器端证书和密钥。
编号⑤:启用tls-auth所需的文件。

3.7 编写配置文件

众所周知,OpenVPN虽然可以分为客户端和服务器,不过它们的安装程序是完全一样的,只是通过不同的证书和配置文件来进行区分。在这里,我们先在OpenVPN主目录下创建一个config目录,并将其所需的证书和密钥文件拷贝到该目录中。

其中,服务器端需要用到的文件有:

ca.crt
ca.key
dh2048.pem (如果最初的变量KEY_SIZE设为1024,这里就是dh1024.pem)
server.crt
server.key
ta.key (如果不开启tls-auth,则无需该文件)

客户端client1需要用到的文件有:

ca.crt
client1.crt
client1.key (名称client1根据个人设置可能有所不同)
ta.key (如果不开启tls-auth,则无需该文件)

在这里,我们以OpenVPN服务器端为例来演示上述操作流程。

#创建config目录mkdir /usr/local/openvpn-2.3.4/config#复制证书和密钥文件到config目录cp keys/ca.crt keys/ca.key keys/server.crt keys/server.key keys/dh2048.pem keys/ta.key /usr/local/openvpn-2.3.4/config

此外,还需要为服务器和每个客户端的config目录分别编写一个配置文件,服务器端的配置文件为server.conf,客户端的配置文件为client.conf。

这两个配置文件该如何编写呢?OpenVPN已经在sample/sample-config-files子目录中为我们提供了相关的示例文件server.conf和client.conf,并且配置文件中的每个配置选项均有详细的英文说明(配置文件中"#"或";"开头的均为注释内容)。

现在,我们先将server.conf文件拷贝到config目录中,然后再对其进行修改。

#转到simple-config-files目录cd /usr/local/openvpn-2.3.4/sample/sample-config-files#复制server.conf到config目录中cp server.conf /usr/local/openvpn-2.3.4/config

server.conf的详细配置,并注明每项配置的作用。

local 192.168.1.106     #指定监听的本机IP(因为有些计算机具备多个IP地址),该命令是可选的,默认监听所有IP地址。port 1194             #指定监听的本机端口号proto udp             #指定采用的传输协议,可以选择tcp或udpdev tun               #指定创建的通信隧道类型,可选tun或tapca ca.crt             #指定CA证书的文件路径cert server.crt       #指定服务器端的证书文件路径key server.key    #指定服务器端的私钥文件路径dh dh2048.pem         #指定迪菲赫尔曼参数的文件路径server 10.0.0.0 255.255.255.0   #指定虚拟局域网占用的IP地址段和子网掩码,此处配置的服务器自身占用10.0.0.1。ifconfig-pool-persist ipp.txt   #服务器自动给客户端分配IP后,客户端下次连接时,仍然采用上次的IP地址(第一次分配的IP保存在ipp.txt中,下一次分配其中保存的IP)。tls-auth ta.key 0     #开启TLS-auth,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。keepalive 10 120      #每10秒ping一次,连接超时时间设为120秒。comp-lzo              #开启VPN连接压缩,如果服务器端开启,客户端也必须开启client-to-client      #允许客户端与客户端相连接,默认情况下客户端只能与服务器相连接persist-keypersist-tun           #持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某些资源。status openvpn-status.log    #指定记录OpenVPN状态的日志文件路径verb 3                #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细

客户端配置文件client.conf。

client         #指定当前VPN是客户端dev tun        #必须与服务器端的保持一致proto udp      #必须与服务器端的保持一致remote 192.168.1.106 1194      #指定连接的远程服务器的实际IP地址和端口号resolv-retry infinite    #断线自动重新连接,在网络不稳定的情况下(例如:笔记本电脑无线网络)非常有用。nobind         #不绑定特定的本地端口号persist-keypersist-tunca ca.crt      #指定CA证书的文件路径cert client1.crt       #指定当前客户端的证书文件路径key client1.key    #指定当前客户端的私钥文件路径ns-cert-type server      #指定采用服务器校验方式tls-auth ta.key 1     #如果服务器设置了防御DoS等攻击的ta.key,则必须每个客户端开启;如果未设置,则注释掉这一行;comp-lzo              #与服务器保持一致verb 3                #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细

实际上,将两个模板文件中与IP地址有关的配置修改一下,就可以直接拿来使用。
关于OpenVPN配置文件的更多信息请参考server.conf配置详解client.conf配置详解

3.8 启动OpenVPN

当我们把服务器和客户端所需的证书、密钥和配置文件都分配完毕之后,我们就可以尝试启动OpenVPN来检查我们的工作成果了。

在Linux中,我们可以直接执行以下命令来启动OpenVPN:

openvpn 配置文件路径

如果你是服务器端,就指定server.conf文件的路径,如果你是客户端就指定client.conf文件的路径。

请注意:

  1. 建议你将配置文件与文件路径相关的部分全部改为绝对路径。
  2. OpenVPN服务器所在计算机必须允许OpenVPN通过防火墙,你可以禁用掉防火墙,或者将OpenVPN设为可信程序,或者开放1194端口。
  3. 启动服务器和客户端都需要一定的权限,建议用root账户或sudo命令进行启动。

以下就是OpenVPN服务器的启动效果:

客户端的启动效果如下:

我们在客户端尝试ping服务器的虚拟IP地址10.0.0.1,顺利ping通。

3.8 windows客户端连接

1. 下载 OpenVPN Windows 安装包,并安装它

地址:https://openvpn.net/index.php/download/community-downloads.html

缺省情况下,OpenVPN 将被安装到 C:\Program Files\OpenVPN 目录中

推荐使用OpenVPN官方客户端2.3.6和以上版本,安装时选择”OpenVPN GUI”模块即可安装客户端

2. 将配置文件放入 C:\Program Files\OpenVPN\config 目录中

3. 将以下内容保存到 C:\Program Files\OpenVPN\config 目录中,文件名任意, 扩展名为 .ovpn ,比如可以叫做 xxxxxxxx.ovpn

client
dev tun
proto udp
remote 192.168.1.125 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
comp-lzo
verb 3
时间: 2024-10-12 02:40:56

CentOS7中OpenVPN的配置的相关文章

CentOs7中的网卡配置工具

一,CentOs7中的网卡配置工具 介绍之前,先来了解一下NetworkManager,Network Manager 是管理和监控网络设置的首行进程,设备既是网络接口,链接是对网络接口的配置,一个网络接口可以有多个链接配置,但同时只有一个链接配置生效 chkconfig NetworkManager off  保证下一次开机服务仍然关闭 nmcli 地址配置工具 nmcli常用选项 看一下具体用法 nmcli device = nmcli device status 显示网络接口 nmcli

centos7中安装、配置、验证、卸载redis

本文介绍在centos7中安装.配置.验证.卸载redis等操作,以及在使用redis中的一些注意事项. 一 安装redis 1 创建redis的安装目录 利用以下命令,切换到/usr/local路径 cd /usr/local 键入以下命令,新建一个redis目录,用于放置redis软件. mkdir redis 2 下载并解压redis文件 下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz   解压red

centos7中redis安装配置

1.官网下载对应版本,本例以5.0.5为例 2.tar -zxvf xxxxx 并mv到安装目录 3.进入redis-5.0.5目录下,执行编译命令 make 4.编译完成后,经redis安装到指定目录下 make PREFIX=/usr/local/redis install 5.安装完成后进入redis目录下,会发现有一个bin目录 6.启动 方式一,进入/usr/local/redis/bin里执行启动命令(默认端口为:6379) 方式二,后台启动,将redis-5.0.5目录下的redi

CentOS-7中安装与配置Tomcat8.5

第一步:下载Tomcat8.5,通过地址:http://tomcat.apache.org/download-80.cgi下载 最后得到下载文件 apache-tomcat-8.5.15.tar.gz 第二步:通过SecureCRT将文件传输到linux系统中的 /usr/local目录下 第三步:解压和删除压缩包 命令: [[email protected] local]# tar -zxv -f apache-tomcat-8.5.15.tar.gz // 解压压缩包 [[email pro

CentOS7中firewall防火墙详解和配置

官方文档地址: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html#sec-Introduction_to_firewalld1 cd /usr/lib/firewalld/services 目录中存放定义好的网络服务和端口参数,系统参数,不能修改. cd /etc/firewalld/services/ syst

CentOS-7.0.中安装与配置Tomcat-7的方法

安装说明 安装环境:CentOS-7.0.1406 安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz 下载地址:http://tomcat.apache.org/download-70.cgi 安装前提 系统必须已安装配置JDK6+,安装请参考:在CentOS-6.3中安装与配置JDK-7. 安装tomcat 将apache-tomcat-7.0.29.tar.gz文件上传到/usr/local中执行以下操作: 代码如下: [plain] view plainco

CentOS7中网络配置详解

一.前言 本来准备写一些网络配置工具的使用,后来想了想(其实还是为了偷懒),网上关于nmcli工具的使用文章不多,所以写一下CentOS7中的nmcli工具的简单使用和CentOS7中一些网络属性配置的相关变化. 二.CentOS7网络方面的变化 很多朋友刚接触到CentOS7的时候最不习惯的就是它的网卡命名方式了,不过不习惯终究还是得去了解它,毕竟一个运维人员要时刻保持先进性,我们一起来了解CentOS7中网卡的命名方式吧! 网卡命名机制 如果 Firmware或BIOS主板上集成设备的索引信

在CentOS7中配置网络成组(NetworkTeam)

在CentOS7中推荐网络成组的方式替代以往的网卡绑定,对于具体的操作在红帽子的白皮书中已经有详细的论述,具体可以参看https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/index.html 本人在配置网络成组(NetworkTeam)时,使用了nmtui的方式,但按照白皮书上的操作,未能成功.后来经过自己排查,结合上述白皮书中5.10.3中使用ifcfg的配

CentOS6和CentOS7中简单web站点的配置步骤

一.CentOS6中简单的web站点的配置实例:1.安装httpd:~]# yum install -y httpd httpd-manual httpd-tools //安装httpd应用程序所需要的必要文档文件2.确保SElinux和iptables防火墙不会干扰httpd服务的提供:SElinux配置:~]# getenforce //查看SELinux状态Enforcing~]# setenforce 0 //设置SELinux为防火墙:~]# iptables -vnL //查看主机是