当前位置:  技术问答>linux和unix

那里有IPTABLE的详细资料,最好是中文的

    来源: 互联网  发布时间:2014-11-12

    本文导语:  那里有IPTABLE的详细资料,最好是中文的?我是菜鸟,请指导,另外在LINUX上装代理SQUID详细步骤能告诉我吗?它是怎么工作的? | 一、Netfilter功能简介  Netfilter是linux2.4内核实现数据包过滤、...

那里有IPTABLE的详细资料,最好是中文的?我是菜鸟,请指导,另外在LINUX上装代理SQUID详细步骤能告诉我吗?它是怎么工作的?

|
一、Netfilter功能简介 
Netfilter是linux2.4内核实现数据包过滤、数据包处理、NAT等的功能框架。 

1、Netfilter基础和概念 
Netfilter是定义如何对流经网络协议的数据进行操作的框架。Netfilter比 
以前任何一版Linux内核的防火墙子系统都要完善强大。Netfilter提供了一个抽 
象、通用化的框架,该框架定义的一个子功能的实现就是包过滤子系统。Netfilter 
框架包含以下三部分内容: 
1。为每种网络协议(IPv4、IPv6等)定义一套钩子函数(IPv4定义了5个钩子函 
数),这些钩子函数在数据报流过协议栈的几个关键点被调用。在这几个点中, 
协议栈将把数据报及钩子函数标号作为参数调用netfilter框架。 
2。内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接, 
这样当某个数据包被传递给netfilter框架时,内核能检测是否有任何模块对 
该协议和钩子函数进行了注册。若注册了,则调用该模块的注册时使用的回调 
函数,这样这些模块就有机会检查(可能还会修改)该数据包、丢弃该数据包及 
指示netfilter将该数据包传入用户空间的队列。 
3。那些排队的数据包是被传递给用户空间的异步地进行处理。一个用户进程能 
检查数据包,修改数据包,甚至可以重新将该数据包通过离开内核的同一个钩 
子函数中注入到内核中。 
所有的包过滤/NAT等等都基于该框架。内核网络代码中不再有到处都是的、混 
乱的修改数据包的代码了。当前netfilter框架在IPv4、IPv6及Decnet网络栈中 
被实现。 

2、Netfilter在IPv4中的结构 
一个数据包按照如下图所示的过程通过Netfilter系统: 
--->[1]--->[ROUTE]--->[3]--->[4]---> 
         |      ^ 
      local |      | 
         |      [ROUTE] 
         v      | 
        [2]      [5] 
         |      ^ 
         |      | 
         v -------  | 

从图中可以看到IPv4一共有5个钩子函数,分别为: 
   1 NF_IP_PRE_ROUTING 
   2 NF_IP_LOCAL_IN 
   3 NF_IP_FORWARD 
   4 NF_IP_POST_ROUTING 
   5 NF_IP_LOCAL_OUT 

数据报从左边进入系统,进行IP校验以后,数据报经过第一个钩子函数 
NF_IP_PRE_ROUTING[1]进行处理;然后就进入路由代码,其决定该数据包是 
需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过钩子函 
数NF_IP_LOCAL_IN[2]处理以后然后传递给上层协议;若该数据包应该被转发 
则它被NF_IP_FORWARD[3]处理;经过转发的数据报经过最后一个钩子函数 
NF_IP_POST_ROUTING[4]处理以后,再传输到网络上。 
本地产生的数据经过钩子函数NF_IP_LOCAL_OUT [5]处理可以后,进行路由选 
择处理,然后经过NF_IP_POST_ROUTING[4]处理以后发送到网络上。 

3、Netfilter基础 

从上面关于IPv4的netfilter的例子讨论,可以看到钩子函数是如何被激活的。 
内核模块可以对一个或多个这样的钩子函数进行注册挂接,并且在数据报经过 
这些钩子函数时被调用,从而模块可以修改这些数据报,并向netfilter返回如 
下值: 

NF_ACCEPT 继续正常传输数据报 
NF_DROP 丢弃该数据报,不再传输 
NF_STOLEN 模块接管该数据报,不要继续传输该数据报 
NF_QUEUE 对该数据报进行排队(通常用于将数据报给用户空间的进程进行处理) 
NF_REPEAT 再次调用该钩子函数 

