CentOS7.1-OpenVPN

1、环境准备

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

CentOS Linux release 7.1.1503 (Core)

[[email protected] ~]# cat /proc/version

Linux version 3.10.0-229.el7.x86_64 ([email protected]) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Fri Mar 6 11:36:42 UTC 2015

2、修改主机名并修改host

[[email protected] ~]# hostnamectl set-hostname internalssl2.meten.com

[[email protected] ~]# vi /etc/hosts

127.0.0.1 在127后面添加internalssl2.meten.com

3、OpenVPN服务器的安装与配置

1)yum install epel-release

2)OpenVPN服务器的安装

yum install openvpn -y //安装OpenVPN与LDAP认证插件

yum install easy-rsa -y //安装RSA证书管理工具

3)OpenVPN Ldap插件安装

yum install glibc* glibc.i686 libstdc++.i686 //安装依赖

rpm -ivh libobjc2-4.5.2-2-mdv2011.0.x86_64.rpm

4)设置OpenVPN Server与easy-rsa

cd /etc/openvpn //进入到OpenVPN配置目录

cp -ra /usr/share/easy-rsa/2.0 /etc/openvpn //复制样式证书管理工具到OpenVPN目录

mv 2.0 easy-rsa //重命名文件夹名称

pwd

/etc/openvpn/easy-rsa

ll /etc/openvpn/easy-rsa //文件夹结构

vars 脚本, 是用来创建环境变量,设置所需要要的变量的脚本

clean-all 脚本, 是创建生成ca证书及密钥文件所需要的文件及目录

build-ca 脚本, 生成ca证书(交互)

build-dh 脚本, 生成Diffie-Hellman文件(交互)

build-key-server 脚本, 生成服务器端密钥(交互)

build-key 脚本, 生成客户端密钥(交互)

pkitool 脚本, 直接使用vars的环境变量设置, 直接生成证书(非交互)

5)创建当前OpenSSL的符号链接

cd /etc/openvpn/easy-rsa //进入Easy-rsa目录

ln -s openssl-1.0.0.cnf openssl.cnf //设置符号链接

6)设置Vars证书变量配置文件

vim vars

<<< OUTPUT OMMITTED >>>

# Increase this to 2048 if you

# are paranoid. This will slow

# down TLS negotiation performance

# as well as the one-time DH parms

# generation process.

exportKEY_SIZE=2048 //设置加密长度

# In how many days should the root CA key expire?

exportCA_EXPIRE=3650 //设置CA有效期

# In how many days should certificates expire?

exportKEY_EXPIRE=3650 //设置Key有效期

# These are the default values for fields

# which will be placed in the certificate.

# Don‘t leave any of these fields blank.

export KEY_COUNTRY="CN" //设置国家名称

export KEY_PROVINCE="GuangDong" //设置省份名称

export KEY_CITY="Shenzhen" //设置城市名称

export KEY_ORG="Shenzhen Meten Education Technology Co.,Ltd." //设置组织名称

export KEY_EMAIL="[email protected]" //设置邮件地址

export KEY_CN=METEN Root CA //设置名称

export KEY_NAME=METEN Root CA

export KEY_OU="IT Dept" //设置组织名称

export PKCS11_MODULE_PATH=METEN

export PKCS11_PIN=1234

export KEY_NAME="METEN KEY"

7)服务器端证书生成与配置

cd /etc/openvpn/easy-rsa

source ./vars

./clean-all

#######这里我并没有生成CA,而是将原来的CA证书copy到/etc/openvpn/easy-rsa/keys,就可以使之前颁发的用户证书继续在该服务器有效#########

Build "ca" //生成Root Ca证书, 用于签发Server和Client证书,可以看到已经生成了ca.crt ca.key文件

./build-ca

########结束########

Build "server" //生成服务器使用的VPN server Ca证书,server是您为CA证书起的一个名字 以server名字为例,生成的服务器使用的CA证书文件为: server.crt server.key

./build-key-server internalssl2.meten.com

#######这里生成的client证书所有用户一起使用#########

Build "client"

这里我们在前面有做相应的配置,默认即可。在后面有一个需要确认的地方,输入y继续执行即可。

