<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[网络医生]]></title> 
<description><![CDATA[]]></description>
<link>http://www.num123.com/</link>
<language>zh-cn</language>
<generator>www.emlog.net</generator>
<item>
	<title>监控Linux系统的非法用户登陆增强版</title>
	<link>http://www.num123.com/post/140</link>
	<description><![CDATA[<p><span style="font-size:16px;">之前写过一篇文章监控Linux系统非法用户登陆的文章，本文为增强版，可以判断IP范围，之前只是判断单个IP。</span></p>
<p><span style="font-size:16px;">原文链接： <a href="/admin/ http:/www.num123.com/post/125" target="_blank">http://www.num123.com/post/125</a></span></p>
<p><span style="font-size:16px;">本文只是对脚本内容作了改动，增加了判断范围，脚本内容如下：</span></p>
<p></p>
<pre class="brush:shell; toolbar: true; auto-links: true;">#!/bin/bash
#获取登录者的用户名
user=$USER
#获取登录者的IP地址
ip=${SSH_CLIENT%% *}
#获取登录的时间
time=$(date +%F%t%k:%M)
#服务器的IP地址
server=`ifconfig seth0|sed -n '2p'|awk -F ":" '{print $2}'|awk '{print $1}'`
#判断如果登录者的IP地址不是指定的IP范围内，则发邮件报警
nets="192.168.100. 115.158.112. 192.168.102."
for ipp in $nets
do
    for i in `seq 254`
    do
       if [ "$ip" = "$ipp$i" ];then
        exit 0
       fi
    done
done
echo -e "time:$time \nuser:$user \nlogin ip:$ip \n"|mail -s "server:$server" 138*****037@139.com</pre><p></p>
<p>&nbsp;</p>]]></description>
	<pubDate>Sun, 05 Aug 2018 11:40:36 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/140</guid>

