第1部分 OpenVPN的基础 2
第1章 认识OpenVPN 2
1.1 OpenVPN的选项 2
1.1.1 通道选项 3
1.1.2 服务器模式选项 29
1.1.3 客户端模式选项 42
1.1.4 数据通道加密选项 44
1.1.5 TLS模式选项 47
1.1.6 TUN/TAP持久通道配置模式 69
1.1.7 PKCS#11独立选项 70
1.2 脚本和环境变量 70
1.2.1 脚本的执行顺序 70
1.2.2 字符串类型和重新映射 71
1.2.3 环境变量 71
1.3 可用信号 76
1.4 TUN/TAP驱动设置 80
1.5 举例 80
1.5.1 TUN/TAP设置 80
1.5.2 Firewall设置 81
1.5.3 VPN地址设置 81
1.5.4 例1:没有安全保护的简单VPN通道 81
1.5.5 例2:使用静态安全密钥的VPN通道 85
1.5.6 例3:基于TLS的安全通道 90
1.5.7 路由设置 98
1.6 防火墙设置 99
第2章 安装OpenVPN服务器 101
2.1 相关软件的安装 101
2.1.1 安装TUN/TAP驱动 101
2.1.2 安装OpenSSL库 102
2.1.3 安装lzo 103
2.2 安装OpenVPN服务器 105
2.2.1 下载OpenVPN服务器 106
2.2.2 解压缩并安装OpenVPN服务器 106
2.2.3 安装OpenVPN后的目录结构 110
2.2.4 创建证书 110
2.3 启动OpenVPN服务器 115
2.3.1 命令行方式启动 115
2.3.2 后台服务方式启动 115
第3章 分析OpenVPN安装包中的部分目录和文件 123
3.1 sample-keys目录 123
3.2 sample-config-files目录 127
3.2.1 OpenVPN运行在C/S多客户端下的示例配置文件 127
3.2.2 OpenVPN运行在SSL/TLS模式下的示例配置文件 136
3.2.3 OpenVPN运行在预共享的静态密钥方式下的示例配置文件 145
3.2.4 OpenVPN用于测试的TLS示例配置文件 151
3.2.5 相关的脚本文件 156
3.3 sample-scripts目录 161
3.3.1 auth-pam.pl文件 162
3.3.2 ucn.pl文件 165
3.3.3 verify-cn文件 165
3.3.4 bridge-start、bridge-stop和openvpn.init文件 167
3.4 easy-rsa目录 167
3.5 plugin目录 168
3.5.1 auth-pam插件 169
3.5.2 down-root插件 169
3.5.3 defer插件 169
第4章 OpenVPN客户端的安装 171
4.1 Windows系统下安装OpenVPN客户端 171
4.1.1 安装OpenVPN客户端 172
4.1.2 运行OpenVPN客户端 173
4.2 Linux系统下安装OpenVPN客户端 176
4.2.1 安装OpenVPN客户端 176
4.2.2 运行OpenVPN客户端 176
4.3 Mac系统下安装OpenVPN客户端 182
4.3.1 安装OpenVPN客户端 182
4.3.2 运行OpenVPN客户端 183
4.4 对其他客户端的支持 183
4.4.1 IOS系统下安装OpenVPN客户端 184
4.4.2 Android系统下安装OpenVPN客户端 184
4.4.3 Windows Mobile系统下安装OpenVPN客户端 185
第2部分 OpenVPN的应用 189
第5章 OpenVPN的两种用户登录验证方式 189
5.1 证书验证方式 189
5.1.1 证书的使用 189
5.1.2 吊销证书 189
5.2 用户名/密码验证方式 192
5.3 脚本验证方式 192
5.3.1 下载并编辑脚本 192
5.3.2 编辑一个密码文件 194
5.3.3 访问测试 194
5.4 使用MySQL验证OpenVPN用户登录访问 195
5.4.1 下载pam_mysql模块 195
5.4.2 解压缩parn_mysql模块 196
5.4.3 认识configure选项 196
5.4.4 安装pam_mysql模块 197
5.4.5 创建mysql表 199
5.4.6 配置pam_mysql模块 201
5.4.7 访问测试 207
5.5 使用OpenLDAP验证OpenVPN用户登录访问 214
5.5.1 下载openvpn-auth-ldap插件 215
5.5.2 安装必要的依赖软件 215
5.5.3 安装OpenlDAP 220
5.5.4 安装auth-ldap 221
5.5.5 认识auth-ldap 221
5.5.6 实例运行 223
第6章 OpenVPN的两种典型应用 231
6.1 多个远程单用户访问内网 231
6.2 连接两个局域网 232
6.2.1 安装OpenVPN服务器端和客户端 236
6.2.2 内网机器的设置 238
第7章 OpenVPN的两种运行模式 241
7.1 网桥 241
7.1.1 什么是网桥 241
7.1.2 网桥的实现方式 242
7.2 Linux下实现网桥 242
7.2.1 安装bridge-utils 244
7.2.2 安装后的目录结构 245
7.3 brctl命令 245
7.3.1 设置网桥的实例 246
7.3.2 设置网桥的端口 249
7.3.3 MAC地址管理 251
7.3.4 设置生成树协议 253
7.4 桥接模式OpenVPN 254
7.4.1 网桥管理 255
7.4.2 修改配置文件 258
7.4.3 启动网桥式OpenVPN服务器 259
7.4.4 查看服务器端的网络情况 266
7.4.5 客户端连接OpenVPN服务器 267
7.4.6 查看客户端的网络情况 270
7.5 路由模式OpenVPN 270
7.5.1 修改配置文件 271
7.5.2 启动路由模式OpenVPN服务器 272
7.5.3 查看服务器端的网络情况 279
7.5.4 开启路由转发 280
7.5.5 客户端连接OpenVPN服务器 280
7.5.6 查看客户端的网络情况 284
第8章 管理OpenVPN服务器 285
8.1 管理命令 285
8.2 管理消息输出格式 315
8.3 实时消息格式 315
8.4 CLIENT通知格式 316
8.5 命令解析 317
8.6 管理工具的使用 317
8.6.1 命令行工具——telnet 317
8.6.2 OpenVPN MI GUI工具 318
8.6.3 OpenVPN-Admin工具 322
8.7 实现OpenVPN服务器的高可用 323
8.7.1 客户端实现 324
8.7.2 服务器端实现 326
8.7.3 实例 327
8.8 客户端IP地址的使用 329
8.8.1 net30模式 330
8.8.2 subnet模式 333
8.8.3 p2p模式 336
第9章 控制OpenVPN用户的访问 341
9.1 包过滤文件格式 341
9.1.1 限制对象 341
9.1.2 过滤文件语法 341
9.2 配置OpenVPN服务器 342
9.2.1 编译minimal_pf.so模块 343
9.2.2 编写脚本 345
9.2.3 策略文件 346
9.3 启动OPenVPN服务器 346
9.4 实例测试 348
9.4.1 针对用户的限制 348
9.4.2 针对IP的限制 358
9.5 通过iptables防火墙规则限制OpenVPN用户访问资源 370
9.5.1 OpenVPN的配置文件 370
9.5.2 针对OpenVPN用户的防火墙策略 371
9.5.3 针对OpenVPN用户组的防火墙策略 374
第3部分 应用案例—使用FreeRADIUS验证OpenVPN用户登录 379
第10章 方案一:MySQL后台 379
10.1 安装FreeRADIUS 379
10.1.1 下载FreeRADIUS 380
10.1.2 出错处理 381
10.1.3 安装FreeRADIUS后的目录结构 383
10.2 安装RadiusPlugin 384
10.2.1 下载RadiusPlugin 385
10.2.2 解决依赖问题 385
10.2.3 安装RadiusPlugin 385
10.3 相关配置 386
10.3.1 配置FreeRADIUS 386
10.3.2 添加数据库 390
10.3.3 配置RadiusPlugin 396
10.3.4 配置OpenVPN 398
10.4 启动服务 398
10.4.1 启动FreeRADIUS服务器 398
10.4.2 启动OpenVPN服务器 408
10.5 OpenVPN用户登录验证 409
10.5.1 添加OpenVPN客户端用户 409
10.5.2 测试OpenVPN用户 410
10.5.3 OpenVPN客户端登录 411
10.6 了解OpenVPN的使用情况 414
10.7 使用daloRADIUS Web程序 415
10.7.1 下载安装 416
10.7.2 解决依赖前提 417
10.7.3 导入数据库 420
10.7.4 设置数据库连接 422
10.7.5 使用daloRADIUS 423
10.8 禁止用户登录 428
10.8.1 通过操作MySQL数据库禁止用户登录 428
10.8.2 通过daloRADIUS Web应用程序禁止用户登录 429
第11章 方案二:OpenLDAP后台 431
11.1 下载安装FreeRADIUS-Server-2.1.12 431
11.1.1 编译安装 432
11.1.2 安装后的目录结构 432
11.2 相关配置 433
11.2.1 配置FreeRADIUS-Server 433
11.2.2 配置OpenLDAP 438
11.2.3 配置RadiusPiugin 439
11.3 启动服务 439
11.3.1 启动FreeRADIUS服务器 439
11.3.2 启动OpenVPN服务器 440
11.3.3 启动OpenLDAP服务器 440
11.4 OpenVPN用户登录验证 440
11.4.1 添加OpenVPN客户端用户 440
11.4.2 登录测试 450
11.4.3 OpenVPN客户端登录 452
11.5 禁止用户登录 457
11.5.1 通过LAM Web应用程序 457
11.5.2 使用ldapdelete 458
第4部分 商业OpenVPN服务器 461
第12章 OpenVPN_AS服务器 461
12.1 认识OpenVPN Access Server 462
12.1.1 OpenVPN Access Server系统的构成 462
12.1.2 OpenVPN Access Server开启的端口和服务 463
12.1.3 OpenVPN Access Server在网络中的部署图 463
12.1.4 OpenVPN Access Server的用户认证和管理 464
12.1.5 Virtual VPN子网配置 465
12.1.6 Admin Web UI的主菜单 466
12.2 安装OpenVPN_AS服务器 466
12.2.1 下载并安装OpenVPN_AS服务器 467
12.2.2 安装OpenVPN_AS后的目录结构 472
12.3 配置OpenVPN_AS服务器 479
12.3.1 服务器状态(Status) 480
12.3.2 AS服务器配置(Configuration) 482
12.3.3 用户管理(User Management) 495
12.3.4 设置用户的认证方式(Authentication) 498
12.3.5 工具(Tools) 502
12.4 防火墙设置 503
12.4.1 运行中的规则 503
12.4.2 将运行的规则保存为文件 506
12.5 使用OpenVPN_AS服务器 508
12.5.1 启动OpenVPN_AS服务器 509
12.5.2 客户端的安装及访问 519
12.5.3 使用LDAP方式验证OpenVPN用户 523