一、服务器配置及软件版本

1.版本信息
项目 版本号 备注
操作系统 centos 6.5 密码:P@ssw0rdvpn
openvpn版本 openvpn-2.3.14 yum安装默认安装最新版本
2.服务器地址说明
网卡 地址 掩码
外网 eth0 222.190.107.69 255.255.255.0
内网1 eth1 172.16.5.233 255.255.255.0
内网2 eth2 172.16.1.233 255.255.255.0
虚拟网卡 tun0 10.8.0.1 255.255.255.0

二、服务器安装及配置

1.安装前准备
1.1 selinux关闭
[root@openvpn ~]# setenforce 0
[root@openvpn ~]# sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
1.2 openssl和lzo安装
lzo用于压缩通讯数据加快传输速度
[root@openvpn ~]# yum -y install openssl openssl-devel
[root@openvpn ~]# yum -y install lzo
1.3 epel源安装
[root@openvpn ~]# rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@openvpn ~]# sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo
2.OpenVPN安装和证书生成
2.1 OpenVPN、openvpn-auth-ldap和easy-rsa的安装
#easy-rsa用来生成证书
[root@openvpn ~]# yum -y install openvpn easy-rsa openvpn-auth-ldap
2.2 vars文件证书变量修改
[root@openvpn ~]# cd /usr/share/easy-rsa/2.0
[root@openvpn 2.0]# vim vars
#设置国家名称
export KEY_COUNTRY="CN"
#设置省份名称
export KEY_PROVINCE="JS"
#设置城市名称
export KEY_CITY="NJ"       
#设置组织名称
export KEY_ORG="Strong"     
#设置邮件地址
export KEY_EMAIL="[email protected]"
#设置组织名称
export KEY_OU="Strong"
#初始化环境变量
[root@openvpn 2.0]# source vars

2.3 证书生成

#清除所有证书
[root@openvpn 2.0]# ./clean-all

#生成根证书ca.crt和根密钥ca.key(一路按回车即可)
[root@openvpn 2.0]# ./build-ca 

#为服务端生成名为server的证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
[root@openvpn 2.0]# ./build-key-server server

#为客户端生成名为client证书
[root@openvpn 2.0]# ./build-key client

#创建迪菲·赫尔曼密钥,会生成dh2048.pem文件
[root@openvpn 2.0]# ./build-dh

#生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)
[root@openvpn 2.0]# openvpn --genkey --secret keys/ta.key

#查看生成的证书
[root@openvpn 2.0]# ll keys/
总用量 88
-rw-r--r-- 1 root root 5429 2月   8 16:24 01.pem
-rw-r--r-- 1 root root 5311 2月   8 16:26 02.pem
-rw-r--r-- 1 root root 1696 2月   8 16:23 ca.crt
-rw------- 1 root root 1704 2月   8 16:23 ca.key
-rw-r--r-- 1 root root 5311 2月   8 16:26 client.crt
-rw-r--r-- 1 root root 1066 2月   8 16:26 client.csr
-rw------- 1 root root 1700 2月   8 16:26 client.key
-rw-r--r-- 1 root root  424 2月   8 16:27 dh2048.pem
-rw-r--r-- 1 root root  250 2月   8 16:26 index.txt
-rw-r--r-- 1 root root   21 2月   8 16:26 index.txt.attr
-rw-r--r-- 1 root root   21 2月   8 16:24 index.txt.attr.old
-rw-r--r-- 1 root root  125 2月   8 16:24 index.txt.old
-rw-r--r-- 1 root root    3 2月   8 16:26 serial
-rw-r--r-- 1 root root    3 2月   8 16:24 serial.old
-rw-r--r-- 1 root root 5429 2月   8 16:24 server.crt
-rw-r--r-- 1 root root 1066 2月   8 16:24 server.csr
-rw------- 1 root root 1708 2月   8 16:24 server.key
-rw------- 1 root root  636 2月   8 16:30 ta.key
3.openvpn服务端配置
3.1 证书复制
#在/etc/openvpn目录下创建存放证书的目录keys
[root@openvpn ~]# mkdir /etc/openvpn/keys
#将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中
[root@openvpn ~]# cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/
3.2 服务端配置文件配置
复制一份服务器端配置文件模板server.conf到/etc/openvpn/
[root@openvpn ~]# cp /usr/share/doc/openvpn-2.3.14/sample/sample-config-files/server.conf /etc/openvpn/
编辑server.conf
[root@openvpn ~]# grep '^[^#;]' /etc/openvpn/server.conf
#openvpn程序端口号
port 1194