</item>
<item>
	<title>Linux系统内核参数优化</title>
	<link>http://www.num123.com/post/139</link>
	<description><![CDATA[<b><span style="font-size:14px;font-family:SimSun;">sysctl.conf优化方案-----完整版</span></b><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">关于sysctl.conf的优化方案网上有各种版本方案，大多数都是抄来抄去的，让新人看了很迷茫。下面出一个完整的方案！</span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#####################################################################</span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">所有rfc相关的选项都是默认启用的，因此网上的那些还自己写rfc支持的都可以扔掉了 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################################################################</span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.sourceroute=0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.accept_sourceroute=0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################################################ </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">通过源路由，攻击者可以尝试到达内部IP地址 --包括RFC1918中的地址，所以 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">不接受源路由信息包可以防止你的内部网络被探测。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################ </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.drop_synfin=1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">安全参数，编译内核的时候加了options TCP_DROP_SYNFIN才可以用，可以阻止某些OS探测。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################# </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.maxvnodes=8446 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">vnode 是对文件或目录的一种内部表达。 因此， 增加可以被操作系统利用的 vnode 数量将降低磁盘的 I/O。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">一般而言， 这是由操作系统自行完成的，也不需要加以修改。但在某些时候磁盘 I/O 会成为瓶颈， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">而系统的 vnode 不足， 则这一配置应被增加。此时需要考虑是非活跃和空闲内存的数量。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">要查看当前在用的 vnode 数量： </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;"># sysctl vfs.numvnodes </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">vfs.numvnodes: 91349 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">要查看最大可用的 vnode 数量： </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;"># sysctl kern.maxvnodes </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.maxvnodes: 100000 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果当前的 vnode 用量接近最大值，则将 kern.maxvnodes 值增大 1,000 可能是个好主意。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">您应继续查看 vfs.numvnodes 的数值， 如果它再次攀升到接近最大值的程度， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">仍需继续提高 kern.maxvnodes。 在 top(1) 中显示的内存用量应有显著变化， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">更多内存会处于活跃 (active) 状态。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################################################</span><br />
<span style="font-family:SimSun;"> </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.maxproc: 964 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">Maximum number of processes </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">###########################################################</span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.maxprocperuid: 867 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">Maximum processes allowed per userid </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">##########################################################</span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">因为我的maxusers设置的是256，20+16*maxusers＝4116。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">maxprocperuid至少要比maxproc少1，因为init(8) 这个系统程序绝对要保持在运作状态。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">我给它设置的2068。 </span><br />
<span style="font-family:SimSun;"> </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.maxfiles: 1928 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">系统中支持最多同时开启的文件数量，如果你在运行数据库或大的很吃描述符的进程，那么应该设置在20000以上， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">比如kde这样的桌面环境，它同时要用的文件非常多。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">一般推荐设置为32768或者65536。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.argmax: 262144 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">maximum number of bytes (or characters) in an argument list. </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">命令行下最多支持的参数，比如你在用find命令来批量删除一些文件的时候 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">find . -name "*.old" -delete，如果文件数超过了这个数字，那么会提示你数字太多的。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">可以利用find . -name "*.old" -ok rm {} \;来删除。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">默认的参数已经足够多了，因此不建议再做修改。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.securelevel: -1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">-1：这是系统默认级别，没有提供任何内核的保护错误；&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">0：基本上作用不多，当你的系统刚启动就是0级别的，当进入多用户模式的时候就自动变成1级了。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">1：在这个级别上，有如下几个限制：&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">　　a. 不能通过kldload或者kldunload加载或者卸载可加载内核模块；&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">　　b. 应用程序不能通过/dev/mem或者/dev/kmem直接写内存；&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">　　c. 不能直接往已经装在(mounted)的磁盘写东西，也就是不能格式化磁盘，但是可以通过标准的内核接口执行写操作；&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">　　d. 不能启动X-windows，同时不能使用chflags来修改文件属性；&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">2：在 1 级别的基础上还不能写没装载的磁盘，而且不能在1秒之内制造多次警告，这个是防止DoS控制台的；&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">3：在 2 级别的级别上不允许修改IPFW防火墙的规则。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">　　如果你已经装了防火墙，并且把规则设好了，不轻易改动，那么建议使用3级别，如果你没有装防火墙，而且还准备装防火墙的话，不建议使用。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">我们这里推荐使用 2 级别，能够避免比较多对内核攻击。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.maxfilesperproc: 1735 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">每个进程能够同时打开的最大文件数量，网上很多资料写的是32768 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">除非用异步I/O或大量线程，打开这么多的文件恐怕是不太正常的。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">我个人建议不做修改，保留默认。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.maxsockbuf: 262144 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">最大的套接字缓冲区，网上有建议设置为2097152（2M）、8388608（8M）的。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">我个人倒是建议不做修改，保持默认的256K即可，缓冲区大了可能造成碎片、阻塞或者丢包。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.somaxconn: 128 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">最大的等待连接完成的套接字队列大小，即并发连接数。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">高负载服务器和受到Dos攻击的系统也许会因为这个队列被塞满而不能提供正常服务。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">默认为128，推荐在1024-4096之间，根据机器和实际情况需要改动，数字越大占用内存也越大。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.nmbclusters: 4800 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个值用来调整系统在开机后所要分配给网络 mbufs 的 cluster 数量， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">由于每个 cluster 大小为 2K，所以当这个值为 1024 时，也是会用到 2MB 的核心内存空间。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">假设我们的网页同时约有 1000 个联机，而 TCP 传送及接收的暂存区大小都是 16K， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">则最糟的情况下，我们会需要 (16K+16K) * 1024，也就是 32MB 的空间， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">然而所需的 mbufs 大概是这个空间的二倍，也就是 64MB，所以所需的 cluster 数量为 64MB/2K，也就是 32768。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">对于内存有限的机器，建议值是 1024 到 4096 之间，而当拥有海量存储器空间时，我们可以将它设定为 4096 到 32768 之间。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">我们可以使用 netstat 这个指令并加上参数 -m 来查看目前所使用的 mbufs 数量。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">要修改这个值必须在一开机就修改，所以只能在 /boot/loader.conf 中加入修改的设定 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.nmbclusters=32768 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.shmmax: 33554432 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">共享内存和信号灯("System VIPC")如果这些过小的话，有些大型的软件将无法启动 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">安装xine和mplayer提示的设置为67108864，即64M， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果内存多的话，可以设置为134217728，即128M </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.shmall: 8192 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">共享内存和信号灯("System VIPC")如果这些过小的话，有些大型的软件将无法启动 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">安装xine和mplayer提示的设置为32768 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.shm_use_phys: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#######################################################################</span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果我们将它设成 1，则所有 System V 共享内存 (share memory，一种程序间沟通的方式)部份都会被留在实体的内存 (physical memory) 中， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">而不会被放到硬盘上的 swap 空间。我们知道物理内存的存取速度比硬盘快许多，而当物理内存空间不足时， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">部份数据会被放到虚拟的内存上，从物理内存和虚拟内存之间移转的动作就叫作 swap。如果时常做 swap 的动作， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">则需要一直对硬盘作 I/O，速度会很慢。因此，如果我们有大量的程序 (数百个) 需要共同分享一个小的共享内存空间， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">或者是共享内存空间很大时，我们可以将这个值打开。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这一项，我个人建议不做修改，除非你的内存非常大。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################### </span><br />
<span style="font-family:SimSun;"> </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.shm_allow_removed: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">共享内存是否允许移除？这项似乎是在fb下装vmware需要设置为1的，否则会有加载SVGA出错的提示 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">作为服务器，这项不动也罢。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">###################################################################</span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.numopensockets: 12 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">已经开启的socket数目，可以在最繁忙的时候看看它是多少，然后就可以知道maxsockets应该设置成多少了。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.maxsockets: 1928 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这是用来设定系统最大可以开启的 socket 数目。如果您的服务器会提供大量的 FTP 服务， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">而且常快速的传输一些小档案，您也许会发现常传输到一半就中断。因为 FTP 在传输档案时， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">每一个档案都必须开启一个 socket 来传输，但关闭 socket 需要一段时间，如果传输速度很快， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">而档案又多，则同一时间所开启的 socket 会超过原本系统所许可的值，这时我们就必须把这个值调大一点。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">除了 FTP 外，也许有其它网络程序也会有这种问题。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">然而，这个值必须在系统一开机就设定好，所以如果要修改这项设定，我们必须修改 /boot/loader.conf 才行 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.maxsockets="16424" </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.nsfbufs: 1456 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">经常使用 sendfile(2) 系统调用的繁忙的服务器，&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">有必要通过 NSFBUFS 内核选项或者在 /boot/loader.conf (查看 loader(8) 以获得更多细节) 中设置它的值来调节 sendfile(2) 缓存数量。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个参数需要调节的普通原因是在进程中看到 sfbufa 状态。sysctl kern.ipc.nsfbufs 变量在内核配置变量中是只读的。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个参数是由 kern.maxusers 决定的，然而它可能有必要因此而调整。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">在/boot/loader.conf里加入 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.ipc.nsfbufs="2496" </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.maxusers: 59 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">maxusers 的值决定了处理程序所容许的最大值，20+16*maxusers 就是你将得到的所容许处理程序。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">系统一开机就必须要有 18 个处理程序 (process)，即便是简单的执行指令 man 又会产生 9 个 process， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">所以将这个值设为 64 应该是一个合理的数目。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果你的系统会出现 proc table full 的讯息的话，可以就把它设大一点，例如 128。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">除非您的系统会需要同时开启很多档案，否则请不要设定超过 256。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">可以在 /boot/loader.conf 中加入该选项的设定， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.maxusers=256 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.coredump: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果设置为0，则程序异常退出时不会生成core文件，作为服务器，不建议这样。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">kern.corefile: %N.core </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">可设置为kern.corefile="/data/coredump/%U-%P-%N.core" </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">其中 %U是UID，%P是进程ID，%N是进程名，当然/data/coredump必须是一个实际存在的目录 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">vm.swap_idle_enabled: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">vm.swap_idle_threshold1: 2 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">vm.swap_idle_threshold2: 10 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">在有很多用户进入、离开系统和有很多空闲进程的大的多用户系统中很有用。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">可以让进程更快地进入内存，但它会吃掉更多的交换和磁盘带宽。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">系统默认的页面调度算法已经很好了，最好不要更改。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">vfs.ufs.dirhash_maxmem: 2097152 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">默认的dirhash最大内存,默认2M </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">增加它有助于改善单目录超过100K个文件时的反复读目录时的性能 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">建议修改为33554432（32M） </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################################################ </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">vfs.vmiodirenable: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################</span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个变量控制目录是否被系统缓存。大多数目录是小的，在系统中只使用单个片断(典型的是1K)并且在缓存中使用的更小 (典型的是512字节)。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">当这个变量设置为关闭 (0) 时，缓存器仅仅缓存固定数量的目录，即使您有很大的内存。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">而将其开启 (设置为1) 时，则允许缓存器用 VM 页面缓存来缓存这些目录，让所有可用内存来缓存目录。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">不利的是最小的用来缓存目录的核心内存是大于 512 字节的物理页面大小(通常是 4k)。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">我们建议如果您在运行任何操作大量文件的程序时保持这个选项打开的默认值。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这些服务包括 web 缓存，大容量邮件系统和新闻系统。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">尽管可能会浪费一些内存，但打开这个选项通常不会降低性能。但还是应该检验一下。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">vfs.hirunningspace: 1048576 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个值决定了系统可以将多少数据放在写入储存设备的等候区。通常使用默认值即可， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">但当我们有多颗硬盘时，我们可以将它调大为 4MB 或 5MB。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">注意这个设置成很高的值(超过缓存器的写极限)会导致坏的性能。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">不要盲目的把它设置太高！高的数值会导致同时发生的读操作的迟延。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################################################ </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">vfs.write_behind: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个选项预设为 1，也就是打开的状态。在打开时，在系统需要写入数据在硬盘或其它储存设备上时， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">它会等到收集了一个 cluster 单位的数据后再一次写入，否则会在一个暂存区空间有写入需求时就立即写到硬盘上。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个选项打开时，对于一个大的连续的文件写入速度非常有帮助。但如果您遇到有很多行程延滞在等待写入动作时，您可能必须关闭这个功能。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.local.stream.sendspace: 8192 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################# </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">本地套接字连接的数据发送空间 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">建议设置为65536 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.local.stream.recvspace: 8192 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################# </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">本地套接字连接的数据接收空间 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">建议设置为65536 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.portrange.lowfirst: 1023 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.portrange.lowlast: 600 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.portrange.first: 49152 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.portrange.last: 65535 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.portrange.hifirst: 49152 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.portrange.hilast: 65535 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">以上六项是用来控制TCP及UDP所使用的port范围，这个范围被分成三个部份，低范围、预设范围、及高范围。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这些是你的服务器主动发起连接时的临时端口的范围，预设的已经1万多了，一般的应用就足够了。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果是比较忙碌的FTP server，一般也不会同时提供给1万多人访问的， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">当然如果很不幸，你的服务器就要提供很多，那么可以修改first的值，比如直接用1024开始 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################## </span><br />
<span style="font-family:SimSun;"> </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.redirect: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">设置为0，屏蔽ip重定向功能 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.rtexpire: 3600 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.rtminexpire: 10 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">很多apache产生的CLOSE_WAIT状态，这种状态是等待客户端关闭，但是客户端那边并没有正常的关闭，于是留下很多这样的东东。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">建议都修改为2 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.intr_queue_maxlen: 50 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">Maximum size of the IP input queue，如果下面的net.inet.ip.intr_queue_drops一直在增加， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">那就说明你的队列空间不足了，那么可以考虑增加该值。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.intr_queue_drops: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">Number of packets dropped from the IP input queue,如果你sysctl它一直在增加， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">那么增加net.inet.ip.intr_queue_maxlen的值。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.fastforwarding: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################# </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果打开的话每个目标地址一次转发成功以后它的数据都将被记录进路由表和arp数据表，节约路由的计算时间 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">但会需要大量的内核内存空间来保存路由表。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果内存够大，打开吧，呵呵 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################# </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.ip.random_id: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">##################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">默认情况下，ip包的id号是连续的，而这些可能会被攻击者利用，比如可以知道你nat后面带了多少主机。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果设置成1，则这个id号是随机的，嘿嘿。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">##################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.icmp.maskrepl: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################ </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">防止广播风暴，关闭其他广播探测的响应。默认即是，无须修改。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">###############################</span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.icmp.icmplim: 200 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">限制系统发送ICMP速率，改为100吧，或者保留也可，并不会给系统带来太大的压力。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.icmp.icmplim_output: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果设置成0，就不会看到提示说Limiting icmp unreach response from 214 to 200 packets per second 等等了 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">不过禁止输出容易让我们忽视攻击的存在。这个自己看着办吧。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">###################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.icmp.drop_redirect: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.icmp.log_redirect: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">设置为1，屏蔽ICMP重定向功能 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.icmp.bmcastecho: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################ </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">防止广播风暴，关闭广播ECHO响应，默认即是，无须修改。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.mssdflt: 512 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.minmss: 216 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">数据包数据段最小值，以上两个选项最好不动！或者只修改mssdflt为1460，minmss不动。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################# </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.keepidle: 7200000 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">###################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">TCP的套接字的空闲时间，默认时间太长，可以改为600000（10分钟）。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.sendspace: 32768 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">最大的待发送TCP数据缓冲区空间，应用程序将数据放到这里就认为发送成功了，系统TCP堆栈保证数据的正常发送。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.recvspace: 65536 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">最大的接受TCP缓冲区空间，系统从这里将数据分发给不同的套接字，增大该空间可提高系统瞬间接受数据的能力以提高性能。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这二个选项分别控制了网络 TCP 联机所使用的传送及接收暂存区的大小。预设的传送暂存区为 32K，而接收暂存区为 64K。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果需要加速 TCP 的传输，可以将这二个值调大一点，但缺点是太大的值会造成系统核心占用太多的内存。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果我们的机器会同时服务数百或数千个网络联机，那么这二个选项最好维持默认值，否则会造成系统核心内存不足。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">但如果我们使用的是 gigabite 的网络，将这二个值调大会有明显效能的提升。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">传送及接收的暂存区大小可以分开调整， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">例如，假设我们的系统主要做为网页服务器，我们可以将接收的暂存区调小一点，并将传送的暂存区调大，如此一来，我们就可以避免占去太多的核心内存空间。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.udp.maxdgram: 9216 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">最大的发送UDP数据缓冲区大小，网上的资料大多都是65536，我个人认为没多大必要， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果要调整，可以试试24576。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.udp.recvspace: 42080 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">最大的接受UDP缓冲区大小，网上的资料大多都是65536，我个人认为没多大必要， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果要调整，可以试试49152。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">以上四项配置通常不会导致问题，一般说来网络流量是不对称的，因此应该根据实际情况调整，并观察其效果。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果我们将传送或接收的暂存区设为大于 65535，除非服务器本身及客户端所使用的操作系统都支持 TCP 协议的 windows scaling extension (请参考 RFC 1323 文件)。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">FreeBSD默认已支持 rfs1323 (即 sysctl 的 net.inet.tcp.rfc1323 选项)。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.log_in_vain: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">记录下任何TCP连接，这个一般情况下不应该更改。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.blackhole: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">建议设置为2，接收到一个已经关闭的端口发来的所有包，直接drop，如果设置为1则是只针对TCP包 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">##################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.delayed_ack: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">当一台计算机发起TCP连接请求时，系统会回应ACK应答数据包。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">该选项设置是否延迟ACK应答数据包，把它和包含数据的数据包一起发送。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">在高速网络和低负载的情况下会略微提高性能，但在网络连接较差的时候， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">对方计算机得不到应答会持续发起连接请求，反而会让网络更加拥堵，降低性能。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">因此这个值我建议您看情况而定，如果您的网速不是问题，可以将封包数量减少一半 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果网络不是特别好，那么就设置为0，有请求就先回应，这样其实浪费的网通、电信的带宽速率而不是你的处理时间 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################ </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.inflight.enable: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.inflight.debug: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.inflight.rttthresh: 10 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.inflight.min: 6144 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.inflight.max: 1073725440 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.inflight.stab: 20 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">限制 TCP 带宽延迟积和 NetBSD 的 TCP/Vegas 类似。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">它可以通过将 sysctl 变量 net.inet.tcp.inflight.enable 设置成 1 来启用。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">系统将尝试计算每一个连接的带宽延迟积，并将排队的数据量限制在恰好能保持最优吞吐量的水平上。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这一特性在您的服务器同时向使用普通调制解调器，千兆以太网，乃至更高速度的光与网络连接 (或其他带宽延迟积很大的连接) 的时候尤为重要， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">特别是当您同时使用滑动窗缩放，或使用了大的发送窗口的时候。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">如果启用了这个选项，您还应该把 net.inet.tcp.inflight.debug 设置为 0 (禁用调试)， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">对于生产环境而言， 将 net.inet.tcp.inflight.min 设置成至少 6144 会很有好处。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">然而， 需要注意的是，这个值设置过大事实上相当于禁用了连接带宽延迟积限制功能。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个限制特性减少了在路由和交换包队列的堵塞数据数量，也减少了在本地主机接口队列阻塞的数据的数量。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">在少数的等候队列中、交互式连接，尤其是通过慢速的调制解调器，也能用低的 往返时间操作。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">但是，注意这只影响到数据发送 (上载/服务端)。对数据接收(下载)没有效果。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">调整 net.inet.tcp.inflight.stab 是 不 推荐的。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个参数的默认值是 20，表示把 2 个最大包加入到带宽延迟积窗口的计算中。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">额外的窗口似的算法更为稳定，并改善对于多变网络环境的相应能力，&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">但也会导致慢速连接下的 ping 时间增长 (尽管还是会比没有使用 inflight 算法低许多)。&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">对于这些情形， 您可能会希望把这个参数减少到 15， 10， 或 5；&nbsp; </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">并可能因此而不得不减少 net.inet.tcp.inflight.min (比如说， 3500) 来得到希望的效果。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">减少这些参数的值， 只应作为最后不得已时的手段来使用。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################ </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.syncookies: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">SYN cookies是一种用于通过选择加密的初始化TCP序列号，可以对回应的包做验证来降低SYN'洪水'攻击的影响的技术。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">默认即是，不需修改 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.msl: 30000 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个值网上很多文章都推荐的7500， </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">还可以改的更小一些(如2000或2500)，这样可以加快不正常连接的释放过程(三次握手2秒、FIN_WAIT4秒)。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.tcp.always_keepalive: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">帮助系统清除没有正常断开的TCP连接，这增加了一些网络带宽的使用，但是一些死掉的连接最终能被识别并清除。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">死的TCP连接是被拨号用户存取的系统的一个特别的问题，因为用户经常断开modem而不正确的关闭活动的连接。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################# </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.udp.checksum: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">防止不正确的udp包的攻击，默认即是，不需修改 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################## </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.udp.log_in_vain: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">记录下任何UDP连接,这个一般情况下不应该修改。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.udp.blackhole: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">建议设置为1，接收到一个已经关闭的端口发来的所有UDP包直接drop </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.raw.maxdgram: 8192 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">Maximum outgoing raw IP datagram size </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">很多文章建议设置为65536，好像没多大必要。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">###################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet.raw.recvspace: 8192 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">###################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">Maximum incoming raw IP datagram size </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">很多文章建议设置为65536，好像没多大必要。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.link.ether.inet.max_age: 1200 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">调整ARP清理的时间，通过向IP路由缓冲填充伪造的ARP条目可以让恶意用户产生资源耗竭和性能减低攻击。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这项似乎大家都未做改动，我建议不动或者稍微减少，比如300（HP-UX默认的5分钟） </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">####################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.inet6.ip6.redirect: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">############################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">设置为0，屏蔽ipv6重定向功能 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">########################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">net.isr.direct: 0 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">######################################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">所有MPSAFE的网络ISR对包做立即响应,提高网卡性能，设置为1。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">#################################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">hw.ata.wc: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">##################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这个选项用来打开 IDE 硬盘快取。当打开时，如果有数据要写入硬盘时，硬盘会假装已完成写入，并将数据快取起来。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">这种作法会加速硬盘的存取速度，但当系统异常关机时，比较容易造成数据遗失。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">不过由于关闭这个功能所带来的速度差异实在太大，建议还是保留原本打开的状态吧，不做修改。 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">security.bsd.see_other_uids: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">security.bsd.see_other_gids: 1 </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">##################### </span><br />
<span style="font-family:SimSun;"> </span><span style="font-size:14px;font-family:SimSun;">不允许用户看到其他用户的进程,因此应该改成0，</span><br />
<span style="font-family:SimSun;"> </span><br />]]></description>
	<pubDate>Wed, 25 Jul 2018 12:33:25 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/139</guid>