4、使用iptables进行数据报选择 
一个基于Netfilter框架的、称为iptables的数据报选择系统在Linux2.4内核中 
被应用,其实它就是ipchains的后继工具,但却有更强的可扩展性。 
内核模块可以注册一个新的规则表(table),并要求数据报流经指定的规则表。 
这种数据报选择用于实现数据报过滤(filter表),网络地址转换(Nat表)及数据 
报处理(mangle表)。 
Linux2.4内核提供的这三种数据报处理功能都基于netfilter的钩子函数和IP表。 
它们是独立的模块,相互之间是独立的。它们都完美的集成到由Netfileter提供 
的框架中。 

包过滤 
filter表格不会对数据报进行修改,而只对数据报进行过滤。iptables优于ipchains 
的一个方面就是它更为小巧和快速。它是通过钩子函数NF_IP_LOCAL_IN, NF_IP_FORWARD 
及NF_IP_LOCAL_OUT接入netfilter框架的。因此对于任何一个数据报只有一个地方 
对其进行过滤。这相对ipchains来说是一个巨大的改进,因为在ipchains中一个被 
转发的数据报会遍历三条链。 

NAT 
NAT表格监听三个Netfilter钩子函数:NF_IP_PRE_ROUTING、NF_IP_POST_ROUTING 
及NF_IP_LOCAL_OUT。 NF_IP_PRE_ROUTING实现对需要转发的数据报的源地址进 
行地址转换而NF_IP_POST_ROUTING则对需要转发的数据包的目的地址进行地址转 
换。对于本地数据报的目的地址的转换则由NF_IP_LOCAL_OUT来实现。 
NAT表格不同于filter表格,因为只有新连接的第一个数据报将遍历表格,而随 
后的数据报将根据第一个数据报的结果进行同样的转换处理。 
NAT表格被用在源NAT,目的NAT,伪装(其是源NAT的一个特例)及透明代理(其是目 
的NAT的一个特例)。 

数据报处理(Packet mangling) 
mangle表格在NF_IP_PRE_ROUTING和NF_IP_LOCAL_OUT钩子中进行注册。使用mangle 
表,可以实现对数据报的修改或给数据报附上一些带外数据。当前mangle表支持 
修改TOS位及设置skb的nfmard字段。 

二、利用iptables和Netfilter实现数据包过滤 
Linux2.4提供了一个简洁强大的工具"iptables"来插入/删除/修改规则链中的 
规则。该命令实现对所有的ip表进行处理,当前包括filter,nat及mangle三个 
表格,及以后扩展的表模块。该命令支持插件来支持新的匹配参数和目标动作。 
因此对netfilter的任何扩展都非常的简单。仅仅需要编写一个完成实际目标动 
作处理的模块和iptalbes插件(动态连接库)来添加所需要的一切。 

一个iptables命令基本上包含如下五部分: 
1、希望工作在哪个表上 
2、希望使用该表的哪个链 
3、进行的操作(插入,添加,删除,修改) 
4、对特定规则的目标动作 
5、匹配数据报条件 
基本的语法为: 
iptables -t table -Operation chain -j target match(es) 
例如希望添加一个规则,允许所有从任何地方到本地smtp端口的连接: 
iptables -t filter -A INPUT -j ACCEPT -p tcp --dport smtp 

基本操作: 
-A 在链尾添加一条规则 
-I 插入规则 
-D 删除规则 
-R 替代一条规则 
-L 列出规则 

基本目标动作,适用于所有的链 
ACCEPT 接收该数据报 
DROP 丢弃该数据报 
QUEUE 排队该数据报到用户空间 
RETURN 返回到前面调用的链 
foobar 用户自定义链 

基本匹配条件,适用于所有的链 
-p 指定协议(tcp/icmp/udp/...) 
-s 源地址(ip address/masklen) 
-d 目的地址(ip address/masklen) 
-i 数据报输入接口 
-o 数据报输出接口 

除了基本的操作,匹配和目标还具有各种扩展。 

