文档章节

Ubuntu 12.04安装、配置OpenVPN

VictorHu
 VictorHu
发布于 2015/11/06 13:07
字数 1944
阅读 46
收藏 0
点赞 0
评论 0

环境


Linux版本:Ubuntu 12.04.5
Windows版本:Win7 64bit
OpenVpn服务器版本:OpenVPN 2.2.1 x86_64
OpenVpn客户端版本:OpenVPN GUI V5 64bit

内容


一、安装配置OpenVPN服务

1.使用apt-get安装OpenVPN

root@iZ28ynpxejlZ:~# apt-get install openvpn

2.创建rsa认证文件目录

root@iZ28ynpxejlZ:/# mkdir /etc/openvpn/easy-rsa/
root@iZ28ynpxejlZ:/# cd /etc/openvpn/easy-rsa/
root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* ./

3.生成认证文件

root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# source vars 
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# ./clean-all 
root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# ./build-ca
root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# ./build-key-server ItbleOpenVPN
root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# ./build-key client1
root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# ./build-key client2
root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# ./build-dh 

之后可以在/etc/openvpn/easy-rsa/keys/目录下看到生成的文件:

root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# ls keys/
01.pem  client1.crt  client2.key index.txt.old serial.old
02.pem  client1.csr  dh1024.pem  ItbleOpenVPN.crt
03.pem  client1.key  index.txt   ItbleOpenVPN.csr
ca.crt  client2.crt  index.txt.attr  ItbleOpenVPN.key
ca.key  client2.csr  index.txt.attr.old  serial

4.修改服务器配置文件

root@iZ28ynpxejlZ:/etc/openvpn/easy-rsa# cd /etc/openvpn
root@iZ28ynpxejlZ:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz ./
root@iZ28ynpxejlZ:/etc/openvpn# gzip -d server.conf.gz 
root@iZ28ynpxejlZ:/etc/openvpn# vi server.conf 

这里只把修改的地方列出来:

# Which local IP address should OpenVPN
# listen on? (optional)
# 这个地方是服务器的地址
local 114.211.211.211      

# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
# 这三个文件是前面生成的认证文件的位置
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/ItbleOpenVPNServer.crt
key /etc/openvpn/easy-rsa/keys/ItbleOpenVPNServer.key  # This file should be kept secret

# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh2048.pem 2048
# 这个是前面生成的dh2048.pem文件的位置
dh /etc/openvpn/easy-rsa/keys/dh2048.pem


# Configure server mode and supply a VPN subnet
# for OpenVPN to draw client addresses from.
# The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
# Each client will be able to reach the server
# on 10.8.0.1. Comment this line out if you are
# ethernet bridging. See the man page for more info.
# 这个是给客户端分配ip地址的范围
server 10.8.0.0 255.255.255.0

# Maintain a record of client <-> virtual IP address
# associations in this file.  If OpenVPN goes down or
# is restarted, reconnecting clients can be assigned
# the same virtual IP address from the pool that was
# previously assigned.
# 服务器根据这个文件里面“客户端——ip”的对应关系,给客户端分配ip地址
ifconfig-pool-persist ipp.txt
 
# Uncomment this directive to allow different
# clients to be able to "see" each other.
# By default, clients will only see the server.
# To force clients to only see the server, you
# will also need to appropriately firewall the
# server's TUN/TAP interface.
# 设置客户端之间可以相互访问
client-to-client

5.启动OpenVPN服务

root@iZ28ynpxejlZ:/etc/openvpn# service openvpn start
	* Starting virtual private network daemon(s)...
	 *   Autostarting VPN 'server'

二、配置OpenVPN客户端

1.Win7下配置

1.1 安装

可以从这里下载:openvpn-install-2.3.6-I601-x86_64.zip 然后,解压,一路Next。

需要注意的地方是,要使用管理员权限运行以及winXP兼容安装,就是在安装文件上右键,属性,兼容性,选中“以兼容模式运行这个程序(WinXP)”和“以管理员身份运行此程序”。

1.2 下载认证文件

