龙空技术网

Centos6下搭建openvpn并使用密钥形式登录

至诚动漫 3075

前言:

如今大家对“centosvpn搭建教程”都比较珍视,我们都需要学习一些“centosvpn搭建教程”的相关知识。那么小编在网络上汇集了一些有关“centosvpn搭建教程””的相关资讯,希望朋友们能喜欢,小伙伴们快快来了解一下吧!

OpenVPN是一个用于创建虚拟专用网络加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。

我这里搭建主要为了在家也能连到公司进行办公。

一、服务器端安装及配置

网关和VPN服务器不是同一个设备

服务器环境:干净的CentOS6.5 64位系统

内网IP:192.168.1.250

外网IP:111.111.111.111(公司的固定外网IP)

OpenVPN版本:OpenVPN 2.3.11-1.el6

1、安装前准备

# 关闭selinux

setenforce 0sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config

# 安装openssl和lzo,lzo用于压缩通讯数据加快传输速度

yum -y install openssl openssl-develyum -y install lzo

# 安装epel源

rpm -ivh 
2、安装及配置OpenVPN和easy-rsa

# 安装openvpn和easy-rsa

yum -y install openvpn easy-rsa

# 修改vars文件

cd /usr/share/easy-rsa/2.0/vim vars

# 修改注册信息,比如公司地址、公司名称、部门名称等。

export KEY_COUNTRY="CN"export KEY_PROVINCE="GD"export KEY_CITY="SZ"export KEY_ORG="XLCWNET"export KEY_EMAIL="chengzhi@xlcwnet.com"export KEY_OU="guest"export KEY_NAME="XLCWNET"

# 初始化环境变量

source vars

# 清除keys目录下所有与证书相关的文件

# 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里 ##这个是在第一次执行,后面不需要再执行了

./clean-all

# 生成根证书ca.crt和根密钥ca.key(一路按回车即可)

./build-ca

# 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)

./build-key-server server

# 每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份

# 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)

./build-key client1./build-key client2

# 创建密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)

./build-dh

# 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)

openvpn --genkey --secret keys/ta.key

文件生成后都在查看/usr/share/easy-rsa/2.0/keys目录下

3、创建服务器端配置文件

# 在openvpn的配置目录下新建一个keys目录

mkdir /etc/openvpn/keys

# 将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中

cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/

# 复制一份服务器端配置文件模板server.conf到/etc/openvpn/

cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn/

# 编辑server.conf

vim /etc/openvpn/server.confport 1194# 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议proto tcpdev tun# 路径前面加keys,全路径为/etc/openvpn/keys/ca.crtca keys/ca.crtcert keys/server.crtkey keys/server.key # This file should be kept secretdh keys/dh2048.pem# 默认虚拟局域网网段,不要和实际的局域网冲突即可server 172.16.0.0 255.255.255.0ifconfig-pool-persist ipp.txt# 172.16.0.0/24是我这台VPN服务器所在的内网的网段,读者应该根据自身实际情况进行修改push "redirect-gateway def1 bypass-dhcp"# 设置客户端调用服务器端的路由(比较重要,因为我的VPN服务器不是网关,没有这句可能会出现连上VPN后无法访问内网的情况)push "dhcp-option DNS 114.114.114.114"# 设置客户端调用的DNS(比较重要,如果连上VPN的客户端需要连接外网的话,就需要这个域名解析)push "route 192.168.0.0 255.255.0.0"# 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置# 实践证明这个不需要也是可以的#偶尔看到这句话,原来是提高效率的,暂时看出来效果#如果可以让VPN Client之间相互访问直接通过openvpn程序转发,#不用发送到tun或者tap设备后重新转发,优化Client to Client的访问效率client-to-client# 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPNduplicate-cnkeepalive 10 120tls-auth keys/ta.key 0 # This file is secretcomp-lzopersist-keypersist-tun# OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.logstatus openvpn-status.log# OpenVPN的运行日志,默认为/etc/openvpn/openvpn.loglog-append openvpn.log# 改成verb 5可以多查看一些调试信息verb 3
4、配置内核和防火墙,启动服务

