<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Rico's ordinary days]]></title> 
<link>http://rico.zhyh.org/index.php</link> 
<description><![CDATA[Ordinary fragments, twinkling passions]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Rico's ordinary days]]></copyright>
<item>
<link>http://rico.zhyh.org/post/371/</link>
<title><![CDATA[ifconfig]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Thu, 21 Aug 2008 09:15:51 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/371/</guid> 
<description>
<![CDATA[ 
	<span style="font-size: 14px;"><strong>主机及网段文件</strong></span><br/>主机文件/etc/hosts<br/><div class="code">#<br/># Hosts file for Virtual Brewery/Virtual Winery<br/>#<br/># IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FQDN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aliases<br/>#<br/>127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localhost<br/>#<br/>172.16.1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vlager.vbrew.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vlager vlager-if1<br/>172.16.1.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vstout.vbrew.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vstout<br/>172.16.1.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vale.vbrew.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vale<br/>#<br/>172.16.2.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vlager-if2<br/>172.16.2.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vbeaujolais.vbrew.com vbeaujolais<br/>172.16.2.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vbardolino.vbrew.com&nbsp;&nbsp;vbardolino<br/>172.16.2.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vchianti.vbrew.com&nbsp;&nbsp;&nbsp;&nbsp;vchianti</div><br/>网段文件/etc/networks<br/><div class="code"># /etc/networks for the Virtual Brewery<br/>brew-net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;172.16.1.0<br/>wine-net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;172.16.2.0</div><br/><span style="font-size: 14px;"><strong>网口与路由</strong></span><br/><div class="code"># ifconfig eth0 vstout netmask 255.255.255.0</div><br/>其中vstout的值由/etc/hosts读出，为172.16.1.2。<br/><br/>查看网口：<br/><div class="code"># ifconfig eth0<br/>eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link encap 10Mps Ethernet HWaddr&nbsp;&nbsp;00:00:C0:90:B3:42<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet addr 172.16.1.2 Bcast 172.16.1.255 Mask 255.255.255.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP BROADCAST RUNNING&nbsp;&nbsp;MTU 1500&nbsp;&nbsp;Metric 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX packets 0 errors 0 dropped 0 overrun 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX packets 0 errors 0 dropped 0 overrun 0</div><br/>RX：收到的包<br/>TX：发出的包<br/><br/>添加网段路由：<br/><div class="code"># route add brew-net</div><br/>brew-net由/etc/networks读出，为172.16.1.0。<br/><br/>查看路由表：<br/><div class="code"># route -n<br/>Kernel routing table<br/>Destination&nbsp;&nbsp;Gateway&nbsp;&nbsp;Genmask&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Flags Metric Ref Use&nbsp;&nbsp;&nbsp;&nbsp;Iface<br/>127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;255.255.255.255 UH&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;112 lo<br/>172.16.1.0&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;255.255.255.0&nbsp;&nbsp; U&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 eth0</div><br/><span style="font-size: 14px;"><strong>网关</strong></span><br/>添加到wine-net网段的网关为vlager：<br/><div class="code"># route add wine-net gw vlager</div><br/>设置默认网关为vlager：<br/><div class="code"># route add default gw vlager</div><br/>default即0.0.0.0。<br/><br/>双网卡的网关：<br/><div class="code"># ifconfig eth0 vlager-if1<br/># route add brew-net<br/># ifconfig eth1 vlager-if2<br/># route add wine-net/code&#93;<br/>&#91;size=4&#93;&#91;b&#93;ifconfig语法&#91;/b&#93;&#91;/size&#93;<br/>&#91;code&#93;ifconfig interface &#91;address &#91;parameters&#93;&#93;</div><br/>参数：<br/>up：激活网卡<br/>down：关闭网卡<br/>netmask mask：配置子网掩码<br/>pointopoint address：配置点对点地址，查看时有POINTOPOINT flag<br/>broadcast address：指定广播地址，用于与BSD 4.2等兼容<br/>irq：指定中断<br/>promisc：打开后可以收到网络广播，黑客可以用之监听和抓包<br/>-promisc：关闭promiscuous mode<br/>allmulti：打开后，支持的软件可以收听网络里的多媒体广播<br/>Tags - <a href="http://rico.zhyh.org/tags/%25E8%25BD%25AF%25E4%25BB%25B6%25E4%25BD%25BF%25E7%2594%25A8/" rel="tag">软件使用</a>
]]>
</description>
</item><item>
<link>http://rico.zhyh.org/post/370/</link>
<title><![CDATA[装修思路基本形成]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[平凡生活]]></category>
<pubDate>Wed, 20 Aug 2008 08:17:00 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/370/</guid> 
<description>
<![CDATA[ 
	逛过多个装修图区后，结合房子的结构，装修思路初步形成。<br/><br/><strong>客厅</strong><br/>客厅的形状是装修的最大难点！因为电梯间的影响，房子的客厅并非规则的矩形。<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=571" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=571" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>沙发放在凹进处时，与对面墙的中轴线错开，让人感觉很别扭。因此，构思将阳台门做成隐形门，与影视墙做成整体。参考图如下：<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=573" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=573" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><span style="color: #DC143C;">改动之处：</span><br/>按房子的结构，隐形门做到左边，装饰格做到右边，影视墙内凹墙面帖墙纸，用色效果如：<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=574" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=574" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>原电视机柜与此风格相近。<br/>吊顶风格与第一幅图相近。<br/><br/>由于影视墙面很宽，在其右边靠墙做一博古架，以后可以陈放工艺品，架结构效果如图：<br/><a href="http://rico.zhyh.org/attachment.php?fid=575" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=575" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>要做成白色。<br/><br/>进门处要做一个隔断式的鞋柜<br/><a href="http://rico.zhyh.org/attachment.php?fid=577" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=577" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>效果如图：<br/><a href="http://rico.zhyh.org/attachment.php?fid=576" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=576" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>该鞋柜色彩调成浅紫与白，右边隔断上半部分挂水晶帘。并在其前方安装一面穿衣镜。<br/><strong>餐厅</strong><br/><a href="http://rico.zhyh.org/attachment.php?fid=578" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=578" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>餐厅需要吊顶，使用悬挂灯，有隔断与酒柜两套思路，需要与家人再商议。<br/>隔断效果：<br/><a href="http://rico.zhyh.org/attachment.php?fid=579" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=579" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>酒柜效果<br/><a href="http://rico.zhyh.org/attachment.php?fid=580" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=580" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><strong>卧室</strong><br/>主卧和辅卧需要打壁橱。主卧床头一面墙要做一定的装饰效果，以衬托床头。参考图：<br/><a href="http://rico.zhyh.org/attachment.php?fid=581" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=581" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><strong>书房</strong><br/>书房需要打组合电脑桌，效果如图：<br/><a href="http://rico.zhyh.org/attachment.php?fid=582" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=582" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>考虑以后使用双显示器，显示器台要加宽，且桌面要加宽，能在上面写字。<br/><br/><strong>其它</strong><br/>其它工程还有：<br/>客厅一进门的顶端吊顶与隐形灯；<br/>卧室、书房的门，卫生间门，厨房拉门，卫生间里的隔断与拉门；<br/>墙面处理；<br/>玄关；<br/>卫生间和厨房集成吊顶；<br/>卫生间镜子与储物柜、不锈钢毛巾架、卷纸架、热水器；<br/>厨柜、灶具、抽油烟机、消毒柜；<br/>阳台包管道、晾衣架；<br/>地下室铺瓷砖等。<br/><br/>总之，工程算是比较浩大。<br/>Tags - <a href="http://rico.zhyh.org/tags/%25E8%25A3%2585%25E4%25BF%25AE/" rel="tag">装修</a>
]]>
</description>
</item><item>
<link>http://rico.zhyh.org/post/369/</link>
<title><![CDATA[Vista安装SP1后清理其备份]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[学海无涯]]></category>
<pubDate>Wed, 20 Aug 2008 06:03:39 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/369/</guid> 
<description>
<![CDATA[ 
	安装Vista SP1时会备份所有替换的文件，这是为了能够卸载SP1。不过升级后一般不会想要卸载SP1，而备份文件占用的硬盘空间大约有600~800MB，浪费了硬盘空间。<br/><br/>清理办法如下，在命令行，输入：<br/><div class="code">vsp1cln</div><br/>Tags - <a href="http://rico.zhyh.org/tags/%25E8%25BD%25AF%25E4%25BB%25B6%25E4%25BD%25BF%25E7%2594%25A8/" rel="tag">软件使用</a>
]]>
</description>
</item><item>
<link>http://rico.zhyh.org/post/368/</link>
<title><![CDATA[Vista下安装网络打印机]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[学海无涯]]></category>
<pubDate>Wed, 20 Aug 2008 04:19:14 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/368/</guid> 
<description>
<![CDATA[ 
	办公室里的打印机在&#92;&#92;192.168.3.35上，打开这台电脑，双击打印机，提示Access is denied.<br/><a href="http://rico.zhyh.org/attachment.php?fid=568" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=568" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><strong>解决办法如下：</strong><br/>打开Control Panel→Printers，单击Add a printer：<br/><a href="http://rico.zhyh.org/attachment.php?fid=569" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=569" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>选择Add a local printer，再选择Create a new port:类型为Local Port，点Next，这时弹出对话框要输入端口名，在里面输入网上邻居里那台共享打印机的电脑名及打印机名即可：<br/><a href="http://rico.zhyh.org/attachment.php?fid=570" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=570" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>下面要安装打印机驱动，为之选择对应的驱动程序，如果Vista没有带相应的驱动，到打印机网站下载后，选择从本地安装该驱动即可。<br/><br/>经测试，成功安装。<br/>Tags - <a href="http://rico.zhyh.org/tags/%25E8%25BD%25AF%25E4%25BB%25B6%25E4%25BD%25BF%25E7%2594%25A8/" rel="tag">软件使用</a>
]]>
</description>
</item><item>
<link>http://rico.zhyh.org/post/367/</link>
<title><![CDATA[Re-Enable Hibernate Option in Windows Vista]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[学海无涯]]></category>
<pubDate>Mon, 18 Aug 2008 23:37:35 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/367/</guid> 
<description>
<![CDATA[ 
	If you've found that your Hibernate option is missing from Windows Vista, it might be from running the disk cleanup wizard and removing the hibernate files. This is due to a known bug in Vista that might not have been hotfixed already.<br/><br/>Turning it back on is very simple, however.<br/><br/>Type cmd into the start menu search box, and use Ctrl+Shift+Enter to open in administrator mode. You can also right-click the item in the menu and choose Run as Administrator.<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=566" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=566" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>From the command prompt, type in the following command:<br/><div class="code">powercfg /hibernate on</div><br/><a href="http://rico.zhyh.org/attachment.php?fid=567" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=567" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>You'll have to restart your computer before it will take effect.<br/><br/><strong>Update: Alternative Method</strong><br/><br/>An alternative method with more steps was suggested by Shane in the comments. If the above doesn't fix your problem, you can use these steps.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* Go to the command prompt icon in the Start menu under Accessories and right click the icon: click "Run as administrator".<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Paste: "powercfg.exe /hibernate on" and hit Enter and also paste "powercfg -h on" and hit enter just to be safe.<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Open Control Panel and type in "Hibernate" in the Search.<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Click "Turn hibernation on or off"<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Click "Change advance power settings"<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Scroll to and expand the "Sleep" option.<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Select "Off" to the "Allow hybrid sleep" option.<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Scroll to and expand the "Power buttons and lid" option.<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Select "Hibernate" for the "Sleep button action" option. 10. Select "Hibernate" for the "Start menu power button" option.<br/><br/>Hopefully one of these methods will solve your problem! <br/>Tags - <a href="http://rico.zhyh.org/tags/%25E8%25BD%25AF%25E4%25BB%25B6%25E4%25BD%25BF%25E7%2594%25A8/" rel="tag">软件使用</a>
]]>
</description>
</item><item>
<link>http://rico.zhyh.org/post/366/</link>
<title><![CDATA[工作室：在中国电脑图书市场渐入末途？]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[学海无涯]]></category>
<pubDate>Wed, 13 Aug 2008 09:49:29 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/366/</guid> 
<description>
<![CDATA[ 
	　　 “工作室”在电脑图书领域将成历史名词？听起来似乎骇人听闻，但在不少业内人士看来却是无奈的现实：曾经辉煌一度的工作室，目前正在衰落、分化、隐身或改换行头，很有可能在不久的将来，逐渐淡出电脑图书市场。<br/>　　<br/><strong>工作室：风光不再</strong><br/><br/>　　任何事物的发展与消亡总有其过程，工作室也是一样。自上世纪八十年代末最初一批工作室先驱诞生起迄今，它已经历了十余年的风风雨雨，从年代来看虽不久远，但在阶段上来看，工作室确实更像徘徊于末日光景，衰微的趋势已日渐明显。 <br/><br/>　　没人能否认工作室曾经有过很辉煌的年代。早在八十年代末，那时中国电脑图书市场还几乎一片空白，工作室就因拥有极其敏锐的嗅觉得以诞生，并显示了新生命的非凡生命力；九十年代之后，尤其是划时代的W in95推出之后，工作室随着电脑图书市场一起进入高速发展期；W in98的推出时期更是把工作室推至顶峰，使得工作室成为电脑图书创作最普遍的组织形式。曾有人这样描绘当时的风光：光是中关村附近林林总总的工作室，就多得让人没法数得清。<br/><br/>　　时过境迁，工作室的风光终于黯淡下来。谈及往事，许多工作室的负责人都感慨万千。曹康，这个成立于1996年的康博工作室的负责人就感叹说，在先前，尽管版权制度尚未普及，但工作室的总体形势却很不错，不仅收入稳定，而且出书的质量也比现在好很多。无论在读者还是出版社眼中，工作室都是很响亮的名称。 <br/><br/>　　“而现在，<span style="color: #DC143C;">工作室的名声被搞臭了</span>。”谈到现状，曹康的语气颇为无奈。“原因有很多，主要是因为这个行业出现泡沫了。众多出版社纷纷在挤进这个市场，工作室也随之泛滥成灾，泥沙俱下。工作室整体水平和着整个行业的急功近利导致质量下滑。” <br/><br/>　　据介绍，目前全国各地出版电脑图书的出版社超过半数家，每年计算机图书超过8000种，估计工作室的数量也不下数千。但总得说来，能有品牌的工作室和图书却寥寥无几。许多工作室都没有相符的编辑实力，出书粗制滥造；有些有实力的工作室又急于大量出书，难以保证图书质量；甚至还有一些工作室为眼前利益而有悖商业道德，出现不少一稿多投，捞一笔就开溜的事件。 <br/><br/>　　曹康认为，目前<span style="color: #DC143C;">很少有工作室能够大投入、纵向地做书，都在低档电脑图书市场恶性竞争，使得大量图书选题重复</span>，而这又直接导致了整个行业利润的下滑。他说，以前一本书能卖20万册，如今最多能卖几千册。无论是单书的印数、销量还是效益，都在急剧下滑。长此以往，工作室怎能生存下去？ <br/><br/>　　记者也注意到，在今年出版的各类电脑图书中，标明为某某工作室编著的并不多。与几年前相比比率明显减少，这或许从另一面也说明：工作室的品牌已逐渐失去了市场和出版社的认同。 <br/>　　<br/><strong>工作室与出版社：矛盾重重</strong><br/><br/>　　工作室与出版社的关系一直被描绘为“鱼水相依”、“相互依赖”。但在实际操作中，两者的关系却远非那么融洽。作为民间组织形式的工作室与企事业型的出版社之间，总免不了枝枝节节的各种矛盾。 <br/><br/>　　最近，人民邮电出版社停止了与门槛工作室的合作，据说门槛工作室也搬离了人民邮电出版社的大楼。据该社一位编辑介绍，双方合作不愉快由来已久，出版社主要对门槛工作室的“三心二意”感到不满，认为门槛工作室与太多出版社合作，无法保证供稿质量。而据知情人介绍，双方的反目的原因并非如此简单。 <br/><br/>　　抖斗书屋是知名的工作室之一，其负责人史惠康这样归纳：出版社对工作室的态度是“又爱又恨”。一方面，出版社在很大程度上必须依赖工作室的供稿；另一方面，工作室一旦壮大，就很可能朝公司化发展，并最终发展为与出版社分庭抗礼的独立书商。出版社无疑存在两难的考虑：既要不得不维持与工作室的长期合作，又担心会导致养虎为患的恶果。而某工作室的负责人则透露，而当年他们都是在和出版社的合作中不断壮大的，但后来合作不下去，主要还是利润分成方面出现分歧。明显的是，一些出版社正试图走一条脱离工作室的发展道路。 <br/><br/>　　这种矛盾心态影响了出版社与工作室之间的许多具体合作。史惠康举例说，出版社把大小工作室不分区别对待，在报酬上实施一刀切，就是这种矛盾心理所致。工作室即使想做大投入的图书，也往往因得不到出版社的支持与保护而最终放弃。这样一来，工作室也就失去做品牌的积极性了。 <br/><br/>　　<span style="color: #00008B;">北京希望电子出版社</span>是最典型的和工作室共同起家代表之一。当年仅为公司一个事业部的图书，在与东方人华等一批老工作室的合作过程中，最终壮大而成为庞然大物。不过如今，它已放弃了与老伙伴的联姻，另起炉灶。据秦人华社长介绍，现在希望电子出版社采取的是新型的合作方式，就是由出版社提供服务、设备、资金和场地，而工作室则依附于出版社，各负责一个方向，更具专业开发组的性质。“就像卫星城一样紧围在出版社周围。”她这样形容道。 <br/><br/>　　秦社长告诉记者，不和外面的工作室合作，主要是因为他们技术不专一，方向不明确。 <br/><br/>　　航空航天大学出版社的说法也异曲同工，该社乔社长告诉记者，因为出版的都是特别专业类图书，所以不存在与工作室合作的必要。 <br/><br/>　　有些人担忧：一旦这种独立趋势在出版社会得以推广加强，工作室无疑将成为无家可归的弃儿。也有人说，真是金子是谁也不会舍得丢弃的。 <br/>　　<br/><strong>工作室的分化与转变</strong><br/><br/>　　东方人华的前身是老牌的鑫万博创作室，负责人李振格在接受记者采访时却反复强调：“东方人华已不是工作室，而是具有独立法人资格的公司。”作为工作室的代表人物，他的说法颇让记者诧异。 <br/><br/>　　康博工作室的曹康先生认为，李振格先生的反应完全可以理解，除了工作室名声不好，政策上的避讳之外，东方人华确实也有别于它的前身鑫万博创作室，甚至存在质的飞跃。他将飞跃归结为三点：一、具有法人资格，是合法公司，而不再是民间组织；二、在管理上趋向科学化，脱离原先小作坊模式；三、在财务方面有大的突破，有固定的品牌。 <br/><br/>　　这样的转变并不仅仅发生于东方人华，更多的工作室都在向公司转化。如康博、抖斗书屋、门槛等较有实力的工作室，都已成立法人公司，就是一些小的工作室，也在纷纷探索改革道路。 <br/><br/>　　由此产生的问题是，我们能否再用“工作室”一词来概括这类变化飞跃后的产物？还是如李振格所说，这些老牌工作室已不再是工作室了？即使在出版业内，这种认识上的分歧也普遍存在。 <br/><br/>　　可以肯定的是，工作室正在逐渐背离原先的民间性质，它的传统意义正在逐渐转化、消失。 <br/><br/>　　谈起这个现象，康博工作室的曹康认为是必然：“工作室发展到一定程度，就必然要超越自身工作室的性质。” <br/><br/>　　而抖斗书屋的史惠康则认为，目前大的工作室对书的操作基本涵盖了编、印、发的前两个阶段，随着壮大必然会向具有发行功能的图书公司性质演变。据他透露，抖斗书屋就试图拓展这一领域。 <br/><br/>　　出版社也在不断充当着促使工作室自觉演变的角色。相较以前而言，现在出版社与工作室更多选择捆绑式合作方式，具体而言就是成立合资公司，通过资金这一纽带来消除出版社与工作室之间的矛盾，使两者利益更趋一致。如东方人华，它分别与清华大学出版社、北京大学出版社、科学出版社合资成立文源公司、北大宏博和科学出版社计算机事业部。 <br/><br/>　　而这些因市场而出现的新生儿，我们又将如何定义呢？工作室自诞生至今，终于变得复杂和面目全非起来，或说是发展，或说是衰亡。但总的说来，“工作室”似乎注定要成为电脑图书领域的历史名词。<br/>Tags - <a href="http://rico.zhyh.org/tags/%25E5%2580%259F%25E9%2589%25B4/" rel="tag">借鉴</a> , <a href="http://rico.zhyh.org/tags/%25E5%2588%259B%25E4%25B8%259A/" rel="tag">创业</a>
]]>
</description>
</item><item>
<link>http://rico.zhyh.org/post/365/</link>
<title><![CDATA[LFQ 第6章 研究小型网络事例]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Fri, 08 Aug 2008 01:08:20 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/365/</guid> 
<description>
<![CDATA[ 
	指10个用户以内的网络，一般为家庭网或者小型办公网。<br/><br/><span style="font-size: 14px;"><strong>Linux用作家用路由</strong></span><br/>SOHO即Small Offices and Home Office。<br/><br/>将旧电脑配置成SOHO路由器非常经济实惠。该机上必须安装两块网卡，其一为WAN，另一为LAN。如下图所示：<br/><a href="http://rico.zhyh.org/attachment.php?fid=565" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=565" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><strong>配置网络</strong><br/>配置局域网使用C类网段192.168.1.0/24，路由器eth1为192.168.1.1：<br/><div class="code">#ifconfig eth1 192.168.1.1 netmask 255.255.255.0 up</div><br/>为了为NAT后面的设备创建合适的防火墙，需要给它们分配静态IP地址。游戏和笔记本电脑要想使用DCHP服务的话，需要安装DHCP服务器，在不同版本的Linux上命令有所区别，比如在Debian上：<br/><div class="code"># apt-get install dhcp<br/>Reading Package Lists... Done<br/>Building Dependency Tree... Done<br/>The following NEW packages will be installed:<br/>&nbsp;&nbsp;dhcp</div><br/>然后配置DHCP服务器。笔记本电脑可分配的地址段为192.168.1.2到192.168.1.10，编辑/etc/dhcpd.conf，添加如下行：<br/><div class="code">subnet 192.168.1.0 netmask 255.255.255.0 &#123;<br/>&nbsp;&nbsp;range 192.168.1.2 192.168.1.10;<br/>&nbsp;&nbsp;option domain-name-servers provider.assigned.me.one;<br/>&nbsp;&nbsp;option routers 192.168.1.1;<br/>&nbsp;&nbsp;option subnet-mask 255.255.255.0;<br/>&nbsp;&nbsp;option broadcast-address 192.168.1.255;<br/>&nbsp;&nbsp;default-lease-time 600;<br/>&nbsp;&nbsp;max-lease-time 7200;<br/>&#125;</div><br/>打印机、台式机和孩子的电脑按MAC地址分配固定IP，在/etc/dhcpd.conf，添加如下行：<br/><div class="code">host children &#123;<br/>&nbsp;&nbsp;hardware ethernet 02:03:04:05:06:07;<br/>&nbsp;&nbsp;fixed-address 192.168.1.55;<br/>&nbsp;&nbsp;option name-servers provider.assigned.me.one;<br/>&nbsp;&nbsp;option routers 192.168.1.1;<br/>&nbsp;&nbsp;option subnet-mask 255.255.255.0;<br/>&nbsp;&nbsp;option broadcast-address 192.168.1.255;<br/>&#125;<br/>host desktop &#123;<br/>&nbsp;&nbsp;hardware ethernet 02:03:04:05:06:08;<br/>&nbsp;&nbsp;fixed-address 192.168.1.11;<br/>&nbsp;&nbsp;option name-servers provider.assigned.me.one;<br/>&nbsp;&nbsp;option routers 192.168.1.1;<br/>&nbsp;&nbsp;option subnet-mask 255.255.255.0;<br/>&nbsp;&nbsp;option broadcast-address 192.168.1.255;<br/>&#125;<br/>host printer &#123;<br/>&nbsp;&nbsp;hardware ethernet 02:03:04:05:06:09;<br/>&nbsp;&nbsp;fixed-address 192.168.1.100;<br/>&nbsp;&nbsp;option name-servers provider.assigned.me.one;<br/>&nbsp;&nbsp;option routers 192.168.1.1;<br/>&nbsp;&nbsp;option subnet-mask 255.255.255.0;<br/>&nbsp;&nbsp;option broadcast-address 192.168.1.255;<br/>&#125;<br/>host Xbox &#123;<br/>&nbsp;&nbsp;hardware ethernet 02:03:04:05:06:10;<br/>&nbsp;&nbsp;fixed-address 192.168.1.200;<br/>&nbsp;&nbsp;option name-servers provider.assigned.me.one;<br/>&nbsp;&nbsp;option routers 192.168.1.1;<br/>&nbsp;&nbsp;option subnet-mask 255.255.255.0;<br/>&nbsp;&nbsp;option broadcast-address 192.168.1.255;<br/>&#125;</div><br/>编辑/etc/init.d/dhcp脚本，设置eth1网口：<br/><div class="code"># Defaults<br/>INTERFACES=&quot;eth1&quot;</div><br/>运行/etc/init.d/dhcp start启动DHCP服务器。<br/><br/>这样，配置好的网络如下：<br/>● Linux路由器在eth0上有公网IP，eth1上有私网IP 192.168.1.1，并运行DHCP服务器<br/>● 笔记本电脑使用的IP地址段为192.168.1.2-192.168.1.10<br/>● 台式机固定IP为192.168.1.11<br/>● 孩子的电脑固定IP为192.168.1.55<br/>● 网络打印机固定IP为192.168.1.100<br/>● 游戏机的固定IP为192.168.1.200<br/><br/><strong>定义安全策略</strong><br/>配置防火墙前，写一个文档列出安全策略。通常规则如下：<br/>● 游戏机可以任意访问互联网，并用GameSpy Arcade管理上面的游戏<br/>● 打印机只能在私网里使用<br/>● 孩子的电脑只能浏览互联网网页并使用Yahoo! Messenger。不希望他们访问成人站点或下载病毒，也不想让他们使用P2P软件。<br/>● 笔记本电脑可以任意访问互联网<br/>● 台式机可以任意访问互联网，并且希望能从外网通过VPN访问它们<br/>● Linux路由器必须运行SSH，可以从内网或者办公室访问<br/><br/>其中最难的是对孩子电脑的限制。要阻止访问成人站点和下载病毒，必须使用透明代理服务器。<br/><br/><strong>建立防火墙</strong><br/>首先需要建立Squid代理服务器。默认端口为3128，在其配置文件/etc/squid/squid.conf里添加如下行以使用透明代理：<br/><div class="code">httpd_accel_host virtual<br/>httpd_accel_port 80<br/>httpd_accel_with_proxy on<br/>httpd_accel_uses_host_header on</div><br/>定义Squid access list以阻止对成人站点和危险文件的访问，在squid.conf添加如下内容：<br/><div class="code">acl all src 0.0.0.0/0.0.0.0<br/>acl our_network src 192.168.1.0/24<br/>acl porn url_regex -i sex adult porn hardcore fetish<br/>acl downloads urlpath_regex &#92;.exe$ &#92;.rar$ &#92;.zip$ &#92;.pif$ &#92;.scr$<br/><br/>http_access deny porn<br/>http_access deny downloads<br/>http_access allow our_network<br/>http_access deny all</div><br/>名为"porn"的ACL里包含禁止在URL里出现的字符串。<br/><br/>名为"downloads"的ACL里包含禁止下载的文件类型。<br/><br/>配置好代理服务器后，下面配置防火墙。要使用NAT，首先要加载第4章提到的连接跟踪器：<br/><div class="code">modprobe ip_nat_ftp<br/>modprobe ip_nat_irc</div><br/>参考GameSpy Arcade网站上的说明，需要转发游戏机的如下端口：<br/>● 6500 UDP: for GameSpy Arcade<br/>● 6700 UDP: for GameSpy Tunnel<br/><br/>处理如下：<br/><div class="code">iptables –t nat –A PREROUTING –p udp –-dport 6500 –j DNAT –-to 192.168.1.200<br/>iptables –t nat –A PREROUTING –p udp –-dport 6700 –j DNAT –-to 192.168.1.200</div><br/>另外还要为它们在后面统一配置NAT。<br/><br/>下面，禁止外网对打印机的访问。由于它处于私网中，并不能从外网访问，只要不NAT其向外发出的包即可。<br/><div class="code">iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.100 –j DROP</div><br/>孩子的电脑要使用透明代理，需要将其80端口的通讯重定向到代理服务器，还允许他们访问HTTPS的443端口：<br/><div class="code">iptables -t nat -A PREROUTING -s 192.168.1.55 -p tcp --dport 80 -j REDIRECT --to-port 3128<br/>iptables -t nat -A POSTROUTING –o eth0 -s 192.168.1.55 -p tcp --dport 443 -j MASQUERADE</div><br/>这样，192.168.1.55到任意80或443端口的访问都要经过我们的代理服务器，这些都在本地完成，不用伪装192.168.1.55的请求。<br/><br/>孩子的电脑发送DNS请求时需要伪装处理：<br/><div class="code">iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.55 –p udp –-dport 53 –j MASQUERADE</div><br/>要开放他们使用Yahoo! Messenger聊天(不是语音和文件传输)，查看Yahoo! Messenger的帮助，发现它使用20、23、25、80、119、5050、8001和8002端口，需要访问的站点有：<br/>● scs.msg.yahoo.com <br/>● scsa.msg.yahoo.com <br/>● scsb.msg.yahoo.com <br/>● scsc.msg.yahoo.com <br/><br/>因此孩子的电脑访问这些站点时要伪装处理：<br/><div class="code">iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.55 –d scs.msg.yahoo.com –j MASQUERADE<br/>iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.55 –d scsa.msg.yahoo.com –j MASQUERADE<br/>iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.55 –d scsb.msg.yahoo.com –j MASQUERADE<br/>iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.55 –d scsc.msg.yahoo.com –j MASQUERADE</div><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><a href="http://rico.zhyh.org/attachment.php?fid=511" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=511" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a>在iptables命令中使用域名时，Linux路由器将把域名解析为IP地址，在插入内核时使用解析到的IP地址。如果一个域名解析出多条IP地址，就在内核插入同样多的IP地址。</div></div><br/>然后禁止孩子电脑对别的端口和主机的访问，在nat表的POSTROUTING链里添加：<br/><div class="code">iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.55 –j DROP</div><br/>笔记本和台式机可以任意访问互联网，只需添加MASQUERADE规则即可：<br/><div class="code">iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.0/24 –j MASQUERADE</div><br/>配置VNC通道。台式机上的VNC服务器使用9112端口，为该端口配置DNAT：<br/><div class="code">iptables –t nat –A PREROUTING –p tcp –-dport 9112 –j DNAT –-to 192.168.1.11</div><br/>本地规则配置完毕。下面配置若干规则保护路由器。<br/><br/>为保护SSH访问，最好创建一条名为SSH的链，并把SSH不放在标准端口22上(如1234)。创建如下：<br/><div class="code">iptables –N SSH</div><br/>插入规则告诉内核，对所有通过1234端口进入的TCP通讯检查SSH链：<br/><div class="code">iptables –A INPUT –p tcp –-dport 1234 –j SSH</div><br/>在SSH链里添加规则，只允许信任主机的访问。比方说办公室的IP地址是1.2.3.4：<br/><div class="code">iptables –A SSH –s 1.2.3.4 –j ACCEPT<br/>iptables –A SSH –s 192.168.1.0/27 –j ACCEPT<br/>iptables –A SSH –s 0/0 –j DROP</div><br/>第一条规则允许来自办公室的访问，第二条规则只允许内网192.168.1.0/27(192.168.1.1到192.168.1.32)的访问，不允许孩子的电脑、打印机、游戏机对路由器的SSH访问。第三条规则丢弃所有其它对1234端口的访问。<br/><br/>Squid有自己的访问列表。不过最好的保护办法是丢弃input链里来自互联网的TCP SYN包。这样就不能通过互联网连到Linux路由器上，除了从1.2.3.4访问1234端口上的SSH(之前命中)。另外还要接受所有环路(lo)通讯。<br/><div class="code">iptables –A INPUT –i lo –j ACCEPT<br/>iptables –A INPUT –i eth0 –p tcp –-syn –j DROP</div><br/>丢弃SYN包存在一定缺陷，不能为打开UDP端口的软件提供保护。<br/><strong>建立防火墙脚本</strong><br/>脚本执行的顺序为内核分析的顺序。<br/><div class="code">#!/bin/bash<br/><br/>#define where iptables is<br/>IPT=/sbin/iptables<br/><br/>############# Begin the NAT table operations ######<br/><br/>#Flush all the rules in the nat table<br/>$IPT -t nat -F<br/><br/>#Load some modules needed for NAT<br/>/sbin/modprobe ip_nat_ftp<br/>/sbin/modprobe ip_nat_irc<br/><br/>#DNAT the gaming device ports 6500 and 6700 UDP for hosting games<br/>$IPT –t nat -A PREROUTING -p udp --dport 6500 -j DNAT --to 192.168.1.200<br/>$IPT –t nat -A PREROUTING -p udp --dport 6700 -j DNAT --to 192.168.1.200<br/><br/>#Deny printer access to the internet<br/>$IPT -t nat -A POSTROUTING -o eth0 -s 192.168.1.100 -j DROP<br/><br/>#Transparent Proxy for the children&#039;s computer<br/>$IPT -t nat -A PREROUTING -s 192.168.1.55 -p tcp --dport 80 -j REDIRECT --to-port 3128<br/><br/>#Masquerade HTTPS for children&#039;s computer<br/>$IPT -t nat -A POSTROUTING –o eth0 -s 192.168.1.55 -p tcp --dport 443 -j MASQUERADE<br/><br/>#Masquerade the children&#039;s computer for DNS requests<br/>$IPT -t nat -A POSTROUTING -o eth0 -s 192.168.1.55 -p udp --dport 53 -j MASQUERADE<br/><br/>#Masquerade the children&#039;s computer to access yahoo messenger servers<br/>$IPT -t nat -A POSTROUTING -o eth0 -s 192.168.1.55 -d scs.msg.yahoo.com -j MASQUERADE<br/>$IPT -t nat -A POSTROUTING -o eth0 -s 192.168.1.55 -d scsa.msg.yahoo.com -j MASQUERADE<br/>$IPT -t nat -A POSTROUTING -o eth0 -s 192.168.1.55 -d scsb.msg.yahoo.com -j MASQUERADE<br/>$IPT -t nat -A POSTROUTING -o eth0 -s 192.168.1.55 -d scsc.msg.yahoo.com -j MASQUERADE<br/><br/>#Drop everything else for the children&#039;s computer<br/>$IPT -t nat -A POSTROUTING -o eth0 -s 192.168.1.55 -j DROP<br/><br/>#Masquerade all our network<br/>$IPT -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE<br/><br/>#DNAT port 9112 TCP for VNC into the desktop computer<br/>$IPT –t nat -A PREROUTING -p tcp --dport 9112 -j DNAT --to 192.168.1.11<br/><br/>############# End the NAT table opperations ######<br/><br/>#Flush all the rules in INPUT, FORWARD and OUTPUT<br/>$IPT -F<br/><br/>#Allow everything on the loopback interface<br/>$IPT -A INPUT -i lo -j ACCEPT<br/><br/>#Delete the SSH chain if it exists and create it again<br/>$IPT -X SSH<br/>$IPT -N SSH<br/><br/>#Pass all tcp packets to port 1234 to the SSH chain<br/>$IPT -A INPUT -p tcp --dport 1234 -j SSH<br/><br/>#Append the allow and drop rules for the SSH chain<br/>$IPT -A SSH -s 1.2.3.4 -j ACCEPT<br/>$IPT -A SSH -s 192.168.1.0/27 -j ACCEPT<br/>$IPT -A SSH -s 0/0 -j DROP<br/><br/>#DROP all incoming TCP SYN packets on eth0<br/>$IPT -A INPUT -i eth0 -p tcp --syn -j DROP</div><br/><strong>检验防火墙配置</strong><br/>运行脚本后，想看一下表和链的情况。首先，用 iptables –t nat –L –n –v查看一下nat表，看看内核如何分析我们的规则：<br/><div class="code"># iptables -t nat -L -n -v<br/>Chain PREROUTING (policy ACCEPT 201 packets, 26363 bytes)<br/> pkts bytes target&nbsp;&nbsp;&nbsp;&nbsp; prot opt in&nbsp;&nbsp;&nbsp;&nbsp; out&nbsp;&nbsp;&nbsp;&nbsp; source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destination<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 DNAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; udp&nbsp;&nbsp;--&nbsp;&nbsp;eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;udp dpt:6500 to:192.168.1.200<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 DNAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; udp&nbsp;&nbsp;--&nbsp;&nbsp;eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;udp dpt:6700 to:192.168.1.200<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 REDIRECT&nbsp;&nbsp; tcp&nbsp;&nbsp;--&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.55 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcp dpt:80 redir ports 3128<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 DNAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcp&nbsp;&nbsp;--&nbsp;&nbsp;eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcp dpt:9112 to:192.168.1.11<br/>Chain POSTROUTING (policy ACCEPT 47 packets, 8648 bytes)<br/> pkts bytes target&nbsp;&nbsp;&nbsp;&nbsp; prot opt in&nbsp;&nbsp; out&nbsp;&nbsp;&nbsp;&nbsp;source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destination<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 DROP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;--&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;eth0&nbsp;&nbsp; 192.168.1.100&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0/0<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 MASQUERADE&nbsp;&nbsp;udp&nbsp;&nbsp;--&nbsp;&nbsp;*&nbsp;&nbsp; eth0&nbsp;&nbsp; 192.168.1.55&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 tcp dpt:443<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 MASQUERADE&nbsp;&nbsp;udp&nbsp;&nbsp;--&nbsp;&nbsp;*&nbsp;&nbsp; eth0&nbsp;&nbsp; 192.168.1.55&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 udp dpt:53<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 MASQUERADE&nbsp;&nbsp;all&nbsp;&nbsp;--&nbsp;&nbsp;*&nbsp;&nbsp; eth0&nbsp;&nbsp; 192.168.1.55 216.155.193.136<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 MASQUERADE&nbsp;&nbsp;all&nbsp;&nbsp;--&nbsp;&nbsp;*&nbsp;&nbsp; eth0&nbsp;&nbsp; 192.168.1.55 216.155.193.137<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 MASQUERADE&nbsp;&nbsp;all&nbsp;&nbsp;--&nbsp;&nbsp;*&nbsp;&nbsp; eth0&nbsp;&nbsp; 192.168.1.55 216.155.193.138<br/>(… some lines missing here …)<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 DROP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;--&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;eth0&nbsp;&nbsp; 192.168.1.55&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0<br/>&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; 0 MASQUERADE&nbsp;&nbsp;all&nbsp;&nbsp;--&nbsp;&nbsp;*&nbsp;&nbsp; eth0&nbsp;&nbsp; 192.168.1.0/24&nbsp;&nbsp; 0.0.0.0/0<br/>Chain OUTPUT (policy ACCEPT 3 packets, 250 bytes)<br/> pkts bytes target&nbsp;&nbsp;&nbsp;&nbsp; prot opt in&nbsp;&nbsp; out&nbsp;&nbsp;&nbsp;&nbsp;source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination</div><br/><br/>Tags - <a href="http://rico.zhyh.org/tags/%25E7%25BD%2591%25E7%25BB%259C/" rel="tag">网络</a>
]]>
</description>
</item><item>
<link>http://rico.zhyh.org/post/359/</link>
<title><![CDATA[LFQ 第5章 第7层过滤]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Thu, 07 Aug 2008 07:09:39 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/359/</guid> 
<description>
<![CDATA[ 
	在本书的第1章，我们展示了OSI和TCP/IP的网络模型。我们发现，即便TCP/IP模型应用广泛，参考模型依然是OSI。<br/><br/>我们再看一下TCP/I&#123;和OSI模型：<br/><p align="center"><a href="http://rico.zhyh.org/attachment.php?fid=546" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=546" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a></p><br/>在OSI模型的第7层找到的是应用(HTTP、FTP、SSH等)。从上图可以看到，TCP/IP将OSI的第5、6、7层集成到一个层：TCP第4层(应用层)，名称相同，不过功能相异。<br/><br/>过滤或提升某些程序的通讯量可难可易。通常，我们可以通过命中源或目标端口为80(HTTP端口)的TCP包来过滤/提升网络通讯量。然而，网页服务器可配置使用任一端口，因此对于特定的通讯量我们的过滤/提升将无效。<br/><br/>网管另外要对付的就是P2P软件，如Kazaa、DC++、Emule等等。由于这些程序不使用标准端口，并且更糟糕的是，它们还能配置成使用标准端口(比如80).<br/><br/>当前，有人打算出手对付这些，并已经干得不错，启动的项目叫“<a href="http://l7-filter.sourceforge.net" target="_blank">第7层过滤</a>”。<br/><br/>你可能猜到，“第7层过滤”就是过滤第7层数据的办法，即由程过滤由程序产生的网络通讯，不管在第4层用的是什么协议和端口。<br/><br/>L7过滤为Linux内核的包分类器，它不查找第4层的协议和端口，而是查找IP包里的数据，并做正则表达式匹配以决定数据的类型，及使用了什么程序协议。<br/><br/>我们还将讨论的另一个项目是IP2P，为L7过滤的替代品，设计用于只过滤P2P软件，而L7过滤处理的程序范围要更广泛。<br/><br/><span style="font-size: 14px;"><strong>何时使用第7层过滤</strong></span><br/>L7过滤为命中网络程序数据的很棒的解决方案，不过也存在不利的地方。主要是占用大量CPU计算，因此在通讯量非常大的系统上并不推荐采用。不过这还要看通过系统的数据类型。比如，平均20Mbps的www数据处理起来轻松小菜，而2Mbps的VoIP通讯就会使系统的性能严重下降。<br/><br/>通常，我们认为L7过滤比较适合SOHO环境，能够很好地过滤病毒、限制孩子下载音乐占用的带宽。<br/><br/>L7过滤还适合中小企业，用于限制一些非必要的通讯。比如，某企业只有10Mbps的互联网连接，某个员工使用P2P软件将很快占满所有通讯量，使正常的工作无法开展。<br/><br/>采用L7过滤另一个不利之处是它需要连接跟踪模块有效。之前我们讨论过该模块对大流量通讯并不适合。<br/><br/>因此，结论是：L7过滤是不错的工具，不过对CPU占用很高，并且必须要有ip_conntrack的协作。不推荐在超过5000pps(包/秒)的机器上使用，当然如果机器性能不在话下，就无所谓了。<br/><br/><span style="font-size: 14px;"><strong>第7层过滤工作原理</strong></span><br/>L7过滤为iptables提供分辨包属于哪个程序的方法。<br/><br/>TCP/IP模型有4层，在L7过滤项目之前，netfilter能够命中下面三层的数据：<br/>● 链路层：iptables -A CHAIN -m mac --mac-source ...<br/>● 网络层：iptables -A CHAIN -s IP_ADDRESS …<br/>● 传输层：iptables -A CHAIN -p tcp --dport 80 …<br/><br/>在链路层，netfilter使用-m mac命中来自或者发向网络中某个MAC地址的包。在网络层有IP协议，netfilter命中来自或者发向某个IP地址的包，无论该包采用了什么通讯协议、端口或应用程序。在传输层有TCP、UDP协议，netfilter可以通过协议、端口命中相应的包。<br/><br/>可以对此三层的条件任意组合，比如：<br/><div class="code">iptables –A FORWARD –s 192.168.0.2 –p tcp -–dport 80 –m mac –-mac-source 00:01:BC:2D:EF:2A –j DROP</div><br/>即，如果包源IP地址为192.168.0.2，且MAC地址为00:01:BC:2D:EF:2A，采用TCP协议，目标端口为80，将之丢弃。<br/>L7过滤使netfilter能够分辨包属于哪个程序。它为iptables的另一个匹配选项，别的匹配选项的规则在此同样适用，因此可以对命中L7过滤的包做所有iptables操作。<br/><br/>最短且最简单的L7过滤版本就是，在安装之后，你可以使用 -m layer7 --l7proto [http&#124;ftp&#124;...]。这为我们即将讨论的匹配选项。<br/><br/>为了命中L7数据，netfilter将不仅仅分析IP包的头部。然而，包里的数据可不会说：“我是P2P包，过滤我吧！”因此，匹配即做一系列正则表达式运算以分辨不同的程序。而这些正则表达式无疑是该项目最重要的部分，被称为“协议定义”<br/><br/>L7过滤项目包含3个重要部分：<br/>● 内核补丁，为内核提供分析IP包内部数据的办法<br/>● iptables补丁，为iptables提供匹配选项<br/>● 正则表达式集，以分辨不同的协议定义<br/><br/><strong>安装L7过滤</strong><br/>要安装L7过滤项目，我们需要对内核打上http://l7-filter.sourceforge.net提供的补丁，要有内核源代码。然后再打上iptables补丁，重新编译iptables，再安全协议定义。依次解释。<br/><br/><strong>打上内核补丁</strong><br/>首先从<a href="http://www.kernel.org" target="_blank">http://www.kernel.org</a>下载内核源代码，然后从<a href="http://l7-filter.sourceforge.net" target="_blank">http://l7-filter.sourceforge.net</a>下载L7过滤。<br/><br/>本书采用2.6.12.5版的内核和L7-filter version 2.0 bet。下载到/usr/src里，解压L7-filter TAR：<br/><div class="code"># tar xfvz netfilter-layer7-v2.0-beta.tar.gz<br/>netfilter-layer7-v2.0-beta/<br/>netfilter-layer7-v2.0-beta/stray_code<br/>netfilter-layer7-v2.0-beta/for_older_kernels/<br/>netfilter-layer7-v2.0-beta/for_older_kernels/kernel-2.6.9-2.6.10-layer7-1.2.patch<br/>netfilter-layer7-v2.0-beta/for_older_kernels/kernel-2.6.0-2.6.8.1-layer7-0.9.2.patch<br/>netfilter-layer7-v2.0-beta/for_older_kernels/kernel-2.6.11-2.6.12-layer7-1.4.patch<br/>netfilter-layer7-v2.0-beta/CHANGELOG<br/>netfilter-layer7-v2.0-beta/README<br/>netfilter-layer7-v2.0-beta/iptables-layer7-2.0.patch<br/>netfilter-layer7-v2.0-beta/kernel-2.6.13-layer7-2.0.patch<br/>netfilter-layer7-v2.0-beta/kernel-2.4-layer7-2.0.patch</div><br/>接下来，到内核源代码根目录，打上合适的补丁：<br/><div class="code"># patch -p1 &lt; ../netfilter-layer7-v2. 0-beta/for_older_kernels/kernel-2.6.11-2.6.12-layer7-1.4.patch<br/>patching file include/linux/netfilter_ipv4/ip_conntrack.h<br/>patching file include/linux/netfilter_ipv4/ipt_layer7.h<br/>patching file net/ipv4/netfilter/Kconfig<br/>patching file net/ipv4/netfilter/Makefile<br/>patching file net/ipv4/netfilter/ip_conntrack_core.c<br/>patching file net/ipv4/netfilter/ip_conntrack_standalone.c<br/>Hunk #1 succeeded at 189 with fuzz 2 (offset 37 lines).<br/>patching file net/ipv4/netfilter/ipt_layer7.c<br/>patching file net/ipv4/netfilter/regexp/regexp.c<br/>patching file net/ipv4/netfilter/regexp/regexp.h<br/>patching file net/ipv4/netfilter/regexp/regmagic.h<br/>patching file net/ipv4/netfilter/regexp/regsub.c</div><br/>运行make config/make menuconfig/make Xconfig，激活如下选项：<br/>● Code maturity level options &#124; Prompt for development and/or incomplete code/drivers<br/>● Netfilter (Device Drivers &#124; Networking support &#124; Networking Options &#124; Network packet filtering)<br/>● Connection tracking (Network packet filtering &#124; IP: Netfilter Configuration &#124; Connection tracking)<br/>● Connection tracking flow accounting and IP tables support (on the same screen)<br/>● Layer 7 match support<br/><a href="http://rico.zhyh.org/attachment.php?fid=547" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=547" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>然后编译安装内核，重启系统。<br/><br/>编译时，按照不同的版本可能会看到如下警告：<br/><div class="code">&nbsp;&nbsp;CC &#91;M&#93;&nbsp;&nbsp;net/ipv4/netfilter/ipt_layer7.o<br/>net/ipv4/netfilter/ipt_layer7.c:457: warning: initialization from incompatible pointer type</div><br/>忽略即可。<br/><br/><strong>打上iptables补丁</strong><br/>到http://www.netfilter.org下载iptables源代码后，再打上合适的补丁：<br/><div class="code"># patch -p1 &lt; ../netfilter-layer7-v2.0-beta/iptables-layer7-2.0.patch<br/>patching file extensions/.layer7-test<br/>patching file extensions/libipt_layer7.c<br/>patching file extensions/libipt_layer7.man</div><br/>需要将extensions/.layer7-test设上可执行权限：<br/><div class="code"># chmod +x extensions/.layer7-test</div><br/>指定之前打好补丁的内核的路径，用make编译iptables：<br/><div class="code"># make KERNEL_DIR=/usr/src/linux-2.6.12.5<br/>Making dependencies: please wait...<br/>Extensions found: IPv4:CLUSTERIP IPv4:layer7 IPv4:recent IPv6:ah IPv6:<br/>esp IPv6:frag IPv6:ipv6header IPv6:hbh IPv6:dst IPv6:rt<br/>...</div><br/>用make install安装iptables：<br/><div class="code"># make install KERNEL_DIR=/usr/src/linux-2.6.12.5<br/>cp iptables /usr/local/sbin/iptables<br/>cp iptables.8 /usr/local/man/man8/iptables.8<br/>...</div><br/>基本完工，请注意，新的itpables和原来的路径可能不一样。由make install反馈可以知道它装到了/usr/local/sbin/iptables下面，使用时要注意调用的是不是合适的iptables。可以用iptables -V看看：<br/><div class="code"># iptables -V<br/>iptables v1.2.11<br/># type iptables<br/>iptables is hashed (/sbin/iptables)<br/># /usr/local/sbin/iptables -V<br/>iptables v1.3.4</div><br/><strong>协议定义</strong><br/>到<a href="http://prdownloads.sourceforge.net/l7-filter/l7-protocols-2006-06-03.tar.gz?download" target="_blank">http://prdownloads.sourceforge.net/l7-filter/l7-protocols-2006-06-03.tar.gz?download</a>下载协议定义包。然后将pattern文件(.pat)复制到/etc/l7-protocols下面。<br/><div class="code"># mkdir /etc/l7-protocols<br/># cp protocols/* /etc/l7-protocols</div><br/>/etc/l7-protocols为pattern文件的默认目录，iptables将查找该目录和其一级子目录，不继续深入。<br/><br/>可以指定自己的pattern目录：<br/><div class="code">iptables &#91;…&#93; –m layer7 –-l7dir /path-to/patterns –-l7proto &#91;…&#93;</div><br/>请注意，必须在协议之前指定pattern目录。<br/><br/><strong>测试安装情况</strong><br/>首先，看一下模块有没有加载：<br/><div class="code"># modinfo ipt_layer7<br/>filename:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /lib/modules/2.6.12.5-home.made/kernel/net/ipv4/netfilter/ipt_layer7.ko<br/>author:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Matthew Strait &lt;quadong@users.sf.net&gt;,&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ethan Sommer &lt;sommere@users.sf.net&gt;<br/>license:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPL<br/>description:&nbsp;&nbsp;&nbsp;&nbsp;iptables application layer match module<br/>vermagic:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.6.12.5-home.made preempt PENTIUMIII gcc-3.3<br/>depends:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ip_tables</div><br/>输出显示有一个ipt_layer7模块。<br/><br/>然后，用modprobe加载该模块：<br/><div class="code"># modprobe ipt_layer7<br/># lsmod<br/>Module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size&nbsp;&nbsp;Used by<br/>ipt_layer7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12364&nbsp;&nbsp;0</div><br/>modprobe命令不会报错。使用lsmod命令可以看到加载进内核的模块，其大小、使用的进程号(0)。<br/><br/>下面，测试该模块是否工作。我们在apache网页服务器里放一些文件，然后下载试试。<br/><br/>下载时，应当能看到命中所有包。首先，我们使用iptables -Z将所有链里的计数器清零，再在OUTPUT链里插入计数规则，以命中流出的HTTP通讯。<br/><div class="code"># iptables -Z<br/># iptables -A OUTPUT -m layer7 --l7proto http<br/># iptables -L OUTPUT -n -v<br/>Chain OUTPUT (policy ACCEPT 10168 packets, 3433K bytes)<br/>pkts bytes target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prot&nbsp;&nbsp;opt&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp;&nbsp; out&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destination<br/>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0/0&nbsp;&nbsp; LAYER7 l7proto http</div><br/>然后，我们从服务器下载whale.qt，查看apache的access.log：<br/><div class="code">&quot;GET /whale.qt HTTP/1.1&quot; 200 11727970 &quot;-&quot;</div><br/>这样我们会有11Mb命中OUTPUT链里的计数规则。<br/><div class="code"># iptables -L OUTPUT -n -v<br/>Chain OUTPUT (policy ACCEPT 172K packets, 65M bytes)<br/>pkts bytes target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prot&nbsp;&nbsp;opt&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp;&nbsp; out&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source&nbsp;&nbsp;&nbsp;&nbsp; destination<br/>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0/0&nbsp;&nbsp; LAYER7 l7proto http</div><br/>糟糕！没有命中任何包！弄错什么了？原来是没有加载ip_conntrack模块。<br/><br/>加载ip_conntrack再试试：<br/><div class="code"># modprobe ip_conntrack<br/># iptables -L OUTPUT -n -v<br/>Chain OUTPUT (policy ACCEPT 457K packets, 159M bytes)<br/>pkts bytes target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prot&nbsp;&nbsp;opt&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp;&nbsp; out&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination<br/>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;LAYER7 l7proto http<br/># wget http://127.0.0.1/whale.qt<br/>--00:37:21--&nbsp;&nbsp;http://127.0.0.1/whale.qt =&gt; `whale.qt&#039;<br/>Connecting to 127.0.0.1:80... connected.<br/>HTTP request sent, awaiting response... 200 OK<br/>Length: 11,727,970 &#91;video/quicktime&#93;<br/><br/>100%&#91;=========================================&gt;&#93; 11,727,970&nbsp;&nbsp;&nbsp;&nbsp;12.74M/s<br/><br/>00:37:22 (12.71 MB/s) - `whale.qt&#039; saved &#91;11727970/11727970&#93;<br/><br/># iptables -L OUTPUT -n -v<br/>Chain OUTPUT (policy ACCEPT 467K packets, 175M bytes)<br/>pkts&nbsp;&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp;&nbsp; out&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination<br/>1433 12M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;LAYER7 l7proto http</div><br/>行了。现在我们有了一台具备应用层过滤能力的Linux路由器。<br/><strong><span style="font-size: 14px;">第7层过滤应用</span></strong><br/>L7过滤器虽然可以配合任一iptables选项，不过由于它命中的包也可能属于不是期望的程序，所以并不推荐应用所有iptables选项。<br/><br/><strong>过滤程序数据</strong><br/>并不推荐用L7过滤流经路由器的程序数据。不同程序的通讯看起来很相似，因此基于L7过滤器丢弃数据时可能导致问题。比如，丢弃eDonkey包时，别的协议有可能也出现一些问题，eDonkey数据规则有可能命中1%别的数据流。<br/><br/>如果确实想要过滤，可以：<br/><div class="code"># iptables -A FORWARD -m layer7 --l7proto edonkey -j DROP</div><br/>还可以组合端口与IP地址：<br/><div class="code"># iptables -A FORWARD -m layer7 --l7proto edonkey –d 192.168.1.131 -j DROP</div><br/>将丢弃目标地址为192.168.1.131的eDonkey包。<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><a href="http://rico.zhyh.org/attachment.php?fid=511" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=511" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a>在决定阻挡程序前，请看一下http://l7-filter.sourceforge.net/上面协议。里面有L7-filter项目支持的协议，及对应的数据规则的质量。如果数据规则质量不佳，不要使用L7过滤器 DROP或REJECT！</div></div><br/><strong>程序带宽限制</strong><br/>L7过滤器的创建者认为他们的项目最佳应用就是程序带宽限制。要限制程序或者用户的带宽，可以使用第3章介绍的tc工具。<br/><br/>L7过滤器可以命中IP包里的部分或者全部程序数据，因此我们可以标记特定程序的包。L7过滤器也是一种匹配选项，所以可以用netfilter标记，TOS指定特定服务类型，DSCP设置DSCP值，都可以用tc设定。<br/><br/>比如，我们编写一段脚本，将所有用户的BitTorrent限制为2 Mbps，一个用户的FTP流量限制为 512 Kbps，另一个为 1 Mbps。<br/><br/>首先要在BitTorrent和FTP数据上做标记：<br/><div class="code"># iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 5<br/># iptables -t mangle -A POSTROUTING -m layer7 --l7proto ftp –d 192.168.1.100 -j MARK --set-mark 6<br/># iptables -t mangle -A POSTROUTING -m layer7 --l7proto ftp –d 192.168.1.112 -j MARK --set-mark 7</div><br/>现在，检查POSTROUTING链：<br/><div class="code"># iptables -t mangle -L POSTROUTING -n&nbsp;&nbsp;-v<br/>Chain POSTROUTING (policy ACCEPT 5855K packets, 4686M bytes)<br/> pkts&nbsp;&nbsp; bytes&nbsp;&nbsp; target&nbsp;&nbsp;prot&nbsp;&nbsp;&nbsp;&nbsp;opt&nbsp;&nbsp;&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out&nbsp;&nbsp;&nbsp;&nbsp; source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destination<br/> 3183&nbsp;&nbsp; 1404K&nbsp;&nbsp; MARK&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;LAYER7 l7proto bittorrent MARK set 0x5<br/> 119&nbsp;&nbsp;&nbsp;&nbsp;1012K&nbsp;&nbsp; MARK&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.100&nbsp;&nbsp; LAYER7 l7proto ftp MARK set 0x6<br/> 12&nbsp;&nbsp;&nbsp;&nbsp; 100K&nbsp;&nbsp;&nbsp;&nbsp;MARK&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.112&nbsp;&nbsp; LAYER7 l7proto ftp MARK set 0x7</div><br/>发现已经加上了相应标记(BitTorrent为5，FTP为7)<br/>在本例中我们采用CBQ，因此需要创建cbq类。下面编写名为limits的脚本：<br/><div class="code">#!/bin/bash<br/><br/>#delete root class. When running this <br/>#script we need to delete limits first<br/>tc qdisc del dev eth1 root<br/><br/>#create the root class<br/>tc qdisc add dev eth1 root handle 10: cbq bandwidth 100Mbit avpkt 1000<br/>tc class add dev eth1 parent 10:0 classid 10:1 cbq bandwidth 100Mbit rate 100Mbit allot 1514 weight 10Mbit prio 8 maxburst 20 avpkt 1000<br/><br/>#create a 2 mbps class for bittorrent<br/>tc class add dev eth1 parent 10:1 classid 10:100 cbq bandwidth 100Mbit rate 2Mbit allot 1514 weight 256Kbit prio 5 maxburst 20 avpkt 1000 bounded<br/>tc qdisc add dev eth1 parent 10:100 sfq quantum 1514b perturb 15<br/>tc filter add dev eth1 parent 10:0 protocol ip prio 25 handle 5 fw flowid 10:100<br/><br/>#create a 512 kbps class for ftp for the client 192.168.1.100<br/>tc class add dev eth1 parent 10:1 classid 10:200 cbq bandwidth 100Mbit rate 512Kbit allot 1514 weight 64Kbit prio 5 maxburst 20 avpkt 1000 bounded<br/>tc qdisc add dev eth1 parent 10:200 sfq quantum 1514b perturb 15<br/>tc filter add dev eth1 parent 10:0 protocol ip prio 25 handle 6 fw flowid 10:200<br/><br/>#create a 1 mbps class for ftp for the client 192.168.1.112<br/>tc class add dev eth1 parent 10:1 classid 10:300 cbq bandwidth 100Mbit rate 1Mbit allot 1514 weight 128Kbit prio 5 maxburst 20 avpkt 1000 bounded<br/>tc qdisc add dev eth1 parent 10:300 sfq quantum 1514b perturb 15<br/>tc filter add dev eth1 parent 10:0 protocol ip prio 25 handle 7 fw flowid 10:300</div><br/>要检查配置，需要将mangle表里的POSTROUTING链清零，再运行该脚本。<br/><div class="code"># chmod +x limits<br/># iptables -t mangle -Z POSTROUTING; ./limits<br/>RTNETLINK answers: No such file or directory</div><br/>运行脚本时显示错误是因为该网口不存在限制，即不存在根类。再次运行该脚本就不会出错了。<br/><br/>现在，用iptables –t mangle –L POSTROUTING –n –v和tc –s class show dev eth1命令就能产生同样数量的字节和包，命中每条规则与对应的类。<br/><br/><strong>用L7过滤器计数</strong><br/>有一台路由器连有11个客户，想看一下应用层通讯情况，建立如下脚本：<br/><div class="code">iptables -A FORWARD -m layer7 --l7proto directconnect<br/>iptables -A FORWARD -m layer7 --l7proto bittorrent<br/>iptables -A FORWARD -m layer7 --l7proto http<br/>iptables -A FORWARD -m layer7 --l7proto ftp<br/>iptables -A FORWARD -m layer7 --l7proto yahoo<br/>iptables -Z</div><br/>后来，想看一下其中哪种通讯类型最多：<br/><div class="code"># iptables -L FORWARD -n -v<br/>Chain FORWARD (policy ACCEPT 289K packets, 209M bytes)<br/> pkts&nbsp;&nbsp; bytes&nbsp;&nbsp; target&nbsp;&nbsp;prot&nbsp;&nbsp;&nbsp;&nbsp;opt&nbsp;&nbsp;&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out&nbsp;&nbsp;&nbsp;&nbsp; source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destination<br/>62318&nbsp;&nbsp; 55M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 LAYER7 l7proto directconnect<br/>6978&nbsp;&nbsp;&nbsp;&nbsp;1202K&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 LAYER7 l7proto bittorrent<br/>8037&nbsp;&nbsp;&nbsp;&nbsp;6116K&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 LAYER7 l7proto http<br/>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 LAYER7 l7proto ftp<br/>108&nbsp;&nbsp;&nbsp;&nbsp; 10724&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 LAYER7 l7proto yahoo</div><br/>发现最多的是dc++，占了25%的通讯。<br/><br/><span style="font-size: 14px;"><strong>IPP2P：一个P2P匹配选项</strong></span><br/>IPP2P为匹配IP通讯里的P2P数据的应用。项目网站：<a href="http://www.ipp2p.org" target="_blank">http://www.ipp2p.org</a><br/><br/><strong>安装IPP2P</strong><br/>到其网站下载最新稳定版：<br/><div class="code"># wget http://www.ipp2p.org/downloads/ipp2p-X.Y.Z.tar.gz<br/>--19:59:51--&nbsp;&nbsp;http://www.ipp2p.org/downloads/ipp2p-X.Y.Z.tar.gz =&gt; `ipp2p-X.Y.Z.tar.gz&#039;<br/>Resolving www.ipp2p.org... 81.169.145.64<br/>Connecting to www.ipp2p.org&#91;81.169.145.64&#93;:80... connected.<br/>HTTP request sent, awaiting response... 200 OK<br/>Length: 18,910 &#91;application/x-tar&#93;<br/>100%&#91;===============================================&gt;&#93; 18,910&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--.--K/s<br/>19:59:52 (181.98 KB/s) - `ipp2p-X.Y.Z.tar.gz&#039; saved &#91;18910/18910&#93;</div><br/>解压：<br/><div class="code"># tar xfvz ipp2p-X.Y.Z.tar.gz</div><br/>README文件说： "modify the Makefile (change "IUSER = -I/usr/src/iptables/include" to wherever iptables.h is located)"。比如，我们的iptables源文件放在/usr/src/iptables-1.3.4。有些版本不使用makefile里定义的IUSER，而此处有：<br/><div class="code">ifndef $(IPTABLES_SRC)<br/>IPTVER ?= $(shell $(IPTABLES_BIN) --version &#124; $(SED) -e &#039;s/^iptables v//&#039;)<br/>IPTABLES_SRC = $(wildcard /usr/src/iptables-$(IPTVER))<br/>endif</div><br/>即脚本将检查iptables的版本，并在/usr/src/iptables-<VERSION>里查找iptables源文件，在我们的情况下，不用修改任何东西。<br/><br/>输入make编译，然后将libipt_ipp2p.so拷到iptables的lib目录/usr/local/lib/iptables/，把ipt_ipp2p.ko拷到模块目录并运行 depmod -a：<br/><div class="code"># cp ipt_ipp2p.ko /lib/modules/2.6.12.5-home.made/kernel/net/ipv4/<br/># depmod -a<br/># modinfo ipt_ipp2p<br/>filename:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /lib/modules/2.6.12.5-home.made/kernel/net/ipv4/ipt_ipp2p.ko<br/>author:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Eicke Friedrich/Klaus Degner &lt;ipp2p@ipp2p.org&gt;<br/>description:&nbsp;&nbsp;&nbsp;&nbsp;An extension to iptables to identify P2P traffic.<br/>license:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPL<br/>vermagic:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.6.12.5-home.made preempt PENTIUMIII gcc-3.3<br/>depends:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ip_tables</div><br/>加载模块：<br/><div class="code"># modprobe ipt_ipp2p</div><br/><strong>使用IPP2P</strong><br/>匹配语法：<br/><div class="code">iptables … -m ipp2p –-option ...</div><br/>option可以是：<br/><a href="http://rico.zhyh.org/attachment.php?fid=564" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=564" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>还能用--ipp2p命中上面列出的所有协议。<br/><br/>这些匹配选项和L7过滤器项目相似。<br/><br/><span style="font-size: 14px;"><strong>比较IPP2P和第7层过滤</strong></span><br/>为测试L7过滤器和IPP2P命中的结果，我们编写计数规则统计DC++、BitTorrent和eDonkey：<br/><div class="code">iptables -I FORWARD -m layer7 --l7proto directconnect<br/>iptables -I FORWARD -m ipp2p --dc<br/>iptables -I FORWARD -m layer7 --l7proto bittorrent<br/>iptables -I FORWARD -m ipp2p --bit<br/>iptables -I FORWARD -m layer7 --l7proto edonkey<br/>iptables -I FORWARD -m ipp2p --edk</div><br/>几分钟后，看一下结果：<br/><div class="code"># iptables -L FORWARD -n -v<br/>Chain FORWARD (policy ACCEPT 25M packets, 18G bytes)<br/> pkts&nbsp;&nbsp; bytes&nbsp;&nbsp; target&nbsp;&nbsp;prot&nbsp;&nbsp;&nbsp;&nbsp;opt&nbsp;&nbsp;&nbsp;&nbsp; in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out&nbsp;&nbsp;&nbsp;&nbsp; source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destination<br/>2797&nbsp;&nbsp;&nbsp;&nbsp;253K&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 ipp2p v0.8.0 --edk<br/>1533&nbsp;&nbsp;&nbsp;&nbsp;434K&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 LAYER7 l7proto edonkey<br/>6665&nbsp;&nbsp;&nbsp;&nbsp;1069K&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 ipp2p v0.8.0 --bit<br/>7375&nbsp;&nbsp;&nbsp;&nbsp;1273K&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 LAYER7 l7proto bittorrent<br/>192&nbsp;&nbsp;&nbsp;&nbsp; 36558&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 ipp2p v0.8.0 --dc<br/>693K&nbsp;&nbsp;&nbsp;&nbsp;640M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0 LAYER7 l7proto directconnect</div><br/>从结果可以发现这两个应用间有许多不同。<br/><br/>比如，对于eDonkey，IPP2P比L7过滤器命中的包多，但是数据少。这并非意味着IPP2P更准确，而是IPP2P和L7过滤器命中的是不同的包。解释参见/etc/l7-protocols下的edonkey.pat文件。<br/><div class="code">edonkey<br/># http://gd.tuwien.ac.at/opsys/linux/sf/p/pdonkey/eDonkey-protocol-0.6<br/>#<br/># In addition to &#92;xe3, &#92;xc5 and &#92;xd4, I see a lot of &#92;xe5<br/>#<br/># God this is a mess.&nbsp;&nbsp;What an irritating protocol.<br/># This will match about 1% of streams with random data in them!<br/>^&#91;&#92;xe3&#92;xc5&#92;xe5&#92;xd4&#93;.?.?.?.?(&#91;&#92;x01&#92;x02&#92;x05&#92;x14&#92;x15&#92;x16&#92;x18&#92;x19&#92;x1a&#92;x1b&#92;<br/>x1c&#92;x20&#92;x21&#92;x32&#92;x33&#92;x34&#92;x35&#92;x36&#92;x38&#92;x40&#92;x41&#92;x42&#92;x43&#92;x46&#92;x47&#92;x48&#92;x49&#92;<br/>x4a&#92;x4b&#92;x4c&#92;x4d&#92;x4e&#92;x4f&#92;x50&#92;x51&#92;x52&#92;x53&#92;x54&#92;x55&#92;x56&#92;x57&#92;x58&#92;x5b&#92;x5c&#92;<br/>x60&#92;x81&#92;x82&#92;x90&#92;x91&#92;x93&#92;x96&#92;x97&#92;x98&#92;x99&#92;x9a&#92;x9b&#92;x9c&#92;x9e&#92;xa0&#92;xa1&#92;xa2&#92;<br/>xa3&#92;xa4&#93;&#124;&#92;x59................?&#91; -~&#93;&#124;&#92;x96....$)<br/># matches everything and too much<br/># ^(&#92;xe3&#124;&#92;xc5&#124;&#92;xd4)<br/># ipp2p essentially uses &quot;&#92;xe3....&#92;x47&quot;, which doesn&#039;t seem at all right to me.<br/># bandwidtharbitrator uses<br/># e0.*@.*6&#91;a-z&#93;.*p$&#124;e0.*@.*&#91;a-z&#93;6&#91;a-z&#93;.*p0$&#124;e.*@.*&#91;0-9&#93;6.*p$&#124;emule&#124;edonkey<br/># no comments to explain what all the mush is, of course... </div><br/>可见他们使用不同的数据规则，因此命中不同的数据。<br/><br/>IPP2P和L7过滤器的BitTorrent值相似，不过并不能判断哪个更接近事实。<br/><br/>DC++数据差别最大，我有9成把握L7过滤器要更精确，因为我亲眼看到路由器后面有几个用户正在用DC++。<br/>Tags - <a href="http://rico.zhyh.org/tags/%25E7%25BD%2591%25E7%25BB%259C/" rel="tag">网络</a>
]]>
</description>
</item><item>
<link>http://rico.zhyh.org/post/364/</link>
<title><![CDATA[Autodesk 3ds Max Design 2009]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[Media]]></category>
<pubDate>Sat, 02 Aug 2008 06:19:26 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/364/</guid> 
<description>
<![CDATA[ 
	新房子钥匙拿到手后，就要构思怎样装修了，好久没有玩过3ds max了，从网上搞到目前最新的Autodesk 3ds Max Design 2009，感觉改进很大。<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=559" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=559" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>启动后，在一个Learning movies，里面教了很多基本技术，还有新版改进功能介绍。<br/><a href="http://rico.zhyh.org/attachment.php?fid=560" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=560" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>界面上浮动一个InfoCenter，可以随时搜索帮助。<br/><a href="http://rico.zhyh.org/attachment.php?fid=561" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=561" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>新的界面，视图功能更强了。<br/><a href="http://rico.zhyh.org/attachment.php?fid=562" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=562" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>刚刚做完的新房结构草图<br/><a href="http://rico.zhyh.org/attachment.php?fid=563" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=563" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>哈哈，要搞定所有东西，可费劲了，毕竟很不熟悉<br/>Tags - <a href="http://rico.zhyh.org/tags/%25E6%2596%25B0%25E8%25BD%25AF%25E4%25BB%25B6/" rel="tag">新软件</a>
]]>
</description>
</item><item>
<link>http://rico.zhyh.org/post/363/</link>
<title><![CDATA[用上新本本]]></title> 
<author>Rico &lt;rico@zhyh.org&gt;</author>
<category><![CDATA[平凡生活]]></category>
<pubDate>Fri, 01 Aug 2008 08:09:12 +0000</pubDate> 
<guid>http://rico.zhyh.org/post/363/</guid> 
<description>
<![CDATA[ 
	Breeze单位类似福利性质发了一台联想昭阳笔记本电脑，现在我们终于能用上自己的新本本了。原来那台Acer笔记本设计太烂，电源接口离VGA外接口太近，对输出的VGA信号严重干扰，接在家里的液晶电视上看电影时画面出现大量干扰波纹，早就想要能够换一台新的了。<br/><br/>这台本子目前还有一点水土不服，还要在调试，不过好像已经找到窍门了，<br/><br/>显摆一下，呵呵，人总是虚荣！<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=553" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=553" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>接上Acer AL1716后，双显示器效果。<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=554" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=554" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>笔记本左侧，插满了。<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=555" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=555" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>这有一个读卡器<br/><a href="http://rico.zhyh.org/attachment.php?fid=556" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=556" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>指纹识别器感觉不错哦，进Windows系统，只要刷一下手指就行了；另外一些需要记住的密码，登记以后也只要刷一下手指就自动进入了。<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=557" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=557" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>我的森海塞尔耳机<br/><br/><a href="http://rico.zhyh.org/attachment.php?fid=558" target="_blank"><img src="http://rico.zhyh.org/attachment.php?fid=558" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>卡，卡……<br/>Tags - <a href="http://rico.zhyh.org/tags/%25E7%25AC%2594%25E8%25AE%25B0%25E6%259C%25AC/" rel="tag">笔记本</a>
]]>
</description>
</item>
</channel>
</rss>