</item>
<item>
	<title>Linux路由应用-使用策略路由实现访问控制(转)</title>
	<link>http://www.num123.com/post/136</link>
	<description><![CDATA[<h1 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;">引：</h1>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">一般而言，访问控制并不是路由模块完成的，而是防火墙的职责，如果你使用Linux的，这是iptables的职责。然而有时候，特别是在策略很多的情况下，使用iptables会极大降低网络性能，这是Netfilter的filter表的本质决定的，具体的优化参见《</span><a style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#336699;word-spacing:0px;text-decoration:none;-webkit-text-stroke-width:0px;" href="http://blog.csdn.net/dog250/article/details/6572763">Linux的Netfilter框架深度思考-对比Cisco的ACL</a><span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">》。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; Linux有一个很实用的特性可以在某些情形下代替iptables，从而实现访问控制。本文给出一个方法，说明如何使用策略路由来控制数据访问的入口网卡，具体来讲就是：只有通过特定的网卡才能访问机器上的某一个地址。具体来讲，Linux服务器有如下配置：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">eth0:192.168.1.1/24</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">eth1:192.168.2.1/24</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">eth2:172.16.1.1/24</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">lo:127.0.0.1</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">只能通过eth0访问192.168.1.1这个地址，而不能通过eth1或者eth2访问，甚至本机都不能访问192.168.1.1。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 但是在探讨如何做之前，首先要明白一些理论知识，这样才能知其然且知其所以然。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h1 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t1"></a>1.完成这个需求必须要明白的背景知识</h1>
<h2 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t2"></a>1.1.Linux路由查找流程</h2>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">所有的路由器设计都要遵循以下规则：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffcc99;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-text-stroke-width:0px;"><strong>IF 目的地址配置在本机<br />
&nbsp;&nbsp; &nbsp;THEN 本机接收<br />
ELSE<br />
&nbsp;&nbsp; &nbsp;查找路由表并在找到路由的情况下转发<br />
END</strong></span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">当然Linux也不能例外，但是Linux并没有将这这两种情况进行区分，而是使用“多张路由表”将二者统一了起来。在Linux中，内置了三张路由表：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">local，main，default，其中local路由表的优先级最高，并且不能被替换，在有数据包进来的时候，首先无条件的查找local路由表，如果找到了路由，则数据包就是发往本机的，如果找不到，则接着在其它的路由表中进行查找。使用ip route ls table local命令可以看到local表的内容，比如机器的eth0网卡上配有192.168.0.7，则在local表中会有如下的路由：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">local 192.168.0.7 dev eth0&nbsp; proto kernel&nbsp; scope host&nbsp; src 192.168.0.7<span class="Apple-converted-space">&nbsp;</span></strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">值得注意的是，local表中的路由是可以删除的。路由的src项指的是当数据包从本机发出时，在local表中找到了源地址的路由，首选的源ip地址</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 在local表和main表之间，可以插入251张策略路由表，因此如果有策略路由表的话，如果local表中没有找到路由，则会查找策略路由表。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 总结一下本节的内容，Linux内置了三张路由表，其中local路由表优先级最高且不可替换，它完成“IF 目的地址配置在本机 THEN 本机接收”这个逻辑，在local表之后，可以配置多张策略路由表，策略路由的知识本文不谈，但是基本就是根据源地址，目的地址，出接口，入接口等元素来决定数据包在路由前是否进入该张策略路由表，本质上是一种过滤行为(然则结果是可以缓存的，其要点就在于此！)。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h2 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t3"></a>1.2.bind地址/no-bind地址</h2>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">有一个问题，那就是如果一个数据包从本机发出，如何确定其源地址，这个问题如果搞不明白，就可能面临很多奇怪的现象而无法解释，在这个问题上，TCP和UDP的行为是不同的，TCP比较简单，因为一个TCP连接是四元素决定的(源IP地址，目的IP地址，源端口，目的端口)，因此在建立连接后，源/目的IP地址是确定的。对于UDP而言，情况就复杂了，下节详述。但是不管什么协议，在API接口层次上，一个socket分为bind地址的和不bind地址的。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 如果是bind地址，那么源地址就是bind的那个地址，如果没有bind，那么源地址在路由之后根据路由的结果确定。这就意味着，策略路由的from关键字将无法匹配到所有没有bind地址的应用程序从本地发出的包-原因是策略路由匹配是在路由前做的，而此时还没有源IP地址。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 想明白协议栈如何这么设计，还是要从IP路由的本质以及传输层语义来分析。IP路由的职责就是能将IP数据报送到目的地，在路由之后选择源IP地址可以使返回的IP数据报在完全逆向路径上返回。考虑传输层的语义，对于TCP而言，其源地址的确定性是TCP做的，而不是IP层做的，这一点一定要清楚。对于不bind地址的情况，应用程序在数据包到达网络层之前不需要考虑网络层协议头的内容，这个工作完全有网络层的IP路由模块来完成，应用程序只需要指出目的IP即可，完全由协议栈负责网络层协议头的添加。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 想明白协议栈如何实现这个逻辑，最好的办法是看Linux的源代码，方法是跟踪一个数据包发送的全过程源码，具体看ip_route_output_slow。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h2 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t4"></a>1.3.UDP踢皮球</h2>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">讨论TCP的文章很多，TCP也有很多复杂的特性值得去深究，然而UDP也不是吃素的，有一种现象就是UDP连接会踢皮球，最终用TCPDUMP抓取的数据包结果会让人焦头烂额。其实只要明白1.2节的内容，本节的内容就很简单了。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; UDP无连接，不可靠，只负责将数据尽力而为传到目的主机，它对源和目的IP地址的管理很松散，UDP数据流(更确切的并不能称为数据流)是单包的。在两端都没有显式bind到具体的IP地址的情况下，最终的数据包可以使用任意的本机地址，关键看路由的结果。数据到达对端之后，如果对端也没有显示bind到具体的IP地址，那么回复包的源地址也可能不再是初始包的目的地址。我们还是用实例来说明吧，先看网络拓扑：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<img style="border-bottom:medium none;text-align:left;border-left:medium none;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;max-width:100%;white-space:normal;letter-spacing:normal;color:#333333;border-top:medium none;border-right:medium none;word-spacing:0px;-webkit-text-stroke-width:0px;" alt="" src="http://hi.csdn.net/attachment/201108/14/0_1313290026qiPy.gif" /><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">路由配置如下：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">host1：default 192.168.0.2<br />
host2：default 172.16.0.2</strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">host1上运行一个UDP服务器，绑到0.0.0.0这个地址，也就是不绑定地址，host2向host1 192.168.1.1的UDP端口8888发送数据，抓包发现其源地址是172.16.0.1，目的地址是192.168.1.1，而返回包却抓不到了，意外抓取到一个源地址是192.168.0.1，目的地址是172.16.0.1的数据包。这是正常的，因为数据包到达host1时，查找返回路由时，会查到下一跳192.168.0.2，进而根据这个下一跳选择同一网段的192.168.0.1这个地址，此时如果添加一条路由：172.16.0.1 gw 192.168.1.2，那么就会看到返回数据包源地址为192.168.1.1了。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 还有更奇怪的现象，那就是，初始时从host2向host1发送数据，源和目的分别是172.16.0.1和192.168.1.1，可是后来，在没有断开UDP客户端和服务器的情况下(host2更改了路由)，源和目的分别成了172.16.1.1和192.168.0.1，这也是正常的，因为UDP本来就是无连接的，在不bind地址的情况下，关键是根据路由来选择源地址，选择源地址原则是：优先选择路由结果接口上和下一跳地址为同一网段的第一个primary地址，否则选择其它网卡上的primary地址，在选择过程中，有三个scope会影响选择结果，一个是下一跳地址scope，它表示该地址到达本地的“距离”，另一个是路由scope，它表示到达该路由的“距离”，还有一个是本地地址的scope，它限制了该地址的使用范围，路由模块保证下一跳的scope要小于路由的scope-背后的思想就是下一跳一定距离目的地比本机更近，而选择的本地地址的scope必须小于等于给定的scope(作为一个参数存在)。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; UDP踢皮球有一个后果就是会影响Netfilter的ip_conntrack，我们知道，ip_conntrack是基于五元素来跟踪连接的，UDP的混乱情况可能使一个UDP数据流被跟踪好几次，从而使得后续的NAT规则(如果有的话)很复杂，NAT配置必须考虑到皮球的每一个方向，否则就会漏掉本来应该被NAT的数据包。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 总之，网络是很复杂的，千万不要觉得就是配置几个IP地址以及几条路由那么简单的事。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h2 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t5"></a>1.4.路由前对本机出发数据包的源地址的检查</h2>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">如果是本机发出数据包，最终要进入路由模块的ip_route_output_slow函数来查找路由，该函数对bind地址的源地址进行了检查，它保证到该本地地址的路由必须在local路由表中被找到。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<div style="text-align:left;text-transform:none;background-color:#e7e5dc;text-indent:0px;margin:18px 0px;width:700px;font:12px/26px Consolas, 'Courier New', Courier, mono, serif;white-space:normal;letter-spacing:normal;color:#333333;overflow:auto;word-spacing:0px;padding-top:1px;-webkit-text-stroke-width:0px;" class="dp-highlighter bg_cpp">
<div style="padding-left:45px;" class="bar">
<div style="border-left:#6ce26c 3px solid;padding-bottom:10px;background-color:#f8f8f8;padding-left:10px;padding-right:8px;font:9px Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;padding-top:3px;" class="tools"><b>[cpp]</b><span class="Apple-converted-space">&nbsp;</span><a style="background-image:url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif);border-bottom:medium none;border-left:medium none;padding-bottom:1px;text-indent:-2000px;margin:0px 10px 0px 0px;padding-left:1px;width:16px;padding-right:1px;display:inline-block;background-position:0% 0%;height:16px;color:#a0a0a0;font-size:9px;border-top:medium none;border-right:medium none;text-decoration:none;padding-top:1px;" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/dog250/article/details/6685633#">view plain</a><a style="background-image:url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif);border-bottom:medium none;border-left:medium none;padding-bottom:1px;text-indent:-2000px;margin:0px 10px 0px 0px;padding-left:1px;width:16px;padding-right:1px;display:inline-block;background-position:0% 0%;height:16px;color:#a0a0a0;font-size:9px;border-top:medium none;border-right:medium none;text-decoration:none;padding-top:1px;" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/dog250/article/details/6685633#">copy</a> <div style="z-index:99;position:absolute;width:18px;height:18px;top:2781px;left:567px;"><embed id="ZeroClipboardMovie_1" height="18" name="ZeroClipboardMovie_1" type="application/x-shockwave-flash" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" wmode="transparent" flashvars="id=1&amp;width=18&amp;height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false" /></div>
</div>
</div>
<ol style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;background-color:#ffffff;list-style-type:decimal;margin:0px 0px 1px 45px;padding-left:0px;padding-right:0px;color:#5c5c5c;border-top:medium none;border-right:medium none;padding-top:0px;" class="dp-cpp">
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#ffffff;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;padding-top:0px !important;" class="alt"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#006699;border-top:medium none;font-weight:bold;border-right:medium none;padding-top:0px;" class="keyword">static</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#2e8b57;border-top:medium none;font-weight:bold;border-right:medium none;padding-top:0px;" class="datatypes">int</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;ip_route_output_slow(...)&nbsp;&nbsp;</span></span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#f8f8f8;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;color:#5c5c5c;padding-top:0px !important;"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">{&nbsp;&nbsp;</span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#ffffff;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;padding-top:0px !important;" class="alt"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;<span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#006699;border-top:medium none;font-weight:bold;border-right:medium none;padding-top:0px;" class="keyword">if</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;(oldflp-&gt;fl4_src)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#f8f8f8;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;color:#5c5c5c;padding-top:0px !important;"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;</span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#ffffff;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;padding-top:0px !important;" class="alt"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#006699;border-top:medium none;font-weight:bold;border-right:medium none;padding-top:0px;" class="keyword">if</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;(!(oldflp-&gt;flags&nbsp;&amp;&nbsp;FLOWI_FLAG_ANYSRC))&nbsp;{&nbsp;&nbsp;</span></span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#f8f8f8;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;color:#5c5c5c;padding-top:0px !important;"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#008200;border-top:medium none;border-right:medium none;padding-top:0px;" class="comment">/*&nbsp;It&nbsp;is&nbsp;equivalent&nbsp;to&nbsp;inet_addr_type(saddr)&nbsp;==&nbsp;RTN_LOCAL&nbsp;*/</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;</span></span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#ffffff;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;padding-top:0px !important;" class="alt"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dev_out&nbsp;=&nbsp;ip_dev_find(net,&nbsp;oldflp-&gt;fl4_src);&nbsp;&nbsp;</span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#f8f8f8;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;color:#5c5c5c;padding-top:0px !important;"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#006699;border-top:medium none;font-weight:bold;border-right:medium none;padding-top:0px;" class="keyword">if</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;(dev_out&nbsp;==&nbsp;NULL)&nbsp;&nbsp;</span></span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#ffffff;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;padding-top:0px !important;" class="alt"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#006699;border-top:medium none;font-weight:bold;border-right:medium none;padding-top:0px;" class="keyword">goto</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;out;&nbsp;&nbsp;</span></span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#f8f8f8;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;color:#5c5c5c;padding-top:0px !important;"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;</span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#ffffff;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;padding-top:0px !important;" class="alt"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#f8f8f8;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;color:#5c5c5c;padding-top:0px !important;"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#ffffff;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;padding-top:0px !important;" class="alt"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">}&nbsp;&nbsp;</span></li>
</ol>
</div>
<br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">ip_dev_find的实现中，有以下逻辑：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<div style="text-align:left;text-transform:none;background-color:#e7e5dc;text-indent:0px;margin:18px 0px;width:700px;font:12px/26px Consolas, 'Courier New', Courier, mono, serif;white-space:normal;letter-spacing:normal;color:#333333;overflow:auto;word-spacing:0px;padding-top:1px;-webkit-text-stroke-width:0px;" class="dp-highlighter bg_cpp">
<div style="padding-left:45px;" class="bar">
<div style="border-left:#6ce26c 3px solid;padding-bottom:10px;background-color:#f8f8f8;padding-left:10px;padding-right:8px;font:9px Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;padding-top:3px;" class="tools"><b>[cpp]</b><span class="Apple-converted-space">&nbsp;</span><a style="background-image:url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif);border-bottom:medium none;border-left:medium none;padding-bottom:1px;text-indent:-2000px;margin:0px 10px 0px 0px;padding-left:1px;width:16px;padding-right:1px;display:inline-block;background-position:0% 0%;height:16px;color:#a0a0a0;font-size:9px;border-top:medium none;border-right:medium none;text-decoration:none;padding-top:1px;" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/dog250/article/details/6685633#">view plain</a><a style="background-image:url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif);border-bottom:medium none;border-left:medium none;padding-bottom:1px;text-indent:-2000px;margin:0px 10px 0px 0px;padding-left:1px;width:16px;padding-right:1px;display:inline-block;background-position:0% 0%;height:16px;color:#a0a0a0;font-size:9px;border-top:medium none;border-right:medium none;text-decoration:none;padding-top:1px;" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/dog250/article/details/6685633#">copy</a> <div style="z-index:99;position:absolute;width:18px;height:18px;top:3162px;left:567px;"><embed id="ZeroClipboardMovie_2" height="18" name="ZeroClipboardMovie_2" type="application/x-shockwave-flash" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" wmode="transparent" flashvars="id=2&amp;width=18&amp;height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false" /></div>
</div>
</div>
<ol style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;background-color:#ffffff;list-style-type:decimal;margin:0px 0px 1px 45px;padding-left:0px;padding-right:0px;color:#5c5c5c;border-top:medium none;border-right:medium none;padding-top:0px;" class="dp-cpp">
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#ffffff;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;padding-top:0px !important;" class="alt"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">local_table&nbsp;=&nbsp;fib_get_table(net,&nbsp;RT_TABLE_LOCAL);&nbsp;&nbsp;</span></span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#f8f8f8;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;color:#5c5c5c;padding-top:0px !important;"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;<span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#006699;border-top:medium none;font-weight:bold;border-right:medium none;padding-top:0px;" class="keyword">if</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;(!local_table&nbsp;||&nbsp;local_table-&gt;tb_lookup(local_table,&nbsp;&amp;fl,&nbsp;&amp;res))&nbsp;&nbsp;</span></span></li>
<li style="list-style-position:outside;border-bottom-style:none;border-left:#6ce26c 3px solid;padding-bottom:0px !important;line-height:18px;border-right-style:none;background-color:#ffffff;list-style-type:decimal-leading-zero;margin:0px;padding-left:10px !important;padding-right:3px !important;border-top-style:none;padding-top:0px !important;" class="alt"><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#006699;border-top:medium none;font-weight:bold;border-right:medium none;padding-top:0px;" class="keyword">return</span><span style="border-bottom:medium none;border-left:medium none;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:black;border-top:medium none;border-right:medium none;padding-top:0px;">&nbsp;NULL;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">这意味着本机出发的数据包的源地址如果有的话，必须要在local表中找到一条local路由，否则则返回EINVAL错误。然而可以取消这一限制，具体见1.6节。总而言之，FLOWI_FLAG_ANYSRC这个标志是基于socket，通过setsockopt可以设置socket，使与之相关的oldflp的flags中有FLOWI_FLAG_ANYSRC标志。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h2 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t6"></a>1.5.Linux的IP地址属于主机而不属于网卡</h2>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">在Linux中，不要以为IP地址是属于网卡的，它是属于主机的，实际上就算是UNIX或者其它的OS，IP地址都不应该是网卡的，IP地址是三层概念，网卡是二层设备。很多人都认为IP地址是属于网卡的是因为在Linux中配置IP地址时都要给定一个网卡参数，比如ip address add dev ethX XXX/YY。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; IP地址是属于主机的，这就意味着，只要IP数据报到达本机，没有常规的方式使用路由限制该IP数据报不到达本地应用程序(local表是无条件最先被查询的，除非在local表中将该地址对应的local路由删除)。在procfs中使用sysctl能通过配置网卡参数达到限制数据包的目的吗？比如什么“关闭eth0的forwarding，这样数据包就不能从eth0 forward到eth2了”，根本不是那回事。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h2 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t7"></a>1.6.取消本地地址必须存在于local路由表的限制</h2>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">2.6.27以上内核的socket选项IP_TRANSPARENT可以影响本机出发数据包路由查找时的源地址检测，具体做法是在应用程序中使用下列代码段：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">int value = 1;</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">setsockopt(fd, SOL_IP, IP_TRANSPARENT, &amp;value, sizeof(value));</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">设置后，服务器回包的源地址不再限制在local表内，而是可以使用任何地址，包括非本机地址，这个技术一般用于透明代理。因此可以用这一特性来利用策略路由表完成本应该由防火墙完成的功能，不损耗性能。这样可以做到在local表中将eth0上的local路由删除，将该local路由加到策略路由中，本地应用程序将不能访问配置在eth0上地址。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 在2.6.27之前，协议栈在添加源地址（或者用户指定了侦听地址）时，要确保local路由表中拥有该地址，否则会报错，而我们就是想把该地址的本机local路由移出local表，因此此功能不可实现。在2.6.27之后，增加了FLOWI_FLAG_ANYSRC标志，可以通过设置该标志做到限制的取消，具体做法有两种，一种是全局的，那就是将ip_route_output_slow中的if (!(oldflp-&gt;flags &amp; FLOWI_FLAG_ANYSRC))判断取消掉，改为if (0)；第二种改法是基于socket的，实际上FLOWI_FLAG_ANYSRC是基于单个socket设置的。完成此功能的前提：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">1).内核编译了CONFIG_IP_MULTIPLE_TABLES</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">2).修改管理服务程序，为其socket增加IP_TRANSPARENT选项</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h1 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t8"></a>2.具体操作</h1>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">为了很简单的几步操作，前面啰里啰嗦说了那么多，实际上做技术本来就应该这样，必须挖掘深层次的原理，否则就只能算个IT工人。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">配置：</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">eth0:192.168.0.1/24<br />
eth1:172.16.0.1/24<br />
eth2:10.0.0.1/24<br />
lo:127.0.0.1</strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h2 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t9"></a>2.1.限制从其它网卡接口访问特定网卡接口上配置的IP地址(这个说法不准确，具体见1.5节)对应的服务</h2>
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t10"></a>2.1.1.添加一个策略路由表</h3>
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffff66;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">echo "100 my" &gt;&gt; /etc/iproute2/rt_tables</strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">这样可以在local和main表之间增加一个路由表my，内核路由模块的查找顺序是：local-&gt;my-&gt;main...</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t11"></a>2.1.2.增加一条策略</h3>
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffff66;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">ip rule add from 192.168.0.1 table my</strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t12"></a>2.1.3.在策略路由表中增加所有从eth0出去的路由</h3>
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffff66;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">ip route add 12.34.0.0/16 via 192.168.0.2 dev eth0 table my<br />
ip route add ... table my<br />
...<br />
ip route add default dev eth0 table my</strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">所有匹配到my这个策略路由表的数据包，将从上述的路由项中查询结果。注意，最后一条默认路由是必须要的，且一定要从eth0出去，否则根据Linux策略路由查找原则，如果在my表中没有找到路由的话，还是会继续往下进行的，所谓的策略路由表只是一个优先级问题，而不是强制的查找约束。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t13"></a>2.1.4.结论和问题</h3>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">通过以上的配置，所有从eth0进来的数据包才能安全返回，否则，比如从eth1进来一个访问192.168.0.1的数据包，由于它只有从eth1返回才可以(不考虑多径路由)，然而返回包的源地址却是192.168.0.1(对应的服务不管是TCP的还是UDP必须显式bind到192.168.0.1这个地址，否则对于UDP就会有踢皮球的现象)，这样路由查找就会进入my表(对于踢皮球的情况，就可能不进入my表)，然则my表中没有一个从eth1出去的路由，且该包起码会匹配到my表的默认路由，数据包因此无法返回。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 现在考虑一下一个问题，如果是bind到192.168.0.1这个地址的服务主动访问外部，是不是也一定要从eth0出去呢？答案是肯定的，因为它bind了一个明确的地址，而源地址是该地址的数据包一定会匹配到my，最终起码会匹配到my的默认路由...</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t14"></a>2.1.5.进一步的问题</h3>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">现在已经实现了不能从除eth0之外的其它接口进入访问bind到eth0上地址的服务，然而如果希望做到连本地都不能访问该服务，那才是名副其实的“除eth0之外的...都不能...”，无疑本地出发的访问192.168.0.1的数据包肯定不是从eth0进入的。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 有一个办法可以解决这个问题，那就是禁用掉lo，因为在Linux中，所有从本地到本地的包都会被定向掉lo，禁掉lo后，所有本地到本地的包就都无法到达目的地。但是这种方法并不好，管不着人家就把人家关起来，非真的猛士！下一节我们就看看怎么做到本地不能访问本地eth0上的192.168.0.1这个地址，做到名副其实的“只有eth0进入的数据包才能访问”</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h2 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t15"></a>2.2.限制本地访问本地bind到eth0上192.168.0.1这个地址的服务</h2>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">想理解这个配置原理，还要回顾一下1.4节和1.6节，当理解了这两节之后，这里的配置就手到擒来了</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t16"></a>2.2.0.前提：两种方式</h3>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">之一：直接将内核中的检查取消掉，见1.6节</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">之二：改写bind到192.168.0.1地址服务程序，为其socket增加IP_TRANSPARENT选项，</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t17"></a>2.2.1.添加一个新路由表</h3>
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffff66;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">echo “100&nbsp; my_rule” &gt;&gt; /etc/iproute2/rt_tables</strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t18"></a>2.2.2.增加一条策略：从eth0到来的数据包，开放my_rule路由表</h3>
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffff66;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">ip rule add iif eth0 table my_rule</strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">所有从eth0进来的数据包，查找my_rule表中的路由</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t19"></a>2.2.3.为新增策略增加190.7 local路由</h3>
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffff66;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">ip route add local 192.168.0.1/32 dev lo table my_rule</strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">由于到达本地的数据包要想成功到达，必须要找到一条local路由(类型对即可，无需非要在local表)，因此在my_rule中增加一条到达192.168.0.1的local路由</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t20"></a>2.2.4.删除原有的local表中的192.168.0.1路由</h3>
<strong style="text-align:left;line-height:26px;text-transform:none;background-color:#ffff66;font-variant:normal;font-style:normal;text-indent:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;font-size:14px;word-spacing:0px;-webkit-text-stroke-width:0px;">ip route del local 192.168.0.1/32 table local</strong><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">由于2.2.0中的两种前提，对源地址的检测已经取消了，到达源地址的路由现在没有必要非要在local表中了，因此即使删除了local中到达192.168.0.1的路由，也无所谓，返回包会直接使用源地址192.168.0.1而不被检查。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h3 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t21"></a>2.2.5.结论和问题</h3>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">2.2.1-2.2.4的结果就是：访问192.168.0.1的数据包从eth0而来，查找my_rule表，找到，对于返回包，由于IP_TRANSPARENT取消了限制，可以正常返回；对于从非eth0到来的访问192.168.0.1的包，由于192.168.0.1的local路由已然被删，my_rule由于只匹配入口为eth0的数据包因而不对其开放，将无法访问。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 这个配置在2.1节的基础上做了增强，然而由于要修改bind到192.168.0.1地址的服务程序，对于既有的闭源程序的类似的访问控制将没有用武之地(这些程序没有源码，不能修改)。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<h1 style="text-align:left;padding-bottom:0px;line-height:26px;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;padding-top:0px;-webkit-text-stroke-width:0px;"><a style="color:#336699;text-decoration:none;" name="t22"></a>3.总的结论</h1>
<span style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;display:inline !important;font:14px/26px Arial;white-space:normal;float:none;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">本文给出了一种使用路由进行访问控制的方式，对于规则比较简单，且访问控制都在第三层的场景中，路由的方式要比用防火墙更好，不会影响性能。然而本文的讨论完全是基于Linux的，对于非Linux的系统，比如Cisco，可能人家的ACL防火墙实现得比较高效，比iptables配置的更好，也就不需要用路由的方式进行访问控制了，就算对于Linux本身，nf-HiPAC对filter表做了优化之后，路由的方式进行访问控制的优势也减少了。</span><br style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;" />
<p style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;&nbsp;&nbsp;&nbsp; 总之，Linux网络或者说网络本身是一个超级复杂的系统，不同的实现对于配置方式的选型影响巨大，然而有一个问题，比如像Windows这样的系统，你还不知道它的网络协议栈实现的内幕，那么它的配置肯定也就比较固定，那就是Microsoft的建议配置。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 实际上，由于增加了策略路由表，查表的过程也是遍历，并且根据策略路由表的match一个一个比较，这个过程和filter表的查询过程几乎是一样的，则策略路由的优势体现在何方？实际上，路由和filter有一个区别，那就是路由是可以缓存的，而filter则是每包匹配的，有一种基于状态的防火墙可以“缓存”过滤结果，但是由于需要维护连接状态，这笔开销也是不可小觑的。路由缓存是完全独立的，路由完全缓存在一个hash表当中。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 但是，如果路由缓存hash表的冲突链表过长(缓存太大了)，或者hash算法太菜，在配置大量策略路由和配置iptables之间权衡的话，后者也不是总是处于劣势，孰是孰非，只有具体情况具体分析，只有分析了具体的性能数据才能有结论，否则只是纸上谈兵一纸空文。</p>
<p style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;</p>
<p style="text-align:left;text-transform:none;background-color:#ffffff;text-indent:0px;font:14px/26px Arial;white-space:normal;letter-spacing:normal;color:#333333;word-spacing:0px;-webkit-text-stroke-width:0px;">&nbsp;</p>]]></description>
	<pubDate>Wed, 25 Jun 2014 11:34:33 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/136</guid>

