`
hqman
  • 浏览: 362978 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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.crt
server.crt
server.key
dh1024.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 443
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key    
dh dh1024.pem
server 192.168.42.0 255.255.255.0
ifconfig-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-cn keepalive 10 120

comp-lzo persist-key persist-tun status openvpn-status.log log /var/log/openvpn.log verb 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_forward
iptables -t nat -A POSTROUTING -d 172.16.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth1 -j MASQUERADE
exit 0

 

三、 客户端配置过程

 

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

 

client
dev tun
proto udp   
remote <serverip> 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key  
comp-lzo
verb 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 MASQUERADE
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -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=2

account 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 1194
proto udp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem

server 10.0.0.0 255.255.255.0
ifconfig-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 120
tls-auth /etc/openvpn/ta.key 0 

comp-lzo 

user nobody
group nogroup

persist-key
persist-tun 

status       /var/www/openvpn-status.log
log-append  /var/log/openvpn.log 

plugin ./openvpn-auth-pam.so openvpn 

client-cert-not-required
username-as-common-name
client-to-client
duplicate-cn

auth-nocache
verb 3 

到此服务器端配置完成!

 

 

9.openvpn客户端安装

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

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

client
dev tun
proto udp 

remote 192.168.1.195 1194
resolv-retry infinite 

nobind
persist-key
persist-tun 

ca ca.crt
auth-user-pass
ns-cert-type server 

tls-auth ta.key 1
comp-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

相关推荐

    网络系统管理赛项软件包

    网络系统管理是IT领域中的一个重要组成部分,涉及到网络的规划、配置、监控、安全以及故障排除等多个方面。在“网络系统管理赛项软件包”中,包含的服务模块软件包、普通PC软件包、无线地勘系统等,都是网络管理员在...

    老毛子 Padavan 固件MI-R3G_3.4.3.9-099

    老毛子 Padavan 固件MI-R3G_3.4.3.9-099

    linux交叉编译器3.4.5

    以下是对这一主题的详细解释: 1. **什么是交叉编译**: 交叉编译是指在一个平台上编译出适用于另一个平台的代码。在这个场景中,我们使用的编译器3.4.5是为Linux系统设计的,但编译的目标是其他非x86架构(如ARM...

    嵌入式Linux在ARM9(TQ)上的移植.pdf

    在第三部分,作者详细介绍了Linux内核的移植准备、移植和配置过程。包括解压缩Linux内核源代码、应用补丁文件、配置Makefile、修改内核以支持TQ2440开发板等步骤。 文章还讨论了移植后的运行结果,证明了Linux内核...

    luci-app-pptp-server_2.0-7_all.ipk

    网上收集来的,别问干什么用,我什么都不知道,给OPENWRT的GUI界面添加什么功能,配置某些功能方便点而已

    ARM9平台上的嵌入式Linux系统移植研究

    此外,还需要安装内核模块、建立配置文件,并制作YAFFS2根文件系统映像,以适应NAND Flash存储需求。 ##### 4. 设备驱动程序的开发与移植 设备驱动是嵌入式Linux系统中的重要组成部分,负责处理硬件设备的输入/...

    MedShakeEHR-Ansible:在Debian上自动安装Ansible的MedShakeEHR

    安装OpenVPN 保护OpenVPN 在局域网中安装Orthanc ? 先决条件 Ansible&gt; 2.5 Ansible&gt; 2.9(用于SSH-sec角色) 在客户端计算机和服务器计算机之间已正确配置SSH身份验证。 安装 克隆项目并安装角色: git clone...

    Angular 2 Cookbook(pdf+epub+mobi+code_file).zip

    - 示例组件,演示如何创建、配置和使用组件。 - 指令的实现,帮助理解自定义指令的编写。 - 路由配置,展示如何设置和导航到不同的页面。 - 表单的实现,包括模板驱动和响应式表单的代码。 - 服务的创建和使用,包括...

    linux加入windows域之完美方案

    本文将详细介绍如何让Linux系统(以CentOS 5.3为例)成功加入Windows域,并确保其能够作为域内成员或Samba服务正常工作。 #### 二、准备工作与环境搭建 **1. 环境设置** - **AD域服务器**: Windows Server 2003 ...

    Linux 运维 入门到高级

    linux企业实战运维入门到高级系列 ubuntu Centos ...自动化运维 安装kickstart文件(半自动化) ANSIBLE部署 企业级OpenVPN 安装OpenVPN 该笔记由刘森飚整理,版权归原作者所有 仅用于学习交流分享,如有争议请联系下架

    androidpn服务端项目源码已修改

    在描述中提到了一个链接,该链接指向了CSDN博客上的一篇文章,详细介绍了修改后的服务器端代码。这表明源码可能经过了一些调整以增强性能、修复错误,或者添加了新的功能。文章作者“wuhualong1314”可能分享了他们...

    wireshark 包解析插件

    该资源为用脚本编写的适用于wireshark的一个新的协议。即当wireshark不能及时解析一些新的协议时,可以自己动手根据新协议字段编写解析文件。有新协议的话可以基于此脚本改写. 使用方法: 1. 打开wireshark根目录中...

    老男孩linux笔记下

    本文档将对Linux运维的基础知识点进行详细介绍。 首先,文档中提到的MySQL是一个广泛使用的关系型数据库管理系统。在Linux环境下安装MySQL时,首先需要下载MySQL的二进制安装包。在Linux系统中安装软件包,尤其是像...

    httest-2.4.9-win.zip

    1. 测试前确保服务器配置正确,避免因服务器问题影响测试结果。 2. 设计多种测试场景,涵盖正常操作、边界条件和异常情况。 3. 详细记录和分析测试数据,以便找出性能瓶颈和潜在问题。 4. 定期重复测试,监控服务器...

    在linux下自动生成大量证书Shell(无其他工具版)

    在C/S模型中,Server需要认证Client的证书,而每一个Client持有独一无二的证书(比如一个设备的MAC地址),此时... 对了,忘了告诉大家了,你当前的目录里面一定要有个cert.cnf配置文件,自己手动生成的CA证书和CA key.

    Oracle-Cloud-instances-configuration:Oracle Cloud实例配置

    第二台服务器托管openvpn服务和该网站的nginx服务器配置要允许传入连接,请在Web控制台中配置端口和相应的安全性列表重新配置iptables以允许流量Nginx服务器配置-Postfix,dovecot,rspamm和MySql 克隆此仓库,并...

    system:我的系统配置

    系统配置该存储库包含为我的所有机器构建NixOS系统配置所需的一切。... external/private包含我无法公开共享的所有内容,例如nixops状态(它包括ssh私有密钥),openvpn密钥和密码。 为了使它在配置

    openconnect-gui:镜像-图形化OpenConnect客户端(测试阶段)

    OpenConnect GUI 这是openconnect VPN的GUI客户端。 该客户端处于beta测试阶段。 不能假定它提供了所需的安全性。 查看项目网页以获取详细描述,屏幕截图和其他相关项目。支持平台Microsoft Windows 7及更高版本...

    gate:Gate是启用了MFA的SSO平台,支持SAML,OAuth,Linux Shell登录和CAS

    Gate可以自动为您创建OpenVPN配置文件,还可以为您提供Google多因素身份验证(MFA)集成。 Gate在您的组织内提供单个MFA令牌授权。 Gate可以处理以下情况: 使用Gate身份验证设置OpenVPN。 自动为每个用户创建VPN...

Global site tag (gtag.js) - Google Analytics