./build-key client

########结束########

Build "dh2048.pem" //生成Diffie-Hellman文件,可以看到生成了2048位的Diffie-Hellman文件

由于我们采用的2048位,所以配置的时间相对来说会比较长,您可以先去喝口茶。

./build-dh dh2048.pem

8)建立对应目录,并将对应的证书复制到相关目录

cd /etc/openvpn //进入OpenVPN目录

mkdir {client,server} //建立Client与Server目录

# Server相关配置

cp easy-rsa/keys/ca.* server/

cp easy-rsa/keys/internalssl2.meten.com.* server/

cp easy-rsa/keys/dh2048.pem server/

touch server/ipp.txt

# Client相关设置

cp easy-rsa/keys/ca.crt client/

cp easy-rsa/keys/client* client/

9)配置OpenVPN配置文件Server.conf

vim /etc/openvpn/server.conf

#监听IP地址,默认监听所有IP

;local a.b.c.d

#设置模式

mode server

#使用TLS加密传输,本端为Server

tls-server

#######通讯端口设置

#OpenVPN服务器默认采用UDP 1194端口,但是很多运营商封了这个端口,注意修改

port 8083

#测试采用TCP端口,如果您的网络不是很稳定建议采用UDP端口

proto tcp

;proto udp

topology subnet

# 设置创建tun的路由IP通道,还是创建tap的以太网通道路由IP容易控制,所以推荐使用它;但如果如IPX等必须 使用第二层才能通过的通讯,则可以用tap方式,tap也就是以太网桥接

;dev tap

dev tun

#Windows需要给网卡一个名称,linux不需要设置

;dev-node MyTap

#证书位置设置最好设置成绝对路径,有时候采用相对路径会报错。

ca /etc/openvpn/server/ca.crt

#这里是重点,必须指定SSL/TLS root certificate (ca),certificate(cert), and private key (key),ca文件是服务端和客户端都必须使用的,但不需要ca.key服务端和客户端指定各自的.crt和.key,请注意路径,可以使用以配置文件开始为根的相对路径,也可以使用绝对路径,请小心存放.key密钥文件。

cert /etc/openvpn/server/internalssl2.meten.com.crt

key /etc/openvpn/server/internalssl2.meten.com.key

#指定Diffie hellman parameters.

dh /etc/openvpn/server/dh2048.pem

script-security 2

username-as-common-name

### LDAP AUTH ###

#我们采用openvpn-auth-ldap认证,所以设置如下所示:

plugin /usr/lib/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/server/ldap.conf"

#################

#tmp-dir "/tmp"

#up "/etc/openvpn/skyvpnserver/tuzfal_all"

#配置VPN使用的网段,OpenVPN会自动提供基于该网段的DHCP服务,注意不能和任何一方的局域网段重复,保证唯一性。

server 172.21.253.0 255.255.255.0

#绑定IP的记录的文本

ifconfig-pool-persist ipp.txt

#DHCP分配的地址池,注释掉

;ifconfig-pool 202.96.17.2 202.96.17.254

#为客户端创建对应的路由,以另其到达公司内网服务器。记住公司内网服务器也需要有可用路由返回到客户端。

push "route 172.21.128.0 255.255.255.0"

#若客户端希望所有的流量都通过VPN传输,则可以使用该语句,其会自动改变客户端的网关为VPN服务器,推荐关闭。一旦设置,请小心服务端的DHCP设置问题。

;push"redirect-gateway def1 bypass-dhcp"

;push"dhcp-option DNS 208.67.222.222" #VPN用户连接过来后的DNS设置

;push"dhcp-option WINS 208.67.220.220" #VPN用户连接过来后的WINS设置

# 如果您希望有相同Common Name的客户端都可以登陆

# 也可以注释下面的语句,推荐每个客户端都使用不用的Common Name

# 常用于测试

;duplicate-cn

#设置服务端检测的间隔和超时时间

keepalive 10 120

#启用LZO 压缩技术,客户端服务器端都必须设置

comp-lzo

#VPN服务器最多允许连接的有用户数

;max-clients 200

#出于安全考虑,初始化后UID 和GID 权限将降为 "nobody"