</item>
<item>
	<title>Windows防火墙设置不当导致FTP无法访问</title>
	<link>http://www.num123.com/post/134</link>
	<description><![CDATA[<p><span style="font-size:16px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2003
 
server用于提供web和ftp服务，通过互联网用FTP实现远程上传网页。如果关闭防火墙，ftp上传下载正常，但启用windows防火墙后就不行，即使把ftp</span><span style="font-size:16px;">端口</span><span style="font-size:16px;">列为例外</span><span style="font-size:16px;">或者在防火墙高级设置里把“FTP服务器”选项打上勾</span><span style="font-size:16px;">也不行，</span><span style="font-size:16px;">很是奇怪</span><span style="font-size:16px;">，以前从</span><span style="font-size:16px;">没有遇到过这种问题，</span><span style="font-size:16px;">通过摸索找到了</span><span style="font-size:16px;">以下解决办法：</span></p>
<br />
<span style="font-size:16px;">1.开启windows防火墙。</span><br />
<span style="font-size:16px;">2.在防火墙设置的“例外”设置中把IIS的核心程序c:\windows\system32\inetsrv\inetinfo.exe加入。</span><br />
<span style="font-size:16px;">3.在防火墙设置的“高级-本地连接-设置”中把FTP的勾选取消，一定要取消，不然还是不能使用。</span><br />
<strong><br />
</strong>]]></description>
	<pubDate>Wed, 23 Apr 2014 11:27:06 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/134</guid>