把之前在OpenVPN服务器上生成的认证文件(ca.crt、client1.crt、client1.key)下载到openvpn客户端的配置文件目录下,我这里是:

D:\Program Files\OpenVPN\config\

1.3 修改配置文件

D:\Program Files\OpenVPN\sample-config\client.ovpn文件,拷贝到 D:\Program Files\OpenVPN\config\下面。 修改如下:

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
# 所要连接的OpenVPN服务器地址
remote 114.211.211.211 1194

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
# 设置所需认证文件
ca ca.crt
cert client1.crt
key client1.key

这里修改了两个地方,一是OpenVPN服务器地址;另外一个是认证文件的名称。 好了,现在可以进行连接。

2.Ubuntu下配置

2.1 安装

安装方式和服务器一样,这里就不再重复。

2.2 下载认证文件

把之前在OpenVPN服务器上生成的认证文件(ca.crt、client1.crt、client1.key)下载到/etc/openvpn/目录下。

2.3 修改配置文件

/usr/share/doc/openvpn/examples/sample-config-files/client.conf 拷贝到/etc/openvpn/目录下,并修改。

root@iZ28ynpxejlZ:~# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
root@iZ28ynpxejlZ:~# vi /etc/openvpn/client.conf

修改内容同Win7.

2.4 运行

root@iZ28ynpxejlZ:~# openvpn /etc/openvpn/client.conf

三、配置OPenVPN使用账号、密码登陆

1.服务器配置

这里是在前面配置的基础之上进行的修改。

1.1 修改配置文件

编辑/etc/openvpn/server.cnf

root@iZ28ynpxejlZ:/etc/openvpn# vi server.conf 

添加如下内容:

# 设置不需要cert文件认证
client-cert-not-required
# 设置通过用户名密码登陆
username-as-common-name
# 设置临时目录
tmp-dir "/etc/openvpn/tmp/"
# 设置登陆认证插件
plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/openvpn

/etc/pam.d/目录下创建文件openvpn

root@iZ28ynpxejlZ:/etc/openvpn# vi /etc/pam.d/openvpn

内容如下:

auth    required        pam_unix.so    shadow    nodelay
auth    requisite       pam_succeed_if.so uid >= 500 quiet
auth    requisite       pam_succeed_if.so user ingroup vpnusers quiet
auth    required        pam_tally2.so deny=4 even_deny_root unlock_time=1200
account required        pam_unix.so

说明:

1.这里设置的vpnusers,就是指允许vpnusers用户组内的用户作为OpenVPN的登陆用户;

2.这里的deny=4是指4次密码错误之后,用户就会被锁定,锁定的时间就是这里unlock_time=1200,即1200秒。even_deny_root这个是指限制范围包括root用户。

3.查看和清除登录错误次数记录的命令:

查看:pam_tally2 --user

清除:pam_tally2 --user username --reset

1.2 拷贝所需文件、创建临时目录

root@iZ28ynpxejlZ:/etc/openvpn# cp /usr/lib/openvpn/openvpn-auth-pam.so ./
root@iZ28ynpxejlZ:/etc/openvpn# mkdir /etc/openvpn/tmp/
root@iZ28ynpxejlZ:/etc/openvpn# chmod 777 /etc/openvpn/tmp/

1.3 添加登录openvpn的用户

root@iZ28ynpxejlZ:/etc/openvpn# groupadd vpnusers
root@iZ28ynpxejlZ:/etc/openvpn# useradd vpnuser1 -g vpnusers -s /sbin/nologin
root@iZ28ynpxejlZ:/etc/openvpn# passwd vpnuser1
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

这里的useradd vpnuser1 -g vpnusers -s /sbin/nologin这条命令是指,添加一个vpnusers用户组的用户vpnuser1,同时设置不允许登陆系统。这样,vpnuser1这个用户只能作为OpenVPN专用用户进行登陆,而不能登录系统。

重启openvpn服务。

2.客户端配置

客户端的配置比较简单,这里只需要修改client.cnf文件就可以了。

2.1 修改配置文件

