OPENVPN+MYSQL认证+客户端配置
安装环境:ubuntu 12.04 x64
一 服务器端
1、安装openvpn及相应包
|
1
2
|
root@jkb:~# aptitude install openvpnroot@jkb:~# aptitude install libpam-dev libpam-mysql libmysql++-dev sasl2-bin |
2、检查安装
|
1
2
|
root@jkb:~# ls /usr/share/doc/|grep openvpnopenvpn ##发现已经存在。 |
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 ###用来清除之前生成的所有的keyroot@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.pemserver.crtserver.csrserver.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.crtclient1.csrclient1.keyroot@jkb:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-key client2root@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 的映射到一个外网ipport 1194##指定端口proto tcpdev tun;tls-serverca ca.crtcert server.crtkey server.keytls-auth ta.key 0dh dh1024.pemserver 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-lzomax-clients 20 # 最多同時只能有十個 clientuser nobodygroup nogroup # vpn daemon 執行時的身份(在非 Windows 平台中使用)persist-keypersist-tunstatus /etc/openvpn/easy-rsa/keys/openvpn-status.logverb 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_forwardroot@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/openvpnauth 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=1account 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
|
clientdev tunproto tcpremote 8.8.8.8 1194 #公网ip 和 端口nobindpersist-keypersist-tunca ca.crtcert client.crtkey client.keytls-auth ta.key 1;comp-lzoverb 3auth-user-pass |
3、把client.ovpn加上之前client.crt clinet.key ca.crt ta.key 放入一个config文件夹,并移动至vpn安装的主目录
4、启动客户端,输入用户名密码即可。#用户名密码在服务器端,mysql中添加的用户密码。
OPENVPN+MYSQL认证+客户端配置的更多相关文章
- 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 ...
- Ubuntu下OpenVPN客户端配置教程
一般来说,提供Web服务的Linux服务器是很少需要连接OpenVPN的,但是个人Linux计算机在很多时候就需要连接OpenVPN了.比如以Linux为开发环境,需要连接公司的OpenVPN等等. ...
- CentOS下OpenVPN客户端配置
CentOS下OpenVPN客户端配置 http://liumissyou.blog.51cto.com/4828343/1762683 1,安装 yum install openvpn -y mkd ...
- 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证
早上一起床,登陆锐捷客户端上网,谁知道错问题了.不能联网了,锐捷登陆成功,但是一会儿就提示失败,获取IP信息失败了.下面我描述一下问题原因: 锐捷登陆后有认证提示,和往常正常情况一样的,不过有个小感叹 ...
- Https双向认证Android客户端配置
Https .cer证书转换为BKS证书 公式https://blog.csdn.net/zww986736788/article/details/81708967 keytool -importce ...
- openvpn用户管理、linux客户端配置及企业常用真实案例解析
1.给企业用户分配VPN账户的流程: 添加拨号需要密码的用户 # source vars NOTE: If you run ./clean-all, I will be doing a rm -rf ...
- Proftpd mysql认证配置文档
Proftpd mysql认证配置文档 ver1.0, 2012/09/25 一.下载安装proftp mysql 下载 wget http://cloud.github.com/downloads/ ...
- seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案
seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 说明: 之所以只用nacos进行了注册与发现,因为seata使用naco ...
- 使用Jmeter测试MySQL性能——(2)多客户端配置
在测试性能过程中,单个测试客户端可能存在性能瓶颈无法达到测试要求的压力.在这种情况下,可以设置jmeter的多客户端模式,然后通过一台控制端,同时控制多台PC上的客户端向服务器发送测试请求.若有4台P ...
随机推荐
- JavaScript之基础篇
标识符 命名要求 以字母.下划线或者$开头: 由字母.下划线.$和数字组成. 关键字和保留字 关键字.保留字不可以作为标识符. 大小写敏感 区分大小写. 基本数据类型 Number 整数 浮点数 特殊 ...
- 【原】iOS学习之图片拉伸处理(类似qq的气泡)
原理是拉伸里面的内容,将边保护起来 方法1: ①[image resizableImageWithCapInsets:UIEdgeInsetsMake(, , , )]; ②[image resiza ...
- React虚拟DOM浅析
在Web开发中,需要将数据的变化实时反映到UI上,这时就需要对DOM进行操作,但是复杂或频繁的DOM操作通常是性能瓶颈产生的原因,为此,React引入了虚拟DOM(Virtual DOM)的机制. 什 ...
- 如何发布付费WP8应用
如何发布付费应用,听起来蛮简单的,事实上也确实如此,但是发布付费WP8应用前的资料填写却让我郁闷不已. 我打开仪表板,点击进入账户--账户摘要,填写税务资料和付款账户,发现付款账户保存成功了,税务资料 ...
- 【转载】64 位 Windows 内核虚拟地址空间布局(基于 X64 CPU)
原文链接:http://shayi1983.blog.51cto.com/4681835/1734822 本文为原创翻译,原文出处为 http://www.codemachine.com/articl ...
- dotnetcore 单元测试
dotnetcore的单元测试目前支持的比较好的是xunit,首先通过nuget添加组件dotnet-test-xunit 和 xunit.如果有依赖注入可在构造方法中,相当于Nunit中的[Setu ...
- 关于C#的微信开发的入门记录一
在之前老是看到一些微信开发的例子,但是作为初学者会有很多问题,之前我也找了很多帖子,但是最终也没能解决,现在刚好手里有一个项目,总结一下分享给准备做却动不了手的朋友们,本文只是以我个人的经验作为浅谈( ...
- CF2.E
E. Comments time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- BOM对象有哪些:
BOM对象有哪些: 1.window对象 ,是JS的最顶层对象,其他的BOM对象都是window对象的属性: 2.document对象,文档对象: 3.location对象,浏览器当前URL信息: 4 ...
- SQL Server 2016 CTP2.2 安装手记
SQL Server 2016 CTP2.2 安装手记 下载一个iso文件,解压出来(大约2.8G左右),在该路径下双击Setup.exe即可开始安装. 安装之前请先安装.NET 3.5 SP1,在服 ...