Can you summarize the following document?
        
  iptables、ip6tables等都使用Xtables框架。存在「表(tables)」、「链(chain)」和「规则(rules)」三个层面。  每个「表」指的是不同类型的数据包处理流程,如codice_4表示进行数据包过滤,而codice_5针对连接进行地址转换操作。每个表中又可以存在多个「链」,系统按照预订的规则将数据包通过某个内建链,例如将从本机发出的数据通过codice_6。在「链」中可以存在若干「规则」,这些规则会被逐一进行匹配,如果匹配,可以执行相应的动作,如修改数据包,或者跳转。跳转可以直接接受该数据包或拒绝该数据包,也可以跳转到其他链继续进行匹配,或者从当前链返回调用者链。当链中所有规则都执行完仍然没有跳转时,将根据该链的默认策略(「policy」)执行对应动作;如果也没有默认动作,则是返回调用者链。

  filter表是默认的表,如果不指明表则使用此表。其通常用于过滤数据包。其中的内建链包括:

  nat表如其名,用于地址转换操作。其中的内建链包括:

  mangle表用于处理数据包。其和nat表的主要区别在于,nat表侧重连接而mangle表侧重每一个数据包。其中内建链列表如下。

  raw表用于处理异常,有如下两个内建链:

  

  一个典型的工作站的防火墙配置实例。超级用户(root)可以用"codice_7"指令显示防火墙上的配置。完整的配置可以添加codice_8或codice_9参数来显示更详细信息,或者使用codice_10导出生成当前表的命令。由于没有指明「表」,因此默认使用codice_4。 以上配置允许本机连接所有外部的系统,拒绝(REJECT)或丢弃(DROP)任何发往本机的数据包,但是有以下例外(和codice_12逐一对应):  此时,来自外部的ping将没有回应:  外部尝试连接本机的HTTP端口(即TCP 80端口)将被拒绝连接:  但本机访问外部(OUTPUT)均正常,因为其链为空且默认策略为接受(ACCEPT);且本机不转发(FORWARD)数据包,因为其默认策略为丢弃(DROP)。需要额外注意的是,这里仅展示了IPv4的情况,若同时使用IPv6则需要另行配置ip6tables。

  iptables的重要功能之一是用于端口和/或地址的转换。如下示例展示了将默认HTTP埠的封包由80转向8080埠。这样,HTTP的daemon可以允许由一般用户权限启动,而不需要对一般使用者无法将埠号绑在1024埠以下的限制的问题多加考虑。  codice_13  注意:如果你在你的电脑上面运行了这个指令,它只会对连到你的机器上的外部的IP发生效果。从本地端发起的连线不会遵循nat表上PREROUTING链的设置。如果你想让本地端也遵循规则,你可以另外键入下面的指令:  codice_14  这条规则会将lo接口上的封包输出由80埠转向到8080埠上面。

  典型设置如办公室用小型局域网,由一台Linux主机作为路由器共享地址接入Internet。  假设局域网接口为eth0,地址使用192.168.0.0/24;而Internet接口为eth1,使用的地址为198.51.100.3。  在局域网用户访问Internet时,源地址需要被转换为198.51.100.3,则使用规则:  若需要在局域网192.168.0.2上开启HTTP服务,则可以设置相应的DNAT服务,将访问外部TCP 80端口的数据包重定向:  需要注意的是,转发操作需要在codice_4中codice_16中允许,并且打开系统的转发功能。

  

  有很多第三方软件可以帮助设定iptables规则。前端接口像是Ncurses或图型接口可以让使用者用点选的方式产生许多简单的规则。命令稿通常是参照Unix shell产生出来的(不过当然也有可能会使用其它种类型的命令稿),它们有的会用一些预先定义好的规则或简单的范本来调用iptables或codice_17执行。一些Linux发行版公司会在它们的发行版里面包含这些方式,当然像这样的方式能产生的变化就相当有限,不过也因为产生规则的方式很简单,所以甚至可以利用php网页撰写的方式来产生这些规则。  此类前端装置如生成器(generator)或脚本(script)往往会被其模板限制,模板仅仅能使用用户定义规则并替换指定的部分,如只能替换端口或IP地址,同时,生成的规则往往难以达到最佳状态,需要进行进一步优化,如此会增加开发和运维的成本。如果用户想要了解iptables并且优化自己的规则,则需要自己创建规则。

  为了较好地了解一个封包穿越内核层的X表(Xtables)之表/链(table/chain),你可以参考下列图表的使用:
iptables是运行在使用者空间的应用软件,通过控制Linux内核netfilter模组,来管理网络封包的处理和转发。在大部分Linux发行版中,可以通过 手册页 或 codice_1 获取用户手册。通常iptables需要内核模块支持才能运行,此处相应的内核模块通常是Xtables。因此,iptables操作需要超级用户权限,其可执行文件通常位于 codice_2 或 codice_3 。同时,需要说明的是,以上命令通常只用于处理 IPv4 数据包;而对于 IPv6 数据包,则使用类似的 ip6tables 命令。