这里把cert、key注释掉,然后添加auth-user-pass,修改后如下:

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca ca.crt
#cert client.crt
#key client.key
auth-user-pass

这里需要注意的是,ca ca.crt这个地方不能注释掉。同样,和这个相关的D:\Program Files\OpenVPN\config\ca.crt文件也要存在。 好了,重新连接,输入用户名、密码,ok。

注:这里有另外一个方法,不用设置ca.crt文件,只需要添加<ca></ca>标签,然后,把ca.crt里面的内容放到里面。完成之后的内容为:

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
# ca ca.crt
# cert client.crt
# key client.key
<ca>
-----BEGIN CERTIFICATE-----
****省略*****
-----END CERTIFICATE-----
</ca>

auth-user-pass

四、配置允许客户端访问OpenVPN服务器内网

配置允许客户端访问OpenVPN服务器内网只需要在服务器端进行配置。

1.修改配置/etc/openvpn/server.cnf文件

修改如下配置:

# Push routes to the client to allow it
# to reach other private subnets behind
# the server.  Remember that these
# private subnets will also need
# to know to route the OpenVPN client
# address pool (10.8.0.0/255.255.255.0)
# back to the OpenVPN server.
# 这里是服务器所要转发的网络地址,我这里设置的是服务器所在内网的网络号
push "route 10.164.27.0 255.255.255.0"

2.添加路由转发规则

2.1 开启路由转发功能

root@iZ28ynpxejlZ:~# echo "1">/proc/sys/net/ipv4/ip_forward    

2.2 添加转发规则

root@iZ28ynpxejlZ:~# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 10.164.27.123
root@iZ28ynpxejlZ:~# iptables-save

这里的10.8.0.0/24为前面设置的客户端IP地址范围,10.164.27.123为服务器内网IP地址。 之后,重启服务器就可以了。

© 著作权归作者所有

共有 人打赏支持
VictorHu
粉丝 1
博文 12
码字总数 14462
作品 0
闵行
Linux自学笔记——模拟搭建openvpn

VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,openvpn无疑是linux开源vpn的先锋,提供了良好的性能和友好的用户GUI。 OpenVPN是一个基于OpenSSL库的应用...

claude_liu ⋅ 04/26 ⋅ 0

CentOS7 install and configuration OpenVPN

OpenVPN是一个开源应用程序,可以通过公共Internet创建一个专用网络。在我们开始之前,我们首先需要安装Enterprise Linux(EPEL)存储库的额外包。下面就是关于如何在CentOS 7上设置Client和...

问题终结者 ⋅ 昨天 ⋅ 0

CentOS6.7安装OpenVPN服务端

本文主要讲述如何在Linux(以CentOS6.7为例)环境中搭建VPN(OpenVPN)服务器。 OpenVPN基本介绍: OpenVPN是开源的VPN守护进程(daemon),easy-RSA提供一些简易的CA证书工具。 VPN原理: ...

技术小胖子 ⋅ 2017/11/08 ⋅ 0

OpenVPN学习笔记——客户端安装配置

OpenVPN服务器端部署完成后,就需要配置客户端的使用了,下面分别以Windows和Linux为例进行客户端的安装和配置。 1、Windows客户端 1)安装OpenVPN GUI for Windows客户端 OpenVPN在windows...

技术小阿哥 ⋅ 2017/11/27 ⋅ 0

搭建基于证书认证登录的OpenVPN服务器

一、OpenVPN简介 OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。 OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身...

技术小胖子 ⋅ 2017/11/02 ⋅ 0

RHEL 7.4搭建openvpn

OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用 OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用...

老唐6 ⋅ 05/07 ⋅ 0

大用户量下Openvpn部署方案(一)

前段时间公司有个项目需要数以千计的客户端都连入一个vpn下,并且有一部分需要获得固定的ip地址。 思路:简单的openvpn服务器部署起来并不难,但是大量的用户,如果采用简单的证书方式,批量...

技术小胖子 ⋅ 2017/11/01 ⋅ 0

centos7 搭建属于你自己的openvpn