</item>
<item>
	<title>中兴交换机恢复默认配置</title>
	<link>http://www.num123.com/post/133</link>
	<description><![CDATA[<p><span style="font-size:16px;">&nbsp;&nbsp;&nbsp;&nbsp; 很多时候交换机会因断电或其它原因出现故障，造成配置文件损坏，从而无法正常进入系统，这个时候如果需要清除配置文件有两种方法：</span></p>
<p><span style="font-size:16px;">1、通过FTP加载操作系统实现网络启动，进入系统后删除配置文件startrun.dat配置文件即可。具体步骤不在详细阐述。本文重点介绍第二种方法。</span></p>
<p><span style="font-size:16px;">2、在开机启动的时候敲回车键，进入以下界面，如下图：</span></p>
<p><a target="_blank" href="/content/uploadfile/201404/e9d0f235917d10b4b5e02b260b75f93820140410100332.jpg" id="ematt:197"><img src="/content/uploadfile/201404/thum-e9d0f235917d10b4b5e02b260b75f93820140410100332.jpg" alt="点击查看原图" border="0" /></a></p>
<p><span style="font-size:18px;">输入zte进入以下界面：</span></p>
<p><a target="_blank" href="/content/uploadfile/201404/56c85a5ce6b3b1d6cca8fbf202983d1720140410100430.jpg" id="ematt:198"><img src="/content/uploadfile/201404/thum-56c85a5ce6b3b1d6cca8fbf202983d1720140410100430.jpg" alt="点击查看原图" border="0" /></a></p>
<p><br />
<span style="font-size:18px;">输入问号可以看到该模式下支持的命令,如下图：</span></p>
<p><a target="_blank" href="/content/uploadfile/201404/8381113bebd9aaa38c732282c5c97fe720140410100548.jpg" id="ematt:199"><img src="/content/uploadfile/201404/thum-8381113bebd9aaa38c732282c5c97fe720140410100548.jpg" alt="点击查看原图" border="0" /></a></p>
<p><span style="font-size:18px;">进入配置文件所在的目录/flash/cfg,一定要输入绝对路径：</span></p>
<p><a target="_blank" href="/content/uploadfile/201404/63c7742f4b95b7fc9af81bd044bcc88820140410101106.jpg" id="ematt:200"><img src="/content/uploadfile/201404/thum-63c7742f4b95b7fc9af81bd044bcc88820140410101106.jpg" alt="点击查看原图" border="0" /></a></p>
<p><span style="font-size:18px;">删除或重命名startrun.dat文件</span></p>
<p><span style="font-size:18px;">删除文件命令&nbsp; del startrun.dat</span></p>
<p><span style="font-size:18px;">重命名文件命令&nbsp; rename startrun.dat&nbsp; startrun.datold</span></p>
<p><span style="font-size:18px;">最后输入reboot命令重启交换机即可。</span></p>]]></description>
	<pubDate>Thu, 10 Apr 2014 09:59:02 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/133</guid>

