`

CentOS 6.5基于OpenVPN的VPN服务器构建

阅读更多

     yango公司现在在弄各种的VPN 这里是我自己研究的一种,后期会分享很多给大家。 有otp做VPN ,有公司内网VPN 加密。  后期整理出来,爱运维一起学。

 

yango的运维派可以扣扣群加:459096184  运维派大家一起讨论。

有什么不懂的,有什么不太明白的,直接给我留言或者加入扣扣群问我,都会帮你解决。 

 

学习中

 

   工具百度云里面 http://pan.baidu.com/s/1bnnnj1H

wKiom1NfCxeBdGB-AAElmlhgkU8836.jpg

外部用户透过路由器从openvpn服务器映射出的1194端口,连接VPN服务器,从而访问公司内部服务。

这里我已经有将openvpn软件进行打包(包含了openvpn-2.3.3.tar.gz服务器安装包 openvpn 32/64位客户端 lzo-2.0.6.tar.gz依赖包   easy-rsa证书制作工具)

 

1.时间校对

开始没有对时,导致后来无法联入VPN

1
2
3
4
yum -y installunzip pam-devel ntpdate openssl openssl-devel
#unzip用于解压软件
#pam-devel是安装openvpn必要的依赖包
#ntpdate是网络校时工具
1
2
3
ntpdate time.nist.gov 同步时间
echo"/usr/sbin/ntpdate time.nist.gov">> /etc/rc.local
echo"* */2 * * * /usr/sbin/ntpdate time.nist.gov">> /etc/crontab

2.lzo的安装

1
2
3
4
5
6
7
8
unzip openvpn-2.3.3.zip
cdopenvpn-2.3.3
tarzxvf lzo-2.06.tar.gz
cdlzo-2.06
./configure--prefix=/usr
 make&& makeinstall
/sbin/ldconfig
cd..

3.openvpn的安装

1
2
3
4
5
6
7
8
9
10
11
12
13
mkdir-p /data/openvpn/conf
#用于存放配置文件
mkdir-p /data/openvpn/log
#用于存放openvpn日志
mkdir-p /data/openvpn/easy-rsa
#用于存放密钥生成工具及密钥
tarzxvf openvpn-2.3.3.tar.gz
cdopenvpn-2.3.3
./configure--prefix=/data/openvpn
make&& makeinstall
cpsample/sample-config-files/server.conf /data/openvpn/conf/
#拷贝实例配置文件
cd..

4.easy-rsa的解压

1
2
3
4
5
unzip easy-rsa.zip
cdeasy-rsa/2.0/
cp-rf * /data/openvpn/easy-rsa/
cd/data/openvpn/easy-rsa/
chmod+x *

5.修改vars文件

1
2
3
4
5
6
7
8
9
10
11
vim vars
exportKEY_SIZE=2048
exportCA_EXPIRE=3650
exportKEY_EXPIRE=365
exportKEY_COUNTRY="CN"
exportKEY_PROVINCE="GD"
exportKEY_CITY="ShenZhen"      城市随便填一个即可
exportKEY_ORG="Example INC"      组织单位
exportKEY_EMAIL="ca@example.com"    邮箱地址可以随便填写
exportKEY_OU="Manager"        组织容器可以随便填写
exportKEY_NAME="VPNService"   名称可以随便填写

wKioL1Nm9lOBQ7MWAACJ7ur7gH0814.png

1
2
sourcevars
#使之生效

6.生成证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
./clean-all
#初始化
./build-ca
#创建根证书,一路回车即可
Generating a 2048 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) [GD]:
Locality Name (eg, city) [ShenZhen]:
Organization Name (eg, company) [Example INC]:
Organizational Unit Name (eg, section) [Manager]:
Common Name (eg, your name or your server's hostname) [Example INC CA]:
Name [VPNService]:
Email Address [ca@example.com]:

创建服务器端密钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
./build-key-serverserver
Country Name (2 letter code) [CN]:  #回车
State or Province Name (full name) [GD]:  #回车
Locality Name (eg, city) [ShenZhen]:  #回车
Organization Name (eg, company) [Example INC]:  #回车
Organizational Unit Name (eg, section) [Manager]:  #回车
Common Name (eg, your name or your server's hostname) [server]: #回车
Name [VPNService]: #回车
Email Address [ca@example.com]:  #回车
Please enter the following 'extra'attributes
to be sent with your certificate request
A challenge password []:  #回车
An optional company name []:  #回车
Using configuration from /data/openvpn/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'GD'
localityName          :PRINTABLE:'ShenZhen'
organizationName      :PRINTABLE:'Example INC'
organizationalUnitName:PRINTABLE:'Manager'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'VPNService'
emailAddress          :IA5STRING:'ca@example.com'
Certificate is to be certified untilMay  5 02:35:08 2015 GMT (365 days)
Sign the certificate? [y/n]:y #输入y,回车
1 out of 1 certificate requests certified, commit? [y/n]y  #输入y,回车
Write out database with 1 new entries
Data Base Updated

创建用户

1
2
3
./build-keyclient
#创建client用户
#方法和创建服务器密钥是一样的

创建Diffie-Hellman文件

1
./build-dh

 

7.配置openvpn

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#本机要侦听使用的IP地址
local192.168.1.201
#使用的端口,默认1194
port 1194
#使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议
proto udp
#使用的设备可选tap和tun,tap是二层设备,支持链路层协议。
#tun是ip层的点对点协议,限制稍微多一些,建议使用tun,如果使用桥接的话,就必须要使用tap
dev tun
#OpenVPN使用的ROOT CA,使用build-ca生成的,用于验证客户是证书是否合法
ca /data/openvpn/easy-rsa/keys/ca.crt
#Server使用的证书文件
cert /data/openvpn/easy-rsa/keys/server.crt
#Server使用的证书对应的key,注意文件的权限,防止被盗
key /data/openvpn/easy-rsa/keys/server.key # This file should be kept secret
#上面提到的生成的Diffie-Hellman文件
dh /data/openvpn/easy-rsa/keys/dh2048.pem
#防止注销用户登录
#crl-verify /data/openvpn/easy-rsa/keys/crl.pem
#客户端使用的地址、子网掩码
server 10.8.0.0 255.255.255.0
#用于记录某个Client获得的IP地址,类似于dhcpd.lease文件,
#防止openvpn重新启动后“忘记”Client曾经使用过的IP地址
ifconfig-pool-persist /data/openvpn/log/ipp.txt
#DHCP的DNS选项
push “dhcp-option DNS 114.114.114.114"
push “dhcp-option DNS 8.8.4.4"
#通过VPN Server往Client push路由,client通过pull指令获得Server push的所有选项并应用
push "route 192.168.100.0 255.255.255.0"
#如果可以让VPN Client之间相互访问直接通过openvpn程序转发,
#不用发送到tun或者tap设备后重新转发,优化Client to Client的访问效率
client-to-client
#如果Client使用的CA的Common Name有重复了,或者说客户都使用相同的CA
#和keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN,建议一人一个证书
duplicate-cn
#定义最大连接数
max-clients 10
#NAT后面使用VPN,如果VPN长时间不通信,NAT Session可能会失效,
#导致VPN连接丢失,为防止之类事情的发生,keepalive提供一个类似于ping的机制,
#下面表示每10秒通过VPN的Control通道ping对方,如果连续120秒无法ping通,
#认为连接丢失,并重新启动VPN,重新连接
#(对于mode server模式下的openvpn不会重新连接)。
keepalive 10 120
#对数据进行压缩,注意Server和Client一致
comp-lzo
#通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
persist-key
#通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,
#否则网络连接会先linkdown然后linkup
persist-tun
#定期把openvpn的一些状态信息写到文件中,以便自己写程序计费或者进行其它操作
status /data/openvpn/log/openvpn-status.log
#和log一致,每次重新启动openvpn后保留原有的log信息,新信息追加到文件最后
log-append /data/openvpn/log/openvpn.log
#相当于debug level,具体查看manual
verb 3

8.启动openvpn服务

1
/data/openvpn/sbin/openvpn--config /data/openvpn/conf/server.conf &

查看是否启动成功

1
2
3
4
5
6
[root@VPNServer easy-rsa]# netstat -ntlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      PID/Programname
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN     810/sshd
tcp        0      0 :::22                       :::*                        LISTEN     810/sshd
udp        0      0 0.0.0.0:1194                0.0.0.0:*                              16470/openvpn

可以看到1194端口已经启动,说明openvpn启动成功

9.注销证书

同事离职了,需要将证书进行注销

1
2
3
4
5
6
7
8
9
#注销账户test
/data/openvpn/easy-rsa/revoke-fulltest
Using configuration from /data/openvpn/easy-rsa/openssl-1.0.0.cnf
Revoking Certificate 03.
Data Base Updated
Using configuration from /data/openvpn/easy-rsa/openssl-1.0.0.cnf
lushare.crt: C = CN, ST = GD, L = ShenZhen, O = Example INC, OU = Manager, CN = test, name = VPNService, emailAddress = ca@example.com
error 23 at 0 depth lookup:certificate revoked
#error 23说明证书已经注销

这个时候还是可以利用此证书登录服务器的,在/data/openvpn/conf/server.conf下增加一行

1
crl-verify /data/openvpn/easy-rsa/keys/crl.pem

再重启下openvpn服务即可

1
2
killall openvpn
/data/openvpn/sbin/openvpn--config /data/openvpn/conf/server.conf &

这个时候openvpn下的test账户已经不能登录服务器了

10.修改/etc/sysctl.conf

1
2
3
4
5
vim /etc/sysctl.conf
将下面值修改为1,开启Linux ip跳转
net.ipv4.ip_forward = 1
#保存后执行
sysctl -p

11.防火墙修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLEISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
#对IP进行转发
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24-j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 10.8.0.0/24-j MASQUERADE
service iptables save
service iptables restart

12.客户端安装配置

wKiom1NnIUbh3xeAAABFV1NAItc039.png

里面有一个32位的安装客户端,也有一个64位的,按需安装即可

,安装完成后,将C:\Program Files\OpenVPN\sample-config(我这里安装在C:\Program Files\OpenVPN)目录下的client.ovpn

wKiom1NnIs6Beq86AAAgrzFCREA128.png

拷贝到C:\Program Files\OpenVPN\config

修改client.ovpn

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
client
dev tun    #设备类型tun、tap根据服务器来设置
proto udp   #所使用的协议有udp、tcp根据服务器来设置
remote 192.168.100.201 1194   #主服务器
#remote 250.250.250.250 1194   #备用服务器
#remote-random                 #开启服务器的轮询,如果设置了多台服务器的话
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
ca ca.crt                #ca证书是从服务器上下载来的
cert client.crt          #生成的客户端证书
key client.key           #服务器上生成的密码
ns-cert-typeserver
comp-lzo                 #压缩类型
verb 3
分享到:
评论

相关推荐

    Centos6.5 镜像文件下载

    ### Centos6.5镜像文件下载与安装详解 #### 一、CentOS 6.5简介 CentOS是Community ENTerprise Operating System的缩写,是一个基于Linux内核的操作系统,它主要提供了企业级的计算环境。CentOS 6.5作为CentOS 6...

    CentOs6.5镜像源

    CentOs6.5镜像源

    CentOS6.5的64位镜像文件iso,迅雷种子

    CentOS6.5的64位镜像文件iso。CentOS是基于linux内核而扩展的操作系统。

    CentOs 6.5 telnet 客户端 linux 64(离线安装)

    centos 6.5 telnet 客户端 安装文件 rpm包 centos 6.5 telnet 服务端 安装文件 rpm包 http://vault.centos.org/6.5/os/x86_64/Packages/ 从官网下载亲测可以用

    CentOS 6.5 最新可用的 Yum 源

    CentOS 6.5 的 软件源很多官方已经停止维护,该文件包内配置好的yum源是可以正常使用的。将原/etc/yum.repos.d/目录下原来的 .repo 备份, 然后把本文件包内的repo文件复制过去, yum clean all 后,再 yum ...

    VMware创建安装CentOS6.5(配截图)

    CentOS6.5 是一个基于 Linux 的开源操作系统,广泛应用于服务器领域。下面将详细介绍如何使用 VMware 创建虚拟机并安装 CentOS6.5 操作系统。 步骤一:创建 CentOS6.5 虚拟机 1. 打开 VMware 软件,点击“文件”...

    centos6.5安装教程,绝对详细,内附centos镜像等资源

    CentOS 6.5 安装教程详解 CentOS 6.5 是一个稳定、功能强大且广泛应用的 Linux 发行版,本文将详细介绍 CentOS 6.5 的安装步骤,包括虚拟机的安装、CentOS 镜像文件的下载和使用、连接工具的配置等内容。 一、...

    CentOS 6.5 升级OpenSSH

    本文将详细讲解如何在CentOS 6.5系统上升级OpenSSH。 首先,升级OpenSSH通常涉及升级其依赖的库,特别是openssl。openssl是提供加密功能的核心库,新的版本通常会包含更强的加密算法和修复的安全漏洞。在升级...

    CentOS6.5一键安装Mysql5.6

    在Linux系统中,CentOS 6.5是一个广泛使用的版本,而MySQL 5.6则是一个流行的开源数据库管理系统。本文将详细介绍如何在CentOS 6.5上进行MySQL 5.6的一键安装过程,包括必要的环境准备、安装步骤、配置优化以及安全...

    centos6.5 邮件服务器安装视频

    centos6.5 邮件服务器安装视频 自己录制

    Centos6.5安装教程for oracle

    本文将详细介绍如何在服务器上安装并配置CentOS 6.5系统,特别是针对Oracle数据库环境的优化和配置方法。CentOS 6.5是一款稳定且广泛使用的Linux发行版,尤其适合企业级应用,包括Oracle数据库部署。 #### 二、安装...

    Centos6.5升级openssh-9.1p1

    Centos6.5升级openssh-9.1p1包括32位和9.3版本的63位的全部rpm包,附带telnet客户端的rpm包 32位: openssh-9.1p1-1.el6.i386.rpm openssh-clients-9.1p1-1.el6.i386.rpm openssh-server-9.1p1-1.el6.i386.rpm ...

    VMware安装CentOS6.5

    VMware安装CentOS6.5的详细教程涵盖了从下载CentOS6.5系统文件到配置虚拟机设置,再到操作系统安装过程中的每一步骤。首先,我们需要了解Linux操作系统和CentOS6.5的基本概念。Linux是一个开源的操作系统内核,而...

    centos6.5 64位 gcc离线安装包

    centos6.5 64位 gcc离线安装包,内含所有离线安装gcc所有rpm包。可依次安装,也可一起安装。内有安装说明。 cloog-ppl-0.15.7-1.2.el6.x86_64.rpm cpp-4.4.7-4.el6.x86_64.rpm gcc-4.4.7-4.el6.x86_64.rpm gcc-c++-...

    centos6.5-ntp安装包.rar

    "centos6.5-ntp安装包.rar"显然包含了在CentOS 6.5上安装和配置NTP服务所需的文件和步骤。 安装NTP服务首先需要解压下载的rar文件,通常这需要使用像unrar这样的工具。在CentOS上,你可以通过以下命令安装unrar: ...

    CentOS6.5离线安装openssh8.6p1软件包-步骤及依赖.rar

    在本案例中,我们有"CentOS6.5离线安装openssh8.6p1软件包-步骤及依赖.rar"这个压缩包文件,它应该包含了openssh 8.6p1以及所有必需的依赖项。在拥有互联网连接的机器上,你需要访问OpenSSH的官方网站或者通过yum...

    CentOS6.5安装ftp服务器

    在Linux系统中,CentOS 6.5是一个广泛使用的版本,它提供了稳定和安全的环境来运行各种服务,包括FTP(File Transfer Protocol)服务器。FTP允许用户从远程服务器上传、下载文件,对于开发者和系统管理员来说是必备...

    U盘安装CentOS 6.5

    "U盘安装CentOS 6.5" U盘安装CentOS 6.5是相对于光盘安装的一种更快速、更方便的安装方式。使用U盘安装CentOS 6.5可以跳过刻盘的步骤,速度也更快,而且没有硬件限制(新机器USB口都有,光驱不一定有)。 U盘安装...

    SR650 手动加载430-16iHBA驱动安装Centos6.5Guide.docx

    - 使用虚拟光驱或物理光驱将 CentOS 6.5 的 ISO 文件挂载至服务器。 #### 手动加载430-16iHBA驱动步骤 1. **启动 CentOS 6.5 安装程序**: - 从挂载的 ISO 文件启动 CentOS 6.5 安装程序。 2. **处理硬件不匹配...

Global site tag (gtag.js) - Google Analytics