本书详细地介绍了FreeBSD操作系统的基本安装、使用、管理方法,以及它在各个领域中的应用。涉及对FreeBSD系统的定制和优化,以及各种应用条件下的系统管理技巧等高级内容,最重要的特色是这些技巧都和FreeBSD下的具体操作结合起来,力图通过深入浅出的概念讲解和具体的操作实例,使读者能够快速学习到必要的知识,从而掌握FreeBSD系统和相关的应用系统。\r\n本书适合正在使用FreeBSD操作系统的用户,也适合想了解该系统的读者。\r\n\r\n
\r\n
\r\n第1版序\r\n第1章 引言 1\r\n1.1 FreeBSD的起源 1\r\n1.1.1 Unix的历史发展 1\r\n1.1.2 FreeBSD的起源和发展 5\r\n1.1.3 当前FreeBSD的版本 7\r\n1.2 FreeBSD的功能特点 8\r\n1.2.1 FreeBSD的特点和应用范围 9\r\n1.2.2 使用FreeBSD的实例 11\r\n1.2.3 关于网络服务器操作系统的调查 12\r\n1.3 其他相关系统和组织 13\r\n1.4 FreeBSD的相关资源 18\r\n1.4.1 联机文档 18\r\n1.4.2 出版物 19\r\n1.4.3 Internet资源 19\r\n1.4.4 商业服务和支持 22\r\n1.5 FreeBSD 5.0新特性 22\r\n1.5.1 下一代SMP支持 22\r\n1.5.2 内核调度实体KSE和线程实现 23\r\n1.5.3 网络I/O和文件系统 25\r\n第2章 安装与配置 27\r\n2.1 安装之前的准备 27\r\n2.1.1 准备硬件 27\r\n2.1.2 安装介质 30\r\n2.1.3 准备启动软盘 33\r\n2.1.4 准备硬盘 34\r\n2.2 安装FreeBSD 39\r\n2.2.1 启动安装系统 39\r\n2.2.2 系统安装程序 44\r\n2.3 基本系统配置 55\r\n2.3.1 设置网络 56\r\n2.3.2 定制控制台 57\r\n2.3.3 其他设置 59\r\n2.3.4 其他安装问题 62\r\n第3章 基本操作与使用 66\r\n3.1 启动与关闭系统 66\r\n3.1.1 Boot Manager 66\r\n3.1.2 系统登录与退出 67\r\n3.1.3 关闭系统 67\r\n3.2 文件与文件系统 69\r\n3.2.1 浏览目录树 69\r\n3.2.2 文件的属性 71\r\n3.2.3 文件系统 73\r\n3.2.4 文件的连接和符号连接 74\r\n3.2.5 文件的编辑 74\r\n3.3 用户的shell环境 77\r\n3.3.1 环境变量 77\r\n3.3.2 shell的高级功能 79\r\n3.3.3 shell脚本 82\r\n3.4 进程管理 84\r\n3.4.1 输入输出重定向和管道 84\r\n3.4.2 管理后台进程 85\r\n3.4.3 停止进程 86\r\n3.4.4 定时执行程序 87\r\n3.5 基本开发环境 89\r\n3.5.1 编译器GCC 89\r\n3.5.2 程序性能分析 90\r\n3.5.3 可执行程序格式 91\r\n3.5.4 使用make维护文件依赖关系 94\r\n3.5.5 CVS代码管理简介 95\r\n第4章 系统管理和维护 97\r\n4.1 系统的启动过程 97\r\n4.1.1 boot loader 97\r\n4.1.2 系统启动脚本 101\r\n4.2 用户管理 103\r\n4.2.1 用户数据 103\r\n4.2.2 增加用户 104\r\n4.2.3 超级用户root 107\r\n4.2.4 登录类别 109\r\n4.2.5 系统级shell设置 110\r\n4.3 磁盘操作 111\r\n4.3.1 设备文件 112\r\n4.3.2 安装文件系统 114\r\n4.3.3 设置fstab文件 118\r\n4.3.4 软盘操作 120\r\n4.4 维护文件系统 121\r\n4.4.1 检查硬盘 121\r\n4.4.2 调整文件系统的目录结构 121\r\n4.4.3 建立文件系统 122\r\n4.4.4 管理交换设备 125\r\n4.5 调整系统设置 126\r\n4.5.1 调整控制台设置 126\r\n4.5.2 配置系统时间 131\r\n4.6 日志与备份 133\r\n4.6.1 系统日志 133\r\n4.6.2 系统备份 136\r\n第5章 网络配置与使用 140\r\n5.1 DOD参考模型与TCP/IP 140\r\n5.2 基本网络设置 149\r\n5.2.1 配置计算机名字 150\r\n5.2.2 配置网络界面 150\r\n5.2.3 配置路由 155\r\n5.2.4 配置名字解析 159\r\n5.2.5 基本网络诊断工具 160\r\n5.3 简单网络规划和路由 162\r\n5.3.1 路由支持 162\r\n5.3.2 网络划分 162\r\n5.3.3 动态路由 164\r\n5.3.4 代理ARP 166\r\n5.4 基本网络应用 168\r\n5.5 下一代IP 173\r\n5.5.1 IPv6简介 174\r\n5.5.2 FreeBSD对IPv6的支持 176\r\n5.5.3 6Bone虚拟网络 181\r\n第6章 拨号网络与广域网连接 182\r\n6.1 串口和modem 182\r\n6.2 PPP协议 184\r\n6.3 使用PPP进行拨号连接 184\r\n6.3.1 手工拨号 185\r\n6.3.2 设置拨号连接 186\r\n6.3.3 简单过滤处理与日志 189\r\n6.3.4 认证方式 192\r\n6.3.5 高级控制功能 192\r\n6.4 使用pppd及拨号程序 194\r\n6.4.1 外部拨号程序 194\r\n6.4.2 pppd简单配置 195\r\n6.5 拨号访问FreeBSD 196\r\n6.5.1 接受拨号终端访问 196\r\n6.5.2 PPP服务器基本设置 198\r\n6.5.3 PPP服务器高级配置 200\r\n6.6 其他广域网连接方式 204\r\n第7章 系统定制 206\r\n7.1 安装应用软件 206\r\n7.1.1 应用软件的类别 207\r\n7.1.2 Packages Collection 208\r\n7.2 编译应用软件 210\r\n7.2.1 Ports Collection 211\r\n7.2.2 手工编译安装程序 215\r\n7.3 定制FreeBSD内核 215\r\n7.3.1 为编译内核准备源代码 216\r\n7.3.2 编译安装新内核 216\r\n7.3.3 内核配置选项 219\r\n7.4 定制系统 231\r\n7.4.1 内核模块 231\r\n7.4.2 定制全部系统 232\r\n7.4.3 升级系统 235\r\n7.4.4 安装程序 237\r\n第8章 系统监视与优化 238\r\n8.1 了解系统状态 238\r\n8.1.1 查看系统状态 238\r\n8.1.2 proc文件系统 244\r\n8.1.3 使用sysctl 245\r\n8.2 简单网络管理 251\r\n8.2.1 SNMP协议 251\r\n8.2.2 FreeBSD的SNMP支持 255\r\n8.3 系统监视 257\r\n8.3.1 获取基本数据 257\r\n8.3.2 图形工具RRDtools 258\r\n8.3.3 MRTG 259\r\n8.4 内核优化 259\r\n8.4.1 基本优化方法 259\r\n8.4.2 调整内核参数 261\r\n8.4.3 性能相关的内核参数 265\r\n8.4.4 磁盘和文件系统优化 267\r\n8.5 RAID与卷管理 281\r\n8.5.1 RAID简介 281\r\n8.5.2 使用ccd的简单RAID支持 285\r\n8.5.3 Vinum的简单配置 287\r\n8.5.4 Vinum高级配置 291\r\n第9章 桌面系统硬件支持 300\r\n9.1 常用硬件 300\r\n9.1.1 高级电源管理 300\r\n9.1.2 声卡设备 303\r\n9.1.3 PCMICA和USB支持 308\r\n9.2 GUI界面 312\r\n9.2.1 X Window与XFree86 312\r\n9.2.2 安装XFree86 3.3.x 313\r\n9.2.3 安装和配置XFree86 4 324\r\n9.3 配置文件XF86Config 330\r\n9.3.1 文件搜寻路径 331\r\n9.3.2 可加载模块 331\r\n9.3.3 X服务器选项 332\r\n9.3.4 键盘设置 333\r\n9.3.5 鼠标设置 333\r\n9.3.6 显示器设置 334\r\n9.3.7 显示卡设置 335\r\n9.3.8 屏幕设置 336\r\n第10章 配置桌面环境 338\r\n10.1 桌面环境介绍 338\r\n10.1.1 桌面环境的额外内涵 338\r\n10.1.2 桌面环境的不同部分 339\r\n10.2 X Window基础 340\r\n10.2.1 X Window的基本概念 340\r\n10.2.2 进入X Window 348\r\n10.2.3 定制X Window的基本方法 354\r\n10.2.4 桌面环境简介 359\r\n10.3 中文环境 359\r\n10.3.1 中文化概述 360\r\n10.3.2 设置中文环境 363\r\n10.3.3 传统中文化技术 367\r\n10.4 打印配置 368\r\n10.4.1 系统结构 368\r\n10.4.2 配置打印机 369\r\n10.4.3 使用和控制打印机 375\r\n10.5 其他系统应用程序 376\r\n10.5.1 系统仿真功能 376\r\n10.5.2 运行Linux应用程序 378\r\n第11章 高级系统管理 382\r\n11.1 NIS服务 382\r\n11.1.1 NIS系统结构 382\r\n11.1.2 规划和实施NIS 383\r\n11.1.3 NIS netgroup 387\r\n11.2 网络文件系统NFS 388\r\n11.2.1 NFS服务器 388\r\n11.2.2 NFS客户 390\r\n11.2.3 自动安装守护进程AMD 391\r\n11.3 目录与LDAP 394\r\n11.3.1 目录简介 394\r\n11.3.2 安装和配置OpenLDAP 397\r\n11.3.3 使用OpenLDAP 401\r\n11.3.4 实用LDAP选项 405\r\n11.4 认证与计费 410\r\n11.4.1 Radius简介 410\r\n11.4.2 安装和实现Radius 411\r\n11.4.3 实际Radius应用问题 416\r\n11.5 应用PAM 417\r\n11.5.1 PAM简介 418\r\n11.5.2 支持Radius与LDAP 419\r\n第12章 常用网络服务 422\r\n12.1 基本网络服务 422\r\n12.2 DNS服务 427\r\n12.2.1 DNS的体系结构 427\r\n12.2.2 配置DNS缓冲 428\r\n12.2.3 定义名字服务 432\r\n12.3 电子邮件服务 436\r\n12.3.1 邮件服务基础 436\r\n12.3.2 邮件服务的快速设置 439\r\n12.3.3 控制台邮件处理 441\r\n12.3.4 邮件系统的维护和管理 442\r\n12.3.5 用户邮件管理 446\r\n12.3.6 垃圾邮件的防范简介 449\r\n第13章 内部网络服务 451\r\n13.1 Windows对基本协议的支持 451\r\n13.2 NetBIOS与SMB/CIFS协议 452\r\n13.2.1 NetBIOS名字解析 453\r\n13.2.2 SMB/CIFS协议 455\r\n13.3 配置和使用Samba 457\r\n13.3.1 基本配置与使用 458\r\n13.3.2 samba配置选项介绍 461\r\n13.3.3 高级设置选项 469\r\n13.3.4 网络规划与设置 475\r\n13.4 访问SMB系统资源 477\r\n13.4.1 命令行方式 477\r\n13.4.2 文件系统方式 479\r\n13.5 DHCP支持 481\r\n13.5.1 DHCP的工作过程 482\r\n13.5.2 设置和使用DHCP 483\r\n13.5.3 提供备份的DHCP设置 487\r\n第14章 系统安全 489\r\n14.1 系统及网络安全概念 489\r\n14.1.1 认证与加密 490\r\n14.1.2 当前的安全问题 492\r\n14.1.3 防火墙技术 494\r\n14.2 系统安全设置 497\r\n14.2.1 用户登录控制 498\r\n14.2.2 安全认证方式 500\r\n14.2.3 系统资源控制 507\r\n14.2.4 网络服务与应用程序安全 511\r\n14.3 受限安全网络服务 516\r\n14.3.1 受限服务的设置 516\r\n14.3.2 虚拟服务器 518\r\n14.4 其他安全工具 520\r\n14.4.1 安全检查工具 520\r\n14.4.2 网络数据侦听 521\r\n第15章 防火墙与VPN 526\r\n15.1 代理服务 526\r\n15.1.1 Web代理 526\r\n15.1.2 Email代理 530\r\n15.1.3 其他代理系统 535\r\n15.2 包过滤与地址转换 536\r\n15.2.1 设置和使用ipfw/natd 536\r\n15.2.2 ipfw的高级设置 546\r\n15.2.3 设置和使用ipfilter 549\r\n15.3 构建防火墙 554\r\n15.3.1 构建原则 555\r\n15.3.2 防火墙的特殊类型 558\r\n15.3.3 系统定制 560\r\n15.4 SSH加密连接 562\r\n15.4.1 使用和设置SSH 562\r\n15.4.2 SSH加密通道 566\r\n15.5 安全传输层协议SSL 569\r\n15.5.1 证书及CA体系 569\r\n15.5.2 SSL基本环境 572\r\n15.6 IP安全体系 577\r\n15.6.1 IPSec协议族 577\r\n15.6.2 FreeBSD的IPSec支持 581\r\n15.7 构建VPN 587\r\n15.7.1 VPN基本概念 588\r\n15.7.2 VPN实现 589\r\n第16章 设置WWW服务 591\r\n16.1 基本概念 591\r\n16.1.1 超文本传输协议HTTP 591\r\n16.1.2 数据处理方式 593\r\n16.2 安装和设置Apache 595\r\n16.2.1 基本安装 596\r\n16.2.2 配置Apache服务器 597\r\n16.3 服务器的安全控制 614\r\n16.3.1 对IP地址和域名的控制 615\r\n16.3.2 基于用户的访问控制 616\r\n16.3.3 其他认证方式 617\r\n16.3.4 安全连接方式SSL 619\r\n16.3.5 CGI和SSI的安全性 620\r\n16.4 调整服务器性能 620\r\n16.4.1 单服务器性能调整 621\r\n16.4.2 提升静态网页服务能力的综合方式 624\r\n16.5 集群及负载均衡技术 625\r\n16.5.1 基于DNS的负载均衡 626\r\n16.5.2 反向代理负载均衡 627\r\n16.5.3 基于NAT的负载均衡技术 628\r\n附录A 补充材料 630\r\n附录B 参考资料 643\r\n附录C 术语表 644\r\n附录D 光盘介绍 650 \r\n
\r\n
FreeBSD在中国的未来
(代第2版序)
从本书第1版出版到现在的这段时间中, FreeBSD系统又有了相当大的改变, 目前版本4.x中包括了很多3.x中没有的内容, 因此很多朋友很早就建议我进行版本更新以及时反映系统版本的变化.
从去年8月份起, 我就在考虑重新修订这本书的问题, 事实上本书的第1版在很多方面仍然存在缺陷, 因此在我的构想当中, 不仅仅是简单的修订, 而是要进行全面的更新和补充. 然而, 由于终日仍需要为生计奔波, 因此修订工作不得不一再延迟.
在这段日子里, 我遇到很多朋友, 他们在各个领域内使用FreeBSD系统完成他们的工作, 一位朋友一直致力于FreeBSD的推广, 他说服一家公司提供FreeBSD的发行和技术服务的支持, 然而, 由于市场推广效果不好, 该公司事实上停止了相应的支持.
FreeBSD在技术上的成功和优势是没有人能提出反对意见的, 但是目前的时代不再是工程师的时代, 技术人员并没有过多的话语权. 像FreeBSD这样默默地在后台工作以至于快被用户遗忘的系统, 可能真是一个老古董了, 如果时不时地出现一些蓝屏错误, 反而能提醒用户自己的存在. 不是这样的吗?那些保健品的恶俗广告不也挺成功的吗?
目前使用FreeBSD的用户基本上都限于技术公司内部, 有些公司也使用FreeBSD作为专用设备的操作系统, 例如防火墙等. 就目前社会的现状来讲, 将FreeBSD用作专用设备的操作系统是比较聪明的做法, 因为普通用户认可专用设备, 而不管内部是什么系统. 当然, 这些用户当中使用Linux的也不少, 但是选择FreeBSD的另一个好处是许可权比较宽松. 目前大部分使用Linux 作为专用设备操作系统的公司, 都没有严格遵守GPL协议发布他们的代码, 比较起来, 使用FreeBSD的公司至少更为诚实. 可靠和值得信赖.
虽然FreeBSD的应用还不是十分普及, 但我想任何事物从引入到普及都有一个过程, 比较起来, 目前的FreeBSD用户比几年前要多得多了吧!如果与Linux等系统的发展速度相比较, FreeBSD的发展速度实在是太慢了. 由于FreeBSD的用户局限于技术人员, 这就导致了FreeBSD的商业支持和应用不能很好地发展, 因此目前FreeBSD的主要发展动力还是来自FreeBSD用户本身.
未来几年, 我们可以做哪些工作以促进FreeBSD在中国的发展呢?我认为有几项工作可以去做:
普及和教育:本书就是这样的一个尝试, 同时也希望更多的人加入到推广技术的行列中来.
宣传和鼓动:没有人会把话语权主动让给我们, 只有靠我们自己去争取, 我为一些杂志写文章也是出于这个目的, 既然现实如此, 那么最好的方法就是更好地去适应现实.
本地化:目前Linux的本地化已经比较完善, 我们所需要的就是将这些工作移植到FreeBSD下, 并通过Ports Collection进行维护, 进而反馈给整个FreeBSD社区, 既是对FreeBSD本身的贡献, 也是对FreeBSD国内普及的贡献.
中文安装:推广FreeBSD应用的一种方法是提供更人性化的安装, 它能使普通用户更容易接受FreeBSD, 更为重要的是, 它可以为我们争取话语权, 让更多的人认识FreeBSD. 我已经完成了一个初步的安装程序, 将附在本书的光盘中提供给大家, 以抛砖引玉. 未来, 这些工作可以和FreeBSD的下一代安装界面libh结合起来, 回馈FreeBSD社区.
系统研究:我发现有不少人对系统内核和极限编程感兴趣, 这是非常有意义的, 希望未来有国内人员进入FreeBSD的core team, 如果那时他们能告诉我, 这本书对他们有一定影响, 于我愿足矣!对于这些进行系统研究的朋友, 我的建议是:尽量遵循已有的规范和标准, 以使你们的工作能非常容易地被core team接受, 整个FreeBSD应该是一个整体, 因而必须考虑协调.
商业推广:虽然FreeBSD的发展不依赖于商业, 但商业推广必将带来更大的推广力度. 我认为在有些产品领域中FreeBSD占有极大的优势, 如Email. Web服务器. 网络安全产品等等. 但对于普通用户来讲, 配置和操作可能麻烦一些, 因此, 将操作系统和应用程序捆绑在一起作为一个完整的应用服务器系统执行定制安装, 这可能是一个解决问题的途径.
对于我们来讲, 只能根据自己的兴趣选择一些工作去做, 我个人主要选择了普及和教育方向, 如果有时间和精力的话, 还会继续在其他几个方面努力, 特别是如果能做到商业推广, 就可以如同BSD MALL(前CDROM)去支持FreeBSD开发成员一样, 真正为FreeBSD在中国的发展提供一个比较良好的环境.
显然, 即使不加任何努力, FreeBSD也会自己继续发展下去, 但为什么不加入这个推动其发展的行列呢?我们不应该一切都等待他人将现成的东西做好, 只知道享用自由软件的大餐.
未来几年中, 希望在中国的FreeBSD社区中至少能出现以下有意义的工作, 建立一个广泛的社区组织和门户站点来团结所有的FreeBSD用户, 能够有比较正式的光盘发行, 而不是仍然采取简单刻录的方法, 此外, 开发工作也应该有效地组织起来, 等等.
致谢
清华大学的孙喜明博士对于本书提出了很好的建议, 特别是对英文书名的建议. 孙喜明博士在Windows. FreeBSD和Linux系统的编程方面有很深的造诣.
感谢我的妻子魏群对我的理解和支持, 这本书的修订工作花费了我大量的时间和精力, 而在此期间, 她给了我无比重要的鼓励, 承担了相当多的精神压力和家庭负担.
王波于2002年3月21日
wb@freebsd.org.cn
第1版序
决定为自己的书写序是一件非常愉快的事情, 因为在这里就不必太关心技术细节, 而可以由着自己的性子胡言乱语一番, 而读者一般也不会介意这些. 假使真的介意的话, 也大可以将这部分略去不看, 而直接翻看后面的实际内容.
写这么一本书的想法始于1998年6月, 那时国内媒体对Linux的宣传刚刚开始, 那个时候我就在想, 其实Internet上的宝贝绝不止Linux一个. Linux之所以突然走红, 除了它本来就相当流行之外, 还与它被反微软的诸多厂商选中是分不开的, OS/2. Netware分别在不同的领域败下阵来, 他们只好到Internet上寻找新力量. 然而, 仅仅跟随国外媒体进行亦步亦趋的宣传, 也容易淹没Internet中的其他宝藏, Linux并不是惟一的自由操作系统, 在某些领域它也不是最好的, 这也就是我向大家介绍FreeBSD的原因.
说到这里, 我想起了一件事情. 我曾和一家免费邮件网站的管理员聊天, 他告诉我他们使用的是Linux系统, 当时我很惊讶, 在我的印象里, 这一批免费邮件站点都应该用FreeBSD系统才对. 然而当我有机会到他们机房去的时候, 我才了解到他错误的根源, 所有服务器的登录提示都被改为Linux!当我请求管理员帮助登录上系统之后, 系统的真实面目就显示出来了, 此后我还发现那个销售免费邮件的公司将另一些软件的名字也进行了更改. 这件事情让我百思不得其解, 为了借用Linux的大名吗?事实上在针对Linux的宣传开始之前, 这家公司的系统已经非常有名了. 为了保守技术秘密吗?只要对FreeBSD有一定了解的使用者, 很快就可以确认操作系统的类型. 假如那家公司的技术人员能够看到我的疑问的话, 我很希望他们能解开我的疑惑.
有一个好的想法只是一个开端, 而将其实现却困难重重. 我最初想完成一本包括Unix入门在内的FreeBSD入门书籍, 然而随后就改变了想法. 毕竟, Unix的入门书籍到处都有, 重复这些工作虽然工作任务相对简单一些, 但很难让读者得到更重要的内容:学会在实际网络中应用FreeBSD系统. 最后我决定包括FreeBSD的具体应用等内容. 因此阅读本书应该具备Unix的基本操作知识, 以及一台PC以便进行实验.
在本书的写作过程中, FreeBSD进行了重要的版本升级, 从原有的2.2.x版本到3.0-RELEASE. 3.1-RELEASE和3.2-RELEASE, 本书中的有些例子是使用老版本系统的结果, 因此就有一些例子与新版本中有所不同. 事实上这些差异相当小, 并不影响具体的操作, 我也会在存在差异的地方给出提示.
写到这里, 心里又有些忐忑不安, 很有些担心有的人读完本书之后会报怨太难, 而另一些人又会认为废话太多. 惟一的希望是, 我的文字不要太差劲. 然而, 当你读完本书之后, 无论你认为本书如何, 我都愿意收到评论, 不管是鼓励还是批评. 假如你是一个入门者, 不很理解本书中提到的一些概念, 不要着急, 当你接触到相关的具体应用时就会发现书中提到内容的用处. 如果你是一个FreeBSD高手, 习惯于阅读英文原版资料, 那也不妨翻阅一下本书, 帮助寻找书中的错误以免误导其他读者, 我相信一个喜欢FreeBSD的使用者也乐于看到更多的人喜欢并使用FreeBSD的. 如果你是一个Linux迷, 我也很希望这本书能为你介绍另一个优秀的操作系统, 顺便提一下, 我的计算机中也安装有一套Red Hat, 不过我不太喜欢它, 相比较而言, Debian和Slackware更简捷一些.
希望你在读完本书之后, 在考虑Web服务器或软件防火墙的时候, 能自觉不自觉地想起FreeBSD系统. 相信我, 在PC平台中的这些领域中它是No.1.
本书成书过程中得到宋健的大力帮助, 在此表示感谢.
王 波
于1999年7月