Squid手册

Size: px
Start display at page:

Download "Squid手册"

Transcription

1 Squid 全套使用手册 整理者 : 哈密瓜 blog: 目录 : 第 1 章 Squid 的简介性描述 1.1 Web 缓存 1.2 Squid 的简明历史 1.3 硬件和操作系统要求 1.4 squid 是开源的 1.5 Squid 的 Web 主页 1.6 获取帮助 1.7 启动 Squid 第 2 章获取 Squid 2.1 版本和发布 2.2 使用源代 2.3 预编译的二进制文件 2.4 匿名 CVS 2.5 devel.squid-cache.org 第 3 章编译和安装 3.1 安装之前 3.2 解开源代码包 3.3 调整内核 3.4 Configure 脚本 3.5 编译 3.6 安装 3.7 打补丁

2 3.8 重运行 configure 第 4 章快速配置向导 4.1 squid.conf 语法 4.2 User IDs 4.3 端口号 4.4 日志文件路径 4.5 访问控制 4.6 可见主机名 4.7 管理联系信息 4.8 下一步 第 5 章运行 Squid 5.1 squid 命令行选项 5.2 对配置文件查错 5.3 初始化 cache 目录 5.4 在终端窗口里测试 squid 5.5 将 squid 作为服务进程运行 5.6 启动脚本 5.7 chroot 环境 5.8 停止 squid 5.9 重配置运行中的 squid 进程 5.10 滚动日志文件 第 6 章访问控制 6.1 访问控制元素 6.2 访问控制规则 6.3 常见用法 6.4 测试访问控制 第 7 章磁盘缓存基础 7.1 cache_dir 指令 7.2 磁盘空间基准 7.3 对象大小限制 7.4 分配对象到缓存目录 7.5 置换策略 7.6 删除缓存对象 7.7 refresh_pattern 第 8 章高级磁盘缓存主题 8.1 是否存在磁盘 I/O 瓶颈? 8.2 文件系统调整选项 8.3 可选择的文件系统 8.4 aufs 存储机制

3 8.5 diskd 存储机制 8.6 coss 存储机制 8.7 null 存储机制 8.8 哪种最适合我? 第 9 章 Cache 拦截 9.1 它如何工作? 9.2 为何要 ( 或不要 ) 拦截? 9.3 网络设备 9.4 操作系统配置 9.5 配置 Squid 9.6 调试问题

4 第 1 章 Squid 的简介性描述 1.1 Web 缓存 这节里需要明白 3 个概念 : cache 命中 - 在 squid 每次从它的缓存里满足 HTTP 请求时发生 cache 命中率, 是所有 HTTP 请求中命中的比例 Web 缓存典型的 cache 命中率在 30% 到 60% 之间 另一个相似 的度量单位叫做字节命中率, 描绘了 cache 提供服务的数据容量 ( 字节数 ) cache 丢失 - 在 squid 不能从它的缓存里满足 HTTP 请求时发生 cache 丢失的理由有很多种 最明显的, 当 squid 第一次接受到对特殊资源的请求时, 就是一个 cache 丢失 类似的情况是,squid 会清除缓存以释放空间给新对象 另外的可能是资源不可到达 原始服务器会指示 cache 怎样处理响应 例如, 它会提示数据不能被缓存, 或在有限的时间内才被重复使用, 等等 cache 确认 - 保证 squid 不对用户返回过时数据 在重复使用缓存对象时,squid 经常从原 始服务器确认它 假如服务器指示 squid 的拷贝仍然有效, 数据就发送出去 否则,squid 升 级它的缓存拷贝, 并且转发给客户 1.2 Squid 的简明历史 对本节感兴趣的读者请阅读英文原文档 1.3 硬件和操作系统要求 Squid 运行在所有流行的 Unix 系统上, 也可以在 Microsoft Windows 上运行 尽管 squid 的 Windows 支持在不断改进, 但也许在 Unix 上容易一些 假如你有一个喜欢的操作系统, 我建议你使用那个 否则, 假如你找人推荐, 我很喜欢 FreeBSD squid 对硬件要求不算高 内存是最重要的资源 内存短缺会严重影响性能 磁盘空间也是另一个重要因素 更多的磁盘空间意味着更多的缓存目标和更高的命中率 快速的磁盘和驱动器也是有利的 如果你舍得花钱,SCSI 磁盘比 ATA 的执行性能好 当然快速的 CPU 也是好的, 但它并不是提高性能的关键因素 因为 squid 对每个缓存响应使用少数内存, 因此在磁盘空间和内存要求之间有一定联系 基本规则是, 每 G 磁盘空间需要 32M 内存 这样,512M 内存的系统, 能支持 16G 的磁盘缓存 你的情况当然会不同 内存需求依赖于如下事实 : 缓存目标大小,CPU 体系 (32 位或 64 位 ), 同时在线的用户数量, 和你使用的特殊功能 人们经常问如此问题 : 我的网络有 X 个用户, 需要配备什么样的硬件给 squid? 因为许多理由, 这样的问题好难回答 特别的, 很难说 X 个用户将产生多少流量 我告诉人们去建立一个有足够磁盘空间, 可存储 3-7 天 web 流量数据的系统 例如, 假如你的用户每天 8 小时耗费 1M 流量 ( 仅仅 HTTP 和 FTP 传输 ), 那就是每天大约 3.5G 所以, 我可以说, 每兆 web 传

5 输你需要 10 到 25G 的磁盘空间 1.4 squid 是开源的 Squid 是自由软件和合作项目 假如你觉得 squid 有用, 请考虑以下面一种或几种方法来回报该项目 : 1. 参与 squid 用户讨论列表, 回答问题和帮助新用户 2. 测试新版本, 报告 bug 或其他问题 3. 致力于在线文档和 FAQ 假如你发现错误, 将它报告给维护者 4. 将你的局部修改提交给开发者 5. 对开发者提供财政支持 6. 告诉开发者你想要的新功能 7. 告诉你的朋友和同学,Squid 非常 Cool Squid 是在 GNU 公用许可证 (GPL) 下发行的自由软件 关于 GPL 的更多信息请见 : Squid 的 Web 主页 Squid 的主页在 你自己阅读该站点吧 1.6 获取帮助 FAQ Squid 的 FAQ 文档在 是对新用户的好 信息资源 邮件列表 Squid 有三个邮件列表可用 邮件列表主页在 : Squid 用户 订阅该邮件列表, 发邮件到 squid-users-subscribe@squid-cache.org Squid 公告 订阅该邮件列表, 发邮件到 squid-announce-subscribe@squid-cache.org Squid 开发 加入该邮件列表有所限制 它的内容发布在

6 archive/squid-dev/ 职业支持 即付费的支持 - 职业支持服务提供商列表, 请见 启动 Squid 请按下面的章节一步一步来吧 第 2 章获取 Squid 2.1 版本和发布 Squid 开发者定期发布源代码 每一个发布版有一个版本号, 例如 2.5.STABLE4 版本号的第 三部分以 STABLE 或 DEVEL( 短期开发版本 ) 开头 也许你能猜到,DEVEL 版本倾向于拥有更新, 更试验性的功能 但也许它们有更多的 bugs 无经验的用户不应该运行 DEVEL 版本 假如你选择运行一个 DEVEL 版本, 并且遇到了问题, 请将问题报告给 Squid 维护者 在一段时间的开发期后,Squid 版本号变为 STABLE 该版本适合于普通用户 当然, 即使稳 定版可能也有一些 bugs 高的稳定版本 ( 例如 STABLE3,STABLE4) 应该 bugs 更少 假如 你特别关心稳定性, 你应该使用这些最近发布版本中的一个 2.2 使用源代为什么你不能 copy 一份预编译的二进制代码到你的系统中, 并且期望它运行良好呢? 主要理由是 squid 的代码需要知道特定操作系统的参数 实际上, 最重要的参数是打开文件描述符的最大数量 Squid 的./configure 脚本在编译之前侦察这些值 假如你获取一个已编译的使用某个参数值的 squid 到另一个使用不同参数值的系统中, 可能会遇到问题 另一个理由是许多 squid 功能在编译时必须被激活 假如你获取一个别人已编译的 squid 文件, 它不包含你所需要的功能, 那么你又得再编译一遍 最后, 共享库的问题可能使得在系统之间共享可执行文件困难 共享库在运行时被装载, 如已知的动态链接一样 squid 在编译时会侦察你系统中的 C 库的某些功能 ( 例如它们是否被提供, 是否能运行等 ) 尽管库功能不常改变, 但两个不同的系统的 C 库之间可能有明显的区别 如果两个系统差别太大, 就会对 Squid 造成问题 获取 squid 的源代码是非常容易的 请访问 squid 的首页 : 首页有链接指向不同的稳定版和开发版 假如你不在美国, 那么请访问 squid 的众多镜像站点中的一个 镜像站点通常以 "wwwn.cc.squid-cache.org" 命名,N 是数字,CC 是国家的两位代码 例如,www1.au.squid-cache.org 是澳大利亚的镜像站点, 在主页上有链接指向不同的镜像站点

7 每一个 squid 发布版分支 ( 例如 Squid-2.5) 有它自己的 HTML 页面 该页面有链接指向源代码, 以及与其他发布版的差别 假如你从一个发布版升级到下一个, 你应该下载这些差别文件, 并且打上补丁, 请见 3.7 章节中的描述 每个版本的发布页描述新功能和重要的改进, 也有链接指向已经修正的 bugs 如果 web 访问不可行, 你能从 ftp://ftp.squid-cache.org 的 FTP 服务器获取源代码, 或者使用其他 FTP 镜像 要获取当前版本, 请访问 pub/squid-2/devel 或 pub/squid- 2/STABLE 目录 FTP 镜像也在许多国家有, 你能用同样的国家代码去猜测一些 FTP 镜像站点, 例如 ftp1.uk.squid-cache.org 当前的 Squid 发布版本大约 1M 大小 在下载完压缩的打包文件后, 你能继续第 3 章 2.3 预编译的二进制文件 一些 Unix 发布版可能预包含了 Squid 的编译版 对 Linux 系统, 你可以找到 Squid 的 RPM 包 通常 squid RPM 包含在你所买的 Linux 光碟里 Freebsd/Netbsd/OpenBSD 也在它们 的 ports 或者 packages 里面包含了 squid 虽然 RPM 或者预编译的 packages 能节省你一些时间, 但它们也有一些弊端 就像我提过的一样, 在你开始编译 squid 之前, 某些功能必须被激活或禁止 而你安装的预编译的包可能不包含你想要的特定功能 而且,squid 的./configure 脚本侦察你系统中的特定参数, 这些在你系统中的参数可能与编译它的机器的参数不同 最后, 假如你想对 squid 打补丁, 你必须等某个人编译更新的 RPM 或 packages, 或者你还 得自己找源代码编译 我强烈建议你从源代码编译 squid, 当然怎样选择由得你 2.4 匿名 CVS 你能匿名访问 squid 的 CVS 文件 ( 只读 ) 以保持你的源代码同步更新 使用 CVS 的有利面 是你能轻易获取当前运行版本的补丁 这样就容易发现近来改变了什么 将这些补丁打到你所运行的版本中, 有效的保持你的源代码和官方版本的同步 CVS 使用树型索引系统, 树干叫做头分支 对 Squid 而言, 这里也是所有的新改变和新功能 的存放之地 头分支通常包含试验性的, 也许不太稳定的代码 稳定的代码通常在其他分支上 为了有效的使用 squid 的匿名 CVS, 你首先应知道版本和分支是怎样被标明不同的 例如, 版本 2.5 分支被命名为 SQUID_2_5 具体的发布有长的命名, 例如 SQUID_2_5_STABLE4 为了得到 squid 版本 2.5.STABLE4, 请使用 SQUID_2_5_STABLE4 标签 ; 使用 SQUID_2_5 得到最近的 2.5 分支的代码

8 为了使用 squid 匿名 CVS 服务, 你首先必须设置 CVSROOT 环境变量 : csh% setenv CVSROOT:pserver:anoncvs@cvs.squid-cache.org:/squid, 或者, 对 Bourne shell 用户 : sh$ CVSROOT=:pserver:anoncvs@cvs.squid-cache.org:/squid sh$ export CVSROOT 然后你就可以登陆到服务器 : % cvs login (Logging in to anoncvs@cvs.squid-cache.org) CVS password: 在提示符下, 敲入 anoncvs 作为密码 现在你可以用这个命令检查源代码树 : % cvs checkout -r SQUID_2_5 -d squid-2.5 squid -r 选项指定获取修订标签 省略 -r 选项你将获得头分支 -d 选项改变存放文件的顶级目录名 假如你省略 -d 选项, 顶级目录名就与模块名字一样 最后的命令行参数 (squid) 是要检查的模块名字 一旦你检查完 squid 源代码树, 你能运行 cvs update 命令去升级你的文件, 和保持文件同步 其他命令包括 :cvs diff, cvs log, 和 cvs annotate 想获取更多 CVS 知识, 请访问 : 2.5 devel.squid-cache.org Squid 的开发者维持一个独立的站点, 当前运行在 SourceForge, 提供了试验性的 squid 功能 请检查它们在 在这里你能发现许多正在开发的工程, 它们还未集成到 squid 的官方源代码里 你能通过 SourceForge 的匿名 CVS 服务来访问这些工程, 或者下载与标准版本不同的差别文件 第 3 章编译和安装 3.1 安装之前 假如你使用 unix 有一段时间, 并且已编译过许多其他软件包, 那么只需快速的扫描本章 编译 安装 squid 的过程与安装其他软件相似 为了编译 squid, 你需要一个 ANSI C 编译器 不要被 ANSI 字眼吓倒 假如你已经有一个编

9 译器, 它顺从 ANSI 指令, 那么也一样 GNU C 编译器 (gcc) 是很好的选择, 它被广泛使用 大部分操作系统在其标准安装中附带了 C 编译器, 不过 Solaris 和 HP-UX 除外 假如你使用 这样的操作系统, 那可能没有安装编译器 理论上你应该在即将运行 squid 的机器上编译 squid 安装过程侦察你的操作系统以发现特定的参数, 例如可用文件描述符的数量 然而, 假如你的系统没有 C 编译器存在, 你也许会在其他机器上编译 squid, 然后把二进制代码 copy 回来 如果操作系统不同, 那么 squid 可能会遇到问题 假如操作系统有不同的内核配置,squid 会变得混乱 除了 C 编译器, 你还需要 perl 和 awk awk 是所有 unix 系统的标准程序, 所以你不必担心 它 perl 也是相当普及的, 但它也许没有默认安装在你的系统上 你需要 gzip 程序来解压源 代码发布文件 对 Solaris 用户, 请确认 /usr/ccs/bin 包含在你的 PATH 环境变量里, 即使你使用 gcc 编译 器 为了编译 squid,make 和 ar 程序需要在这个目录找到 3.2 解开源代码包 在下载完源代码后, 你需要在某个目录解开它 具体哪个目录无关紧要 你能解开 squid 在你的家目录或任何其他地方, 大概需要 20M 的自由磁盘空间 我个人喜欢用 /tmp 使用 tar 命令来展开源代码目录 : % cd /tmp % tar xzvf /some/where/squid-2.5.stable4-src.tar.gz 一些 tar 程序不支持 z 选项, 该选项自动解压 gzip 文件 如果这样, 你需要运行如下命令 : % gzip -dc /some/where/squid-2.5.stable4-src.tar.gz tar xvf - 一旦源代码被展开, 下一步通常是配置源代码树 然而, 假如这是你第一次编译 squid, 你应确 认特定的内核资源限制足够高 怎样发现, 请继续 3.3 调整内核 Squid 在高负载下, 需要大量的内核资源 特别的, 你需要给你的系统配置比正常情况更高的 文件描述符和缓存 文件描述符的限制通常很恼人 你最好在开始编译 squid 之前来增加这些 限制的大小 因为这点, 你可能为了避免重建内核的麻烦, 而倾向于使用预编译的二进制版本 不幸的是, 不管如何你必须重建一个新内核 squid 和内核通过数据结构来交换信息, 数据结构的大小不能超过设置的文件描述符的限制 squid 在运行时检查这些设置, 并且使用最安全的 ( 最小的 ) 值 这样, 即使预编译的二进制版本有比你的内核更高的文件描述符, 但还是以你系统内核的实际数值为主 为了改编一些参数, 你需要重建新内核 这个过程在不同的操作系统之间不同 假如需要, 请参 阅 Unix 系统管理员手册 (Prentice Hall 出版 ) 或者你的操作系统文档 假如你正使用 Linux,

