📄 基于ip filter的nat透析 - china freebsd user group.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0053)http://www.cnfug.org/journal/systems/2004/000068.html -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>基于IP Filter的NAT透析 - China FreeBSD User Group</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="基于IP Filter的NAT透析 - China FreeBSD User Group.files/styles_v3.css"
type=text/css rel=stylesheet><LINK media=print
href="基于IP Filter的NAT透析 - China FreeBSD User Group.files/print.css"
type=text/css rel=stylesheet>
<SCRIPT language=javascript>var tabs = new Array();tabs[0] = "content";tabs[1] = "comments";tabs[2] = "wcomment";tabs[3] = "recommend";tabs[4] = "download";function tab_click(id){ for ( i = 0; i < tabs.length; i++ ) { document.getElementById( "tab_" + tabs[i] ).className = (i == id) ? "on":""; document.getElementById( "page_" + tabs[i] ).style.display = (i == id) ? "block":"none"; }}</SCRIPT>
<META content="MSHTML 6.00.2900.2995" name=GENERATOR></HEAD>
<BODY>
<DIV id=topnav>
<P><A href="http://www.cnfug.org/index.html">网站首页</A> <I>- </I><A
href="http://www.cnfug.org/aboutus.html">关于我们</A> <I>- </I><A
href="http://www.cnfug.org/members.html">团队成员</A> <I>- </I><A
href="http://www.cnfug.org/contact.html">联系我们</A> </P>
<FORM action=/cgi-bin/cms/search.cgi><A
href="http://www.cnfug.org/journal/index.xml"><IMG height=16 alt=rss
src="基于IP Filter的NAT透析 - China FreeBSD User Group.files/rss.png" width=28
align=middle border=0></A> <LABEL for=search>搜索</LABEL> <INPUT
type=hidden value=1 name=IncludeBlogs> <INPUT id=search size=22 name=search> <INPUT id=search-go type=submit value=搜索></FORM></DIV>
<DIV id=nav_caption><IMG
src="基于IP Filter的NAT透析 - China FreeBSD User Group.files/cnfug_home.gif"> </DIV>
<DIV id=nav>
<DIV class=toggle><SPAN class=corner-top><SPAN class=corner-left></SPAN></SPAN>
<UL>
<LI class=""><A href="http://www.cnfug.org/index.html"><EM>首 页</EM></A> </LI>
<LI class=""><A href="http://www.cnfug.org/news/"><EM>最新动态</EM></A> </LI>
<LI class=on><A href="http://www.cnfug.org/journal/"><EM>技术期刊</EM></A> </LI>
<LI class=""><A onclick="alert('正在建设中');return false"
href="http://www.cnfug.org/maillist/"><EM>邮件列表</EM></A> </LI>
<LI class=""><A
href="http://www.cnfug.org/journal/contribute.html"><EM>在线投稿</EM></A> </LI>
<LI class=last><A href="http://forum.cnfug.org/"><EM>论 坛</EM></A>
</LI></UL><SPAN class=corner-bottom><SPAN
class=corner-left></SPAN></SPAN></DIV></DIV>
<DIV id=body_wrapper>
<DIV id=block_wide style="WIDTH: 750px">
<DIV class=entry_block>
<DIV class=location_guide>♀ 您现在的位置在:<A
href="http://www.cnfug.org/index.html">首页</A> -> <A
href="http://www.cnfug.org/journal/">CNFUG期刊</A> -> 正文(阅读
<SCRIPT src=""></SCRIPT>
)</DIV><SPAN class=corner-top><SPAN class=corner-left></SPAN></SPAN>
<H5 class=title>基于IP Filter的NAT透析</H5>
<DIV class=v3tab>
<UL>
<LI class=spacer> </LI>
<LI class=on id=tab_content><A onclick=tab_click(0)><EM>文章正文</EM></A> </LI>
<LI class="" id=tab_comments><A onclick=tab_click(1)><EM>网友评论(0)</EM></A>
</LI>
<LI class="" id=tab_wcomment><A onclick=tab_click(2)><EM>发表评论</EM></A> </LI>
<LI class="" id=tab_recommend><A onclick=tab_click(3)><EM>推荐给好友</EM></A> </LI>
<LI class="" id=tab_download><A onclick=tab_click(4)><EM>文章下载</EM></A> </LI>
<LI class="" id=tab_print><A onclick=print()><EM>打印</EM></A> </LI></UL></DIV>
<DIV id=page_content>
<P class=author>曾慧鹏 <zenghuipeng@163.net></P><FONT class=subhead>摘
要:</FONT>本文依托cnfug开发的Floppy
Firewall为平台,以嗅探器抓包分析结合相应的路由转发规分析IPFilter对数据报进行转发和NAT的机理,最终针对实际案例的需求提出解决方案。<BR><FONT
class=subhead>关键词:</FONT>NAT FreeBSD 嗅探器 TCP/IP <BR><BR><FONT
class=subhead>一、前言</FONT><BR><BR> 如今很多企事业单位拥有自己的LAN,介入互联网的方案比较流行的方案是选用如图1-1的拓扑结构来构建网络。防火墙服务器充当过滤和转发数据报的中间代理,专用服务器安置在防火墙后面避免受到攻击。这类防火墙有硬件和软件之分,对于一个普通小型局域网来说,软件防火墙已经可以满足需求,而软件防火墙领域几乎是IPfw和IP
Filter的天下,它们的功能非常强大,安装也非常容易,考验防火墙管理员的主要是如何配置防火墙的rules,现在在网上可以很容易地找到如何配置rules的文献,但是很少有介绍其工作机理的资料,本文将以一个基于IP
Filter防火墙的实际案例来分析这些rules的工作机理,并将其运用到实际案例中解决特殊的需求问题。<BR><BR>
<DIV align=center><IMG height=244 alt=issue12_top1.jpg
src="基于IP Filter的NAT透析 - China FreeBSD User Group.files/issue12_top1.jpg"
width=431
onload="if(this.width>750) {this.style.height='auto';this.style.width='750px'}"
border=0></DIV><BR>
<DIV align=center>图1-1 常用的拓扑结构</DIV><BR><FONT class=subhead>二、案例需求</FONT>
<BR><BR> 本文所举案例为一实验室的局域网的防火墙配置。该实验室局域网拥有30台客户机,它们通过3个HUB连接在一起,通过一台安装有FreeBSD的服务器用IPFW共享一个固定IP连接Internet,该服务器除了充当局域网的防火墙之外,在其上面还运行了几乎所有FreeBSD能够提供的大众化服务,如WEB、TOMCAT、JAVA、FTP、SMABA、MAIL、DNS、TELNET等(详情请参考cnfug期刊第八期的《用FreeBSD构建家庭网络世界》和第九期的《基于FreeBSD操作系统的安全电子邮件系统架设》),随着使用人数的增多,该服务器慢慢有些不堪重负,经常可以看到在后台运行的NATD服务占用了约50%的CPU时间,尤其是TOMCAT服务启动并调用JDK之后占用的内存高达106M之巨,在高峰期客户端的上网速度有明显变慢。为了缓解服务器的压力,我采用了前面介绍的现今比较流行的方案,把防火墙和专用服务器的功能分开,防火墙采用了由cnfug开发的基于FreeBSD的Floppy
Firewall系统。如此,一来可以节约硬件成本,因为所有配件下来不到150元;二来可以方便日后的维护,因为一旦配置好防火墙之后,再也不怕断电等会导致硬盘版操作系统数据丢失的意外事故,也方便系统的备份(仅仅备份一张软盘镜像而已);三来可以对在防火墙后的专用服务器提供一道安全屏障,这点是显而易见的,虽然对于我们来说网络安全并不是太重要。<BR><BR> 这套由cnfug开发的软盘版的FreeBSD防火墙使用的是4.9版本的FreeBSD,防火墙使用的是IP
FilterV3.4.20,改造后的网络的整体拓扑结构如图2-1所示。<BR><BR>
<DIV align=center><IMG height=400 alt=issue12_top2.jpg
src="基于IP Filter的NAT透析 - China FreeBSD User Group.files/issue12_top2.jpg"
width=518
onload="if(this.width>750) {this.style.height='auto';this.style.width='750px'}"
border=0></DIV><BR>
<DIV align=center>图2-1 网络物理拓扑图</DIV><BR>本案例的需求主要有四点:<BR> 1、
子网192.168.0.0/24中的所有电脑可以借助网关(防火墙)192.168.0.1透明地访问互联网。<BR>(注:192.168.0.0/24这种格式在IP
Filter
的rules中大量使用,其中/24=3×8表示三个字节的子网掩码255.255.255.0,掩盖一个C类网段,在这里表示IP地址前三段等于192.168.0的所有电脑。同理,/16表示一个B类网,/32唯一标识一台主机。)<BR> 2、
外网的客户机可以透明地可以访问IP地址为192.168.0.251的多功能服务器(Web、Email、Ftp服务)和IP地址为192.168.0.2的文件兼打印服务器。<BR> 3、
内网客户机可以和外网客户机一样通过访问外网IP202.115.65.225来访问内网的web、email等服务器。<BR> 4、
内网的客户机可以访问远程的Ftp服务器同时外网的客户端也可访问内网的Ftp服务器。(由于Ftp协议的特殊性在此专门提出)
从图2-1看到,防火墙的两块8139网卡rl1和rl0分别连接Internet和局域网的交换机,外网卡IP地址为202.115.65.225内网卡IP地址为192.168.0.1。由于内核中IPf的缺省设置为block
all,即过滤所有的包,在该情况下,防火墙的两块网卡不能和外界有任何数据交换,ping任何地址都提示“ping:sendto: no route to
host”,所以必须人工配置IPf规则,如下命令可完成让所有数据报自由进出防火墙的两块网卡:<BR>
<DIV class=code>#cat << end > ipf.conf //红色的字表示是系统提示符<BR>>pass in
all //允许任何包从任何网卡进<BR>>pass out all //允许任何包从任何网卡出<BR>>end //保存<BR>#ipf –f
ipf.conf //执行ipf.conf文件中的过滤规则<BR>#sysctl –w net.inet.ip.forwarding =1
//打开内核的ip转发</DIV> 现在防火墙没有任何过滤规则,可以允许所有的数据报自由进出自己的两块网卡,但是它还不知道如何把到达其上的数据报转发,下面我将详细介绍怎么让它按照我们的需求转发数据报,这也是本文的重点所在。(注:本文主要目的是介绍IP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -