资源描述:
《iptables-表链【可编辑范本】》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
本机路由转发的时候,才配置FORWARD转发链~!#iptables –AFORWARD–s192。168。0.0/24 –jACCEPT#iptables–AFORWARD–d 192.168.0.0/24–jACCEPT上面只是打通了局域网通过此机的Forward的通道,也就是打通了局域网与外网的链路,实际上并起不到任何的作用,因为在内核里面的转发文件并没有打开,因为我们要手工修改/proc/sys/net/ipv4/ip_forward的值,将默认的0改为1~!(1为打开,0为关闭)例:#10。0.0。241 ——-—-〉202。96。209.5内网在访问外网的时候,包在到达外网后,外网不知道也没有办法回应此包给内网的主机,从而使得内外网无法实现通信;所以在网关上要在一个地址转换(NAT)将局域网地址翻译成互联网地址,它是通过NAT表(NetworkAddress Trastation)来实现的.# iptables –tnat –L–n
1Prerouting是在routing之前的,在数据包进入routing之前就可以翻译数据包的目标地址,如果目标确定好了,发出去了,这时要经过postrouting链。(Prerouting是routing之前所经过的链,而postrouting是routing之后所经过的链 )SNAT(源地址转换)一个包如果目标不是自己,在通过Forward的时候,把源翻译成自己的地址。源地址转换,只是把源的地址换成了自己的地址,它只能发生在postrouting上,不能发生在prerouting上。 DNAT(目标地址转换)
2当一个包在进入routing之前,也就是在prerouting的时候,转换它的目标地址。SNAT应用
310.0.0。241主机的网关为10。0.0。254,主机241发送的数据包都要经过254进行转换。#iptables –tnat–A postrouting–s10.0。0.0/24–j SNAT-—to-source192。168.0。254#iptables–tnat–L –n在10.0。0。241上访问192.168。0。1 #ping192.168.0。1通的.拨号网关:#iptables–tnat–Apostrouting–s10。0。0。0/24–jMASQUERADE(伪装)DNAT保护局域网#iptables–tnat–A prerouting–d10.0。254–p tcp–dport80–jNAT—-to-destination192。168。0.1可访问网站http://www.netfilter.org
4 iptables表和链的最清晰解释2008-12-26 13:39下文中有个词mangle,我实在没想到什么合适的词来表达这个意思,只因为我的英语太差!我只能把我理解的写出来。这个词表达的意思是,会对数据包的一些传输特性进行修改,在mangle表中允许的操作是TOS、TTL、MARK。也就是说,今后只要我们见到这个词能理解它的作用就行了.Table3-1.以本地为目标(就是我们自己的机子了)的包Step(步骤)Table(表)Chain(链)Comment(注释)1 在线路上传输(比如,Internet)2 进入接口(比如, eth0)3manglePREROUTING这个链用来mangle数据包,比如改变TOS等4natPREROUTING这个链主要用来做DNAT。不要在这个链做过虑操作,因为某些情况下包会溜过去。5 路由判断,比如,包是发往本地的,还是要转发的.6mangleINPUT在路由之后,被送往本地程序之前,mangle数据包.7filterINPUT所有以本地为目的的包都要经过这个链,不管它们从哪儿来,对这些包的过滤条件就设在这里.8 到达本地程序了(比如,服务程序或客户程序)注意,相比以前(译者注:就是指ipchain)现在数据包是由INPUT链过,而不是FORWARD链。这样更符合逻辑。刚看上去可能不太好理解,但仔细想想就会恍然大悟的。现在我们来看看源地址是本地器的包要经过哪些步骤:Table3—2。 以本地为源的包StepTableChainComment1 本地程序(比如,服务程序或客户程序)2 路由判断,要使用源地址,外出接口,还有其他一些信息.3mangleOUTPUT在这儿可以mangle包.建议不要在这儿做过滤,可能有副作用哦。4natOUTPUT这个链对从防火墙本身发出的包进行DNAT操作。5filterOUTPUT对本地发出的包过滤.6manglePOSTROUTING
5这条链主要在包DNAT之后(译者注:作者把这一次DNAT称作实际的路由,虽然在前面有一次路由。对于本地的包,一旦它被生成,就必须经过路由代码的处理,但这个包具体到哪儿去,要由NAT代码处理之后才能确定。所以把这称作实际的路由。),离开本地之前,对包mangle。有两种包会经过这里,防火墙所在机子本身产生的包,还有被转发的包。7natPOSTROUTING在这里做SNAT。但不要在这里做过滤,因为有副作用,而且有些包是会溜过去的,即使你用了DROP策略。8 离开接口(比如: eth0)9 在线路上传输(比如,Internet)在这个例子中,我们假设一个包的目的是另一个网络中的一台机子。让我们来看看这个包的旅程:Table3-3.被转发的包StepTableChainComment1 在线路上传输(比如,Internet)2 进入接口(比如,eth0)3manglePREROUTINGmangle数据包,,比如改变TOS等.4natPREROUTING这个链主要用来做DNAT。不要在这个链做过虑操作,因为某些情况下包会溜过去.稍后会做SNAT.5 路由判断,比如,包是发往本地的,还是要转发的。6mangleFORWARD包继续被发送至mangle表的FORWARD链,这是非常特殊的情况才会用到的。在这里,包被mangle(还记得mangle的意思吗)。这次mangle发生在最初的路由判断之后,在最后一次更改包的目的之前(译者注:就是下面的FORWARD链所做的,因其过滤功能,可能会改变一些包的目的地,如丢弃包)。7filterFORWARD包继续被发送至这条FORWARD链。只有需要转发的包才会走到这里,并且针对这些包的所有过滤也在这里进行。注意,所有要转发的包都要经过这里,不管是外网到内网的还是内网到外网的。在你自己书写规则时,要考虑到这一点。8manglePOSTROUTING这个链也是针对一些特殊类型的包(译者注:参考第6步,我们可以发现,在转发包时,mangle表的两个链都用在特殊的应用上)。这一步mangle是在所有更改包的目的地址的操作完成之后做的,但这时包还在本地上。9natPOSTROUTING
6这个链就是用来做SNAT的,当然也包括Masquerade(伪装).但不要在这儿做过滤,因为某些包即使不满足条件也会通过。10 离开接口(比如:eth0)11 又在线路上传输了(比如,LAN)就如你所见的,包要经历很多步骤,而且它们可以被阻拦在任何一条链上,或者是任何有问题的地方。我们的主要兴趣是iptables的概貌.注意,对不同的接口,是没有什么特殊的链和表的。所有要经防火墙/ 路由器转发的包都要经过FORWARD链。 在上面的情况里,不要在INPUT链上做过滤。INPUT是专门用来操作那些以我们的机子为目的地址的包的,它们不会被路由到其它地方的。