10 可能不必重建内核 文件描述符 文件描述符是一个简单的整数, 用以标明每一个被进程所打开的文件和 socket 第一个打开的 文件是 0, 第二个是 1, 依此类推 Unix 操作系统通常给每个进程能打开的文件数量强加一个 限制 更甚的是,unix 通常有一个系统级的限制 因为 squid 的工作方式, 文件描述符的限制可能会极大的影响性能 当 squid 用完所有的文件描述符后, 它不能接收用户新的连接 也就是说, 用完文件描述符导致拒绝服务 直到一部分当前请求完成, 相应的文件和 socket 被关闭,squid 不能接收新请求 当 squid 发现文件描述符短缺时, 它会发布警告 在运行./configure 之前, 检查你的系统的文件描述符限制是否合适, 能给你避免一些麻烦 大 多数情况下,1024 个文件描述符足够了 非常忙的 cache 可能需要 4096 或更多 在配置文 件描述符限制时, 我推荐设置系统级限制的数量为每个进程限制的 2 倍 通常在你的 Unix shell 中能找到系统的文件描述符限制 所有的 C shell 及其类似的 shell 有内建的 limit 命令 更新的 Bourne shell 及其类似的 shell 有一条叫做 ulimit 的命令 为了发现你的系统的文件描述符限制, 试运行如下命令 : csh% limit descriptors unlimited csh% limit descriptors descriptors 4096 或者 sh$ ulimit -n unlimited sh$ ulimit -n 4096 在 Freebsd 上, 你能使用 sysctl 命令 : % sysctl -a grep maxfiles kern.maxfiles: 8192 kern.maxfilesperproc: 4096 如果你不能确认文件描述符限制, squid 的./configure 脚本能替你做到 当你运 行./configure 时, 请见 3.4 章节, 观察末尾这样的输出 : checking Maximum number of file descriptors we can open 假如其他的 limit,ulimit, 或者./configure 报告这个值少于 1024, 你不得不在编译 squid 之 前, 花费时间来增加这个限制值的大小 否则,squid 在高负载时执行性能将很低 增加文件描述符限制的方法因系统不同而不同 下面的章节提供一些方法帮助你开始

11 Freebsd,NetBSD,OpenBSD 编辑你的内核配置文件, 增加如下一行 : options MAXFILES=8192 在 OpenBSD 上, 使用 option 代替 options 然后,configure, 编译, 和安装新内核 最后 重启系统以使内核生效 Linux 在 Linux 上配置文件描述符有点复杂 在编译 squid 之前, 你必须编辑系统 include 文件中的一个, 然后执行一些 shell 命令 请首先编辑 /usr/include/bits/types.h 文件, 改变 FD_SETSIZE 的值 : #define FD_SETSIZE 8192 下一步, 使用这个命令增加内核文件描述符的限制 : # echo 8192 >; /proc/sys/fs/file-max 最后, 增加进程文件描述符的限制, 在你即将编译 squid 的同一个 shell 里执行 : sh# ulimit -Hn 8192 该命令必须以 root 运行, 仅仅运行在 bash shell 不必重启机器 使用这个技术, 你必须在每一次系统启动后执行上述 echo 和 ulimit 命令, 或者至少在 squid 启动之前 假如你使用某个 rc.d 脚本来启动 squid, 那是一个放置这些命令的好地方 Solaris 增加该行到你的 /etc/system 文件 : set rlim_fd_max = 4096 然后, 重启机器以使改动生效 Mbuf Clusters BSD 基础的网络代码使用一个叫做 mbuf( 参阅 W.R.Stevens 的 TCP/IP 描述卷 2) 的数据结构 Mbuf 典型的是小块内存 ( 例如 128 字节 ) 较大的网络包的数据存储在 mbuf clusters 里 内核可能给系统可用的 mbuf clusters 的总数量强加一个最高限制 你能使用 netstat 命令来发现这个限制 : % netstat -m 196/6368/32768 mbufs in use (current/peak/max): 146 mbufs allocated to data 50 mbufs allocated to packet headers 103/6182/8192 mbuf clusters in use (current/peak/max)

12 13956 Kbytes allocated to network (56% of mb_map in use) 0 requests for memory denied 0 requests for memory delayed 0 calls to protocol drain routines 在这个例子里, 有 8192 个 mbuf clusters 可用, 但是永远不会同时用到 6182 个 当系统 用尽 mbuf clusters 时,I/O 机制例如 read() 和 write() 返回 无缓存空间可用 的错误信息 NetBSD 和 OpenBSD 使用 netstat -m 不会显示 mbuf 的输出 代替的, 它们在 syslog 里 报告 :"WARNING: mclpool limit reached" 为了增加 mbuf clusters 的数量, 你必须在内核配置文件里增加一个选项 : options NMBCLUSTERS=16384 Squid 中文权威指南 临时端口范围 临时端口是 TCP/IP 栈分配给出去连接的本地端口 换句话说, 当 squid 发起一条连接到另一 台服务器, 内核给本地 socket 分配一个端口号 这些本地端口号有特定的范围限制 例如, 在 FreeBSD 上, 默认的临时端口范围是 临时端口号的短缺对非常忙的代理服务器 ( 例如每秒数百个连接 ) 来说, 会较大的影响性能 这 是因为一些 TCP 连接在它们被关闭时进入 TIME_WAIT 状态 当连接进入 TIME_WATI 状态 时, 临时端口号不能被重用 你能使用 netstat 命令来显示有多少个连接进入这个状态 : % netstat -n grep TIME_WAIT Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp TIME_WAIT tcp TIME_WAIT tcp TIME_WAIT tcp TIME_WAIT tcp TIME_WAIT tcp TIME_WAIT tcp TIME_WAIT tcp TIME_WAIT tcp TIME_WAIT 注意这个例子中既有客户端连接又有服务器端的连接 客户端连接有 3128 作为临时端口号, 服务器端连接有 80 作为远程主机的端口号 临时端口号出现在本地地址栏里 在该例子里, 它 们是 秒

13 如果你没有看到数千个临时端口在 TIME_WAIT 状态, 那也许不必增加这个端口范围 在 Freebsd 上, 用如下命令增加临时端口范围 : # sysctl -w net.inet.ip.portrange.last=30000 在 OpenBSD 上, 命令类似, 但 sysctl 变量有不同的名字 : # sysctl -w net.inet.ip.portlast=49151 在 NetBSD 上, 事情稍有不同 默认的值是 为了增加这个范围, 需改变最低 限制 : # sysctl -w net.inet.ip.anonportmin=10000 在 Linux 上, 简单的写一对数字到下列指定文件 : # echo " " >; /proc/sys/net/ipv4/ip_local_port_range 不要忘记将这些命令加到你的系统启动脚本中, 以使机器每一次重启后都生效 3.4 Configure 脚本 象许多其他 Unix 软件一样,squid 在开始编译之前使用./configure 脚本来了解操作系统信息./configure 脚本由流行的 GNU autoconf 程序产生 当 script 运行时, 它用不同的方法来侦察系统, 以发现关于库, 函数, 类型, 参数, 和有没有功能被提供等./configure 所做的第一件事情是去找一个 C 编译器 假如 C 编译器没有找到, 或者编译一个简单的测试程序失败,./configure 脚本不能继续./configure 脚本有大量的选项 最重要的是安装 prefix 在运行./configure 之前, 你需要 决定 squid 被安装在哪里 prefix 选项指定 squid 日志, 二进制文件, 和配置文件的默认位置 你可以在安装之后改变这些文件的位置, 但假如你现在决定, 事情更容易 默认的安装位置是 /usr/local/squid.squid 将文件放在 prefix 指定目录下面的 7 个子目录 : % ls -l /usr/local/squid total 5 drwxr-x--- 2 wessels wheel 512 Apr 28 20:42 bin drwxr-x--- 2 wessels wheel 512 Apr 28 20:42 etc drwxr-x--- 2 wessels wheel 512 Apr 28 20:42 libexec drwxr-x--- 3 wessels wheel 512 Apr 28 20:43 man drwxr-x--- 2 wessels wheel 512 Apr 28 20:42 sbin drwxr-x--- 4 wessels wheel 512 Apr 28 20:42 share drwxr-x--- 4 wessels wheel 512 Apr 28 20:43 var Squid 使用 bin,etc,libexec,man,sbin, 和 share 目录存放一些相对较小的文件 ( 或其他目 录 ), 这些文件不经常改变 但 var 目录的文件别有洞天 这里你可以发现 squid 的日志文件, 它增长得非常大 ( 数十或数百兆 ) var 也是实际磁盘 cache 的默认位置 你也许想将 var 目

14 录放在磁盘空间足够的位置, 这样做较容易的方法是使用 --localstatedir 选项 : %./configure --localstatedir=/bigdisk/var 当配置 squid 时, 你不必对这些路径名称担心太多 你以后可以在 squid.conf 文件里改变这 些路径名 configure 选项./configure 脚本有大量的不同选项, 它们以 - 开始 当你敲入./configure --help 时, 能看到选项的完整列表 一些选项对所有 configure 脚本是通用的, 还有一些是 squid 专有的 下面是你可能用得到的标准选项 : --perfix =PREFIX 如前面描述的一样, 这里设置安装目录 安装目录是所有可执行文件, 日志, 和配置文件的默认 目录 在整本书中,$prefix 指你选择的安装目录 --localstatedir =DIR 该选项允许你改变 var 目录的安装位置 默认是 $prefix/var, 但也许你想改变它, 以使 squid 的磁盘缓存和日志文件被存储在别的地方 --sysconfdir =DIR 该选项允许你改变 etc 目录的位置 默认的是 $prefix/etc 假如你想使用 /usr 作为安装位置, 你也许该配置 --sysconfdir 为 /etc. 以下是 squid 的专有./configure 选项 : --enable-dlmalloc[=lib] 在一些系统上, 内建的内存分配机制 (malloc) 在使用 squid 时表现不尽人意 使用 --enabledlmalloc 选项将 squid 源代码包中的 dlmalloc 包编译和链接进来 假如你的系统中已安装 dlmalloc, 你能使用 =LIB 参数指定库的路径 请见 更多关于 dlmalloc 的信息 --enable-gnuregex 在访问控制列表和其他配置指令里,squid 使用正则表达式作为匹配机制 GNU 的正则表达式库包含在 squid 的源代码包里 ; 它可以在没有内建正则表达式的操作系统中使用./configure 脚本侦察你系统中的正则表达式库, 假如必要, 它可以激活使用 GNU 正则表达式 如果因为某些理由, 你想强制使用 GNU 正则表达式, 你可以将这个选项加到./configure 命令后 --enable-carp Cache 数组路由协议 (CARP) 用来转发丢失的 cache 到父 cache 的数组或 cluster 在 10.9 章有更多关于 CARP 的细节 --enable-async-io[=n_threads] 同步 I/O 是 squid 技术之一, 用以提升存储性能 aufs 模块使用大量的线程来执行磁盘 I/O 操

15 作 该代码仅仅工作在 linux 和 solaris 系统中 =N_THREADS 参数改变 squid 使用的线程数量 aufs 和同步 I/O 在 8.4 章中被讨论 请注意 --enable-async-io 是打开其他三个./configure 选项的快捷方式, 它等同于 : --with-aufs-threads=n_threads --with-pthreads --enable-storeio=ufs,aufs --with-pthreads 该选项导致编译过程链接到你系统中的 P 线程库 aufs 存储模块是 squid 中唯一需要使用线 程的部分 通常来说, 如果你使用 --enable-saync-io 选项, 那么不必再单独指定该选项, 因 为它被自动激活了 --enable-storeio=list Squid 支持大量的不同存储模块 通过使用该选项, 你告诉 squid 编译时使用哪个模块 在 squid-2.5 中, 支持 ufs,aufs,diskd, 和 null 模块 通过查询 src/fs 中的目录, 你能得到一个模块列表 LIST 是一个以逗号分隔的模块列表, 例如 : %./configure --enable-storeio=afus,diskd,ufs ufs 模块是默认的, 看起来问题最少 不幸的是, 它性能有限 其他模块可能在某些操作系统中 不必编译 关于 squid 存储模块的完整描述, 请见第 8 章 --with-aufs-threads=n_threads 指定 aufs 存储机制使用的线程数量 ( 见 8.4 章 ) squid 默认根据缓存目录的数量, 自动计算 需要使用多少线程 --enable-heap-replacement 该选项不再使用, 但被保留用于向后兼容性 你该使用 --enable-removal-policies 来代替 --enable-removal-policies=list 排除策略是 squid 需要腾出空间给新的 cache 目标时, 用以排除旧目标的机制 squid-2.5 支 持 3 个排除策略 : 最少近期使用 (LRU), 贪婪对偶大小 (GDS), 最少经常使用 (LFU) 然而, 因为一些理由,./configure 选项使指定的替代策略和需要执行它们的基本数据结构之间 的差别模糊化 LRU 是默认的, 它以双链表数据结构执行 GDS 和 LFU 使用堆栈的数据结构 为了使用 GDS 或 LFU 策略, 你指定 : %./configure --enable-removal-policies=heap 然后你在 squid 的配置文件里选择使用 GDS 或 LFU 假如你想重新使用 LRU, 那么指定 : %./configure --enable-removal-policies=heap,lru 更多的关于替换策略的细节请见 7.5 章

16 --enable-icmp 如在 10.5 章中描述的一样,squid 能利用 ICMP 消息来确定回环时间尺寸, 非常象 ping 程序 你能使用该选项来激活这些功能 --enable-delay-pools 延时池是 squid 用于传输形状或带宽限制的技术 该池由大量的客户端 IP 地址组成 当来自这些客户端的请求处于 cache 丢失状态, 他们的响应可能被人工延迟 关于延时池的更多细节请见附录 C --enable-useragent-log 该选项激活来自客户请求的 HTTP 用户代理头的日志 更多细节请见 13.5 章 --enable-referer-log 该选项激活来自客户请求的 HTTP referer 日志 更多细节请见 13.4 章 --disable-wccp Web cache 协调协议 (WCCP) 是 CISCO 的专有协议, 用于阻止或分发 HTTP 请求到一个或 多个 caches WCCP 默认被激活, 假如你愿意, 可以使用该选项来禁止该功能 --enable-snmp 简单网络管理协议 (SNMP) 是监视网络设备和服务器的流行方法 该选项导致编译过程去编译所 有的 SNMP 相关的代码, 包括一个裁切版本的 CMU SNMP 库 --enable-cachemgr -hostname[=hostname] cachemgr 是一个 CGI 程序, 你能使用它来管理查询 squid 默认 cachemgr 的 hostname 值是空的, 但你能使用该选项来指定一个默认值 例如 : %./configure --enable-cachemgr-hostname=mycache.myorg.net --enable-arp-acl squid 在一些操作系统中支持 ARP, 或者以太地址访问控制列表 该代码使用非标准的函数接口, 来执行 ARP 访问控制列表, 所以它默认被禁止 假如你在 linux 或 solaris 上使用 squid, 你可能用的上这个功能 --enable-htcp HTCP 是超文本缓存协议 -- 类似于 ICP 的内部缓存协议 更多细节请见 10.8 章 --enable-ssl 使用该选项赋予 squid 终止 SSL/TLS 连接的能力 注意这仅仅工作在 web 加速器中用以加速 请求 更多细节请见 章节 --with-openssl[=dir] 假如必要, 你使用该选项来告诉 squid 到哪里找到 OpenSSL 库或头文件 假如它们不在默认位置, 在该选项后指定它们的父路径 例如 : %./configure --enable-ssl --with-ssl=/opt/foo/openssl

