首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

OpenVPN 详细配备

2012-07-26 
OpenVPN 详细配置一、服务器环境及目的?服务器两块网卡,一块连接外网,一块连接内网外网IP: X X X X办公内网

OpenVPN 详细配置
一、服务器环境及目的

?

服务器两块网卡,一块连接外网,一块连接内网外网IP: X X X X办公内网IP:172.16.1.0/24

?

目的:

通过VPN在Internet环境下接入办公内网,可以访问内网指定段内的计算机,并且客户端能通过VPN通道访问Internet

?

二、服务端安装过程

?

1.安装openvpn

?

sudo apt-get install openvpn

?

2.设置认证机构,产生证书

在Ubuntu中大致这样操作,将目录 /usr/share/doc/openvpn/examples/easy-rsa/2.0 复制的你的HOME目录(这个目录包含了一系列很方便的脚本),修改vars使其符合你的实际情况(国家、省份、城市、公司、机构、邮件地址),然后运行
代码:

?

source ./vars./clean-all./build-ca./build-key-server <servername>./build-key <clientname>./build-dh

?

3.注意:

这只是第一次产生证书的正确操作,其中 build-ca 创建根证书,若你没有清除全部VPN Server/Client的打算,你不应该再次运行此命令;
创建的全部证书及私钥都在当前目录的 keys 下面,而命令 clean-all 将清除 keys 下面全部内容,因此 cliean-all 只在 build-ca 前运行一次。
随后添加 Server 证书或 Client 证书只需运行(建议单独的客户端配置单独的证书)
代码:

?

./vars./build-key-server <servername>or./build-key <clientname>

?

4.配置Server端

从示例中解压 server.conf
代码:

?

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz  /etc/openvpn/sudo gzip -d /etc/openvpn/server.conf.gz

?

将相关证书、私匙拷贝的 /etc/openvpn

?

ca.crtserver.crtserver.keydh1024.pem

?

5.修改 server.conf

关键一:取消注释 push "route a.b.c.d 255.255.255.0",并将地址和掩码替换为办公网络的地址和掩码

目的是为客户端加一条路由,这样客户端才有可能访问到办公网络中出VPN Server之外的其它主机

关键二:取消注释 push "dhcp-option DNS a.b.c.d" 和 push "dhcp-option WINS a.b.c.d", 并将地址替换为实际的 DNS 和 WINS 服务器的地址

目的是客户端连接VPN后仍能访问 Internet,(若推过来的DNS不能解析外部域名,则即使客户端的路由配置正确,想通过域名访问Internet也不可能)

?

示例server.conf

?

port 443proto udpdev tunca ca.crtcert server.crtkey server.key    dh dh1024.pemserver 192.168.42.0 255.255.255.0ifconfig-pool-persist ipp.txt

push "redirect-gateway def1 bypass-dhcp" #增加172.16.1.0 IP断的路由 使VPN客户端能访问这个地址段(真正能访问还需要后面的设置)push "route 172.16.1.0 255.255.255.0"push "dhcp-option DNS 202.205.6.4"

#vpn客户端能否相互访问;client-to-client#注释掉此参数表示同一个客户端证书只能有一个连接,如果两个客户端使用同一个证书连接的话,#先连接的会自动断开;duplicate-cnkeepalive 10 120

comp-lzopersist-keypersist-tunstatus openvpn-status.loglog /var/log/openvpn.logverb 3

?

6.Server 端其它设置

配置服务器,允许包转发:
代码:

?

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

?

设置iptable转发规则 使访问目标为172.16.1.0段的请求都转发到eth0网卡,这是vpn服务器连接办公内网的网卡,这里很重要,不然的话VPN客户端还是不能访问办公内网

?

iptables -t nat -A POSTROUTING -d 172.16.1.0/24 -o eth0 -j MASQUERADE

?

设置iptable转发规则 使来源为vpn客户端的请求都转发到eth1网卡,这是vpn服务器连接Internet的网卡,这里很重要,不然的话VPN客户端还是不能通过VPN访问Internet

?

iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth1 -j MASQUERADE

?

通过修改/etc/rc.local,加入以下代码,使服务器重启后自动设置转发规则

?

echo 1 |tee /proc/sys/net/ipv4/ip_forwardiptables -t nat -A POSTROUTING -d 172.16.1.0/24 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth1 -j MASQUERADEexit 0

?

三、客户端配置过程

?

至此openvpn服务器端配置完毕, 客户端只需要将keys目录下生成的对应的ca.crt(公用) 专用client.crt和client.key, client.ovpn拷贝到客户端openvpn安装目录下的config目录,如果没有client.ovpn文件,直接新建一个,内容类似:

?

clientdev tunproto udp   remote <serverip> 443resolv-retry infinitenobindpersist-keypersist-tunca ca.crtcert client.crtkey client.key  comp-lzoverb 3

?

运行客户端连接试一下吧:)

?

?

?

?

10个步骤搭建功能强大的openvpn pam mysql服务器V1.1六月 1st, 2010?Posted in?VPN?|?359次浏览

Author:gaojinbo?
Time:2010-6-1

ubuntu openvpn安装配置-user/password方式V1.1,使用pam_mysql方式验证用户密码,openvpn pam mysql

?

1.环境?
ubuntu 9.10??? amd64?
openvpn 2.1?
eth0??? 192.168.1.195(这个是openvpn server的地址,请更换为自己的公网ip)?
vpn网络??? 192.168.10.0/24(这个是openvpn连接后的虚拟私用ip网段,这个网段不能与物理网段相同)

?

?

2.启用ip转发?
vi /etc/sysctl.conf

net.ipv4.ip_forward = 1 

?

?

3.防火墙的设置

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADEiptables -A INPUT -i tun0 -j ACCEPTiptables -A FORWARD -i tun0 -j ACCEPTiptables -A FORWARD -o tun0 -j ACCEPT 

?

?

4.安装openvpn libpam_mysql并生成证书

apt-get install openvpn? libpam-mysql

cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn

cd /etc/openvpn/easy-rsa/2.0

source ./vars

./clean-all

./build-ca

./build-key-server server? #出现…Sign the certificate… 按 y

./build-dh

openvpn –genkey –secret ta.key

cp ta.key keys

生成文件都在keys目录下

?

?

5.添加openvpn的pam文件

vi /etc/pam.d/openvpn

auth sufficient? pam_mysql.so? user=openvpn passwd=openvpn \host=127.0.0.1 port=3306 db=vpn table=vpnuser usercolumn=name \passwdcolumn=password sqllog=0 crypt=2account required pam_mysql.so? user=openvpn passwd=openvpn \host=127.0.0.1 port=3306 db=vpn table=vpnuser usercolumn=name \passwdcolumn=password sqllog=0 crypt=2 

说明:openvpn-auth-pam认证只能使用host=localhost或host=127.0.0.1

?

?

6.安装mysql-proxy

由于本机没有安装Mysql-server,也不能通过ip连接到无端的数据库,所以安装一个mysql-proxy来支持openvpn-auth-pam验证

apt-get install mysql-proxy

启动

/usr/sbin/mysql-proxy? –proxy-address=0.0.0.0:3306 –proxy-backend-addresses=192.168.1.12:3306? –proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua >/var/log/mysql-proxy.log &

?

?

7.配置数据库

以管理员身份登录数据库:

create database vpn;

GRANT ALL ON vpn.* TO openvpn@% IDENTIFIED BY ‘openvpn’;

flush privileges;

use vpn;

CREATE TABLE vpnuser (name char(20) NOT NULL,password char(128) default NULL,active int(10) NOT NULL DEFAULT 1,PRIMARY KEY (name));

insert into vpnuser (name,password) values(‘gaojinbo.com’,password(‘gaojinbo.com’));

说明:

创建openvpn用户,对vpn这个database有所有操作权限,密码为openvpn

active不为1,无权使用VPN

增加用户 用户名:gaojinbo.com 密码:gaojinbo.com

?

?

8.修改openvpn服务配置文件

vi /etc/openvpn/server.conf

port 1194proto udpdev tunca /etc/openvpn/ca.crtcert /etc/openvpn/server.crtkey /etc/openvpn/server.keydh /etc/openvpn/dh1024.pemserver 10.0.0.0 255.255.255.0ifconfig-pool-persist ipp.txt;push "redirect-gateway"push "route 192.168.1.0 255.255.255.0"push "route 192.168.1.9 255.255.255.255 net_gateway"push "dhcp-option DNS 202.96.128.166">keepalive 10 120tls-auth /etc/openvpn/ta.key 0 comp-lzo user nobodygroup nogrouppersist-keypersist-tun status?????? /var/www/openvpn-status.loglog-append? /var/log/openvpn.log plugin ./openvpn-auth-pam.so openvpn client-cert-not-requiredusername-as-common-nameclient-to-clientduplicate-cnauth-nocacheverb 3 

到此服务器端配置完成!

?

?

9.openvpn客户端安装

windows下的openvpn客户端,到?http://openvpn.se/去下载,安装后在其安装目录的conf目录把服务器生

成的ca.crt、ta.key拷过来,之后建立client.ovpn文件

clientdev tunproto udp remote 192.168.1.195 1194resolv-retry infinite nobindpersist-keypersist-tun ca ca.crtauth-user-passns-cert-type server tls-auth ta.key 1comp-lzo verb 3

?

10.测试

在windows下通过openvpn gui建立到服务器的连接,登录的时候输入用户名密码gaojinbo.com

?

完成!

?

参考:http://dozview.com/blog/an-implementation-of-openvpn-system-based-on-userpass-authentication-bandwidth-control

?

http://hi.baidu.com/viccom/blog/item/7608fe4406ee6f5c510ffe07.html

?

?

1 楼 hqman 2012-05-20   export LD_PRELOAD=/lib/libpam.so.0
root@hqman:/etc/openvpn/2.0# killall openvpn
root@hqman:/etc/openvpn/2.0# openvpn --config ./server.conf & 
[2] 4691
[1]   Done                    openvpn --config ./server.conf
root@hqman:/etc/openvpn/2.0# tail -f /var/log/auth.log

热点排行