</item>
<item>
	<title>Linux出现“TSC appears to be running slowly.Marking it as unstable”的解决方法</title>
	<link>http://www.num123.com/post/132</link>
	<description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size:16px;">我的生产环境是在Hyper-v上面运行RedHat Linux 5.1,刚开始还没有什么问题，但随着运行时间的增加，就会出现“TSC appears to be running slowly.Marking it as unstable”的现像，系统变的非常慢，导致这种原因的出现是因为Linux系统中没有安装Linux IC 驱动程序，或着Linux IC这个驱动程序不支持 RedHat5.1。如下图：</span></p>
<p><a target="_blank" href="/content/uploadfile/201404/3d90e93b2b72252ce112a7b7b4ed8bc620140402033437.jpg" id="ematt:195"><img src="/content/uploadfile/201404/thum-3d90e93b2b72252ce112a7b7b4ed8bc620140402033437.jpg" alt="点击查看原图" border="0" /></a></p>
<p><span style="font-size:16px;">解决方法就是编辑 /etc/grub.conf文件，在文件中添加以下内容：</span></p>
<p><a target="_blank" href="/content/uploadfile/201404/c41cdcc25bb426953dfa63aa0e6072f420140402034040.jpg" id="ematt:196"><img src="/content/uploadfile/201404/thum-c41cdcc25bb426953dfa63aa0e6072f420140402034040.jpg" alt="点击查看原图" border="0" /></a></p>
<p><span style="font-size:16px;">然后重启系统即可。</span></p>
<p>&nbsp;</p>
<p><b><span style="font-size:16px;color:#e53333;">附：</span><span style="font-size:16px;color:#e53333;">            </span><span style="font-size:16px;color:#e53333;">ACPI和APIC之间是什么关系？</span></b></p>
<p><!--[if gte mso 9]><xml>  <w:worddocument>   <w:view>Normal</w:view>   <w:zoom>0</w:zoom>   <w:trackmoves />   <w:trackformatting />   <w:punctuationkerning />   <w:drawinggridverticalspacing>7.8 磅</w:drawinggridverticalspacing>   <w:displayhorizontaldrawinggridevery>0</w:displayhorizontaldrawinggridevery>   <w:displayverticaldrawinggridevery>2</w:displayverticaldrawinggridevery>   <w:validateagainstschemas />   <w:saveifxmlinvalid>false</w:saveifxmlinvalid>   <w:ignoremixedcontent>false</w:ignoremixedcontent>   <w:alwaysshowplaceholdertext>false</w:alwaysshowplaceholdertext>   <w:donotpromoteqf />   <w:lidthemeother>EN-US</w:lidthemeother>   <w:lidthemeasian>ZH-CN</w:lidthemeasian>   <w:lidthemecomplexscript>X-NONE</w:lidthemecomplexscript>   <w:compatibility>    <w:spaceforul />    <w:balancesinglebytedoublebytewidth />    <w:donotleavebackslashalone />    <w:ultrailspace />    <w:donotexpandshiftreturn />    <w:adjustlineheightintable />    <w:breakwrappedtables />    <w:snaptogridincell />    <w:wraptextwithpunct />    <w:useasianbreakrules />    <w:dontgrowautofit />    <w:splitpgbreakandparamark />    <w:dontvertaligncellwithsp />    <w:dontbreakconstrainedforcedtables />    <w:dontvertalignintxbx />    <w:word11kerningpairs />    <w:cachedcolbalance />    <w:usefelayout />   </w:compatibility>   <w:browserlevel>MicrosoftInternetExplorer4</w:browserlevel>   <m:mathpr>    <m:mathfont m:val="Cambria Math" />    <m:brkbin m:val="before" />    <m:brkbinsub m:val="--" />    <m:smallfrac m:val="off" />    <m:dispdef />    <m:lmargin m:val="0" />    <m:rmargin m:val="0" />    <m:defjc m:val="centerGroup" />    <m:wrapindent m:val="1440" />    <m:intlim m:val="subSup" />    <m:narylim m:val="undOvr" />   </m:mathpr></w:worddocument> </xml><![endif]--></p>
<p><!--[if gte mso 9]><xml>  <w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">   <w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />   <w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />   <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2" />   <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3" />   <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4" />   <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5" />   <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6" />   <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7" />   <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8" />   <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9" />   <w:lsdexception locked="false" priority="39" name="toc 1" />   <w:lsdexception locked="false" priority="39" name="toc 2" />   <w:lsdexception locked="false" priority="39" name="toc 3" />   <w:lsdexception locked="false" priority="39" name="toc 4" />   <w:lsdexception locked="false" priority="39" name="toc 5" />   <w:lsdexception locked="false" priority="39" name="toc 6" />   <w:lsdexception locked="false" priority="39" name="toc 7" />   <w:lsdexception locked="false" priority="39" name="toc 8" />   <w:lsdexception locked="false" priority="39" name="toc 9" />   <w:lsdexception locked="false" priority="35" qformat="true" name="caption" />   <w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />   <w:lsdexception locked="false" priority="1" name="Default Paragraph Font" />   <w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />   <w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />   <w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />   <w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />   <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text" />   <w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />   <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />   <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />   <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />   <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />   <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />   <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />   <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />   <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />   <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />   <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />   <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />   <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />   <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />   <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />   <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />   <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />   <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />   <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />   <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />   <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />   <w:lsdexception locked="false" unhidewhenused="false" name="Revision" />   <w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />   <w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />   <w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />   <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />   <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />   <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />   <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />   <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />   <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />   <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />   <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />   <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />   <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />   <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />   <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />   <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />   <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />   <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />   <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />   <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />   <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />   <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />   <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />   <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />   <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />   <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />   <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />   <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />   <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />   <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />   <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />   <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />   <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />   <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />   <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />   <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />   <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />   <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />   <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />   <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />   <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />   <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />   <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />   <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />   <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />   <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />   <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />   <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />   <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />   <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />   <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />   <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />   <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />   <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />   <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />   <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />   <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />   <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />   <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />   <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />   <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />   <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />   <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />   <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />   <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />   <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />   <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />   <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />   <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />   <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />   <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />   <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />   <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />   <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />   <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />   <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />   <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />   <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />   <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />   <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />   <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />   <w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />   <w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />   <w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />   <w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />   <w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />   <w:lsdexception locked="false" priority="37" name="Bibliography" />   <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading" />  </w:latentstyles> </xml><![endif]--><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:普通表格;
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.5pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:宋体;
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-font-kerning:1.0pt;}
</style>
<![endif]--><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">ACPI</span><span style="font-family:宋体;font-size:16px;">就是</span><span style="font-size:16px;" lang="EN-US">Advanced Configuration and Power Interface</span><span style="font-family:宋体;font-size:16px;">的缩写，意思是“高级配置与电源接口”。这是英特尔、微软和东芝共同开发的一种电源管理标准。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>ACPI</span><span style="font-family:宋体;font-size:16px;">可实现以下功能</span><span style="font-size:16px;" lang="EN-US">: </span><span style="font-family:宋体;font-size:16px;">　</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">1</span><span style="font-family:宋体;font-size:16px;">、用户可以使外设在指定时间开关；</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">　</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>2</span><span style="font-family:宋体;font-size:16px;">、使用笔记本电脑的用户可以指定计算机在低电压的情况下进入低功耗状态，以保证重要的应用程序运行；</span><span style="font-size:16px;" lang="EN-US"> </span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>3</span><span style="font-family:宋体;font-size:16px;">、操作系统可以在应用程序对时间要求不高的情况下降低时钟频率；</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>4</span><span style="font-family:宋体;font-size:16px;">、操作系统可以根据外设和主板的具体需求为它分配能源；</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>5</span><span style="font-family:宋体;font-size:16px;">、在无人使用计算机时可以使计算机进入休眠状态，但保证一些通信设备打开；</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>6</span><span style="font-family:宋体;font-size:16px;">、即插即用设备在插入时能够由</span><span style="font-size:16px;" lang="EN-US">ACPI</span><span style="font-family:宋体;font-size:16px;">来控制。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span lang="EN-US"><span style="font-size:16px;">&nbsp;</span></span><span style="font-family:宋体;font-size:16px;">不</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">过，</span><span style="font-size:16px;" lang="EN-US">ACPI</span><span style="font-family:宋体;font-size:16px;">和其他的电源管理方式一样，要想享受到上面这些功能，必须要有软件和硬件的支持。在软件方面，</span><span style="font-size:16px;" lang="EN-US">Windows 98</span><span style="font-family:宋体;font-size:16px;">及其后续产品和</span><span style="font-size:16px;" lang="EN-US">Windows
2000</span><span style="font-family:宋体;font-size:16px;">都对</span><span style="font-size:16px;" lang="EN-US">ACPI</span><span style="font-family:宋体;font-size:16px;">给予了全面的支持；而</span><span style="font-size:16px;" lang="EN-US">Linux</span><span style="font-family:宋体;font-size:16px;">的内核目前对此支持得并不是太理想。硬件方面比较麻烦，除了要求主板、显卡和网卡等外设要支持</span><span style="font-size:16px;" lang="EN-US"> ACPI</span><span style="font-family:宋体;font-size:16px;">外，还需要机箱电源的配合。电源在提供</span><span style="font-size:16px;" lang="EN-US">5</span><span style="font-family:宋体;font-size:16px;">伏电压给主板的同时，还必须使电流稳定在</span><span style="font-size:16px;" lang="EN-US">720</span><span style="font-family:宋体;font-size:16px;">毫安以上才可以，这样它才能够实现电脑的“睡眠”和“唤</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">醒”。</span><span style="font-size:16px;" lang="EN-US"> ACPI</span><span style="font-family:宋体;font-size:16px;">共有六种状态，分别是</span><span style="font-size:16px;" lang="EN-US">S0</span><span style="font-family:宋体;font-size:16px;">到</span><span style="font-size:16px;" lang="EN-US">S5</span><span style="font-family:宋体;font-size:16px;">，它们代表的含义分别是：</span></p>
<span style="font-size:16px;"> </span><span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>S0--</span><span style="font-family:宋体;font-size:16px;">实际上这就是我们平常的工作状态，所有设备全开，功耗一般会超过</span><span style="font-size:16px;" lang="EN-US">80W</span><span style="font-family:宋体;font-size:16px;">；</span><span style="font-size:16px;" lang="EN-US"> S1--</span><span style="font-family:宋体;font-size:16px;">也称为</span><span style="font-size:16px;" lang="EN-US">POS</span><span style="font-family:宋体;font-size:16px;">（</span><span style="font-size:16px;" lang="EN-US">Power on Suspend</span><span style="font-family:宋体;font-size:16px;">），这时除了通过</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">时钟控制器将</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">关闭之外，其他的部件仍然正常工作，这时的功耗一般在</span><span style="font-size:16px;" lang="EN-US">30W</span><span style="font-family:宋体;font-size:16px;">以下；（其实有些</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">降温软件就是利用这种工作原理）</span><span style="font-size:16px;" lang="EN-US"> S2--</span><span style="font-family:宋体;font-size:16px;">这时</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">处于停止运作状态，总线时钟也被关闭，但其余的设备仍然运转；</span><span style="font-size:16px;" lang="EN-US"> S3--</span><span style="font-family:宋体;font-size:16px;">这就是我们熟悉的</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">（</span><span style="font-size:16px;" lang="EN-US">Suspend to RAM</span><span style="font-family:宋体;font-size:16px;">），这时的功耗不超过</span><span style="font-size:16px;" lang="EN-US">10W</span><span style="font-family:宋体;font-size:16px;">；</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>S4--</span><span style="font-family:宋体;font-size:16px;">也称为</span><span style="font-size:16px;" lang="EN-US">STD</span><span style="font-family:宋体;font-size:16px;">（</span><span style="font-size:16px;" lang="EN-US">Suspend to Disk</span><span style="font-family:宋体;font-size:16px;">），这时系统主电源关闭，但是硬盘仍然带电并可以被唤醒；</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>S5--</span><span style="font-family:宋体;font-size:16px;">这种状态是最干脆的，就是连电源在内的所有设备全部关闭，功耗为</span><span style="font-size:16px;" lang="EN-US">0</span><span style="font-family:宋体;font-size:16px;">。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span lang="EN-US"><span style="font-size:16px;">&nbsp;</span></span><span style="font-family:宋体;font-size:16px;">我</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">们最常用到的是</span><span style="font-size:16px;" lang="EN-US">S3</span><span style="font-family:宋体;font-size:16px;">状态，即</span><span style="font-size:16px;" lang="EN-US">Suspend to RAM</span><span style="font-family:宋体;font-size:16px;">（挂起到内存）状态，简称</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">。顾名思义，</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">就是把系统进入</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">前的工作状态数据都存放到内存中去。在</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">状态下，电源仍然继续为内存等</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">最必要的设备供电，以确保数据不丢失，而其他设备均处于关闭状态，系统的耗电量极低。一旦我们按下</span><span style="font-size:16px;" lang="EN-US">Power</span><span style="font-family:宋体;font-size:16px;">按钮（主机电源开关），系统就被唤醒，马上从</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">内存中读取数据并恢复到</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">之前的工作状态。内存的读写速度极快，因此我们感到进入和离开</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">状态所花费的时间不过是几秒钟而已；而</span><span style="font-size:16px;" lang="EN-US">S4</span><span style="font-family:宋体;font-size:16px;">状态，即</span><span style="font-size:16px;" lang="EN-US"> STD</span><span style="font-family:宋体;font-size:16px;">（挂起到硬盘）与</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">的原理是完全一样的，只不过数据是保存在硬盘中。由于硬盘的读写速度比内存要慢得多，因此用起来也就没有</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">那么快了。</span><span style="font-size:16px;" lang="EN-US"> STD</span><span style="font-family:宋体;font-size:16px;">的优点是只通过软件就能实现，比如</span><span style="font-size:16px;" lang="EN-US">Windows 2000</span><span style="font-family:宋体;font-size:16px;">就能在不支持</span><span style="font-size:16px;" lang="EN-US">STR</span><span style="font-family:宋体;font-size:16px;">的硬件上实现</span><span style="font-size:16px;" lang="EN-US">STD</span><span style="font-family:宋体;font-size:16px;">。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">之前的电源管理是</span><span style="font-size:16px;" lang="EN-US">APM</span><span style="font-family:宋体;font-size:16px;">（</span><span style="font-size:16px;" lang="EN-US">Advanced Power
Management),</span><span style="font-family:宋体;font-size:16px;">那么</span><span style="font-size:16px;" lang="EN-US">ACPI</span><span style="font-family:宋体;font-size:16px;">和</span><span style="font-size:16px;" lang="EN-US">APM</span><span style="font-family:宋体;font-size:16px;">相比有什么区别呢？</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US"><span style="font-size:16px;">&nbsp;</span>2</span><span style="font-family:宋体;font-size:16px;">、</span><span style="font-size:16px;" lang="EN-US">ACPI</span><span style="font-family:宋体;font-size:16px;">与</span><span style="font-size:16px;" lang="EN-US">APM</span><span style="font-family:宋体;font-size:16px;">比较</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">APM 1.0&amp;1.1</span><span style="font-family:宋体;font-size:16px;">：由</span><span style="font-size:16px;" lang="EN-US">BIOS</span><span style="font-family:宋体;font-size:16px;">执行电源管理；</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">APM 1.2</span><span style="font-family:宋体;font-size:16px;">：操作系统定义电源管理时间，由</span><span style="font-size:16px;" lang="EN-US">BIOS</span><span style="font-family:宋体;font-size:16px;">负责执行；</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">ACPI</span><span style="font-family:宋体;font-size:16px;">：</span><span style="font-size:16px;" lang="EN-US">BIOS</span><span style="font-family:宋体;font-size:16px;">收集硬件信息，定义电源管理方案；由操作系统负责执行。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">APM</span><span style="font-family:宋体;font-size:16px;">是一种软件解决方案，因此是与操作系统有关的，</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">而</span><span style="font-size:16px;" lang="EN-US">ACPI</span><span style="font-family:宋体;font-size:16px;">是工业标准，包括了软件和硬件方面的规范。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">&nbsp;</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">APIC (</span><span style="font-family:宋体;font-size:16px;">高级可编程中断控制器</span><span style="font-size:16px;" lang="EN-US">)</span><span style="font-family:宋体;font-size:16px;">对计算机来讲有两个作用，</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">一是管理</span><span style="font-size:16px;" lang="EN-US">IRQ</span><span style="font-family:宋体;font-size:16px;">的分配，可以把传统的</span><span style="font-size:16px;" lang="EN-US">16</span><span style="font-family:宋体;font-size:16px;">个</span><span style="font-size:16px;" lang="EN-US">IRQ</span><span style="font-family:宋体;font-size:16px;">扩展到</span><span style="font-size:16px;" lang="EN-US">24</span><span style="font-family:宋体;font-size:16px;">个（传统的管理方式叫</span><span style="font-size:16px;" lang="EN-US">PIC</span><span style="font-family:宋体;font-size:16px;">），以适应更多的设备。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">二是管理多</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">。由于</span><span style="font-size:16px;" lang="EN-US">Nf2</span><span style="font-family:宋体;font-size:16px;">主板并不支持多</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">，所以，</span><span style="font-size:16px;" lang="EN-US">APIC</span><span style="font-family:宋体;font-size:16px;">关闭直接的影响是减少了可用的</span><span style="font-size:16px;" lang="EN-US">IRQ</span><span style="font-family:宋体;font-size:16px;">。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">不过，如果板卡不是非常多的话，关闭</span><span style="font-size:16px;" lang="EN-US"> APIC</span><span style="font-family:宋体;font-size:16px;">对系统是没有什么影响的。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">要实现</span><span style="font-size:16px;" lang="EN-US">SMP</span><span style="font-family:宋体;font-size:16px;">功能，我们使用的</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">必须具备以下要求：</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">CPU </span><span style="font-family:宋体;font-size:16px;">内部必须内置</span><span style="font-size:16px;" lang="EN-US">APIC</span><span style="font-family:宋体;font-size:16px;">单元。</span><span style="font-size:16px;" lang="EN-US">Intel </span><span style="font-family:宋体;font-size:16px;">多处理规范的核心就是高级可编程中断控制器（</span><span style="font-size:16px;" lang="EN-US">Advanced Programmable Interrupt Controllers--APICs</span><span style="font-family:宋体;font-size:16px;">）的使用。</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">通过彼此发送中断来完成它们之间的通信。通过给中断附加动作（</span><span style="font-size:16px;" lang="EN-US">actions</span><span style="font-family:宋体;font-size:16px;">），不同的</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">可以</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">在某种程度上彼此进行控制。每个</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">有自己的</span><span style="font-size:16px;" lang="EN-US">APIC</span><span style="font-family:宋体;font-size:16px;">（成为那个</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">的本地</span><span style="font-size:16px;" lang="EN-US">APIC</span><span style="font-family:宋体;font-size:16px;">），并且还有一个</span><span style="font-size:16px;" lang="EN-US">I/O APIC</span><span style="font-family:宋体;font-size:16px;">来处理由</span><span style="font-size:16px;" lang="EN-US">I/O</span><span style="font-family:宋体;font-size:16px;">设备引起的中断，这个</span><span style="font-size:16px;" lang="EN-US">I/O APIC</span><span style="font-family:宋体;font-size:16px;">是安装在主板上的，但每个</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">上的</span><span style="font-size:16px;" lang="EN-US">APIC</span><span style="font-family:宋体;font-size:16px;">则不可或缺，否则将无法处理多</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">之间的中断协调。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">APIC</span><span style="font-family:宋体;font-size:16px;">可能遇到的问题，很多这类问题可以通过</span><span style="font-size:16px;" lang="EN-US">BIOS</span><span style="font-family:宋体;font-size:16px;">更新来解决。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">下面的是通过更改</span><span style="font-size:16px;" lang="EN-US">HAL</span><span style="font-family:宋体;font-size:16px;">类型来解决</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">实际运行频率与</span><span style="font-size:16px;" lang="EN-US">BIOS</span><span style="font-family:宋体;font-size:16px;">设定频率不符</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-size:16px;" lang="EN-US">NF2</span><span style="font-family:宋体;font-size:16px;">的用户大约有</span><span style="font-size:16px;" lang="EN-US">10%</span><span style="font-family:宋体;font-size:16px;">的会出现</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">实际运行频率与</span><span style="font-size:16px;" lang="EN-US">BIOS</span><span style="font-family:宋体;font-size:16px;">设定频率不符的问题。我们称之为“频率不对”。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">这种现象带来的直接后果就是在测试</span><span style="font-size:16px;" lang="EN-US">3dmark</span><span style="font-family:宋体;font-size:16px;">或跑</span><span style="font-size:16px;" lang="EN-US">3D</span><span style="font-family:宋体;font-size:16px;">游戏的时候，会感觉不流畅，也称之为“顿”。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">一般在更改</span><span style="font-size:16px;" lang="EN-US">BIOS</span><span style="font-family:宋体;font-size:16px;">设置后、更新驱动后重启时，用测试软件如</span><span style="font-size:16px;" lang="EN-US">Aida32</span><span style="font-family:宋体;font-size:16px;">、</span><span style="font-size:16px;" lang="EN-US">MBM5</span><span style="font-family:宋体;font-size:16px;">等可以看到</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">的运行频率和你在</span><span style="font-size:16px;" lang="EN-US">BIOS</span><span style="font-family:宋体;font-size:16px;">里设置得不一样，而且差距</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">很大。这个时候，用</span><span style="font-size:16px;" lang="EN-US">super pi</span><span style="font-family:宋体;font-size:16px;">测试</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">速度，会比平常花费时间长好几秒，用</span><span style="font-size:16px;" lang="EN-US">3dmark</span><span style="font-family:宋体;font-size:16px;">跑测试，会比平常低几百分甚至上千分。在</span><span style="font-size:16px;" lang="EN-US">3dmark</span><span style="font-family:宋体;font-size:16px;">中看到的</span><span style="font-size:16px;" lang="EN-US">CPU</span><span style="font-family:宋体;font-size:16px;">频率，也与</span><span style="font-size:16px;" lang="EN-US">BIOS</span><span style="font-family:宋体;font-size:16px;">设</span><span style="font-size:16px;"> </span><span style="font-family:宋体;font-size:16px;">定不符合。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">如果出现这种情况，则属于我们所讨论的“频率不对”的问题。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">不过，不是所有的</span><span style="font-size:16px;" lang="EN-US">3D</span><span style="font-family:宋体;font-size:16px;">游戏“顿”都是这个原因。判断的方法是：如果你只有个别游戏“顿”，或者用上述软件测试频率正确，就不是此问题。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">如果判断确实属此问题，解决的方法也很简单，经过网友讨论，只要关闭</span><span style="font-size:16px;" lang="EN-US">APIC</span><span style="font-family:宋体;font-size:16px;">功能即可。（注意，是</span><span style="font-size:16px;" lang="EN-US">APIC</span><span style="font-family:宋体;font-size:16px;">，不是</span><span style="font-size:16px;" lang="EN-US">ACPI</span><span style="font-family:宋体;font-size:16px;">）。</span></p>
<span style="font-size:16px;"> </span><p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><span style="font-family:宋体;font-size:16px;">有一些服务器（比如</span><span style="font-size:16px;" lang="EN-US">IBM</span><span style="font-family:宋体;font-size:16px;">的，</span><span style="font-size:16px;" lang="EN-US">HP</span><span style="font-family:宋体;font-size:16px;">的），安装</span><span style="font-size:16px;" lang="EN-US">LINUX</span><span style="font-family:宋体;font-size:16px;">时，会给出内核的错误，导致无法安装，这个时候可以在安装的时候输入</span><span style="font-size:16px;" lang="EN-US">linux acpi=off noapic</span><span style="font-family:宋体;font-size:16px;">应该是安装上的。</span></p>
<p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"></p>
<p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"></p>
<p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"></p>
<p class="MsoNormal" style="margin:0cm;margin-bottom:.0001pt;text-indent:21.2pt;mso-char-indent-count:2.02;line-height:normal;"><br />
</p>
</p>]]></description>
	<pubDate>Wed, 02 Apr 2014 03:28:38 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/132</guid>