17 在这个例子中, 你的编译器将在 /opt/foo/openssl/include 目录中找头文件, /opt/foo/openssl/lib 中找库文件 在 --enable-cache-digests Cache 消化是 ICP 的另一个替代, 但有着截然不同的特性 请见 10.7 章 --enable-err-languages="lang1 lang2..." squid 支持定制错误消息, 错误消息可以用多种语言报告 该选项指定复制到安装目录 ($prefix/share/errors) 的语言 假如你不使用该选项, 所有可用语言被安装 想知道何种语言可用, 请见源代码包里 errors 目录下的目录列表 如下显示如何激活多种语言 : %./configure --enable-err-languages="dutch German French"... --enable-default-err-language=lang 该选项设置 error_directory 指令的默认值 例如, 假如你想使用荷兰语, 你能这样指定 : %./configure --enable-default-err-language=dutch 你也能在 squid.conf 里指定 error_directory 指令, 在附录 A 中有描述 假如你忽略该选项, 英语是默认错误语言 --with-coss-membuf-size=n 循环目录存储系统 (coss) 是 squid 的试验性存储机制 该选项设置 coss 缓存目录的内存缓冲大小 注意为了使用 coss, 你必须在 --enable-storeio 选项里指定存储类型 该参数以字节形式赋值, 默认是 字节或 1M 你能指定 2M 缓冲如下 : %./configure --with-coss-membuf-size= enable-poll unix 提供两个相似的函数用以在 I/O 事件里扫描开放文件描述符 : select() 和 poll()./configure 脚本通常能非常好的计算出何时使用 poll() 来代替 select(). 假如你想强制使用 poll(), 那么指定该选项 --desable-poll 类似的, 如果不使用 poll(), 那么指定该选项 --disable-http-violations squid 默认可以被配置成违背 HTTP 协议规范 你能使用该选项来删除违背 HTTP 协议的代码 --enable-ipf-transparent 在第 9 章中, 我将描述如何配置 squid 来拦截缓存 一些操作系统使用 IP Filter 包来协助拦截缓存 在这些环境下你应该使用该./configure 选项 如果你使用了该选项, 但是编译器提示 src/client_side.c 文件出错, 那是因为 IP Filter 包没有或没有正确的安装在你的系统中 --enable-pf-transparent 你可能需要指定该选项, 使用 PF 包过滤器在操作系统中拦截 HTTP PF 是 OpenBSD 的标准包过滤器, 也可能被发布到其他系统中 假如你使用该选项, 但是编译器提示 src/client_side.c 文件出错, 那是因为 PF 没有实际安装到你的系统中

18 --enable-linux-netfilter Netfilter 是 linux 2.4 系列内核的包过滤器名字 假如你想在 linux2.4 或以后的版本中使用 HTTP 拦截功能, 那么激活该选项 --disable-ident-lookups ident 是一个简单的协议, 允许服务器利用客户端的特殊 TCP 连接来发现用户名 假如你使用该选项, 编译器将把执行这些查询的代码排除出去 即使你在编译时保留了这些代码, 除非你在 squid.conf 文件里指定,squid 不会执行 ident 查询 --disable-internal-dns squid 源代码包含两个不同的 DNS 解决方案, 叫做 内部的 和 外部的 内部查询是默认的, 但某些人可能要使用外部技术 该选项禁止内部功能, 转向使用旧的方式 内部查询使用 squid 自己的 DNS 协议执行工具 也就是说,squid 产生未完成的 DNS 查询并且将它们发送到一个解析器 假如超时, 它重新发送请求, 你能指定任意数量的解析器 该工具的有利处之一是,squid 获得准确无误的 DNS 响应的 TTLs 外部查询利用 C 库的 gethostbyname() 和 gethostbyaddr() 函数 squid 使用一个外部进程池来制造并行查询 使用外部 DNS 解析的主要弊端是你需要更多的辅助进程, 增加 squid 的负载 另一个麻烦是 C 库函数不在响应里传输 TTLs, 这样 squid 使用 postive_dns_ttl 指令提供的一个常量值 --enable-truncate truncate() 系统调用是 unlink() 的替代品 unlink() 完全删除 cache 文件,truncate() 将文件大小设为零 这样做释放了分配给该文件的磁盘空间, 但留下适当的目录接口 该选项存在的理由是, 某些人相信 ( 或希望 )truncate() 比 unlink() 性能表现更好 然而, 压力测试显示两者有很少的或根本没有区别 --disable-hostname-checks 默认的,squid 要求 URL 主机名在一定程度上遵守古老的 RFC 1034 规范 : 标签必须遵循下列 ARPANET 主机名规则 它们必须以字母开始, 以字母或数字结尾, 仅仅包含字母, 数字和下划线 这里字母意味着 ASCII 字符, 从 A 到 Z 既然国际域名日益流行, 你可能希望使用该选项来移除限制 --enable-underscores 该选项控制 squid 针对主机名里下划线的行为 通用的标准是主机名里不包含下划线字符, 尽管有些人不赞成这点 squid 默认会对 URL 主机名里带下划线的请求产生一条错误消息 你能使用该选项, 让 squid 信任它们, 把它们当作合法的 然而, 你的 DNS 解析器也许强迫使用非下划线请求, 并且对带下划线的主机名解析失败 --enable-auth[=list] 该选项控制在 squid 的二进制文件里支持哪种验证机制 你能选择下列机制的任意组合 : basic,digest,ntlm 假如你忽略该选项,squid 仅仅支持 basic 验证 假如你使用不带参数的 --enable-auth 选项, 编译进程将增加对所有验证机制的支持 你可以使用以逗号分隔的验证机制列表 :

19 %./configure --enable-auth=digest,ntlm 我在第六章和第十二章里会谈得更多 --enable-auth-helpers=list 这个旧选项现在已舍弃了, 但为了保持向后兼容性仍保留着 你可以使用 --enable-basicauth-helperes=list 来代替 --enable-basic-auth-helpers=list 使用该选项, 你能将 helpers/basic_auth 目录的一个或多个 HTTP Basic 验证辅助程序编译 进来 请见 12.2 章找到它们的名字和描述 --enable-ntlm-auth-helpers=list 使用该选项, 你能将 helpers/ntlm_auth 目录的一个或多个 HTTP NTLM 验证辅助程序编译 进来 请见 12.4 章找到它们的名字和描述 --enable-digest-auth-modules=list 使用该选项, 你能将 helpers/digest_auth 目录的一个或多个 HTTP Digest 验证辅助程序编 译进来 请见 12.3 章找到它们的名字和描述 --enable-external-acl-helpers=list 使用该选项, 你能编译一个或多个扩展 ACL 辅助程序, 这些在 12.5 章中讨论 例如 : %./configure --enable-external-acl-helpers=ip_user,ldap_group --disable-unlinkd unlinkd 是另一个 squid 的外部辅助进程 它的基本工作是对 cache 文件执行 unlink() 或 truncate() 系统调用 通过在外部进程里执行文件删除工作, 能给 squid 带来明显的性能提升 使用该选项来禁止外部 unlink 进程功能 --enable-stacktrace 某些系统支持在程序崩溃时, 自动产生数据追踪 当你激活该功能后, 如果 squid 崩溃, 数据 追踪信息被写到 cache.log 文件 这些信息对开发和程序 bug 调试有用 --enable-x-accelerator-vary 该高级功能可能在 squid 被配置成加速器时使用 它建议 squid 在响应请求时, 从后台原始服 务器中寻找 X-Accelerator-Vary 头 请见 15.5 章 运行 configure 现在我们准备运行./configure 脚本 进入源代码的顶级目录敲入./configure, 后面跟上前面提到过的任意选项, 例如 : % cd squid-2.5.stable4 %./configure --enable-icmp --enable-htcp./configure 的工作就是侦察你的操作系统, 以发现什么东西可用, 什么不可用 它首先做的事

20 情之一就是确认你的 C 编译器可用 假如./configure 检测到你的 C 编译器有问题, 脚本会退出, 返回如下错误 : configure: error: installation or configuration problem: C compiler cannot create executables. 很可能你从不会看到这个消息 假如看到了, 那意味着你的系统中没有 C 编译器存在, 或者编译器没有正确安装 请见 config.log 文件找到解决问题的建议 假如你的系统中有多个 C 编译器, 你可以在运行./configure 之前设置 CC 环境变量, 来告诉./configure 使用哪个 : % setenv CC /usr/local/bin/gcc %./configure... 在./configure 检查完该编译器后, 它查找头文件, 库文件和函数的长列表 通常你不必担心该部分 在某些实际情况中,./configure 会终止以引起你的注意, 某些事情可能有问题, 例如没有足够的文件描述符 假如你指定不完整的或不合理的命令行选项, 它也会终止 假如有错误发生, 请检查 config.log 输出./configure 的最终任务是创造 Makefiles 和其他文件, 这些文件基于 squid 从你系统中了解到的知识 到此为止, 你准备做编译工作 3.5 编译 一旦./configure 完成了它的工作, 你简单的敲入 make 开始编译源代码 : %make 正常来说, 该过程很顺利, 你可以见到大量的滚动行 你也许见到一些编译器警告 大多数情况下, 可以安全的忽略这些 假如这些警告非常多, 并且一些看起来非常严重, 请将它们报告给开发者, 在第 16.5 章中有描述 假如编译过程没有错误, 你可以转移到下一节, 描述如何安装你刚才编译的程序 为了验证编译是否成功, 你可以再次运行 make 你将看到如下输出: % make Making all in lib... Making all in scripts... Making all in src... Making all in fs... Making all in repl... 'squid' is up to date. 'client' is up to date. 'unlinkd' is up to date. 'cachemgr.cgi' is up to date. Making all in icons... Making all in errors... Making all in auth_modules... 因为许多理由, 编译步骤也许会失败, 包括 : 源代码 bugs

