OPENVPN+MYSQL认证+客户端配置
安装环境: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中添加的用户密码。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。