</item>
<item>
	<title>中兴交换机密码恢复</title>
	<link>http://www.num123.com/post/131</link>
	<description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size:16px;">很多时候由于种种原因忘记了交换机的密码，这个时候就需要重新设置，首先用串口配置线连接到交换机的console口上面，然后在电脑端打开超级终端，在交换机刚启动的时候按回车键，进入以下界面：</span></p>
<p><a target="_blank" href="/content/uploadfile/201404/3d90e93b2b72252ce112a7b7b4ed8bc620140411044802.jpg" id="ematt:201"><img src="/content/uploadfile/201404/thum-3d90e93b2b72252ce112a7b7b4ed8bc620140411044802.jpg" alt="点击查看原图" border="0" /></a></p>
<p><span style="font-size:16px;">输入命令c,进入更改启动参数模式：</span></p>
<p><a target="_blank" href="/content/uploadfile/201404/36f5dca5d7f05f7a1f78d98d8339037920140411044943.jpg" id="ematt:202"><img src="/content/uploadfile/201404/thum-36f5dca5d7f05f7a1f78d98d8339037920140411044943.jpg" alt="点击查看原图" border="0" /></a></p>
<p><span style="font-size:16px;">如上图中的星号所示，输入新的密码即可。</span></p>
<p><span style="font-size:16px;">最后输入@符号重启交换机，新设的密码就生效了。</span></p>
<p><a target="_blank" href="/content/uploadfile/201404/aa4b2182a2f04b38c086883cd332062420140411045122.jpg" id="ematt:203"><img src="/content/uploadfile/201404/aa4b2182a2f04b38c086883cd332062420140411045122.jpg" alt="点击查看原图" border="0" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></description>
	<pubDate>Wed, 26 Feb 2014 05:29:36 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/131</guid>