# 开启路由转发功能

sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.confsysctl -p

# 配置防火墙,别忘记保存

iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPTiptables -t nat -A POSTROUTING -s 172.16.0.0/24 -d 192.168.0.0/16 -o eth1 -j SNAT --to-source 192.168.1.250

##设置172.17.0.0/24网段访问192.168.0.0/16网段走eth1的192.168.1.250

iptables -t nat -A POSTROUTING -s 172.16.0.0/24 ! -d 192.168.0.0/16 -o eth0 -j SNAT --to-source 111.111.111.111

##设置172.17.0.0/24网段访问除了192.168.0.0/16网段以外网段走eth0的111.111.111.111

iptables -A FORWARD -d 172.16.0.0/24 -j ACCEPTiptables -A FORWARD -s 172.16.0.0/24 -j ACCEPT

##(一定需要,如果想客户端访问公司内网其他机器的话)

service iptables save

# 启动openvpn并设置为开机启动

service openvpn startchkconfig openvpn on
5、创建客户端配置文件

# 复制一份client.conf模板命名为client.ovpn

cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf client.ovpn

# 编辑client.ovpn

vim client.ovpnclientdev tun# 改为tcpproto tcp# OpenVPN服务器的外网IP和端口remote 111.111.111.111 1194resolv-retry infinitenobindpersist-keypersist-tunca ca.crt# client1的证书cert client1.crt# client1的密钥key client1.keyremote-cert-tls server###ns-cert-type server (看到网上很多这个选项,不知道干嘛的,默认没有,尝试没有加发现也没问题)# 去掉前面的注释tls-auth ta.key 1comp-lzoverb 3
二、Windows客户端安装及配置

客户端系统:Windows7 64位

内网IP:172.16.4.4

OpenVPN版本:OpenVPN 2.3.3 Windows 64位

1、下载安装OpenVPN

OpenVPN 2.3.3 Windows 32位 安装文件:

OpenVPN 2.3.3 Windows 64位 安装文件:

2、配置client

将OpenVPN服务器上的client.ovpn、ca.crt、client1.crt、client1.key、ta.key上传到Windows客户端安装目录下的config文件夹(C:\Program Files\OpenVPN\config)

3、启动OpenVPN GUI

在电脑右下角的openvpn图标上右击,选择“Connect”。正常情况下应该能够连接成功,分配正常的IP。

这个图是别人的,所以IP段是10.8.0.0/16 按照我发的实际IP段是172.16.0.0/16网段,按照上面的操作没有问题,我已经操作过,并不是百度别人复制过来的,只是为了写这个文章临时找的图片。

4、测试

ping通服务器的内网IP,说明已经接入到服务器的内部网络。

到OpenVPN服务器上查看客户端的连接情况,查看状态文件/etc/openvpn/openvpn-status.log:

后续

因同事离职,所以需注销其vpn证书。即要注销两张证书

执行命令进入openvpn的安装目录cd /usr/share/easy-rsa/2.0/

在easy-rsa目录下。使用revoke-full命令来注销其证书。先把一位同事证书文件放到easy-rsa/keys下,然后执行

# 初始化环境变量

source vars./revoke-full client1

client1为证书名称,这条命令执行完成之后, 会在 keys 目录下面, 生成一个 crl.pem 文件,这个文件中包含了吊销证书的名单。接着再次执行

./revoke-full client2

这条命令执行完成之后, 会在 keys 目录下面, 生成一个新的crl.pem 文件覆盖旧的。

把此crl.pem文件放到相应的配置目录config下,然后在配置文件加入如下参数,重新启动openvpn服务器即可。

cp keys/crl.pem /etc/openvpn/keys/vim /etc/openvpn/server.confcrl-verify keys/crl.pem

注:如以后需要再注销其他证书,可继续执行revoke-full client3,生成新的crl.pem文件替换配置目录下的文件,重新启动openvpn服务即可。

标签: #centosvpn搭建教程 #centos65snat