匹配扩展 
TCP匹配扩展能匹配源端口,目的端口,及tcp标记的任意组合,tcp选项等。 
UPD匹配扩展能匹配源端口和目的端口 
ICMP匹配扩展能匹配ICMP类型 
MAC匹配扩展能匹配接收到的数据的mac地址 
MARK匹配扩展能匹配nfmark 
OWNE匹配扩展(仅仅应用于本地产生的数据报)来匹配用户ID,组ID,进程ID及 
会话ID 
LIMIT扩展匹配用来匹配特定时间段内的数据报限制。这个扩展匹配对于限制 
dos攻击数据流非常有用。 
STATE匹配扩展用来匹配特定状态下的数据报(由连接跟踪子系统来决定状态), 
可能的状态包括: 
INVALID (不匹配于任何连接) 
ESTABLISHED (属于某个已经建立的链接的数据报) 
NEW (建立连接的数据报) 
RELATED (和某个已经建立的连接有一定相关的数据报,例如一个ICMP 
错误消息或ftp数据连接) 
TOS匹配扩展用来匹配IP头的TOS字段的值。 

目标动作扩展 
LOG 将匹配的数据报传递给syslog()进行记录 
ULOG 将匹配的数据适用用户空间的log进程进行记录 
REJECT 不仅仅丢弃数据报,同时返回给发送者一个可配置的错误信息 
MIRROR 互换源和目的地址以后重新传输该数据报 

三、利用iptables和Netfilter实现NAT 
linux以前的内核仅仅支持有限的NAT功能,被称为伪装。Netfilter则支持任何 
一种NAT。一般来讲NAT可以分为源NAT和目的NAT。 
源NAT在数据报经过NF_IP_POST_ROUTING时修改数据报的源地址。伪装是一个特 
殊的SNAT。 
目的NAT在数据报经过NF_IP_LOCAL_OUT或NF_IP_PRE_ROUTING 时修改数据报目 
的地址。端口转发和透明代理都是DNAT。 

SNAT 
变换数据包的源地址。 
例: 
iptables -t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4 

MASQUERADE 
用于具有动态IP地址的拨号连接的SNAT,类似于SNAT,但是如果连接断开,所 
有的连接跟踪信息将被丢弃,而去使用重新连接以后的IP地址进行IP伪装。 
例: 
iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0 

DNAT 
转换数据报的目的地址,这是在PREROUTING钩子链中处理的,也就是在数据报 
刚刚进入时。因此Linux随后的处理得到的都是新的目的地址。 
例: 
iptables -t nat -A PREROUTING -j DNAT --to-destination 1.2.3.4:8080 
-p tcp --dport 80 -i eth1 

REDIRECT 
重定向数据报为目的为本地,和DNAT将目的地址修改为接到数据报的接口地址 
情况完全一样。 
例: 
iptables -t nat -A PREROUTING -j REDIRECT --to-port 3128 -i eth1 -p 
tcp --dport 80 

四、结合实例说明如何配置防火墙 
假设网络环境如下:某一单位,租用DDN专线上网,网络拓扑如下: 

+--------------+ 
| 内部网段 | eth1+--------+eth0 DDN 
| +------------|firewall|Internet 
| 198.168.80.0 | 
+--------------+ 
eth0: 198.199.37.254 
eth1: 198.168.80.254 

以上的IP地址都是Internet上真实的IP,故没有用到IP欺骗。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于端口转发,IPTABLE怎么写规则的问题!请帮忙,在线等!
  • IPTABLE辅助程序求助
  • iptable命令的自动输入
  • iptable--怎样将我的外部IP映射到某一台内部IP
  • 如何用iptable来实现过滤MAC地址?
  • 谁会用IPTABLE 进行转发的功能?
  • IPTABLE中的NAT如何限速
  • Web服务器/前端 iis7站长之家
  • iptable 规则,阻止来自202.108.0.0/16 的2000-10000端口发送过来的数据包,该怎么写?谢谢!
  • 设置iptable出错
  • 怎么通过命令行关闭iptable?
  • 请提供Redhat Linux 9下iptable的详细的资料。
  • 关于iptable 设定问题?
  • iptable关于-m limit的问题
  • iptable的问题。。初学者
  • 谁能告诉我,有关iptable的重定位的问题?
  • 求助!为什么我的iptable出现异常
  • IPTABLE编程问题
  • 共享局域网上网,iptable+dhcp 配置,为什么客户机得不到dns?
  • 妈了个呸的, 我照做了可是还是上不了!(关于Iptable 共用上网)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3