;user nobody

;group nobody

#通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys

persist-key

#通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup

persist-tun

#允许客户端之间进行互访

;client-to-client

#允许一个用户多次访问

;duplicate-cn

#输出短日志,每分钟刷新一次以显示当前的客户端,重启系统后记录丢失

status /var/log/openvpn/openvpn-status.log

# 缺省日志会记录在系统日志中,但也可以设置到其它位置

log /var/log/openvpn/openvpn.log

log-append /var/log/openvpn/openvpn.log

# 日志记录的记录等级

# 0 -- 除非发生致命错误,否则保持安静。

# 1 -- 非常安静,但会显示一些非致命网络错误。

# 3 -- 中等输出,通常情况下的很好选择。

# 9 -- 非常详细,用于诊断错误。

#设置日志记录的级别为3级,默认有4个级别。

verb 3

mute 10

#设置最大超时时间为1800秒

reneg-sec 1800

10)配置LDAP配置文件ldap.conf

vim /etc/openvpn/server/ldap.conf

OU为Meten,用户组为:Domain users,AD服务器为:USER-VI3NGDKICN.test.local。

LDAP端口为两个:LDAP服务器端口:389 全局编录服务器端口:3268。

ldap.conf设置如下:

<LDAP>

# LDAP server URL

#配置域服务器与端口号

URL ldap:#USER-VI3NGDKICN.test.local:389

# Bind DN (If your LDAP server doesn‘t support anonymous binds)

# BindDN uid=Manager,ou=People,dc=example,dc=com

#配置域管理员用户地址

BindDN "CN=administrator,CN=Users,DC=test,DC=local"

# Bind Password

# Password SecretPassword

#配置域管理员密码,这里采用明文,也可以采用加密码方式

Password ``11qq123

# Network timeout (in seconds)

#设置网络超时时间

Timeout 15

# Enable Start TLS

#设置是否启用TLS

TLSEnable no

# Follow LDAP Referrals (anonymously)

FollowReferrals no

# TLS CA Certificate File

#TLSCACertFile /usr/local/etc/ssl/ca.pem

# TLS CA Certificate Directory

#TLSCACertDir /etc/ssl/certs

# Client Certificate and key

# If TLS client authentication is required

#TLSCertFile /usr/local/etc/ssl/client-cert.pem

#TLSKeyFile /usr/local/etc/ssl/client-key.pem

# Cipher Suite

# The defaults are usually fine here

# TLSCipherSuite ALL:!ADH:@STRENGTH

</LDAP>

<Authorization>

# Base DN

#设置基础DN

BaseDN "OU=Meten,DC=test,DC=local"

# User Search Filter

#设置用户搜索

SearchFilter "(&(sAMAccountName=%u)"

# Require Group Membership

RequireGroup false

# Add non-group members to a PF table (disabled)

#PFTable ips_vpn_users

<Group>

#设置组基础DN

BaseDN "OU=Meten,dc=test,dc=local"

#查询用户组

SearchFilter "(|(cn=accept_login_vpn))"

MemberAttribute "member"

# Add group members to a PF table (disabled)

#PFTable ips_vpn_eng

</Group>

</Authorization>

11) 测试OpenVPN运行是否正常

openvpn ./server.conf

如果显示运行的最后内容为:Initialization Sequence Completed 则说明正常。

12) 客户端配置文件的配置client.conf(放在客户端上用)

# 定义是一个客户端

client

# 指定ca证书,路径和格式要一致

ca D:\\OpenVPN\\config\\ca.crt

#使用TLS加密传输,本端为client

Tls-client

# 指定客户端的证书,AD验证时所有用户的证书可共用,路径和格式要一致

cert D:\\OpenVPN\\config\\client.crt

key D:\\OpenVPN\\config\\client.key

#配置登录的时候提示输入用户名密码

auth-user-pass

# 定义使用路由IP模式,与服务端一致

;dev tap

dev tun

# 定义Windows下使用的网卡名称,linux不需要

dev-node METEN_VPN_Virtual_Network_Card

# 定义使用的协议,与服务端一致

proto udp

;proto tcp

# 指定服务端地址和端口,可以用多行指定多台服务器

