安装环境:ubuntu 12.04 x64

一 服务器端

1、安装openvpn及相应包

1
2
root@jkb:~# aptitude install openvpn
root@jkb:~# aptitude install libpam-dev libpam-mysql libmysql++-dev sasl2-bin

2、检查安装

1
2
root@jkb:~# ls /usr/share/doc/|grep openvpn
openvpn ##发现已经存在。

3、生成证书

1
2
3
4
root@jkb:~#cd  /usr/share/doc/openvpn/examples/easy-rsa/2.0/ 
root@jkb:~# . ./vars    ##### 重成环境变量 以下生成的文件都在/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys 下
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./clean-all ###用来清除之前生成的所有的key
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-ca  ####生成ca.crt  ca.key

4、建立给server用的certificate & key

1
2
3
4
5
6
7
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0#./build-key-server server 
##“Common Name” 设成 “server”
##会产生以下文件
01.pem
server.crt
server.csr
server.key

5、建立给client用的certificate & key(可以建立多个client)

1
2
3
4
5
6
7
8
9
## “Common Name” 设成 “clinet1” 以此类推
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-key client1
##生成
client1.crt
client1.csr
client1.key
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0#  ./build-key client2
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0#  ./build-key client3
##当然,你也可以只生成一个client,我就是这样做的

6、建立 Diffie Hellman parameters 和 ta.key

1
2
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0#  ./build-dh #建立 Diffie Hellman parameters 会生成dh{n}.pem。
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0# openvpn --genkey --secret ta.key  #生成ta.key,防止ddos攻击,client和server同时存储

7、拷贝相关文件至/etc/openvpn下。

1
2
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0# mv keys/* /etc/openvpn/
root@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0# mv ta.key /etc/openvpn/ #不要遗漏

8、建立配置文件/etc/openvpn/server.conf

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
local 10.0.9.10 ###本机IP,这是一个内网IP,不过在路由上已经做了IP 的映射到一个外网ip
port 1194##指定端口
proto tcp
dev tun
;tls-server
ca ca.crt
cert server.crt
key server.key
tls-auth ta.key 0
dh dh1024.pem
server 10.8.0.0 255.255.255.0#拨入后的ip段及网关
ifconfig-pool-persist ipp.txt
#push “redirect-gateway”   # 自動將 client 的 default gateway 設成經由 VPN server 出去
keepalive 10 120 # 保持連線,每 10 秒 ping 一次,若是 120 秒未收到封包,即認定 client 斷線
comp-lzo
max-clients 20 # 最多同時只能有十個 client
user nobody
group nogroup # vpn daemon 執行時的身份(在非 Windows 平台中使用)
persist-key
persist-tun
status /etc/openvpn/easy-rsa/keys/openvpn-status.log
verb 3
# 以下二行是將 vpn server 內部的虛擬 ip 機器開放給 client 使用
push "route 10.0.1.0 255.255.255.0"
push "route 10.0.2.0 255.255.255.0"
push "route 10.0.3.0 255.255.255.0"
plugin ./openvpn-auth-pam.so /usr/sbin/openvpn ###这个是用来mysql 认证的,如不需要可注释掉

9、开启操作系统的IP转发设置。

1
2
root@jkb:~# echo 1 > /proc/sys/net/ipv4/ip_forward
root@jkb:~# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

10、建立mysql认证文件。

1
2
3
4
5
6
7
root@jkb:~# vi /etc/pam.d/openvpn
auth sufficient pam_mysql.so user=vpn passwd=vpnjkb host=127.0.0.1:3306 db=vpn \
table=vpnuser usercolumn=name passwdcolumn=password \
where=active=1 sqllog=0 crypt=2 verbose=1
account required pam_mysql.so user=vpn passwd=vpnjkb host=127.0.0.1:3306 db=vpn \
table=vpnuser usercolumn=name passwdcolumn=password \
where=active=1 sqllog=0 crypt=2 verbose=1

11、创建vpn库、授权、建表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> create database vpn;##创建数据库vpn。
mysql> GRANT ALL ON vpn.* TO vpn@localhost IDENTIFIED BY ‘vpn123′;##授权localhost上的用户vpn(密码vpn123)有对数据库vpn的所有操作权限。
mysql> flush privileges;##更新sql数据库的权限设置。
mysql> use vpn;##使用刚创建的的vpn数据库。
mysql> CREATE TABLE vpnuser (
-> name char(20) NOT NULL,
-> password char(128) default NULL,
-> active int(10) NOT NULL DEFAULT 1,
-> PRIMARY KEY (name)
-> );
mysql> insert into vpnuser (name,password) values(’soai’,password(’soai’));
##命令解释:
#创建vpn用户,对vpn这个database有所有操作权限,密码为vpn123
#active不为1,无权使用VPN

12、拷贝文件

1
root@jkb:~# cp /usr/lib/openvpn/openvpn-auth-pam.so /etc/openvpn/

13、可选配置

