iptables知识理论的学习与实践举例

来源:互联网 时间:2026-02-26 09:52:00 作者:

iptables是什么?不解释,直接进入正题。   iptables的命令使用结构是这样的    iptables [-t table] command [match] [target]   下面一项一项来介绍   [-t table]部分   [-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。 有三个可用的表选项:filter、nat和mangle。该选项不是必需的,如果未指定,则filter作为缺省表。   filter  用于一般信息包的过滤,包含INPUT、 OUTPUT和FORWARD链。   INPUT:代表匹配目的 IP 是本机的数据包   OUTPUT:代表匹配源ip是本机的数据包   FORWARD:代表匹配穿过本机的数据包   nat  用于要转发的信息包,包含PREROUTING、OUTPUT和POSTROUTING链。   PREROUTING: 修改目的地址(DNAT)     POSTROUTING:修改源地址 (SNAT)   mangle  这个表不是很理解,反正我没有用过,嘻嘻   #############################################################################   command部分   command部分是iptables命令最重要的部分。它告诉iptables命令要做什么,例如插入规则、 将规则添加到链的末尾或删除规则。   -A <链名>   APPEND,追加一条规则(放到最后)    例如:   iptables -t filter -A INPUT -j DROP      在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则),将所有目的IP为本机的包全部丢弃。

iptables知识理论的学习与实践举例

     在没有开启防火墙之前,我可以ping192.168.254.153这台机子,防火墙开后,ping不通了,而且我的ssh也断开了,因为防火墙是将所有的包都丢弃了,自然包括ssh链接的包。由于无法再使用ssh链接,所以我只能到服务器上清空防火墙,清空后,就可以ping了    

iptables知识理论的学习与实践举例

         INPUT:  匹配目的IP 是本机的数据包        FORWARD  穿过本机的数据包,        PREROUTING用于修改目的地址(DNAT)        POSTROUTING,用于修改源地址(SNAT)    为了能保证我测试iptables用法时ssh不会断开,所以在这里我首先加上一条iptables规则 我还是开启将所有目的IP为本机的包丢弃   

iptables知识理论的学习与实践举例

      然后我追加一条策略

iptables知识理论的学习与实践举例

     可以看到,我新增加的这个策略是在drop的后面,也就是先拒绝了所有包,所以网络就不同了,上面也提到了,-A就是添加到INPUT的最后一条。

iptables知识理论的学习与实践举例

    这里正好也用到了删除链的命令iptables -D INPUT  -s 192.168.254.153 -j ACCEPT,所以-D的用法也就不用强调了   iptables -I INPUT  -s 192.168.254.153 -j ACCEPT   -----------------这里的-I是指加规则放在第一个   从图中也可以看到两者的差别   将所有的命令重新总结一下,我用个表格对比一下       命令 功能描述 用法举例 -A(或--append) 将一条规则添加到链的末尾 iptables -t filter -A INPUT -j DROP在input链的末尾添加一条规则, 将所有目的IP为本机的包全部丢弃 -D(或--delete) 将指定的规则或者规则的位置编号 从链中删除  iptables -D INPUT  -s 192.168.254.153 -j ACCEPT将匹配该规则的包删除;iptables -D OUPUT  3将OUPUT链中编号为3的规则删除 -P(--policy) 设置链的默认目标,所有与链中任何不匹配的信息报都被强制使用此链的策略 iptables -P INPUT DROP丢弃所有与INPUT 链中任何规则都不匹配的信息包   -N(--new-chain) 创建一个新的链  iptables -N allowed-chain新建一个链     -F(--flush) 如果指定链名,那么就会删除该链,如果没有指定,就会删除所有的链 iptables -F INPUT 清空INPUT链 iptables -F   清空所有的链 -L(--list) 列出链中所有的规则 iptables -L  (INPUT)只列出(INPUT)链的策略 -I 将一条规则添加到链的第一个   iptables -I INPUT  -s 192.168.254.153 -j ACCEPT   ########################################################################### match部分 ----------匹配的条件   iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。匹配分为通用匹配和特定于协议的匹配两大类。这里将介绍可用于采用任何协议的信息包的通用匹配。还是再用个表格来对比吧。   参数 功能 举例   -p(--protocol) 匹配协议,例如TCP、UDP、 ICMP iptables -A INPUT -p TCP,UDP 等同于iptales -A INPUT -p !ICMP都是匹配TCP和UDP的意思   -s (--source) 信息报源地址的匹配   iptables -A  OUTPUT -s 192.168.0.125 -d (--destination) 匹配信息包的目的IP   iptables -A  INPUT -d 192.168.0.125 ######################################################################## target 目标部分------------ 匹配到以后的动作 www.dnzg.cn   参数 功能 举例 ACCEPT 当信息包与具有ACCEPT目标的规则完全匹配时, 就会被接受,允许它前往目的地   iptables -A INPUT  -s 192.168.254.153 -j ACCEPT   DROP 当信息包与具有DROP目标的规则完全匹配时,会阻止该信息包   iptables -A INPUT  -s 192.168.254.153 -j DROP REJECT 与DROP类似,但是比DROP好,REJECT会将错误信息发回给信息包的发送方,并且不会留下死套接字   iptables  -A  FORWARD -p TCP --dport 22 -j REJECT SNAT  源地址转换,SNAT 支持转换为单 IP,也支持转换到 IP 地址池   iptables -t nat -A POSTROUTING -s 192.168.0.0/24  -j SNAT --to 1.1.1.1  将内网 192.168.0.0/24 的原地址修改为 1.1.1.1     ####################################################################### 简单应用举例   iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT --to-source 192.168.5.3   把所有10.8.0.0网段的数据包SNAT成192.168.5.3的ip然后发出去(源地址的转换)       iptables  -t   filter  -A  INPUT  -p  icmp  -j   REJECT   ----------------拒绝其他主机ping     iptables  -t    filter   -I INPUT    -p  tcp  --dport  22   -j   reject  ------------禁止通过ssh访问我的主机       iptables  -t    filter   -A  INPUT     -p  tcp  --dport  22 -s10.1.1.1  -j   ACCEPT ------------允许10.1.1.1通过ssh访问我的主机 iptables -t filter -A INPUT -m mac --mac-source 00:14:5E:28:A3:20 -p tcp --dport 22 -j ACCEPT   iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT              -------------------------------------只有这个mac地址的用户才能ssh访问我的主机        iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE ---------将源地址是 192.168.0.0/24 的数据包进行地址伪装       iptables  -t    filter   -A  INPUT   -i  eth0  -p  tcp  --dport  22   -j  ACCEPT    iptables  -t    filter   -A  INPUT   -i  eth1   -p  tcp  --dport  22   -j   reject   ------------------------------------------允许用户通过eth0网口ssh过来

本文来自系统大全为您提供如需转载请注明!推荐win10下载

相关推荐