</item>
<item>
	<title>电脑经常弹出“Reader PCSC Driver Error!You Must Reinstall Reader Driver!”解决办法</title>
	<link>http://www.num123.com/post/130</link>
	<description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size:14px;">我的办公电脑经常弹出来“</span><span><em><span style="color:#e53333;font-size:14px;">Reader</span></em><span style="color:#e53333;font-size:14px;"> </span><em><span style="color:#e53333;font-size:14px;">PCSC</span></em><span style="color:#e53333;font-size:14px;"> </span><em><span style="color:#e53333;font-size:14px;">Driver</span></em><span style="color:#e53333;font-size:14px;"> </span><em><span style="color:#e53333;font-size:14px;">Error</span></em><span style="color:#e53333;font-size:14px;">!You Must Reinstall </span><em><span style="color:#e53333;font-size:14px;">Reader</span></em><span style="color:#e53333;font-size:14px;"> </span><em><span style="color:#e53333;font-size:14px;">Driver</span></em><span style="color:#e53333;font-size:14px;">!</span><span style="font-size:14px;">”的</span><span><span style="font-size:14px;">方框提示，</span></span></span><span><span><span><span><span><span><span><span><span><span style="font-size:14px;"> 出现此类问题多数都是因为安装工行的U循驱动</span><span><span style="font-size:14px;">造成的</span><span><span style="font-size:14px;">，</span></span></span></span></span></span></span></span></span></span><span style="font-size:14px;">很是烦人，有一年多了，由于不影响使用也懒得重</span><span><span style="font-size:14px;">装操作系统，就凑合着用了。最近总感觉用着不爽，就</span><span><span style="font-size:14px;">从</span></span><span style="font-size:14px;">百度上搜索了一些解决方法，大都不管用。最后安装了一个智能卡补</span><span><span><span style="font-size:14px;">丁</span></span><span style="font-size:14px;">解决了。在这里把解决方法分享出来希望遇到</span><span><span style="font-size:14px;">同样问题的</span><span><span style="font-size:14px;">朋友可以参考一下。</span></span></span></span></span></span></span></p>
<p><span><span><span><span><span><span><span><span style="font-size:14px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 错误提示如下：</span></span></span></span></span></span></span></span></p>
<p><span><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; <a target="_blank" href="/content/uploadfile/201305/4bf43cc6b43a726e4f7e79831b777a9d20130508004735.jpg" id="ematt:193"><img src="/content/uploadfile/201305/4bf43cc6b43a726e4f7e79831b777a9d20130508004735.jpg" alt="点击查看原图" border="0" /></a></span></span><br />
</span></span></span></span></span></span></p>
<p><span><span><span><span><span><span><span>&nbsp;&nbsp;&nbsp; <br />
</span></span></span></span></span></span></span></p>
<p><b><span><span><span><span><span><span><span><span><span>&nbsp;&nbsp; <span style="font-size:14px;">解决方法：</span></span></span></span></span></span></span></span></span></span></b></p>
<p><span><span><span><span><span><span><span><span><span><span><span style="font-size:14px;">&nbsp;</span><span><span style="font-size:14px;">&nbsp; 很简单，下载一个</span></span></span></span></span></span></span></span></span></span></span></span><span style="font-size:14px;" class="hasTip">“xp智能卡服务补丁”双击安装即可，如果实在找不到从哪里下载，可以从本文的附件中下载。</span></p>]]></description>
	<pubDate>Wed, 08 May 2013 00:40:22 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/130</guid>

</item>
<item>
	<title>squid FATAL: ipcache_init: DNS name lookup tests failed.解决方法</title>
	<link>http://www.num123.com/post/129</link>
	<description><![CDATA[<p>&nbsp;&nbsp;&nbsp;<span style="font-size:14px;"> 今天停了一天电，UPS的电量耗完后服务器都非法关机了，来电后发现部分网站无法访问，DNS解析一切正常，后来发现squid服务器的端口没有起来，但是用ps -aux | grep squid可以查看到squid进程，但使用netstat -ant查看端口却没有起来。</span></p>
<p><span style="font-size:14px;">使用squid -k shutdown 提示错误，无法关闭进程，干脆使用kill -9 进程号，</span></p>
<p><span style="font-size:14px;">使用squid -N -d1 查看启动时输出的内容信息，提示：</span></p>
<h2>squid FATAL: ipcache_init: DNS name lookup tests failed.</h2>
<p><span style="font-size:14px;">但不知道为什么会提示上面这个错误，不管什么原因还是先解决问题吧，先让网站能够访问。</span></p>
<p><span style="font-size:14px;">有3种解决方法：</span></p>
<p><span style="font-size:14px;">1、给服务器配置正确的DNS</span></p>
<p><span style="font-size:14px;">2、在启动squid时加上-D参数，忽略检测DNS服务器 squid -sD</span></p>
<p><span style="font-size:14px;">3、编辑squid.conf文件，添加</span><span style="font-size:14px;">dns_nameservers   dns-ip(你的dns服务器ip）</span></p>]]></description>
	<pubDate>Sun, 17 Mar 2013 12:06:35 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/129</guid>

</item>
<item>
	<title>“由于不可识别问题windows无法显示windows防火墙设置”解决方法(win2003)</title>
	<link>http://www.num123.com/post/128</link>
	<description><![CDATA[<p>&nbsp;&nbsp; <span style="font-size:16px;">遇到这种情况一般是计算机感染病毒所致，需要修改注册表解决。</span></p>
<p><span style="font-size:16px;">&nbsp;请按照下列步骤操作： </span></p>
<p><span style="font-size:16px;">1、 将以下文本内容复制到记事本, 文件的扩展名设置成.reg</span></p>
<p><span style="font-size:16px;">2、双击文件导入注册表</span></p>
<p><span style="font-size:16px;">3、重启操作系统</span></p>
<p>&nbsp;</p>
<p>Windows Registry Editor Version 5.00<br />
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess]<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess]<br />
"DependOnGroup"=hex(7):00,00<br />
"DependOnService"=hex(7):4e,00,65,00,74,00,6d,00,61,00,6e,00,00,00,57,00,69,00,\<br />
6e,00,4d,00,67,00,6d,00,74,00,00,00,00,00<br />
"Description"="Provides network address translation, addressing, name 
resolution and/or intrusion prevention services for a home or small 
office network."<br />
"DisplayName"="Windows Firewall/Internet Connection Sharing (ICS)"<br />
"ErrorControl"=dword:00000001<br />
"ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\<br />
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\<br />
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\<br />
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00<br />
"ObjectName"="LocalSystem"<br />
"Start"=dword:00000002<br />
"Type"=dword:00000020<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Epoch]<br />
"Epoch"=dword:00002cd0<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters]<br />
"ServiceDll"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\<br />
00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\<br />
69,00,70,00,6e,00,61,00,74,00,68,00,6c,00,70,00,2e,00,64,00,6c,00,6c,00,00,\<br />
00<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy]<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile]<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications]<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List]<br />
"%windir%\\system32\\sessmgr.exe"="%windir%\\system32\\sessmgr.exe:*:enabled:@xpsp2res.dll,-22019"<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile]<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications]<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]<br />
"%windir%\\system32\\sessmgr.exe"="%windir%\\system32\\sessmgr.exe:*:enabled:@xpsp2res.dll,-22019"<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Setup]<br />
"ServiceUpgrade"=dword:00000001<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Setup\InterfacesUnfirewalledAtUpdate]<br />
"All"=dword:00000001<br />
<br />
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Enum]<br />
"0"="Root\\LEGACY_SHAREDACCESS\\0000"<br />
"Count"=dword:00000001<br />
"NextInstance"=dword:00000001</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></description>
	<pubDate>Tue, 26 Feb 2013 05:07:10 +0000</pubDate>
	<author>网络医生</author>
	<guid>http://www.num123.com/post/128</guid>

</item></channel>
</rss>