1
2
3
4
#client-cert-not-required #不请求客户的CA证书,使用User/Pass验证
#username-as-common-name #使用客户提供的UserName作为Common Name
#client-to-client #如果让Client之间可以相互看见,去掉本行的注释掉,否则Client之间无法相互访问
#duplicate-cn #是否允许一个User同时登录多次,去掉本行注释后可以使用同一个用户名登录多次

14、下载相关文件给客户端用

1
2
##下载下列文件
client.crt  clinet.key ca.crt    ta.key

二 客户端

1、客户端下载地址:

http://swupdate.openvpn.org/community/releases/openvpn-2.2.2-install.exe ##windows

http://swupdate.openvpn.org/community/releases/openvpn-2.2.2.tar.gz  ##linux or mac

2、创建client.ovpn文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
client
dev tun
proto tcp
remote  8.8.8.8 1194 #公网ip 和 端口
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1
;comp-lzo
verb 3
auth-user-pass

3、把client.ovpn加上之前client.crt  clinet.key ca.crt    ta.key 放入一个config文件夹,并移动至vpn安装的主目录

4、启动客户端,输入用户名密码即可。#用户名密码在服务器端,mysql中添加的用户密码。

OPENVPN+MYSQL认证+客户端配置的更多相关文章

  1. Centos搭建openvpn+mysql数据库认证

    服务器环境说明 1.系统版本 CentOS release 5.10 (Final) 64bits 2.软件版本 openvpn-2.3.6-1.el5 lzo-2.02-2.el5.1 lzo-d ...

  2. Ubuntu下OpenVPN客户端配置教程

    一般来说,提供Web服务的Linux服务器是很少需要连接OpenVPN的,但是个人Linux计算机在很多时候就需要连接OpenVPN了.比如以Linux为开发环境,需要连接公司的OpenVPN等等. ...

  3. CentOS下OpenVPN客户端配置

    CentOS下OpenVPN客户端配置 http://liumissyou.blog.51cto.com/4828343/1762683 1,安装 yum install openvpn -y mkd ...

  4. 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证

    早上一起床,登陆锐捷客户端上网,谁知道错问题了.不能联网了,锐捷登陆成功,但是一会儿就提示失败,获取IP信息失败了.下面我描述一下问题原因: 锐捷登陆后有认证提示,和往常正常情况一样的,不过有个小感叹 ...

  5. Https双向认证Android客户端配置

    Https .cer证书转换为BKS证书 公式https://blog.csdn.net/zww986736788/article/details/81708967 keytool -importce ...

  6. openvpn用户管理、linux客户端配置及企业常用真实案例解析

    1.给企业用户分配VPN账户的流程: 添加拨号需要密码的用户 # source vars NOTE: If you run ./clean-all, I will be doing a rm -rf ...

  7. Proftpd mysql认证配置文档

    Proftpd mysql认证配置文档 ver1.0, 2012/09/25 一.下载安装proftp mysql 下载 wget http://cloud.github.com/downloads/ ...

  8. seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案

    seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 说明: 之所以只用nacos进行了注册与发现,因为seata使用naco ...

  9. 使用Jmeter测试MySQL性能——(2)多客户端配置

    在测试性能过程中,单个测试客户端可能存在性能瓶颈无法达到测试要求的压力.在这种情况下,可以设置jmeter的多客户端模式,然后通过一台控制端,同时控制多台PC上的客户端向服务器发送测试请求.若有4台P ...

随机推荐

  1. cassandra写数据CommitLog

    cassandra 两种方式: Cassandra-ArchitectureCommitLog Cassandra持久化-Durability 一种是配置commitlog_sync为periodic ...

  2. python 基础之数据类型

    一.python中的数据类型之列表 1.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 二.列表常用操作 >切片>追加>插入>修改& ...

  3. Java Servlet规范

    截自网址:http://blog.csdn.net/u010391029/article/details/46521051 JavaServlet Specification  Version 2.3 ...

  4. 浅谈我对 jQuery 的了解

    总述 0 获取 jQuery 对象 1 对象跳转 2 方法调用 3 常用API 4 $(…); 5 jQuery 对象获取 6 Data 相关方法 7 选择器 8 基本的过滤器 9 内容过滤选择器 1 ...

  5. HTML常用标签总结

    HTML 的常用标签总结 <font size="字体大小1-7" color="red或0xff00ff" face="字体类型(楷体等)&q ...

  6. AMD与CMD(转载)

    JavaSript模块化   在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发?       模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题 ...

  7. sql查询重复数据

    select *from Awhere id in (select id from A group by id having count(1) >= 2) 注释:id 为重复的关键字(更换成所需 ...

  8. 优化curl并发使用

    经典curl并发的处理流程:首先将所有的URL压入并发队列, 然后执行并发过程, 等待所有请求接收完之后进行数据的解析等后续处理. 在实际的处理过程中, 受网络传输的影响, 部分URL的内容会优先于其 ...

  9. Learning Play! 2.4

    1) Activator Download typesafe-activator-1.3.5.zip, extract, set path 2) Create new project activato ...

  10. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...