# 实现负载均衡(从上往下尝试)

remote internalssl2.meten.com 8083

# 若上面配置了多台服务器,让客户端随机连接

;remote-random

#非正常断开后自动尝试重新连接

resolv-retry infinite

# 客户端不需要绑定端口

# Most clients do not need to bind to

# a specific local port number.

nobind

# 也是为了让Openvpn也nobody运行(安全)

# 注意:Windows不能设置

;user nobody

;group nobody

# Try to preserve some state across restarts.

persist-key

persist-tun

# 若客户端通过HTTP Proxy,在这里设置

# 要使用Proxy,不能使用UDP为VPN的通讯协议

;http-proxy-retry # retry on connection failures

;http-proxy [proxy server] [proxy port #]

# 无线网络有很多多余的头文件,设置忽略它

mute-replay-warnings

# 使用lzo压缩,与服务端一致

comp-lzo

# Set log file verbosity.

verb 3

# Silence repeating messages

;mute 20

# 一些安全措施

# Verify server certificate by checking

# that the certicate has the nsCertType

# field set to "server". This is an

# important precaution to protect against

# a potential attack discussed here:

# http://openvpn.net/howto.html#mitm

#

# To use this feature, you will need to generate

# your server certificates with the nsCertType

# field set to "server". The build-key-server

# script in the easy-rsa folder will do this.

;ns-cert-type server

# If a tls-auth key is used on the server

# then every client must also have the key.

;tls-auth ta.key 1

# Select a cryptographic cipher.

# If the cipher option is used on the server

# then you must also specify it here.

;cipher x

13) 客户端文件打包

将/etc/openvpn/client里的ca.crt, client.crt, client.key, 以及配置文件client.ovpn打包

14) 防火墙与系统配置

CentOS7环境下,默认是使用FireWallD服务,即使你修改了iptables,重启又被初始化了,需要再次手动systemctl restart  iptables.service才能使设置的iptables生效,

由于FireWallD暂时还没有熟悉使用方法且不知道他比iptables到底有哪些优势,保险起见,还是换回原先的iptables

a.关闭firewall:

#停止firewall

systemctl stop firewalld.service

#禁止firewall开机启动

systemctl disable firewalld.service

b.安装iptables防火墙

yum install iptables-services -y

systemctl enable iptables

c.设置策略以保证路由能转发到OpenVPN的子网及开放VPN端口

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

#允许客户端访问openvpn端口:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8083 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

#允许VPN后面的服务器与交换机互访

-A FORWARD -d 172.21.128.7/32 -j ACCEPT

-A FORWARD -s 172.21.128.7/32 -j ACCEPT

-A FORWARD -d 172.21.128.21/32 -j ACCEPT

-A FORWARD -s 172.21.128.21/32 -j ACCEPT

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

systemctl restart iptables

iptables -nL

d.开启系统的IP包转发

vi /etc/sysctl.conf

在文件底部添加下面的行:

net.ipv4.ip_forward = 1

使ipv4转发起作用,需要重新启动网络服务:

systemctl restart network.service

e.关闭Selinux

setenforce 0

getenforce

vi /etc/selinux/config

SELINUX=disabled

f.同步网络时间-虚拟化服务器一定要开机同步

17)时间同步(重要)

为什么这里标识为重点了,如果您的时间与AD服务器的时间不能够进行同步一样的话,那么在验证的时候有可能出现这样那样的错误,所以这里重点说明一下。

ntpdate asia.pool.ntp.org

18)设置Openvpn开机自启动

vim /usr/lib/systemd/system/openvpn.service

--------------------openvpn.service-----------------------------------

[Unit]

Description=OpenVPN 2.3.8

Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage

After=network.target

[Service]

Type=forking

ExecStart=/usr/sbin/openvpn --daemon --config /etc/openvpn/server.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[Install]

WantedBy=multi-user.target

---------------------------End-----------------------------------------

开机自启动设置如下:

[[email protected] ~]# systemctl enable openvpn.service

ln -s ‘/usr/lib/systemd/system/openvpn.service‘ ‘/etc/systemd/system/multi-user.target.wants/openvpn.service‘