21 通常 squid 源代码是完整的调试过的 然而, 你也许会遇到某些 bugs 或问题从而阻止你编译 这种问题在新的开发版本中更容易出现, 请将它们报告给开发者 编译器安装问题 不正确安装的 C 编译器不能够编译 squid 或其他软件包 通常编译器随着操作系统预安装, 所以你不必担心它 然而, 假如你在操作系统安装完后, 试图升级编译器, 那么可能会犯错误 绝对不要把已经安装好的编译器从一台机器拷贝到另一台, 除非你绝对清楚你在做什么 我觉得在每台机上独立的安装编译器总是最好的 请确认你的编译器的头文件总是与库文件同步 头文件通常在 /usr/include 目录, 而库文件在 /usr/lib 目录 Linux 的流行 RPM 系统允许它去升级其中之一, 但并非另一个 假如库文件基 于不同的头文件,squid 不能编译 假如你想在开源 BSD 变种之一中升级编译器, 请确认在 /usr/src 目录中运行 make world, 这好过从 /usr/src/lib 或 /usr/src/include 中运行 如下是一些通用的编译器问题和错误消息 : Solaris: make[1]: *** [libmiscutil.a] Error 255 这意味着./configure 不能发现 ar 程序 请确认 /usr/ccs/bin 位于你的 PATH 环境变量里 假如你没有安装 Sun 的编译器, 那么需要 GNU 的工具 ( Linux: storage size of 'rl' isn't known 这是因为头文件和库文件不匹配所致, 象前面描述的一样 请确认同时升级两者 Digital Unix: Don't know how to make EXTRA_libmiscutil_a_SOURCES. Stop. Digital Unix 的 make 程序不能兼容 automake 包产生的 Makefile 文件 例如, lib/makefile.in 包含如下行 : noinst_libraries = \ libmiscutil.a \ libntlmauth.a 在替换后, 当 lib/makefile 被创建时, 它看起来如下 : noinst_libraries = \ \ libmiscutil.a \ libntlmauth.a \ <TAB>;

22 象上面显示的一样, 最后一行包括一个不可见的 TAB 字符, 它阻止了 make 通过安装和使用 GNU make, 或者手工编辑 lib/makefile 如下, 来解决这个问题 : noinst_libraries = \ \ libmiscutil.a \ libntlmauth.a 假如你在编译 squid 时遇到问题, 请先检查 FAQ 你也许该在 Squid 的 web 站点上搜索 ( 使 用主页里的搜索栏 ) 最后, 假如你仍有问题, 请发邮件到 squid-users@squid-cache.org 列 表 3.6 安装 在编译完后, 你需要把程序安装到指定的目录 可能需要超级用户权限来把它们放置到安装目录 所以, 请先切换到 root: %su password: #make install 假如你通过使用 --enable-icmp 选项, 激活了 squid 的 ICMP 衡量功能, 那么必须安装 pinger 程序 pinger 程序必须以超级用户权限安装, 因为仅仅允许 root 来发送和接受 ICMP 消息 下列命令以相应的许可来安装 pinger 程序 : #make install-pinger 在安装完后, 你将在 squid 的安装目录里 ( 默认是 /usr/local/squid) 见到下列目录和文件 : sbin sbin 目录的程序正常只能被 root 启动 sbin/squid Squid 的主程序 bin bin 目录包含对所有用户可用的程序 bin/runcache RunCache 是一个 shell 脚本, 你能用它来启动 squid 假如 squid 死掉, 该脚本自动重启它, 除非它检测到经常的重启 RunCache 是一个时间遗留的产物, 那时 Squid 还不是后台服务进程 在最近的版本里,RunCache 很少用到, 因为 Squid 自动重启它自身, 当你不使用 -N 选项时 bin/runaccel

23 RunAccel 与 RunCache 几乎一致, 唯一的不同是它增加了一个命令行参数, 告诉 squid 在哪 里侦听 HTTP 请求 bin/squidclient squidclient 是个简单的 HTTP 客户端程序, 你能用它来测试 squid 它也有一些特殊功能, 用以对运行的 squid 进程发起管理请求 libexec libexec 目录传统的包含了辅助程序 有一些命令你不能正常的启动 然而, 这些程序通常被其 他程序启动 libexec/unlinkd unlinkd 是一个辅助程序, 它从 cache 目录里删除文件 如你后面看到的一样, 文件删除是个 性能瓶颈 通过在外部进程里执行删除操作,Squid 提升了一些执行性能 libexec/cachemgr.cgi cachemgr.cgi 是 Squid 管理功能的 CGI 接口 为了使用它, 你需要拷贝该程序到你的 WEB 服务器的 cgi-bin 目录 在 14.2 章中有更多描述 libexec/diskd(optional) 假如你指定了 --enable-storeio=diskd, 你才能看到它 libexec/pinger(optional) 假如你指定了 --enable-icmp, 你才能看到它 etc etc 目录包含 squid 的配置文件 etc/squid.conf 这是 squid 的主要配置文件 初始的该文件包含了大量的注释, 用以解释每一个选项做什么 在你理解了这些配置指令后, 建议你删除这些注释, 让配置文件更小和更容易阅读 注意假如该文件存在, 安装过程不会覆盖该文件 etc/squid.conf.default 这是从源代码目录中拷贝过来的默认配置文件 在升级了 squid 安装后, 你也许发现有一份当 前默认配置文件的拷贝是有用的 可能会增加新的配置指令, 一些存在的旧指令可能有所改变 etc/mime.conf mime.conf 文件告诉 squid 对从 FTP 和 Gopher 服务器获取的数据使用何种 MIME 类型 该文件是一个关联文件名扩展到 MIME 类型的表 正常而言, 你不必编辑该文件 然而, 你可能需要增加特殊文件类型的接口, 它们在你的组织内使用 etc/mime.conf.default 这是从源代码目录里拷贝过来的默认 mime.conf 文件

24 share share 目录通常包括 squid 的只读数据文件 share/mib.txt 这是 squid 的 SNMP 管理信息基础 (MIB) 文件 squid 自身不使用该文件, 然而, 你的 SNMP 客户端软件 ( 例如 snmpget 和多路由走向图 (MRTG)) 需要该文件, 用以理解来自 squid 的 SNMP 对象可用 share/icons share/icons 目录包含大量的小图标文件,squid 用在 FTP 和 Gopher 目录列举里 正常而言, 你不必担心这些文件, 但如果需要, 你可以改变它们 share/errors share/errors 目录包含了 squid 显示给用户看的错误消息模板 这些文件在你安装 squid 时, 从源代码目录拷贝而来 如果需要你可以编辑它们 然而, 在每次运行 make install 时, 安装过程总会覆盖它们 所以假如你想定制错误消息, 建议你把它们放在不同的目录 var var 目录包含了不是很重要的和经常变化的文件 这些文件你不必正常的备份它们 var/logs var/logs 目录是 squid 不同日志文件的默认位置 当你第一次安装 squid 时, 它是空的 一 旦 squid 开始运行, 你能在这里看到名字为 access.log,cache.log 和 store.log 这样的文件 var/cache 假如你不在 squid.conf 文件里指定, 这是默认的缓存目录 (cache_dir) 第七章有关于缓存目 录的所有细节 3.7 打补丁 在你运行 squid 一段时间后, 你可能发现需要打源代码补丁, 用以修正 bug 或者增加试验性的 功能 在 squid-cache.org 站点上, 对重要的 bug 修正会发布补丁 假如你不想等到下一个官 方发布版本, 你能下载补丁, 并且打到你的源代码中 然后你需要重新编译 squid 为了打补丁 - 或者有时候叫差别文件 - 你需要一个叫做 "patch" 的程序 你的操作系统必须有该程 序 如果没有, 你可以从 GNU 工具集里下载 ( 注意假如你在使用匿名 CVS( 见 2.4 节 ), 你不必担心补丁文件 当你升级源代码树时,CVS 系统自动升级了补丁 为了打补丁, 你必须把补丁文件存放在系统中某处 然后进入到 squid 的源代码目录, 运行如 下命令 :

25 % cd squid-2.5.stable4 % patch < /tmp/patch_file 默认的, 在 patch 程序运行时, 它告诉你它正在做什么 通常输出滚动非常快, 除非有问题 你能安全的忽略它输出的 offset NNN lines 警告 假如你不想见到所有这些输出, 使用 -s 选项 选择安静模式 当补丁更新了源代码后, 它创造了原始文件的拷贝 例如, 假如你对 src/http.c 打一个补丁, 备份文件名就是 src/http.c.orig 这样, 假如你在打了补丁后想撤销这个操作, 简单的重命名所有的.orig 文件到它们以前的格式 为了成功的使用该技术, 建议你在打补丁之前删除所有的.orig 文件 假如 patch 程序遇到问题, 它停止运行并且给出建议 通常问题如下 : 在错误的目录运行 patch 程序 解决的方法是, 进入到正确的目录, 或者使用 patch 的 -p 选 项 补丁已打过 patch 会告诉你是否已打过补丁文件 在这样的情况下, 它会问你是否撤销这个 文件的补丁 patch 程序不能理解你赋给它的文件 补丁文件通常有三个风格 : 正常的,context 的和 unified 的 旧版本的 patch 程序可能不理解后两者的差异输出 从 GNU 的 FTP 站点获取最 近的版本能解决该问题 损坏的补丁文件 假如你在下载和存储补丁文件时不小心, 它有可能被损坏 有时候人们以 消息发送补丁文件, 在新的窗口里, 它们被简单的剪切和粘贴 在这样的系统中, 剪切和粘贴能将 Tab 字符改变为空格, 或者不正确的捆绑长行 这些改变混 乱了 patch -l 选项也许有用, 但最好是正确的拷贝和存储补丁文件 某些时候 patch 不能应用部分或所有的差别文件 在这样的情况下, 你能见到类似于 Hunk 3 of 4 failed 的消息 失败的部分被存储在命名为.rej 的文件里 例如, 假如在处理 src/http.c 时失败,patch 程序将该差别文件片断存为 src/http.c.rej 在这样的情况下, 你也许能手工修正这些问题, 但它通常不值得这么做 假如你有大量的 "failed hunks" 或者.rej 文件, 建议你去下载最近源代码版本的完整新拷贝 在你打完补丁后, 你必须重新编译 squid make 的先进功能之一就是它仅仅编译改变了的文件 但有时候 make 不能理解错综复杂的依赖关系, 它没有完整的重编译所需文件 为了安全起见, 通常建议你去重编译所有文件 最好的方法是在开始编译之前清除源代码树 : %make clean %make 3.8 重运行 configure

26 有时候你可能发现有必要重新运行./configure 例如, 假如你调整了内核参数, 你必须再次运 行./configure 以使它能发现新设置 当你阅读本书时, 你也发现你必须使用./configure 选项 来激活所需的功能 以相同的选项重运行./configure, 使用如下命令 : %config.status --recheck 另一个技术是 `touch config.status` 文件, 它更新了该文件的时间戳 这导致 make 在编译源代码之前, 重新运行./configure 脚本 : % touch config.status % make 如果增加或删除./configure 选项, 你必须重新敲入完整的命令行 假如你记不住以前的选项, 请查看 config.status 文件的顶部 例如 : % head config.status #! /bin/sh # Generated automatically by configure. # Run this file to recreate the current configuration. Squid 中文权威指南 16 # This directory was configured as follows, # on host foo.life-gone-hazy.com: # #./configure --enable-storeio=ufs,diskd --enable-carp \ # --enable-auth-modules=ncsa # Compiler output produced by configure, useful for debugging # configure, is in./config.log if it exists. 在运行./configure 之后, 你必须再次编译和安装 squid 安全起见, 建议先运行 make clean: %make clean %make 请回想一下,./configure 会缓存它在你系统中发现的东西 在这样的形式下, 你可能想清除这些缓存, 从头开始编译过程 假如喜欢, 你可以简单的删除 config.cache 文件 然后, 下一次./configure 运行时, 它不会使用以前的数值 你也能恢复 squid 源代码树到它的 configure 之前的状态, 使用如下命令 : %make distclean 这将删除所有的目标文件和其他被./configure 和 make 程序产生的文件 第 4 章快速配置向导 4.1 squid.conf 语法

27 Squid 的配置文件相对规范 它与其他许多 unix 程序相似 每行以配置指令开始, 后面跟着数字值或关键字 在读取配置文件时,squid 忽略空行和注释掉的行 ( 以 # 开始 ) 如下是一些配置行示例 : cache_log /squid/var/cache.log # define the localhost ACL acl Localhost src /32 connect_timeout 2 minutes log_fqdn on 某些指令取唯一值 在这些情形下, 重复赋予该指令不同的值, 将覆盖前面的值 例如, 下面是一个连接超时值 第一行无效, 因为第二行覆盖了它 : connect_timeout 2 minutes connect_timeout 1 hour 另外, 某些指令取列表值 在这些情形下, 每一个新增的值都有效 " 扩展方式 " 指令以这种方法工作 : extension_methods UNGET extension_methods UNPUT extension_methods UNPOST 对这些基于列表的指令, 你通常能在同一行中赋予多个值 : extension_methods UNGET UNPUT UNPOST 许多指令有通用类型 例如, 连接超时值是一个时间规范, 在数字后面跟着时间单元 例如 : connect_timeout 3 hours client_lifetime 4 days negative_ttl 27 minutes 类似的, 大量的指令指向文件大小或者内存额度 例如, 你可以这样编写大小规范 : 十进制数字后面跟 bytes,kb,mb 或 GB. 例如 : minimum_object_size 12 bytes request_header_max_size 10 KB maximum_object_size 187 MB 另一种值得提起的类型是触发器, 它的值是 on 或者 off 许多指令使用该类型 例如: server_persistent_connections on strip_query_terms off prefer_direct on 通常, 配置文件指令能以任何顺序出现 然而, 如果某个指令指向的值被其他指令所定义, 那么顺序就很重要 访问控制列表是个好的例子 acl 被用在 http_access 规则之前必须被定义 : acl Foo src http_access deny Foo

28 squid.conf 文件里的许多东西是大小写敏感的, 例如指令名 你不能将 http_port 写成 HTTP_port 默认的 squid.conf 文件包含了对每个指令的大量注释, 以及指令的默认值 例如 : # TAG: persistent_request_timeout # How long to wait for the next HTTP request on a persistent # connection after the previous request completes. # #Default: # persistent_request_timeout 1 minute 每次安装 squid 后, 当前默认配置文件存放在 $prefix/etc 目录下的 squid.conf.default 既 然指令每次都有所改变, 你能参考该文档, 以获取最近的更新 该章剩下的部分是关于在开始运行 squid 之前, 你必须知道的少数指令 4.2 User IDs 你可能知道,unix 进程和文件拥有文件和组属主的属性 你必须选择某个用户和组给 squid 该用户和组的组合, 必须对大部分 squid 相关的文件和目录有读和写的权限 我高度推荐创建名为 "squid" 的用户和组 这避免了某人利用 squid 来读取系统中的其他文件 假如不止一个人拥有对 squid 的管理权限, 你可以将他们加到 squid 组里 unix 进程继承了它们父进程的属主属性 那就是说, 假如你以 joe 用户来启动 squid,squid 也以 joe 来运行 假如你不想以 joe 来运行 squid, 你需要预先改变你的用户 ID 这是 su 命令的典型功能 例如 : joe% su - squid squid% /usr/local/squid/sbin/squid 不幸的是, 运行 squid 并非总是如此简单 在某些情况下, 你必须以 root 来启动 squid, 这依赖于你的配置 例如, 仅仅 root 能绑定 TCP 套接字到特权端口上, 如 80 假如你必须以 root 来启动 squid, 你必须设置 cache_effective_user 指令 它告诉 squid, 在执行完需要特别权限的任务后, 变成哪个用户 例如 : cache_effective_user squid 你提供的该名字必须是有效用户 ( 在 /etc/passwd 文件里 ) 请注意仅仅当你以 root 来启动 squid 时, 你才需要用到该指令 仅仅 root 有能力来随意改变用户身份 假如你以 joe 来启 动 squid, 它不能改变到 squid 用户 你可能尝试不设置 cache_effective_user, 直接以 root 来运行 squid 假如你试过, 你会发 现 squid 拒绝运行 这违背了安全规则 假如外部攻击者有能力危及或利用 squid, 他能获取

29 对系统的全部访问权 尽管我们努力使 squid 安全和少 bug, 但还是稳重点好 假如你没有设置 cache_effective_user, 以 root 来启动 squid,squid 使用 nobody 作为默认值 不管你选择什么用户 ID, 请确认它有对下面目录的读访问权 : $prefix/etc,$prefix/libexec,$prefix/share 该用户 ID 也必须有对日志文件和缓存目录的写访问权 squid 也有一个 cache_effective_group 指令, 但你也许不必设置它 默认的,squid 使用 cache_effective_user 的默认组 ( 从 /etc/passwd 文件读取 ) 4.3 端口号 http_port 指令告诉 squid 在哪个端口侦听 HTTP 请求 默认端口是 3128: http_port 3128 假如你将 squid 作为加速器运行 ( 见 15 章 ), 你也许该将它设为 80 你能使用附加的 http_port 行, 来指示 squid 侦听在多个端口上 假如你必须支持客户组 ( 它们被配置得不一致 ), 这点就经常有用 例如, 来自某个部门的浏览器发送请求到 3128, 然而另一个部门使用 80 端口 简单的将两个端口号列举出来 : http_port 3128 http_port 8080 你也能使用 http_port 指令来使 squid 侦听在指定的接口地址上 当 squid 作为防火墙运行时, 它有两个网络接口 : 一个内部的和一个外部的 你可能不想接受来自外部的 http 请求 为了使 squid 仅仅侦听在内部接口上, 简单的将 IP 地址放在端口号前面 : http_port : 日志文件路径 我将在第 13 章讨论所有 squid 的日志细节 你现在你关注的唯一事情是,squid 将它的日志 放在何处 默认的日志目录是 squid 安装位置下的 logs 目录 例如, 假如你在./configure 时没有使用 --prefix= 选项, 那么默认的日志文件路径是 /usr/local/squid/var/logs 你必须确认日志文件所存放的磁盘位置空间足够 在 squid 写日志时如果接受到错误, 它会退 出和重启 该行为的主要理由应引起你的注意 squid 想确认你不会丢失任何重要的日志信息, 特别是你的系统被滥用或者被攻击时 squid 有三个主要的日志文件 :cache.log,access.log,store.log. 第一个文件即 cache.log, 包含状态性的和调试性的消息 当你刚开始运行 squid 时, 你应密切的关注该文件 假如 squid 拒绝运行, 理由也许会出现在 cache.log 文件的结尾处 在正常条件下, 该文件不会变得很大

30 也请注意, 假如你以 -s 选项来运行 squid, 重要的 cache.log 消息也可被送到你的 syslog 进 程 通过使用 cache_log 指令, 你可以改变该日志文件的路径 : cache_log /squid/logs/cache.log access.log 文件包含了对 squid 发起的每个客户请求的单一行 每行平均约 150 个字节 也就是说, 在接受一百万条客户请求后, 它的体积约是 150M 请使用 cache_access_log 指令来改变该日志文件的路径 : cache_access_log /squid/logs/access.log 假如因为某些理由, 你不想 squid 记录客户端请求日志, 你能指定日志文件的路径为 /dev/null. store.log 文件对大多数 cache 管理员来说并非很有用 它包含了进入和离开缓存的每个目标的记录 平均记录大小典型的是 字节 然而,squid 不在 store.log 里对 cache 点击创建接口, 所以它比 access.log 包含少得多的记录 请使用 cache_store_log 指令来改变它的位置 : cache_store_log /squid/logs/store.log 通过指定路径为 none, 你能轻易的完全禁止 store.log 日志 : cache_store_log none 假如你不小心,squid 的日志文件增加没有限制 某些操作系统对单个文件强制执行 2G 的大小限制, 即使你有充足的磁盘空间 超过该限制会导致写错误, 这样 squid 就会退出 为了保证日志文件大小合理, 你应创建任务来有规律的重命名和打包日志 squid 有内建功能来使这个容易做到 请见 13.7 章关于日志轮循的解释 4.5 访问控制 在第 6 章里有更多的关于访问控制的描述 现在, 我只讲述少量的访问控制方法, 以使热心的 读者能快速开始使用 squid squid 默认的配置文件拒绝每一个客户请求 在任何人能使用代理之前, 你必须在 squid.conf 文件里加入附加的访问控制规则 最简单的方法就是定义一个针对客户 IP 地址的 ACL 和一个访问规则, 告诉 squid 允许来自这些地址的 HTTP 请求 squid 有许多不同的 ACL 类型 src 类型匹配客户 IP 地址,squid 会针对客户 HTTP 请求检查 http_access 规则 这样, 你需要增加两行 : acl MyNetwork src /16 http_access allow MyNetwork 请将这些行放在正确的位置 http_access 的顺序非常重要, 但是 acl 行的顺序你不必介意 你也该注意默认的配置文件包含了一些重要的访问控制, 你不应该改变或删除它们, 除非你完全理解它们的意义 在你第一次编辑 squid.conf 文件时, 请看如下注释 : # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

31 在该注释之后, 以及 "http_access deny all" 之前插入你自己的新规则 为了彻底说明, 如下是一个合理的初始访问控制配置, 包括推荐的默认控制和早先的例子 : acl All src 0/0 acl Manager proto cache_object acl Localhost src /32 acl Safe_ports port acl SSL_ports acl CONNECT method CONNECT acl MyNetwork src /16 http_access allow Manager Localhost http_access deny Manager http_access deny!safe_ports http_access deny CONNECT!SSL_ports http_access allow MyNetwork http_access deny All 4.6 可见主机名 希望你不必担心 visible_hostname 指令 然而, 假如 squid 不能发现它所运行的机器的主机名, 你就必须设置它 如果发生这样的事,squid 抱怨和拒绝运行 : % squid -Nd1 FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname' 有大量的理由使 squid 需要知道主机名 : + 主机名出现在 squid 的错误消息里, 这帮助用户验证潜在问题的源头 + 主机名出现在 squid 转发的 cache 单元的 HTTP Via 头里 当请求到达原始主机时,Via 头包含了在传输过程中涉及的代理列表 squid 也使用 Via 头来检测转发环路 我将在第 10 章里讨论转发环路 squid 对特定事务使用内部 URL, 例如 FTP 目录列表的图标 当 squid 对 FTP 目录产生 HTML 页面时, 它插入小图标用以指明该目录中的文件类型 图标 URL 包含了 cache 的主机名, 以 便 web 浏览器能直接从 squid 请求它们 每个从 squid 响应的 HTTP 回复包含了 X-Cache 头 这并非官方 HTTP 头 它是一个扩展头, 用以指明该响应是 cache 点击还是 cache 丢失 既然请求和响应可能经过多个 cache, 每个 X- Cache 头包含了 cache 报告点击或丢失的名字 如下是一个通过 2 个 cache 的响应示例 : HTTP/ OK Date: Mon, 29 Sep :57:23 GMT Content-type: text/html Content-length: 733 X-Cache: HIT from bo2.us.ircache.net

32 X-Cache: MISS from bo1.us.ircache.net squid 在启动时试图自动获取主机名 首先它调用 gethostname() 函数, 这通常能返回正确的主机名 接着,squid 调用 gethostbyname() 函数尝试对主机名进行 DNS 查询 该函数典型的返回 IP 地址和系统的规范名 假如 gethostbyname() 成功,squid 在错误消息里,Via 头里等地方使用这个规范名 因为大量的理由,squid 可能不能检测到它的规范主机名, 包括 : + 主机名可能未设置 + 主机名可能从 DNS 区域或 /etc/hosts 文件里丢失 squid 系统的 DNS 客户端配置可能不正确或丢失 在 unix 系统上, 你该检查 /etc/resolv.conf 和 /etc/host.conf 文件 假如你看到上述的致命错误, 你必须修正主机名和 DNS 信息, 或者显式的给 squid 指明主机名 在大多数情况下, 请确认 "hostname" 命令返回一个完全规范的主机名, 并且在 /etc/hosts 文件里增加这个接口 假如这样不成功, 请在 squid.conf 里设置可见主机名 : visible_hostname squid.packet-pushers.net 4.7 管理联系信息 你应该设置 cache_mgr 指令作为对用户的帮助 它是一个 地址, 假如问题发生, 用户 能写信给它 cache_mgr 地址默认出现在 squid 的错误消息里 例如 : cache_mgr squid@web-cache.net 4.8 下一步 在创建了初步的配置文件后, 你多少准备首次运行 squid 了 请遵循下面章节的建议 当你掌握了启动和停止 squid 后, 你该花费一些时间来改善配置文件 你可能想增加更高级的 访问控制, 这在第 6 章里有描述 既然我在这里没有讨论磁盘 cache, 你该花些时间阅读第 7 和 第 8 章 第 5 章运行 Squid 5.1 squid 命令行选项 在开始其他事情之前, 让我们先看一下 squid 的命令行选项 这里的许多选项你从不会使用, 另外有些仅仅在调试问题时有用 -a port

33 指定新的 http_port 值 该选项覆盖了来自 squid.conf 的值 然而请注意, 你能在 squid.conf 里指定多个值 -a 选项仅仅覆盖配置文件里的第一个值 ( 该选项使用字母 a 是因为在 Harvest cache 里,HTTP 端口被叫做 ASCII 端口 ) -d level 让 squid 将它的调试信息写到标准错误 ( 假如配置了, 就是 cache.log 和 syslog) level 参数指定了显示在标准错误里的消息的最大等级 在多数情况下,d1 工作良好 请见 16.2 章关于调试等级的描述 -f file 指定另一个配置文件 -h 显示用法 -k function 指示 squid 执行不同的管理功能 功能参数是下列之一 :reconfigure,rotate,shutdown, interrupt,kill,debug,check,or parse + reconfigure 导致运行中的 squid 重新读取配置文件 + rotate 导致 squid 滚动它的日志, 这包括了关闭日志, 重命名, 和再次打开它们 + shutdown 发送关闭 squid 进程的信号 + interrupt 立刻关闭 squid, 不必等待活动会话完成 + kill 发送 KILL 信号给 squid, 这是关闭 squid 的最后保证 + debug 将 squid 设置成完全的调试模式, 假如你的 cache 很忙, 它能迅速的用完你的磁盘空间 + check 简单的检查运行中的 squid 进程, 返回的值显示 squid 是否在运行 + 最后,parse 简单的解析 squid.conf 文件, 如果配置文件包含错误, 进程返回非零值 -s 激活将日志记录到 syslog 进程 squid 使用 LOCAL4 syslog 设备 0 级别调试信息以优先级 LOG_WARNING 被记录,1 级别消息以 LOG_NOTICE 被记录 更高级的调试信息不会被发送到 syslogd. 你可以在 /etc/syslogd.conf 文件里使用如下接口 : local4.warning /var/log/squid.log -u port 指定另一个 ICP 端口号, 覆盖掉 squid.conf 文件里的 icp_port -v 打印版本信息 -z 初始化 cache, 或者交换, 目录 在首次运行 squid, 或者增加新的 cache 目录时, 你必须使 用该选项

34 -C 阻止安装某些信号句柄, 它们捕获特定的致命信号例如 SIGBUS 和 SIGSEGV 正常的, 这些信号被 squid 捕获, 以便它能干净的关闭 然而, 捕获这些信号可能让以后调试问题困难 使用该选项, 致命的信号导致它们的默认动作, 通常是 coredump -D 禁止初始化 DNS 测试 正常情况下,squid 直到验证它的 DNS 可用才能启动 该选项阻止 了这样的检测 你也能在 squid.conf 文件里改变或删除 dns_testnames 选项 -F 让 squid 拒绝所有的请求, 直到它重新建立起存储元数据 假如你的系统很忙, 该选项可以减 短重建存储元数据的时间 然而, 如果你的 cache 很大, 重建过程可能会花费很长的时间 -N 阻止 squid 变成后台服务进程 -R 阻止 squid 在绑定 HTTP 端口之前使用 SO_REUSEADDR 选项 -V 激活虚拟主机加速模式 类似于 squid.conf 文件里的 httpd_accel_host virtual 指令 -X 强迫完整调试模式, 如你在 squid.conf 文件里指定 debug_options ALL,9 一样 -Y 在重建存储元数据时, 返回 ICP_MISS_NOFETCH 代替 ICP_MISS. 忙碌的父 cache 在重建 时, 该选项可以导致最少的负载 请见 章 5.2 对配置文件查错 在开启 squid 之前, 你应该谨慎的验证配置文件 这点容易做到, 运行如下命令即可 : %squid -k parse 假如你看不到输出, 配置文件有效, 你能继续后面的步骤 然而, 如果配置文件包含错误,squid 会告诉你 : squid.conf line 62: http_access allow okay2 aclparseaccessline: ACL name 'okay2' not found. 这里你可以看到,62 行的 http_access 指令指向的 ACL 不存在 有时候错误信息很少 : FATAL: Bungled squid.conf line 76: memory_pools

35 在这个情形里, 我们忘记了在 76 行的 memory_pools 指令后放置 on 或 off 建议你养成习惯 : 在每次修改配置文件后, 使用 squid -k parse 假如你不愿麻烦, 并且你的配置文件有错误,squid 会告诉你关于它们而且拒绝启动 假如你管理着大量的 cache, 也许你会编辑脚本来自动启动, 停止和重配置 squid 你能在脚本里使用该功能, 来确认配置文件是有效的 5.3 初始化 cache 目录 在初次运行 squid 之前, 或者无论何时你增加了新的 cache_dir, 你必须初始化 cache 目录 命令很简单 : %squid z 对 UFS 相关的存储机制 (ufs,aufs,and diskd; 见第 8 章 ), 该命令在每个 cache_dir 下面 创建了所需的子目录 你不必担心 squid 会破坏你的当前 cache 目录 ( 如果有的话 ) 在该阶段属主和许可权是通常遇到的问题 squid 在特定的用户 ID 下运行, 这在 squid.conf 文件里的 cache_effective_user 里指定 用户 ID 必须对每个 cache_dir 目录有读和写权限 否则, 你将看到如下信息 : Creating Swap Directories FATAL: Failed to make swap directory /usr/local/squid/var/cache/00: (13) Permission denied 在这样的情形下, 你该确认 /usr/local/squid/var/cache 目录的所有组成都可被 squid.conf 给定的用户 ID 访问 最终的组件 --cache 目录 -- 必须对该用户 ID 可写 cache 目录初始化可能花费一些时间, 依赖于 cache 目录的大小和数量, 以及磁盘驱动器的速 度 假如你想观察这个过程, 请使用 -X 选项 : %squid zx 5.4 在终端窗口里测试 squid 一旦你已经初始化 cache 目录, 就可以在终端窗口里运行 squid, 将日志记录到标准错误 这样, 你能轻易的定位任何错误或问题, 并且确认 squid 是否成功启动 使用 -N 选项来保持 squid 在前台运行,-d1 选项在标准错误里显示 1 级别的调试信息 %squid -N -d1 你将看到类似于以下的输出 : 2003/09/29 12:57:52 Starting Squid Cache version 2.5.STABLE4 for i386-unknown-freebsd /09/29 12:57:52 Process ID /09/29 12:57:52 With 1064 file descriptors available

36 2003/09/29 12:57:52 DNS Socket created on FD /09/29 12:57:52 Adding nameserver from /etc/resolv.conf 2003/09/29 12:57:52 Adding nameserver from /etc/resolv.conf 2003/09/29 12:57:52 Unlinkd pipe opened on FD /09/29 12:57:52 Swap maxsize KB, estimated 7876 objects 2003/09/29 12:57:52 Target number of buckets: /09/29 12:57:52 Using 8192 Store buckets 2003/09/29 12:57:52 Max Mem size: 8192 KB 2003/09/29 12:57:52 Max Swap size: KB 2003/09/29 12:57:52 Rebuilding storage in /usr/local/squid/var/cache (DIRTY) 2003/09/29 12:57:52 Using Least Load store dir selection 2003/09/29 12:57:52 Set Current Directory to /usr/local/squid/var/cache 2003/09/29 12:57:52 Loaded Icons. 2003/09/29 12:57:52 Accepting HTTP connections at , port 3128, FD /09/29 12:57:52 Accepting ICP messages at , port 3130, FD /09/29 12:57:52 WCCP Disabled. 2003/09/29 12:57:52 Ready to serve reques 假如你看到错误消息, 你该首先修正它 请检查输出信息的开始几行以发现警告信息 最普通的错误是文件 / 目录许可问题, 和配置文件语法错误 假如你看到一条不引起注意的错误消息, 请见 16 章中关于 squid 故障处理的建议和信息 如果还不行, 请检查 squid FAQ, 或查找邮件列表来获得解释 一旦你见到 "Ready to serve requests" 消息, 就可用一些 HTTP 请求来测试 squid 配置你的浏览器使用 squid 作为代理, 然后打开某个 web 页面 假如 squid 工作正常, 页面被迅速载入, 就象没使用 squid 一样 另外, 你可以使用 squidclient 程序, 它随 squid 发布 : % squidclient 假如它正常工作,squid 的主页 html 文件会在你的终端窗口里滚动 一旦确认 squid 工作正 常, 你能中断 squid 进程 ( 例如使用 ctrl-c) 并且在后台运行 squid 5.5 将 squid 作为服务进程运行 正常情况下你想将 squid 以后台进程运行 ( 不出现在终端窗口里 ) 最容易的方法是简单执行 如下命令 : %squid s -s 选项导致 squid 将重要的状态和警告信息写到 syslogd squid 使用 LOCAL4 设备, 和 LOG_WARNING 和 LOG_NOTICE 优先权 syslog 进程实际可能会或不会记录 squid 的消息, 这依赖于它被如何配置 同样的消息被写进 cache.log 文件, 所以假如你愿意, 忽略 -s 选项也是安全的 当你不使用 -N 选项来启动 squid,squid 自动在后台运行并且创建父 / 子进程对 子进程做所

37 有的实际工作 父进程确认子进程总在运行 这样, 假如子进程意外终止, 父进程启动另外一个 子进程以使 squid 正常工作 通过观察 syslog 消息, 你能看到父 / 子进程交互作用 Jul 31 14:58:35 zapp squid[294]: Squid Parent: child process 296 started 这里显示的父进程 ID 是 294, 子进程是 296 当你查看 ps 的输出, 你可以看到子进程以 (squid) 形式出现 : %ps ax grep squid 294?? Is 0:00.01 squid -sd 296?? S 0:00.27 (squid) -sd (squid) 假如 squid 进程意外终止, 父进程启动另一个 例如 : Jul 31 15:02:53 zapp squid[294]: Squid Parent: child process 296 exited due to signal 6 Jul 31 15:02:56 zapp squid[294]: Squid Parent: child process 359 started 在某些情形下,squid 子进程可能立即终止 为了防止频繁的启动子进程, 假如子进程连续 5 次没有运行至少 10 秒钟, 父进程会放弃 Jul 31 15:13:48 zapp squid[455]: Squid Parent: child process 474 exited with status 1 Jul 31 15:13:48 zapp squid[455]: Exiting due to repeated, frequent failures 如果发生这样的事, 请检查 syslog 和 squid 的 cache.log 以发现错误 squid_start 脚本 当 squid 以后台进程运行时, 它查找 squid 执行程序目录下的名为 squid_start 的文件 假 如发现, 该程序在父进程创建子进程之前被执行 你能使用该脚本完成特定的管理任务, 例如通 知某人 squid 在运行, 管理日志文件等 除非 squid_start 程序存在,squid 不会创建子进程 squid_start 脚本在你使用绝对或相对路径启动 squid 时才开始工作 换句话说,squid 不使 用 PATH 环境变量来定位 squid_start. 这样, 你应该养成习惯这样启动 squid: % /usr/local/squid/sbin/squid sd 而不要这样 : %squid sd 5.6 启动脚本 通常你希望 squid 在每次计算机重启后自动启动 对不同的操作系统, 它们的启动脚本如何工 作也很不同 我在这里描述一些通用的环境, 但对你自己的特殊操作系统, 也许该有特殊的处理 方法

38 5.6.1 /etc/rc.local 最容易的机制之一是 /etc/rc.local 脚本 这是个简单的 shell 脚本, 在每次系统启动时以 root 运行 使用该脚本来启动 squid 非常容易, 增加一行如下 : /usr/local/squid/sbin/squid s 当然你的安装位置可能不同, 还有你可能要使用其他命令行选项 不要在这里使用 -N 选项 假如因为某些理由, 你没有使用 cache_effective_user 指令, 你可以尝试使用 su 来让 squid 以非 root 用户运行 : /usr/bin/su nobody -c '/usr/local/squid/sbin/squid -s' init.d 和 rc.d init.d 和 rc.d 机制使用独立的 shell 脚本来启动不同的服务 这些脚本通常在下列目录之中 : /sbin/init.d, /etc/init.d, /usr/local/etc/rc.d. 脚本通常获取单一命令行参数, 是 start 或 stop 某些系统仅仅使用 start 参数 如下是启动 squid 的基本脚本 : #!/bin/sh # this script starts and stops Squid case "$1" in start) /usr/local/squid/sbin/squid -s echo -n ' Squid' ;; stop) /usr/local/squid/sbin/squid -k shutdown ;; esac Linux 用户可能在启动 squid 之前需要设置文件描述符限制 例如 : echo 8192 >; /proc/sys/fs/file-max limit -HSn 8192 为了使用该脚本, 先找到脚本存放的目录 给它一个有意义的名字, 类似于其他的系统启动脚本 可以是 S98squid 或 squid.sh 通过重启计算机来测试该脚本, 而不要假想它会正常工作 /etc/inittab 某些操作系统支持另一种机制, 是 /etc/inittab 文件 在这些系统中,init 进程启动和停止基 于运行等级的服务 典型的 inittab 接口类似如此 : sq:2345 nce:/usr/local/squid/sbin/squid s

39 使用该接口,init 进程启动 squid 一次并且随后忘记它 squid 确认它驻留在运行状态, 象前 面描述的一样 或者, 你能这样做 : sq:2345:respawn:/usr/local/squid/sbin/squid Ns 这里我们使用了 respawn 选项, 假如进程不存在 init 会重启 squid 假如使用 respawn, 请 确认使用 -N 选项 在编辑完 inittab 文件后, 使用下面的命令来使 init 重新读取它的配置文件和启动 squid: # init q 5.7 chroot 环境 某些人喜欢在 chroot 环境运行 squid 这是 unix 的功能, 给予进程新的 root 文件系统目录 在 squid 受安全威胁时, 它提供额外等级的安全保护 假如攻击者在某种程度上通过 squid 获取了对操作系统的访问权, 她仅仅能访问在 chroot 文件系统中的文件 在 chroot 树之外的系统文件, 她不可访问 最容易在 chroot 环境里运行 squid 的方法是, 在 squid.conf 文件里指定新的 root 目录, 如下 : chroot /new/root/directory chroot() 系统调用需要超级用户权限, 所以你必须以 root 来启动 squid chroot 环境不是为 unix 新手准备的 它有点麻烦, 因为你必须在新的 root 目录里重复放置大量的文件 例如, 假如默认的配置文件正常在 /usr/local/squid/etc/squid.conf, 并且你使用 chroot 指令, 那么文件必须位于 /new/root/directory/usr/local/squid/etc/squid.conf. 你必须将位于 $prefix/etc,$prefix/share,$prefix/libexec 下的所有文件拷贝到 chroot 目录 请确认 $prefix/var 和 cache 目录在 chroot 目录中存在和可写 同样的, 你的操作系统需要将大量的文件放在 chroot 目录里, 例如 /etc/resolv.conf 和 /dev/null. 假如你使用外部辅助程序, 例如重定向器 ( 见 11 章 ) 或者验证器 ( 见 12 章 ), 你也需要来自 /usr/lib 的某些共享库 你可以使用 ldd 工具来查找给定的程序需要哪些共享库 : % ldd /usr/local/squid/libexec/ncsa_auth /usr/local/squid/libexec/ncsa_auth: libcrypt.so.2 =>; /usr/lib/libcrypt.so.2 (0x ) libm.so.2 =>; /usr/lib/libm.so.2 (0x ) libc.so.4 =>; /usr/lib/libc.so.4 (0x ) 你可以使用 chroot 命令来测试辅助程序 : # chroot /new/root/directory /usr/local/squid/libexec/ncsa_auth /usr/libexec/ld-elf.so.1: Shared object "libcrypt.so.2" not found

40 更多的关于 chroot 的信息, 请见你系统中 chroot() 的 manpage 5.8 停止 squid 最安全的停止 squid 的方法是使用 squid -k shutdown 命令 : %squid -k shutdown 该命令发送 TERM 信号到运行中的 squid 进程 在接受到 TERM 信号后,squid 关闭进来的套接字以拒收新请求 然后它等待一段时间, 用以完成外出请求 默认时间是 30 秒, 你可以在 shutdown_lifetime 指令里更改它 假如因为某些理由,squid.pid 文件丢失或不可读,squid -k 命令会失败 在此情形下, 你可以用 ps 找到 squid 的进程 ID, 然后手工杀死 squid 例如: %ps ax grep squid 假如你看到不止一个 squid 进程, 请杀死以 (squid) 显示的那个 例如 : % ps ax grep squid 294?? Is 0:00.01 squid -sd 296?? S 0:00.27 (squid) -sd (squid) % kill -TERM 296 在发送 TERM 信号后, 你也许想查看日志, 以确认 squid 已关闭 : % tail -f logs/cache.log 2003/09/29 21:49:30 Preparing for shutdown after 9316 requests 2003/09/29 21:49:30 Waiting 10 seconds for active connections to finish 2003/09/29 21:49:30 FD 11 Closing HTTP connection 2003/09/29 21:49:31 Shutting down /09/29 21:49:31 FD 12 Closing ICP connection 2003/09/29 21:49:31 Closing unlinkd pipe on FD /09/29 21:49:31 storedirwritecleanlogs: Starting /09/29 21:49:32 Finished. Wrote 253 entries. 2003/09/29 21:49:32 Took 0.1 seconds ( entries/sec). 2003/09/29 21:49:32 Squid Cache (Version 2.5.STABLE4): Exiting normally. 假如你使用 squid -k interrupt 命令,squid 立即关闭, 不用等待完成活动请求 这与在 kill 里 发送 INT 信号相同 5.9 重配置运行中的 squid 进程 在你了解了更多关于 squid 的知识后, 你会发现对 squid.conf 文件做了许多改动 为了让新 设置生效, 你可以关闭和重启 squid, 或者在 squid 运行时, 重配置它 重配置运行中的 squid 最好的方法是使用 squid -k reconfigure 命令 :

41 %squid -k reconfigure 当你运行该命令时,HUP 信号被发送到运行中的 squid 进程 然后 squid 读取和解析 squid.conf 文件 假如操作成功, 你可以在 cache.log 里看到这些 : 2003/09/29 22:02:25 Restarting Squid Cache (version 2.5.STABLE4) /09/29 22:02:25 FD 12 Closing HTTP connection 2003/09/29 22:02:25 FD 13 Closing ICP connection 2003/09/29 22:02:25 Cache dir '/usr/local/squid/var/cache' size remains unchanged at KB 2003/09/29 22:02:25 DNS Socket created on FD /09/29 22:02:25 Adding nameserver from /etc/resolv.conf 2003/09/29 22:02:25 Accepting HTTP connections at , port 3128, FD /09/29 22:02:25 Accepting ICP messages at , port 3130, FD /09/29 22:02:25 WCCP Disabled. 2003/09/29 22:02:25 Loaded Icons. 2003/09/29 22:02:25 Ready to serve requests. 在使用 reconfigure 选项时你须谨慎, 因为所做的改变可能会导致致命错误 例如, 请注意 squid 关闭和重新打开进来的 HTTP 和 ICP 套接字 ; 假如你将 http_port 改变为 squid 不能 打开的端口, 它会发生致命错误并退出 在 squid 运行时, 某些指令和和选项不能改变, 包括 : + 删除 cache 目录 (cache_dir 指令 ) + 改变 store_log 指令 + 改变 coss cache_dir 的块大小数值 事实上, 无论何时你改变了该值, 你必须重新初始化 coss cache_dir + coredump_dir 指令在重配置过程中不被检查 所以, 在 squid 已经启动了后, 你不能让 squid 改变它的当前目录 solaris 用户在重配置 squid 过程中可能遇到其他问题 solaris 的 stdio 执行组件里的 fopen() 调用要求使用小于 256 的未用文件描述符 FILE 结构以 8 位值存储该文件描述符 正常情况下这不构成问题, 因为 squid 使用底层 I/O( 例如 open()) 来打开 cache 文件 然而, 在重配置过程中的某些任务使用 fopen(), 这就有可能失败, 因为前面的 256 个文件描述符已被分配出去 5.10 滚动日志文件 除非你在 squid.conf 里禁止,squid 会写大量的日志文件 你必须周期性的滚动日志文件, 以阻止它们变得太大 squid 将大量的重要信息写入日志, 假如写不进去了,squid 会发生错误并退出 为了合理控制磁盘空间消耗, 在 cron 里使用如下命令 : %squid -k rotate

42 例如, 如下任务接口在每天的早上 4 点滚动日志 : 0 4 * * * /usr/local/squid/sbin/squid -k rotate 该命令做两件事 首先, 它关闭当前打开的日志文件 然后, 通过在文件名后加数字扩展名, 它 重命名 cache.log,store.log, 和 access.log 例如,cache.log 变成 cache.log.0,cache.log.0 变成 cache.log.1, 如此继续, 滚动到 logfile_rotate 选项指定的值 squid 仅仅保存每个日志文件的最后 logfile_rotate 版本 更老的版本在重命名过程中被删除 假如你想保存更多的拷贝, 你需要增加 logfile_rotate 限制, 或者编写脚本用于将日志文件移 动到其他位置 请见 13.7 章关于滚动日志的其他信息 第 6 章. 访问控制 6.1 访问控制元素 ACL 元素是 Squid 的访问控制的基础 这里告诉你如何指定包括 IP 地址, 端口号, 主机名, 和 URL 匹配等变量 每个 ACL 元素有个名字, 在编写访问控制规则时需要引用它们 基本的 ACL 元素语法如下 : acl name type value1 value2... 例如 : acl Workstations src /16 在多数情况下, 你能对一个 ACL 元素列举多个值 你也可以有多个 ACL 行使用同一个名字 例如, 下列两行配置是等价的 : acl http_ports port acl Http_ports port 80 acl Http_ports port 8000 acl Http_ports port 一些基本的 ACL 类型 Squid 大约有 25 个不同的 ACL 类型, 其中的一些有通用基本类型 例如,src 和 dst ACL 使用 IP 地址作为它们的基本类型 为避免冗长, 我首先描述基本类型, 然后在接下来章节里描 述每种 ACL 类型 IP 地址 使用对象 :src,dst,myip squid 在 ACL 里指定 IP 地址时, 拥有强有力的语法 你能以子网, 地址范围, 域名等形式编

43 写地址 squid 支持标准 IP 地址写法 ( 由. 连接的 4 个小于 256 的数字 ) 和无类域间路由规范 另外, 假如你忽略掩码,squid 会自动计算相应的掩码 例如, 下例中的每组是相等的 : acl Foo src / acl Foo src /32 acl Foo src acl Xyz src / acl Xyz src /28 acl Bar src / acl Bar src /24 acl Bar src 当你指定掩码时,squid 会检查你的工作 如果你的掩码在 IP 地址的非零位之外,squid 会告警 例如, 下列行导致告警 : acl Foo src /8 aclparseipdata: WARNING: Netmask masks away part of the specified IP in 'Foo' 这里的问题是 /8 掩码 ( ) 在最后三个字节里都是零值, 但是 IP 地址 不是这样的 squid 警告你这个问题, 以便你消除歧义 正确的写法是 : acl Foo src /32 or: acl Foo src /8 有时候你可能想列举多个相邻子网, 在这样的情况下, 通过指定地址范围很容易做到 例如 : acl Bar src /24 这等价但高效于下面的行 : acl Foo src /24 acl Foo src /24 acl Foo src /24 acl Foo src /24 acl Foo src /24 acl Foo src /24 acl Foo src /24 acl Foo src /24 acl Foo src /24 注意使用 IP 地址范围, 掩码只能取一个 你不能为范围里的地址设置多个不同掩码 你也能在 IP ACL 里指定主机名, 例如 : acl Squid dst squid 在启动时, 将主机名转换成 IP 地址 一旦启动,squid 不会对主机名的地址发起第二 次 DNS 查询 这样, 假如在 squid 运行中地址已改变,squid 不会注意到

44 假如主机名被解析成多个 IP 地址,squid 将每一个增加到 ACL 里 注意你也可以对主机名使 用网络掩码 在基于地址的 ACL 里使用主机名通常是坏做法 squid 在初始化其他组件之前, 先解析配置文件, 所以这些 DNS 查询不使用 squid 的非阻塞 IP 缓存接口 代替的, 它们使用阻塞机制的 gethostbyname() 函数 这样, 将 ACL 主机名转换到 IP 地址的过程会延缓 squid 的启动 除非绝对必要, 请在 src,dst, 和 myip ACL 里避免使用主机名 squid 以一种叫做 splay tree 的数据结构在内存里存储 IP 地址 ACL ( 请见 splay tree 有一些有趣的自我调整的特性, 其中之一是在查询发生时, 列表会自动纠正它自己的位置 当某个匹配元素在列表里发现时, 该元素变成新的树根 在该方法中, 最近参考的条目会移动到树的顶部, 这减少了将来查询的时间 属于同一 ACL 元素的所有的子网和范围不能重迭 如果有错误,squid 会警告你 例如, 如下不被允许 : acl Foo src /24 acl Foo src /32 它导致 squid 在 cache.log 里打印警告 : WARNING: ' ' is a subnetwork of ' / ' WARNING: because of this ' ' is ignored to keep splay tree searching predictable WARNING: You should probably remove ' ' from the ACL named 'Foo' 在该情形下, 你需要修正这个问题, 可以删除其中一个 ACL 值, 或者将它们放置在不同的 ACL 列表中 域名 使用对象 :srcdomain,dstdomain, 和 cache_host_domain 指令域名简单的就是 DNS 名字或区域 例如, 下面是有效的域名 : squid-cache.org org 域名 ACL 有点深奥, 因为相对于匹配域名和子域有点微妙的差别 当 ACL 域名以 "." 开头, squid 将它作为通配符, 它匹配在该域的任何主机名, 甚至域名自身 相反的, 如果 ACL 域名 不以 "." 开头,squid 使用精确的字符串比较, 主机名同样必须被严格检查 表 6-1 显示了 squid 的匹配域和主机名的规则 第一列显示了取自 URL 请求的主机名 ( 或者 srcdomain ACL 的客户主机名 ) 第二列指明是否主机名匹配 lrrr.org 第三列显示是否主机名匹配.lrrr.org ACL 你能看到, 唯一的不同在第二个实例里 Table 6-1. Domain name matching

45 URL hostname Matches ACL lrrr.org? Matches ACL.lrrr.org? lrrr.org Yes Yes i.am.lrrr.org No Yes iamlrrr.org No No ** 说明 : 为了表现表格形状, 仅代表空格分隔符, 没有任何实际意义 ( 段誉注释 ) 域名匹配可能让人迷惑, 所以请看第二个例子以便你能真正理解它 如下是两个稍微不同的 ACL: acl A dstdomain foo.com acl B dstdomain.foo.com 用户对 的请求匹配 ACL B, 但不匹配 A ACL A 要求严格的字符串 匹配, 然而 ACL B 里领头的点就像通配符 另外, 用户对 的请求同时匹配 A 和 B 尽管在 URL 主机名里的 foo.com 前 面没有字符, 但 ACL B 里领头的点仍然导致一个匹配 squid 使用 splay tree 的数据结构来存储域名 ACL, 就像它处理 IP 地址一样 然而,squid 的域名匹配机制给 splay tree 提供了一个有趣的问题 splay tree 技术要求唯一键去匹配任意特定搜索条目 例如, 让我们假设搜索条目是 i.am.lrrr.org 该主机名同时匹配.lrrr.org 和.am.lrrr.org 事实上就是两个 ACL 值匹配同一个主机名扰乱了 splay 机制 换句话说, 在配置文件里放置如下语句是错误的 : acl Foo dstdomain.lrrr.org.am.lrrr.org 假如你这样做,squid 会产生如下警告信息 : WARNING: '.am.lrrr.org' is a subdomain of '.lrrr.org' WARNING: because of this '.am.lrrr.org' is ignored to keep splay tree searching predictable WARNING: You should probably remove '.am.lrrr.org' from the ACL named 'Foo' 在该情况下你应遵循 squid 的建议 删除其中一条相关的域名, 以便 squid 明确知道你的意图 注意你能在不同的 ACL 里任意使用这样的域名 : acl Foo dstdomain.lrrr.org acl Bar dstdomain.am.lrrr.org 这是允许的, 因为每个命名 ACL 使用它自己的 splay tree 用户名

Squid中文权威指南

Squid中文权威指南 Squid 中文权威指南 ( 第 2 章 ) 译者序 : 本人在工作中维护着数台 Squid 服务器, 多次参阅 Duane Wessels( 他也是 Squid 的创始人 ) 的这本书, 原书名是 "Squid: The Definitive Guide", 由 O'Reilly 出版 我在业余时间把它翻译成中文, 希望对中文 Squid 用户有所帮助 对普通的单位上网用户,Squid 可充当代理服务器

More information

Squid中文权威指南

Squid中文权威指南 Squid 中文权威指南 ( 第 5 章 ) 译者序 : 本人在工作中维护着数台 Squid 服务器, 多次参阅 Duane Wessels( 他也是 Squid 的创始人 ) 的这本书, 原书名是 "Squid: The Definitive Guide", 由 O'Reilly 出版 我在业余时间把它翻译成中文, 希望对中文 Squid 用户有所帮助 对普通的单位上网用户,Squid 可充当代理服务器

More information

Squid中文权威指南

Squid中文权威指南 Squid 中文权威指南 ( 第 4 章 ) 译者序 : 本人在工作中维护着数台 Squid 服务器, 多次参阅 Duane Wessels( 他也是 Squid 的创始人 ) 的这本书, 原书名是 "Squid: The Definitive Guide", 由 O'Reilly 出版 我在业余时间把它翻译成中文, 希望对中文 Squid 用户有所帮助 对普通的单位上网用户,Squid 可充当代理服务器

More information

Squid中文权威指南

Squid中文权威指南 Squid 中文权威指南 ( 第 3 章 ) 译者序 : 本人在工作中维护着数台 Squid 服务器, 多次参阅 Duane Wessels( 他也是 Squid 的创始人 ) 的这本书, 原书名是 "Squid: The Definitive Guide", 由 O'Reilly 出版 我在业余时间把它翻译成中文, 希望对中文 Squid 用户有所帮助 对普通的单位上网用户,Squid 可充当代理服务器

More information

当用户浏览器发出一个 HTTP 请求时, 通过域名解析将请求定向到反向代理服务器 ( 如果要实现多个 WEB 服务器的反向代理, 需要将多个 WEB 服务器的域名都指向反向代理服务器 ) 由反向代理服务器处理器请求 反向代理一般只缓存可缓冲的数据 ( 比如 html 网页和图片等 ), 而一些 CG

当用户浏览器发出一个 HTTP 请求时, 通过域名解析将请求定向到反向代理服务器 ( 如果要实现多个 WEB 服务器的反向代理, 需要将多个 WEB 服务器的域名都指向反向代理服务器 ) 由反向代理服务器处理器请求 反向代理一般只缓存可缓冲的数据 ( 比如 html 网页和图片等 ), 而一些 CG 一 反向代理的概念 什么是反向代理呢? 其实, 反向代理也就是通常所说的 WEB 服务器加速, 它是一种通过在繁忙的 WEB 服务器和 Internet 之间增加一个高速的 WEB 缓冲服务器 ( 即 :WEB 反向代理服务器 ) 来降低实际 的 WEB 服务器的负载 典型的结构如下图所示 : Web 服务器加速 ( 反向代理 ) 是针对 Web 服务器提供加速功能的 它作为代理 Cache, 但并不针对浏览器用户,

More information

第一章 Linux與網路資源

第一章 Linux與網路資源 1 28 Proxy Server 28-1 Proxy proxy Server rpm qa grep squid Linux Proxy Proxy Proxy Proxy Proxy Request Proxy Proxy Proxy RedHat Linux Fedora #mount /mnt/cdrom squid squid Proxy #cd /mnt/cdrom/redhat/rpms

More information

Squid中文权威指南

Squid中文权威指南 Squid 中文权威指南 ( 第 1 章 ) 译者序 : 本人在工作中维护着数台 Squid 服务器, 多次参阅 Duane Wessels( 他也是 Squid 的创始人 ) 的这本书, 原书名是 "Squid: The Definitive Guide", 由 O'Reilly 出版 我在业余时间把它翻译成中文, 希望对中文 Squid 用户有所帮助 对普通的单位上网用户,Squid 可充当代理服务器

More information

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

Linux服务器构建与运维管理

Linux服务器构建与运维管理 1 Linux 服务器构建与运维管理 第 2 章 :Linux 基本命令 阮晓龙 13938213680 / rxl@hactcm.edu.cn http://linux.xg.hactcm.edu.cn http://www.51xueweb.cn 河南中医药大学管理科学与工程学科 2018.3 2 提纲 目录与文件的操作 mkdir touch mv cp rm rmdir file tree

More information

IP505SM_manual_cn.doc

IP505SM_manual_cn.doc IP505SM 1 Introduction 1...4...4...4...5 LAN...5...5...6...6...7 LED...7...7 2...9...9...9 3...11...11...12...12...12...14...18 LAN...19 DHCP...20...21 4 PC...22...22 Windows...22 TCP/IP -...22 TCP/IP

More information

(CPU) (forward caching) (reverse caching) IP IP 2

(CPU) (forward caching) (reverse caching) IP IP 2 300 1001 TEL:(03)5712121 EXT.56667 FAX:(03)5712121 EXT.59263 E-mail: einstein@chu.edu.tw, ydlin@cis.nctu.edu.tw : (World Wild Web) (proxy) (caching) (Open Source)squid[1] FreeBSD [2] Linux[3]Solaris [4]

More information

本文由筱驀釹贡献

本文由筱驀釹贡献 本 文 由 筱 驀 釹 贡 献 ppt 文 档 可 能 在 WAP 端 浏 览 体 验 不 佳 建 议 您 优 先 选 择 TXT, 或 下 载 源 文 件 到 本 机 查 看 Linux 操 作 系 统 Linux 操 作 系 统 第 一 部 分 介 绍 与 安 装 Linux 的 由 来 : Linux 的 由 来 : 的 由 来 Linus Torvalds 1.Linux 的 版 本 1.Linux

More information

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP # iptables 默认安全规则脚本 一 #nat 路由器 ( 一 ) 允许路由 # iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT ( 二 ) DNAT 与端口转发 1 启用 DNAT 转发 # iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 dprot 422 -j DNAT to-destination

More information

Microsoft Word - PS2_linux_guide_cn.doc

Microsoft Word - PS2_linux_guide_cn.doc Linux For $ONY PlayStatioin2 Unofficall General Guide Language: Simplified Chinese First Write By Beter Hans v0.1 Mail: hansb@citiz.net Version: 0.1 本 人 是 菜 鸟 + 小 白 欢 迎 指 正 错 误 之 处, 如 果 您 有 其 他 使 用 心 得

More information

ebook15-C

ebook15-C C 1 1.1 l s ( 1 ) - i i 4. 14 - d $ l s -ldi /etc/. /etc/.. - i i 3077 drwxr-sr-x 7 bin 2048 Aug 5 20:12 /etc/./ 2 drwxr-xr-x 13 root 512 Aug 5 20:11 /etc/../ $ls -ldi /. /..... i 2 2 drwxr-xr-x 13 root

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0 SDChain-Matrix 节点搭建指南 目录 1 环境要求... 3 2 软件下载... 4 3 安装部署... 4 3.1 部署可执行程序目录... 4 3.2 部署配置文件目录... 4 3.3 部署数据库文件目录... 4 3.4 部署日志文件目录... 4 3.5 部署依赖库文件目录... 4 4 配置参数... 5 5 启动运行... 7 5.1 普通模式启动... 7 5.2 加载启动模式...

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

Web

Web Email: tian@dr.com http://www.digiark.com/tian Web 1. 2. 3. 4. 5. 6. Internet Internet (Hacker) Internet web IP 1 Internet UNIX Windows VLAN Internet IP 2 Internet FTP TELNET PING IP 8 telnet FTP RLOGIN

More information

自由軟體教學平台

自由軟體教學平台 NCHC Opensource task force DRBL steven@nchc.gov.tw, c00hkl00@nchc.gov.tw National Center for High-Performance Computing http://www.nchc.gov.tw Jan, 2003 1 2003/1/28 ( ) 09:00-10:30 10:40-12:00 Linux 13:00-14:30

More information

Microsoft Word - linux命令及建议.doc

Microsoft Word - linux命令及建议.doc Linux 操 作 系 统 命 令 集 1 基 本 命 令 查 看 系 统 信 息 : uname -a 修 改 密 码 : passwd 退 出 : logout(exit) 获 取 帮 助 : man commands 2 文 件 和 目 录 命 令 显 示 当 前 工 作 目 录 : pwd 改 变 所 在 目 录 : cd cd - 切 换 到 上 一 次 使 用 的 目 录 cd 切 换

More information

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30 0 配置 Host MIB 设备 V 1.1.2 ( 简体版 ) 0 Update: 2016/1/30 前言 N-Reporter 支持 Host Resource MIB 监控主机 (Host) 状态, 本文件描述 N-Reporter 用户如何配置 Host MIB 设备 文件章节如下 : 1. 配置 Windows Server 2003... 2 1-1.Windows Server 2003

More information

2005 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / Sun Sun Microsystems Su

2005 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / Sun Sun Microsystems Su Java Desktop System Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 819 0675 10 2005 2 2005 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. Sun Sun Berkeley

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center

More information

ebook 185-6

ebook 185-6 6 Red Hat Linux DB2 Universal Database 6.1 D B 2 Red Hat D B 2 Control Center D B 2 D B 2 D B 2 6.1 DB2 Universal Database [DB2]6.1 D B 2 O LT P O L A P D B 2 I B M P C We e k D B 2 D B 2 L i n u x Windows

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

Basic System Administration

Basic System Administration 基 本 系 统 管 理 ESX Server 3.5 ESX Server 3i 版 本 3.5 Virtual Center 2.5 基 本 管 理 指 南 基 本 管 理 指 南 修 订 时 间 :20080410 项 目 :VI-CHS-Q208-490 我 们 的 网 站 提 供 最 新 的 技 术 文 档, 网 址 为 : http://www.vmware.com/cn/support/

More information

投影片 1

投影片 1 FreeBSD A 95/10/11 19:00~21:00 95/10/11 FreeBSD 練 1 Services Setup SSH, lighttpd, PHP, MySQL, FTP, Postfix, phpmyadmin, Blog, Gallery 95/10/11 FreeBSD 練 2 1. 2. # FreeBSD # 3. vi ee joe nano etc 95/10/11

More information

Simulator By SunLingxi 2003

Simulator By SunLingxi 2003 Simulator By SunLingxi sunlingxi@sina.com 2003 windows 2000 Tornado ping ping 1. Tornado Full Simulator...3 2....3 3. ping...6 4. Tornado Simulator BSP...6 5. VxWorks simpc...7 6. simulator...7 7. simulator

More information

VIDEOJET connect 7000 VJC-7000-90 zh- CHS Operation Manual VIDEOJET connect 7000 zh-chs 3 目 录 1 浏 览 器 连 接 7 1.1 系 统 要 求 7 1.2 建 立 连 接 7 1.2.1 摄 像 机 中 的 密 码 保 护 7 1.3 受 保 护 的 网 络 7 2 系 统 概 述 8 2.1 实 况

More information

電子商業伺服器管理(終極版).doc

電子商業伺服器管理(終極版).doc 2 3 4 5 Chinese Linux Documentation Project / 6 7 8 9 10 #!/bin/sh # # named This shell script takes care of starting and stopping # named (BIND DNS server). # # Source function library.. /etc/rc.d/init.d/functions

More information

ebook71-13

ebook71-13 13 I S P Internet 13. 2. 1 k p p p P P P 13. 2. 2 1 3. 2. 3 k p p p 1 3. 2. 4 l i n u x c o n f P P P 13. 2. 5 p p p s e t u p 13. 2. 6 p p p s e t u p P P P 13. 2. 7 1 3. 2. 8 C a l d e r a G U I 13.

More information

¶C¶L§§¬_™¨ A.PDF

¶C¶L§§¬_™¨ A.PDF 1 9 3 1 9 4 / 7.1 / 1 9 5 7.2 % netstat -rn Routing tables Destination Gateway Flags Refcnt Use Interface 127.0.0.1 127.0.0.1 UH 1 132 lo0 172.16.12.0 172.16.12.2 U 26 49041 le0 1 9 6 / % ping -s almond

More information

Windows 2000 Server for T100

Windows 2000 Server for T100 2 1 Windows 95/98 Windows 2000 3.5 Windows NT Server 4.0 2 Windows DOS 3.5 T200 2002 RAID RAID RAID 5.1 Windows 2000 Server T200 2002 Windows 2000 Server Windows 2000 Server Windows 2000 Server 3.5 for

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

epub 61-2

epub 61-2 2 Web Dreamweaver UltraDev Dreamweaver 3 We b We b We Dreamweaver UltraDev We b Dreamweaver UltraDev We b We b 2.1 Web We b We b D r e a m w e a v e r J a v a S c r i p t We b We b 2.1.1 Web We b C C +

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

ebook140-11

ebook140-11 11 VPN Windows NT4 B o r d e r M a n a g e r VPN VPN V P N V P N V P V P N V P N TCP/IP 11.1 V P N V P N / ( ) 11.1.1 11 V P N 285 2 3 1. L A N LAN V P N 10MB 100MB L A N VPN V P N V P N Microsoft PPTP

More information

SEC-220

SEC-220 Session CERT/CC 60000 50000 40000 52,658 30000 26,829 20000 10000 0 2,412 1995 1999 2000 2001 Q1, 2002 Source: http://www.cert.org/stats/ CERT/CC 3000 2500 2000 2,437 1500 1000 500 0 171 1,065 1995

More information

PowerPoint Presentation

PowerPoint Presentation 立 97 年度 SNMG 練 DNS & BIND enc1215@gmail.com DNS BIND Resolver Named 理 Named 更 DNS DNS Reference 2 DNS DNS 料 domain ip DNS server DNS server 理 DNS server DNS DNS 狀. root name server 理 3 DNS 狀 DNS (2). com

More information

網路安全:理論與實務 第二版

網路安全:理論與實務 第二版 第 10 章 :Wireshark 封 包 分 析 軟 體 10-1 Wireshark 簡 介 10-2 Wireshark 的 安 裝 方 法 10-3 Wireshark 的 使 用 Wireshark 簡 介 - 發 展 歷 史 Wireshark (http://www.wireshark.org/) 是 一 個 開 放 原 始 碼 (open source software) 軟 體,

More information

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony Ioncube Php Encoder 8 3 Crack 4 ->>->>->> DOWNLOAD 1 / 5 2 / 5 Press..the..General..Tools..category4Encrypt..and..protect..files..with..PHP..encoding,..encryption,..ob fuscation..and..licensing... 2016

More information

Oracle 4

Oracle 4 Oracle 4 01 04 Oracle 07 Oracle Oracle Instance Oracle Instance Oracle Instance Oracle Database Oracle Database Instance Parameter File Pfile Instance Instance Instance Instance Oracle Instance System

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

untitled

untitled V3049A-EXD IP-SAN/NAS Infinova Infinova Infinova Infinova www.infinova.com.cn Infinova Infinova Infinova 1 2 1 2 V3049A-EXD-R16 V3049A-EXD-R24 ... 1 1.1... 1 1.2... 1 1.3... 1... 2 2.1... 2 2.2... 3...

More information

1

1 SDT Uclinux SDT.alf.c 44blib.alf 44blib.c jtag ADS.alf.c make menuconfig make dep make clean make lib_only make user_only make romfs make image make uclinux ext2 cash lcd frambuffer 1 armsys-c uclinux

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1)* ( /2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( )

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1)* ( /2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( ) RAID RAID 0 RAID 1 RAID 5 RAID 10 2 2 3 4 * (-1)* (/2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( ) ( ) ( ) Windows USB 1 SATA A. SATASATAIntel SATA (SATA3

More information

Chapter 2

Chapter 2 2 (Setup) ETAP PowerStation ETAP ETAP PowerStation PowerStation PowerPlot ODBC SQL Server Oracle SQL Server Oracle Windows SQL Server Oracle PowerStation PowerStation PowerStation PowerStation ETAP PowerStation

More information

untitled

untitled V3041A-J/V3042A-J IP-SAN/NAS Infinova Infinova Infinova Infinova www.infinova.com.cn Infinova Infinova Infinova 1 2 1 2 V3041A-16R-J V3041A-24R-J V3042A-16R-J V3042A-24R-J V3049-EXD-R16 V3049-EXD-R24 ...

More information

ebook35-2

ebook35-2 2 2.1 Linux login Login: < > Password: < > Linux r o o t l o g o u t 2.2 Linux X Window Linux Linux Bourne ( b s h ) C ( c s h ) Korn ( k s h ) Bourne Steven Bourne UNIX Bourne bash Bourne C Bill Joy Bourne

More information

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2 (Guangzhou) AIT Co, Ltd 020-84106666 020-84106688 http://wwwlenxcn Xi III Zebra XI III 1 (Guangzhou) AIT Co, Ltd 020-84106666 020-84106688 http://wwwlenxcn 230V 110V [ ]! 2 (Guangzhou) AIT Co, Ltd 020-84106666

More information

http://panweizeng.com http://meituan.com http://meituan.com hosts http://meituan.com hosts localhost 127.0.0.1 /etc/nsswitch.conf /etc/hosts /etc/resolv.conf Mail Client Web Browser cache 1-30mins Clients

More information

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用 TORQUE Maui hmli@ustc.edu.cn 2008 1 1 TORQUE 2 1.1 TORQUE........................... 2 1.2 TORQUE...................... 2 1.3 TORQUE.......................... 4 1.4 TORQUE........................... 4

More information

puppet 简介 3 puppet 是什么 3 Hello world 4 puppet 安装 5 debian 系发行版安装 puppet 5 redhat 系发行版安装 puppet 5 源代码安装 puppet 6 配置 c/s 模式的 puppet 试验环境 6 puppet 语法 8 资

puppet 简介 3 puppet 是什么 3 Hello world 4 puppet 安装 5 debian 系发行版安装 puppet 5 redhat 系发行版安装 puppet 5 源代码安装 puppet 6 配置 c/s 模式的 puppet 试验环境 6 puppet 语法 8 资 puppet 入门 puppet 简介 3 puppet 是什么 3 Hello world 4 puppet 安装 5 debian 系发行版安装 puppet 5 redhat 系发行版安装 puppet 5 源代码安装 puppet 6 配置 c/s 模式的 puppet 试验环境 6 puppet 语法 8 资源 8 类和函数 10 节点 11 变量和数组 12 模块 13 几个常用的资源

More information

epub

epub 3 Cisco 3.1 S e t u p C i s c o C i s c o Cisco IOS C i s c o 3.2 Te l n e t T F T P 3-1 3-1 configure terminal configure memory Configure network t e l n e t < C t r l - Z > conf t N V R A M T F T P I

More information

Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1

Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1 Red Flag Linux Desktop 4.0 68 6 Red Flag Software Co., Ltd. http://www.redflag-linux.com Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1 1 Red Flag Linux Desktop 4.0 1.1 Red Flag Linux Desktop

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

Cadence SPB 15.2 VOICE Cadence SPB 15.2 PC Cadence 3 (1) CD1 1of 2 (2) CD2 2of 2 (3) CD3 Concept HDL 1of 1

Cadence SPB 15.2 VOICE Cadence SPB 15.2 PC Cadence 3 (1) CD1 1of 2 (2) CD2 2of 2 (3) CD3 Concept HDL 1of 1 Cadence SPB 15.2 VOICE 2005-05-07 Cadence SPB 15.2 PC Cadence 3 (1) CD1 1of 2 (2) CD2 2of 2 (3) CD3 Concept HDL 1of 1 1 1.1 Cadence SPB 15.2 2 Microsoft 1.1.1 Windows 2000 1.1.2 Windows XP Pro Windows

More information

untitled

untitled Unix Ka-Lok Ng () Department of Biological Sciences and Biotechnology() Taichung Healthcare and Management University (O) 04-23323456 x1856 3408 Teach the student how to use Linux system using TEXT mode

More information

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun SAP livecache Sun Cluster Solaris OS SPARC Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 817 7374 10 2004 4 A 2004 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA

More information

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Linux 操 作 系 统 基 础 介 绍 课 程 目 标 及 要 求 了 解 Linux 操 作 系 统 的 登 入 方 式 掌 握 常 用 命 令 的 基 本 用 法 能 够 熟 练 在 各 个 目 录 转 换 Outline 1. Linux 操 作 系 统 简 介 2. Linux 操 作 系 统 的 登 录 3. Linux 操 作 系 统 的 目 录 结 构 4. 常 用 命 令 5.

More information

ebook70-22

ebook70-22 2 2 L i n u x f s t a b X 11 L i n u x L i n u x L i n u x D O S Wi n d o w s L i n u x O p e n L i n u x / u s r / m a n / m a n 5 f s t a b m o u n t m o u n t L i n u x 22.1 OpenLinux L i n u x U N

More information

Abstract arm linux tool-chain root NET-Start! 2

Abstract arm linux tool-chain root NET-Start! 2 Lab III - Embedding Linux 1 Abstract arm linux tool-chain root NET-Start! 2 Part 1.4 Step1. tool-chain 4 Step2. PATH 4 Part 2 kernel 5 Step1. 5 Step2... 6 Step3...8 Part 3 root. 8 Step1. 8 Step2. 8 Part

More information

SiteView技术白皮书

SiteView技术白皮书 SiteView ECC V6.2 技 术 白 皮 书 游 龙 网 络 科 技 ( 中 国 ) 有 限 公 司 DragonFlow Networks(China),Inc. 目 录 第 一 章 产 品 概 述... 3 第 二 章 系 统 结 构... 6 一 系 统 架 构... 7 1 用 户 管 理 模 块... 7 2 Web Server... 8 3 存 储 加 密 模 块... 8

More information

. Outline 编译 Linux 在 QEMU 模拟器上运行制作带 grub 启动的磁盘映像...1 编译 Linux 在 QEMU 模拟器上运行...2 制作带 grub 启动的磁盘映像

. Outline 编译 Linux 在 QEMU 模拟器上运行制作带 grub 启动的磁盘映像...1 编译 Linux 在 QEMU 模拟器上运行...2 制作带 grub 启动的磁盘映像 .... 计算机应用教研室 @ 计算机学院嵌入式系统实验室 @ 苏州研究院中国科学技术大学 Fall 2010 . Outline 编译 Linux 在 QEMU 模拟器上运行制作带 grub 启动的磁盘映像...1 编译 Linux 在 QEMU 模拟器上运行...2 制作带 grub 启动的磁盘映像 . 编译 Linux 在 QEMU 模拟器上运行 qemu+linux-2.6.26.1. 准备模拟器.2.

More information

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005 1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005 1 1...3 2...20 3...28 4...41 5 Windows SQL Server...47 Microsoft SQL Server 2005 DBSRV1 Microsoft SQL Server

More information

Microsoft Word - 100118002.htm

Microsoft Word - 100118002.htm 100 年 度 11800 電 腦 軟 體 應 用 乙 級 技 術 士 技 能 檢 定 學 科 測 試 試 題 本 試 卷 有 選 擇 題 80 題, 每 題 1.25 分, 皆 為 單 選 選 擇 題, 測 試 時 間 為 100 分 鐘, 請 在 答 案 卡 上 作 答, 答 錯 不 倒 扣 ; 未 作 答 者, 不 予 計 分 准 考 證 號 碼 : 姓 名 : 選 擇 題 : 1. (3)

More information

Microsoft Word - template.doc

Microsoft Word - template.doc HGC efax Service User Guide I. Getting Started Page 1 II. Fax Forward Page 2 4 III. Web Viewing Page 5 7 IV. General Management Page 8 12 V. Help Desk Page 13 VI. Logout Page 13 Page 0 I. Getting Started

More information

ch09.PDF

ch09.PDF 9-1 / (TCP/IP) TCP/IP TCP/IP ( ) ICMP ARP RARP 9.1 TCP/IP 9.1.1 TCP/IP OSI TCP/IP (DARPA) DARPA TCP/IP UNIX Berkeley Software DistributionTCP/IP TCP/IP TCP/IP TCP/IP TCP/IP TCP/IP OSI - TCP/IP ( ) ( )

More information

ME3208E2-1.book

ME3208E2-1.book DocuPrint 205/255/305 操 作 說 明 書 Adobe Adobe logo PostScript PostScript 3 及 PostScript logo 是 Adobe Systems Incorporated 的 商 標 Microsoft Windows Windows NT Windows Server 是 美 國 Microsoft Corporation 於 美

More information

Guide to Install SATA Hard Disks

Guide to Install SATA Hard Disks SATA RAID 1. SATA. 2 1.1 SATA. 2 1.2 SATA 2 2. RAID (RAID 0 / RAID 1 / JBOD).. 4 2.1 RAID. 4 2.2 RAID 5 2.3 RAID 0 6 2.4 RAID 1.. 10 2.5 JBOD.. 16 3. Windows 2000 / Windows XP 20 1. SATA 1.1 SATA Serial

More information

ebook70-5

ebook70-5 5 / 5.1 L i n u x L i n u x X L i n u x 5.1.1 touch t o u c h t o u c h G N U t o u c h # touch newfile # ls -l newfile - r w - r - - r - - 1 bball users 0 Jan 5 12 : 40 n e w f i l e t o u c h 0 # > newfile2

More information

IP Access Lists IP Access Lists IP Access Lists

IP Access Lists IP Access Lists IP Access Lists Chapter 10 Access Lists IP Access Lists IP Access Lists IP Access Lists Security) IP Access Lists Access Lists (Network router For example, RouterA can use an access list to deny access from Network 4

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

05_資源分享-NFS及NIS.doc

05_資源分享-NFS及NIS.doc 5 NFS NFS Server NFS Client NIS NIS 5-0 (Network File System, NFS) Unix NFS mount NFS... Network Information Service NIS Linux NIS NIS NIS / / /etc/passwd /etc/group NFS NIS 5-1 NFS 5-1-1 NFS NFS Network

More information

財金資訊-80期.indd

財金資訊-80期.indd IPv6 / LINE YouTube TCP/IP TCP (Transmission Control Protocol) IP (Internet Protocol) (node) (address) IPv4 168.95.1.1 IPv4 1981 RFC 791 --IP IPv4 32 2 32 42 IP (Internet Service Provider ISP) IP IP IPv4

More information

Sun Update Connection System Sun Microsystems, Inc Network Circle Santa Clara, CA U.S.A

Sun Update Connection System Sun Microsystems, Inc Network Circle Santa Clara, CA U.S.A Sun Update Connection System 1.0.8 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 819 7286 10 2006 6 2006 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A.

More information

ext-web-auth-wlc.pdf

ext-web-auth-wlc.pdf 使 用 无 线 局 域 网 控 制 器 的 外 部 Web 身 份 验 证 配 置 示 例 目 录 简 介 先 决 条 件 要 求 使 用 的 组 件 规 则 背 景 信 息 外 部 Web 身 份 验 证 过 程 网 络 设 置 配 置 为 来 宾 用 户 创 建 动 态 接 口 创 建 预 先 身 份 验 证 ACL 在 WLC 上 为 来 宾 用 户 创 建 本 地 数 据 库 配 置 外 部

More information

ARM JTAG实时仿真器安装使用指南

ARM JTAG实时仿真器安装使用指南 ARM JTAG Version 1.31 2003. 11. 12 ARM JTAG ARM JTAG.3 ARM 2.1.4 2.2.4 ARM JTAG 3.1 18 3.2 18 3.2.1 Multi-ICE Server.18 3.2.2 ADS..21 ARM JTAG 4.1 Multi-ICE Server 33 4.1.1 Multi-ICE Server..... 33 4.1.2

More information

投影片 1

投影片 1 類 Linux BASH shell (, VBird) 2008/03/29 Linux 1 Bash Shell 令 vi vim 料流 令 / 令 理 (job control) 例 2008/03/29 Linux 2 Bash shell 2008/03/29 Linux 3 什 Shell Shell shell 2008/03/29 Linux 4 什 Shell Linux shell

More information

Sun Fire V440 Server Administration Guide - zh_TW

Sun Fire V440 Server Administration Guide - zh_TW Sun Fire V440 Server 管 理 指 南 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 650-960-1300 文 件 號 碼 :817-2818-10 2003 年 7 月, 修 訂 版 A 將 您 對 此 文 件 的 意 見 傳 送 到 :http://www.sun.com/hwdocs/feedback

More information

RTX3.2.0标准版 - 技术白皮书

RTX3.2.0标准版 - 技术白皮书 一 铭 操 作 系 统 技 术 白 皮 书 广 西 一 铭 软 件 股 份 有 限 公 司 版 权 声 明 本 书 版 权 归 广 西 一 铭 软 件 股 份 有 限 公 司 所 有, 并 保 留 对 本 文 档 及 声 明 的 最 终 解 释 权 和 修 改 权 本 文 件 中 出 现 的 任 何 文 字 叙 述 文 档 格 式 插 图 照 片 方 法 过 程 等 内 容, 除 另 有 特 别 说

More information

UDP 8.2 TCP/IP OSI OSI 3 OSI TCP/IP IP TCP/IP TCP/IP Transport Control Protocol TCP User Datagram Protocol UDP TCP TCP/IP IP TCP TCP/IP TC

UDP 8.2 TCP/IP OSI OSI 3 OSI TCP/IP IP TCP/IP TCP/IP Transport Control Protocol TCP User Datagram Protocol UDP TCP TCP/IP IP TCP TCP/IP TC 8 TCP/IP TCP/IP TCP OSI 8.1 OSI 4 end to end A B FTP OSI Connection Management handshake Flow Control Error Detection IP Response to User s Request TCP/IP TCP 181 UDP 8.2 TCP/IP OSI OSI 3 OSI 3 8.1 TCP/IP

More information

ebook70-21

ebook70-21 2 1 2 2 2 3 2 4 2 1 s u O p e n L i n u x L i n u x s c h e d u l i n g L i n u x O p e n L i n u x O p e n L i n u x O p e n L i n u x 5 r m # rm -fr / * L i n u x r m Permission denied s u 21.1 su s

More information

Data Server_new_.doc

Data Server_new_.doc 0i B/C Data Server Windows 2000 Window XP Windows XP FTP FANUC Data Server FTP liwei@beijing-fanuc 1 06-10-8 Content 1. /...3 1.1...3 1.2...3 1.3 CNC...3 2....5 2.1 STORAGE...5 2.2 FTP...6 2.3 BUFFER...7

More information

untitled

untitled TS-411U Turbo Server TS-411U Turbo Server ( : 1.0.0) 2005 2005 12 8-2 - 1. 2. TS-411U Turbo Server - 3 - ... 7 1.1... 7 1.2... 8 1.3... 9 TS-411U... 10 2.1... 10 2.2... 14 2.3 TS-411U... 15 LCD... 17...

More information

ebook70-11

ebook70-11 11 L i n u x p i n e M e s s e n g e r P P P I S 11.1 s e n d m a i l U N I X O p e n L i n u x U N I X O p e n L i n u x O p e n L i n u x s e n d m a i l O p e n L i n u x ( 11-1 ) 11-1 O p e n L i n

More information

.. 3 N

.. 3 N 1 .. 3 N9.. 4 5.. 6 7.. 8 20.. 21 23.. 24.. 25 26.. 27.. 28.. 29 2 (Cyber Café) Linux (LAN) Linux Public Home 3 K12LTSP K12LTSPFedora Core 4 (Linux)LTSP Linux (command line interface) (Graphical User Interface,

More information

文件1

文件1 iptables log rule policy ( ) 1. (Packet Filter) OSI IP (Router) router router access control list ACL (Transparency) 2. Proxy store-and-forward proxy filter " " 3. Application internet java script 4. Hardware

More information

Pchome

Pchome H Linux Linux Red Hat Linux Fedora 1 DNS Mail WWW Domain tslg.idv.tw IP 192.168.1.254 tslg.idv.tw PChome Seednet ISP http://rs.twnic.net.tw/index2.html Seednet http://rs.seed.net.tw/ Pchome http://myname.pchome.com.tw/

More information

untitled

untitled 年度 路 IVI 劉 隆 年 597 598 IVI 錄... 601 行... 601... 601 1.... 601 2. 路... 602 3.... 603... 604 1.IPv4 to IPv6... 604 2.IPv6 to IPv4... 605 -... 606 ( )IVI Server... 606 ( )IVI Server... 610 ( )IVI DNS Server...

More information

目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功 能... 7 一 銷 售 及 訂 單... 7 二 稅... 8 三 應 收 帳 款... 8 四 存 貨... 8 五 購 買... 9 六 應 付 帳 款... 9

目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功 能... 7 一 銷 售 及 訂 單... 7 二 稅... 8 三 應 收 帳 款... 8 四 存 貨... 8 五 購 買... 9 六 應 付 帳 款... 9 東 吳 大 學 企 研 所 資 訊 管 理 期 末 報 告 weberp 使 用 說 明 書 指 導 教 授 : 尚 榮 安 教 授 第 一 組 童 偉 哲 01353025 劉 彥 澧 01353028 史 璦 禎 01353031 吳 采 紋 98153143 1 目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功

More information

目 录(目录名)

目  录(目录名) 目录 1 域名解析配置命令... 1-1 1.1 域名解析配置命令...1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-2 1.1.3 display dns proxy table... 1-2 1.1.4 display dns server... 1-3 1.1.5 display ip host...

More information

D. 192.168.5.32 E. 192.168.5.14 答 案 :C 3. 工 作 站 A 配 置 的 IP 地 址 为 192.0.2.24/28. 工 作 站 B 配 置 的 IP 地 址 为 192.0.2.100/28. 两 个 工 作 站 之 间 有 直 通 线 连 接, 两 台

D. 192.168.5.32 E. 192.168.5.14 答 案 :C 3. 工 作 站 A 配 置 的 IP 地 址 为 192.0.2.24/28. 工 作 站 B 配 置 的 IP 地 址 为 192.0.2.100/28. 两 个 工 作 站 之 间 有 直 通 线 连 接, 两 台 CCNP 学 前 测 试 题 都 选 自 官 方 的 全 真 考 试 题, 共 100 道 题 实 际 测 试 选 60 道 题, 同 官 方 正 式 考 题 数 目 基 本 一 致, 因 此 等 于 是 模 拟 考 试, 采 用 网 上 形 式 进 行 测 评 学 前 测 评 目 的 是 为 了 检 验 大 家 对 CCNA 阶 段 知 识 掌 握 的 程 度, 同 时 对 CCNA 最 核 心

More information

1 IT IT IT IT Virtual Machine, VM VM VM VM Operating Systems, OS IT

1 IT IT IT IT Virtual Machine, VM VM VM VM Operating Systems, OS IT 1 IT IT IT IT Virtual Machine, VM VM VM VM Operating Systems, OS IT Chapter 1 了解虛擬化技術種類 硬體 / 平台 / 伺服器虛擬化 VM VM VM CPU Hypervisor VMM Virtual Machine Manager VM Host OS VM VM Guest OS Host OS CPU VM Hyper-V

More information

目 录(目录名)

目  录(目录名) 目录 目录...1-1 1.1 域名解析配置命令... 1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-1 1.1.3 display dns server... 1-2 1.1.4 display ip host... 1-3 1.1.5 dns domain... 1-4 1.1.6 dns resolve...

More information