现在企业大一点都会分布很多办公点,为了更好的访问内部资源,vpn是一个很好的选择,今天分享一下在centos7 下安装openvpn的过程和一些踩的坑,有时间写个脚本,让安装从此简单。 centos7 op...

674591788 ⋅ 05/03 ⋅ 0

Centos7+Openvpn通过证书登陆访问

我们前面文章介绍了Centos7下安装接配置PPTP协议的VPN,今年我们主要介绍Centos7+Openvpn通过证书&&账户及密码登陆配置介绍,我们都知道,OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。...

技术小阿哥 ⋅ 2017/11/27 ⋅ 0

III(二十一)OpenVPN(2)

案例1: 多个机房利用OpenVPN互联架构方案: 注: vpn client角色相当于宿主机win的拨号端; vpn server和vpn client均执行(1、firewall(避免影响port服务和转发);2、关闭selinux;3、开...

技术小阿哥 ⋅ 2017/11/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【新功能】企业级Maven私有仓库服务结束公测,全面开放使用

摘要: 目前云效上线了企业级Maven私有仓库服务。用户可以一键开通Maven私有仓库服务,零配置实现私有二方库的上传和下载。 经过半个月的公测,云效中的企业级Maven私有仓库服务正式上线,全...

阿里云云栖社区 ⋅ 14分钟前 ⋅ 0

elasticsearch使用more_like_this实现基于内容的推荐

官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-mlt-query.html 基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档。Lucene的a...

xiaomin0322 ⋅ 17分钟前 ⋅ 0

Spring Boot更改Banner

Spring Boot 1.0 中如何更换启动 Banner,其实都很简单,只需要在src/main/resources路径下新建一个banner.txt文件,banner.txt中填写好需要打印的字符串内容即可。 一般情况下,我们会借助第...

Clarence_D ⋅ 21分钟前 ⋅ 0

谷歌浏览器下,去掉input输入记录提示框

谷歌浏览器在记住密码后,在input获取焦点的时候就会有输入提示框,如: 有时候我们在输入用户名时,我们自己有ajax的下拉展示列表,那么此时的历史提示输入框就影响交互和用户体检,解决的方...

莫西摩西 ⋅ 23分钟前 ⋅ 0

dlna流媒体服务搭建

简介 DLNA的全称是DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟), 其宗旨是Enjoy your music, photos and videos, anywhere anytime, DLNA(Digital Living Network Alliance) 由索尼......

啊哼哼 ⋅ 29分钟前 ⋅ 0

Python10大好用的集成开发环境简析

  Python IDE工具是每个Python工程师必须使用的开发工具,选择正确的编辑器对Python编程效率的影响是非常大的,因此选择合适的Python开发工具十分重要,以下是通过长期实践发掘的好用的Pyt...

老男孩Linux培训 ⋅ 30分钟前 ⋅ 0

happybase(TSocket read 0 bytes)

关于报错 happybase 是使用python连接hbase的一个第三方库,目前基于thrift1 。在使用过程中经常碰到报错 TTransportException(type=4, message='TSocket read 0 bytes') 即使使用thrift se...

zhnxin ⋅ 30分钟前 ⋅ 0

手写简单RPC

1. 获取接口对应的实现类 package com.rpc.server.util; import java.io.File; import java.net.URL; import com.alibaba.fastjson.JSON; public class ClassUtils { public static Object ......

徐志 ⋅ 30分钟前 ⋅ 0

nginx服务器的gzip压缩

四、服务器的gzip压缩 1.ngx_http_gzip_module模块处理的9个指令 在处理时实时压缩 1>gzip on|off 开启或关闭gzip功能 2>gzip_buffers number size 用于设置文件使用缓存...

余温灬未存 ⋅ 33分钟前 ⋅ 0

前端程序员:月薪 5K 到 5 万,我干了啥

高贵的前端程序猿们: 如何在前端开发这种高精尖的技术领域找到心仪的工作?实现在咖啡馆喝喝咖啡敲敲代码就能升职加薪、买房买车、迎娶白富美走上人生巅峰的职业梦想?这 篇《进化论:从 0 ...

Mr_zebra ⋅ 35分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部