提示:服务器端运行OpenVPN前需要加载tun模块:modprobe -v tun

19) Windows GUI客户端的安装与配置

确保客户端的安装版本为:openvpn-install-2.3.2-I003-i686.exe,前期测试Win8.1的时候发现低版本的死活连接不上去,连接就报错,后来安装了这个版本后连接正常。

客户端安装完成后,在对应的目录新建一个Config文件夹,将客户端的证书与配置文件放于以下目录中。

clip_image004[14]

测试连接:已经连接成功,如下图所示。

clip_image005[4]

时间: 2024-10-12 14:13:01

CentOS7.1-OpenVPN的相关文章

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命

centos7搭建openvpn

openvpn介绍 VPN直译就是虚拟专用通道是提供给企业之间或者个人与公司之间安全数据传输的隧道OpenVPN无疑是Linux下开源VPN的先锋提供了良好的性能和友好的用户GUI,使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库,目前OpenVPN能在Solaris.Linux.OpenBSD.FreeBSD.NetBSD.Mac OS X与Microsoft Windows以及Android和iOS上运行并包含了许多安全性的功能.它并不是一个基于Web的VPN软件也不与IPse

CENTOS7 安装OpenVPN

模拟生产环境使用的vpn,方便自己连接内部主机,避免暴露内部主机端口. 安装 步骤: 安装扩展源,epel扩展源包含了openvpn yum install epel-realease -y 安装之后需要更改一下epel源 ,baseurl加个注释,下面mirrorlist的去掉注释,在yum clean all && yum makecahe 就可以了 CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fast

常去的学习网站

阿里:http://mirrors.aliyun.com/ 反思:更改yum源后  用yum clean  all  清除缓存 阿里云epel源:wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo 阿里的yum源更改: [[email protected] ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bac

Centos7+Openvpn通过证书登陆访问

我们前面文章介绍了Centos7下安装接配置PPTP协议的VPN,今年我们主要介绍Centos7+Openvpn通过证书&&账户及密码登陆配置介绍,我们都知道,OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现.和传统 VPN 相比,它的优点是简单易用,OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证.它大量使用了OpenSSL加密库中的SSLv3/TLSv1 协议函式库.OpenVPN能在Solaris.Linux.OpenB

Centos7+Openvpn使用用户及密码验证登陆

我们上一篇文章介绍了Centos7+Openvpn使用证书验证登陆介绍,今天我们介绍Centos7+Openvpn使用用户及密码登陆验证,具体就补多少了,环境还是基于上一篇的更改来完成. 我们使用Centos7+Openvpn使用用户及密码登陆验证小下载一个验证脚本来完成用户验证登陆. http://openvpn.se/files/other/checkpsw.sh #!/bin/sh ######################################################

Centos7+Openvpn使用Windows AD验证登陆

我们上一篇你文章介绍了Centos7+openvpn使用本地用户和密码验证登陆的配置介绍,今天我们介绍Centos7+Openvpn使用Windows AD验证登陆,具体就不多介绍了,今天还是使用的是上一节安装的配置环境,对于今天的环境介绍,我们只是简单的修改即可 我们要使用Centos7+Openvpn使用Windows AD验证登陆,所以需要准备一条windows AD,其实说到windows AD,对于很多企业都在使用,看网上的很多文档都是使用的是openldap在做验证,但是对于大企业及

CentOS7.3 搭建Openvpn

环境:CentOS Linux release 7.3.1611 (Core) 查看os版本命令:[[email protected] ~]# cat /etc/redhat-release 命令记录如下: yum upgrade #更新源 yum install epel-release -y #安装epel库 yum install easy-rsa openssh-server lzo openssl openssl-devel openvpn NetworkManager-openvpn

CentOS7 OpenVPN Firewalld防火墙配置(1)

接口处于Public区域,网卡名称为ens33 firewall-cmd --list-all查看所有信息 public (active)  target: default  icmp-block-inversion: no  interfaces: ens33  sources: 10.8.0.0  services: dhcpv6-client ftp openvpn ssh  ports: 9002/tcp 1194/udp 1194/tcp 9005/tcp 9004/tcp 9001/

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

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