#协议为tcp
proto tcp
dev tun

#证书位置
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key  # This file should be kept secret
dh /etc/openvpn/keys/dh2048.pem

#vpn虚拟地址段,不可与实际地址冲突
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

#加入内网的地址段的路由
push "route 172.16.1.0 255.255.255.0"
push "route 172.16.5.0 255.255.255.0"

#允许客户端之间通信
client-to-client

#允许一个证书多人使用
duplicate-cn
keepalive 10 120

#证书路径
tls-auth /etc/openvpn/keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log
log-append  openvpn.log
verb 5

#使用用户名认证
username-as-common-name

#使用活动目录认证,注意文件位置
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf"
3.3 AD认证文件ldap.conf配置
该配置文件负责连接ldap服务器
[root@openvpn ~]# vim /etc/openvpn/auth/ldap.conf 
<LDAP>
    # LDAP server URL
        #LDAP server的地址和端口
    URL        ldap://172.16.5.1:389

    # Bind DN (If your LDAP server doesn't support anonymous binds)
    # BindDN        uid=Manager,ou=People,dc=example,dc=com
        #LDAP server的管理员账号
        BindDN "[email protected]"

    # Bind Password
        #LDAP server的管理员密码
    Password    P#ssw0rd#dc

    # Network timeout (in seconds)
    Timeout        60

    # 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
        #基础OU设置
    BaseDN        "dc=nj-strongit,dc=com,dc=cn"

    # User Search Filter
    SearchFilter    "(&(sAMAccountName=%u))"

    # Require Group Membership
        #启用组认证
    RequireGroup    true

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

    <Group>
                #基础OU设置
        BaseDN        "dc=nj-strongit,dc=com,dc=cn"
                #vpn组名
        SearchFilter    "(|(cn=openvpn))"
        MemberAttribute    "member"
        # Add group members to a PF table (disabled)
        #PFTable    ips_vpn_eng
    </Group>
</Authorization>
3.4 内核与防火墙配置
开启路由转发功能
[root@openvpn ~]# sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
[root@openvpn ~]# sysctl -p
配置防火墙
[root@openvpn ~]# iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
[root@openvpn ~]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
[root@openvpn ~]# service iptables save
3.5 启动服务并加入开机自启
[root@openvpn ~]# service openvpn start
[root@openvpn ~]# chkconfig openvpn on
4.活动目录配置
在活动目录中为vpn用户创建用户组openvpn,根据实际需求添加域用户

4.客户端配置
4.1 客户端配置文件配置
#复制一份client.conf模板命名为client.ovpn
[root@openvpn ~]# cp /usr/share/doc/openvpn-2.3.14/sample/sample-config-files/client.conf client.ovpn
#编辑client.ovpn
[root@openvpn ~]# grep '^[^#;]' client.ovpn
client
auth-user-pass 
dev tun
proto tcp
remote 222.190.107.69 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 3
4.2 openvpn客户端安装
在window操作系统上安装openvpn客户端
4.3 证书拷贝
将证书及配置文件ca.crt、client.crt、client.key、client.ovpn、ta.key,拷贝至客户端的C:\Prigram\OpenVPN\config目录

4.4 连接测试
双击桌面客户端图标,输入openvpn组中的用户名密码,连接测试

ping内网地址测试

results matching ""

    No results matching ""