<fieldset id='cr2y5'></fieldset>
  • <ins id='cr2y5'></ins>

    <acronym id='cr2y5'><em id='cr2y5'></em><td id='cr2y5'><div id='cr2y5'></div></td></acronym><address id='cr2y5'><big id='cr2y5'><big id='cr2y5'></big><legend id='cr2y5'></legend></big></address>

    <i id='cr2y5'></i>

        <code id='cr2y5'><strong id='cr2y5'></strong></code>

      1. <tr id='cr2y5'><strong id='cr2y5'></strong><small id='cr2y5'></small><button id='cr2y5'></button><li id='cr2y5'><noscript id='cr2y5'><big id='cr2y5'></big><dt id='cr2y5'></dt></noscript></li></tr><ol id='cr2y5'><table id='cr2y5'><blockquote id='cr2y5'><tbody id='cr2y5'></tbody></blockquote></table></ol><u id='cr2y5'></u><kbd id='cr2y5'><kbd id='cr2y5'></kbd></kbd>
      2. <span id='cr2y5'></span>
            <dl id='cr2y5'></dl>

          1. <i id='cr2y5'><div id='cr2y5'><ins id='cr2y5'></ins></div></i>

            iptables建立规则和链的基本方法

            • 时间:
            • 浏览:4
            • 来源:124软件资讯网

                通过向防火墙提供有关对来自某个源、到某个目的地或具有特定协议类型的信息包要做些什么的指令  ,规则控制信息包的过滤  。通过使用 netfilter/iptables 系统提供的特殊下令 iptables  ,建设这些规则  ,并将其添加到内核空间的特定信息包过滤表内的链中 。关于添加/除去/编辑规则的下令的一样平常语法如下:

                代码如下:

                $ iptables [-t table] command [match] [target]

                表(table)

                [-t table] 选项允许使用尺度表之外的任何表  。表是包罗仅处置惩罚特定类型信息包的规则和链的信息包过滤表  。有三种可用的表选项:filter、nat 和 mangle  。该选项不是必须的  ,若是未指定 ,则 filter 用作缺省表  。

                filter 表用于一样平常的信息包过滤  ,它包罗 INPUT、OUTPUT 和 FORWARD 链  。nat 表用于要转发的信息包 ,它包罗 PREROUTING、OUTPUT 和 POSTROUTING 链 。若是信息包及其头内举行了任何更改  ,则使用 mangle 表  。该表包罗一些规则来标志用于高级路由的信息包 ,该表包罗 PREROUTING 和 OUTPUT 链  。

                注:PREROUTING 链由指定信息包一到达防火墙就改变它们的规则所组成  ,而 POSTROUTING 链由指定正当信息包计划脱离防火墙时改变它们的规则所组成 。

                下令(command)

                上面这条下令中具有强制性的 command 部门是 iptables 下令的最主要部门 。它告诉 iptables 下令要做什么  ,例如 ,插入规则、将规则添加到链的末尾或删除规则  。以下是最常用的一些下令:

                -A 或 –append:该下令将一条规则附加到链的末尾 。

                示例:

                代码如下:

                $ iptables -A INPUT -s 205.168.0.1 -j ACCEPT

                该示例下令将一条规则附加到 INPUT 链的末尾  ,确定来自源地址 205.168.0.1 的信息包可以 ACCEPT  。

                -D 或 –delete:通过用 -D 指定要匹配的规则或者指定规则在链中的位置编号  ,该下令从链中删除该规则 。下面的示例显示了这两种要领 。

                示例:

                代码如下:

                $ iptables -D INPUT –dport 80 -j DROP

                $ iptables -D OUTPUT 3

                第一条下令从 INPUT 链删除规则  ,它指定 DROP 前往端口 80 的信息包 。第二条下令只是从 OUTPUT 链删除编号为 3 的规则 。

                -P 或 –policy:该下令设置链的缺省目的 ,即计谋  。所有与链中任何规则都不匹配的信息包都将被强制使用此链的计谋  。

                示例:

                代码如下:

                $ iptables -P INPUT DROP

                该下令将 INPUT 链的缺省目的指定为 DROP 。这意味着  ,将抛弃所有与 INPUT 链中任何规则都不匹配的信息包  。

                -N 或 –new-chain:用下令中所指定的名称建立一个新链  。

                示例:

                代码如下:

                $ iptables -N allowed-chain

                -F 或 –flush:若是指定链名  ,该下令删除链中的所有规则  ,若是未指定链名  ,该下令删除所有链中的所有规则  。此参数用于快速扫除  。

                示例:

                代码如下:

                $ iptables -F FORWARD

                $ iptables -F

                -L 或 –list:列出指定链中的所有规则  。

                示例:

                代码如下:

                $ iptables -L allowed-chain

                匹配(match)

                iptables 下令的可选 match 部门指定信息包与规则匹配所应具有的特征(如源和目的地地址、协议等)  。匹配分为两大类:通用匹配和特定于协议的匹配 。这里  ,我将研究可用于接纳任何协议的信息包的通用匹配  。下面是一些主要的且常用的通用匹配及其示例和说明:

                -p 或 –protocol:该通用协议匹配用于检查某些特定协议  。协议示例有 TCP、UDP、ICMP、用逗号分开的任何这三种协议的组合列表以及 ALL(用于所有协议)  。ALL 是缺省匹配  。可以使用 ! 符号 ,它表现不与该项匹配 。

                示例:

                代码如下:

                $ iptables -A INPUT -p TCP, UDP

                $ iptables -A INPUT -p ! ICMP

                在上述示例中  ,这两条下令都执行统一使命 — 它们指定所有 TCP 和 UDP 信息包都将与该规则匹配 。通过指定 ! ICMP ,我们计划允许所有其它协议(在这种情形下是 TCP 和 UDP)  ,而将 ICMP 清除在外  。

                -s 或 –source:该源匹配用于凭据信息包的源 IP 地址来与它们匹配  。该匹配还允许对某一规模内的 IP 地址举行匹配  ,可以使用 ! 符号 ,表现不与该项匹配  。缺省源匹配与所有 IP 地址匹配  。

                示例:

                代码如下:

                $ iptables -A OUTPUT -s 192.168.1.1

                $ iptables -A OUTPUT -s 192.168.0.0/24

                $ iptables -A OUTPUT -s ! 203.16.1.89

                第二条下令指定该规则与所有来自 192.168.0.0 到 192.168.0.24 的 IP 地址规模的信息包匹配  。第三条下令指定该规则将与除来自源地址 203.16.1.89 外的任何信息包匹配  。

                -d 或 –destination:该目的地匹配用于凭据信息包的目的地 IP 地址来与它们匹配 。该匹配还允许对某一规模内 IP 地址举行匹配  ,可以使用 ! 符号  ,表现不与该项匹配  。

                示例:

                代码如下:

                $ iptables -A INPUT -d 192.168.1.1

                $ iptables -A INPUT -d 192.168.0.0/24

                $ iptables -A OUTPUT -d ! 203.16.1.89

                目的(target)

                我们已经知道  ,目的是由规则指定的操作  ,对与那些规则匹配的信息包执行这些操作  。除了允许用户界说的目的之外  ,另有许多可用的目的选项 。下面是常用的一些目的及其示例和说明:

                ACCEPT:当信息包与具有 ACCEPT 目的的规则完全匹配时 ,会被接受(允许它前往目的地)  ,而且它将制止遍历链(虽然该信息包可能遍历另一个表中的其它链  ,而且有可能在那里被抛弃)  。该目的被指定为 -j ACCEPT 。

                DROP:当信息包与具有 DROP 目的的规则完全匹配时 ,会壅闭该信息包  ,而且差池它做进一步处置惩罚  。该目的被指定为 -j DROP  。

                REJECT:该目的的事情方式与 DROP 目的相同 ,但它比 DROP 好  。和 DROP 差别  ,REJECT 不会在服务器和客户机上留下死套接字  。另外  ,REJECT 将错误新闻发回给信息包的发送方 。该目的被指定为 -j REJECT  。

                示例:

                代码如下:

                $ iptables -A FORWARD -p TCP –dport 22 -j REJECT

                RETURN:在规则中设置的 RETURN 目的让与该规则匹配的信息包制止遍历包罗该规则的链 。若是链是如 INPUT 之类的主链  ,则使用该链的缺省计谋处置惩罚信息包  。它被指定为 -jump RETURN  。示例:

                代码如下:

                $ iptables -A FORWARD -d 203.16.1.89 -jump RETURN

                另有许多用于建设高级规则的其它目的 ,如 LOG、REDIRECT、MARK、MIRROR 和 MASQUERADE 等  。

                生存规则

                现在  ,您已经学习了怎样建设基本的规则和链以及怎样从信息包过滤表中添加或删除它们  。可是 ,您应该记着:用上述要领所建设的规则会被生存到内核中  ,当重新指导系统时 ,会丢失这些规则  。以是  ,若是您将没有错误的且有用的规则集添加到信息包过滤表 ,同时希望在重新指导之后再次使用这些规则  ,那么必须将该规则集生存在文件中 。可以使用 iptables-save 下令来做到这一点:

                代码如下:

                $ iptables-save > iptables-script

                现在  ,信息包过滤表中的所有规则都被生存在文件 iptables-script 中  。无论何时再次指导系统  ,都可以使用 iptables-restore 下令将规则集从该剧本文件恢复到信息包过滤表 ,如下所示:

                代码如下:

                $ iptables-rest