iptables命令学习笔记

iptables

表:

Filter 用于过滤的时候;

Nat   用于做NAT的时候(NATNetwork Address Translator

链:

INPUT:位于filter表,匹配目的IP是本机的数据包;

FORWARD:位于filter表,匹配穿过本机的数据包;

PREROUTING:位于nat表,用于修改目的地址(DNAT);

POSTROUTING:位于nat表,用于修改源地址(SNAT

语法:

     iptables [-t 要操作的表] <操作命令> [要操作的链] [规则号码] [匹配条件] [-j 匹配到以后的动作]

操作命令

     -A-I-D-R-P-F

       -A<链名>   append,追加一条规则(放到最后)

       -I<链名>    insert,插入一条规则;

       -D<链名><规则号码|具体规则内容>   delete,删除一条规则

       -R<链名><规则号码><具体规则内容> replace,替换一条规则

       -P<链名><动作>   policy,设置某个链的默认规则

       -F<链名>    flush,清空规则

查看命令(-[vnx]L

        iptables –vnL

        iptables –t nat –vnL

        iptables-save

匹配条件

         流入、流出接口(-i-o

         来源、目的地址(-s-d

         协议类型(-p

         来源、目的端口(--sport--dport

         注明:

            --sport--dport必须联合-p使用,必须指明协议类型是什么

动作(处理方式)

          -j ACCEPT:通过,允许数据包通过本链而不拦截它

          -j DROP:丢弃,阻止数据包通过本链而丢弃它

          -j SNAT –to IP[-IP][:端口-端口]nat表的POSTROUTING链)源地址转换

          -j DNAT –to IP[-IP][:端口-端口]nat表的PREROUTING链)目的地址转换

          -j MASQUERADE:动态源地址转换(动态IP的情况下使用)

                Iptables –t nat –A POSTROUTING –s 192.168.0.0/24 –j MASQUERADE

                将源地址是192.168.0.0/24的数据包进行地址伪装

附加模块:

        按包状态匹配(state

             -m state –state 状态(NEWRELATEDESTABLISHEDINVALID

        按来源MAC匹配(mac

             -m mac –mac-source MAC(匹配某个mac地址,注:报文经过路由后,数据包中原有的mac信息会被替换,所以在路由后的iptables中使用mac模块是没有意义的)

        按包速率匹配(limit

             -m limit –limit 匹配速率 [--burst 缓冲数量](用一定速率去匹配数据包,要想限制的话后面要再跟一条DROP

        多端口匹配(multiport

              -m multiport < --sports| --dports| --ports> 端口1[,端口2,……,端口n] (一次性匹配多个端口,可以区分源端口,目的端口或不指定端口,必须与-p参数一起使用)

必加项:

         echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/tcp_syncookies

echo "1" > /

/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

modprobe ip_nat_ftp

可选方案:

      堵:

       iptables –A FORWARD –p tcp –dport xxx –j DROP

      通:

       iptables –A FORWARD –p tcp –dport xxx –j ACCEPT

       iptables –A FORWARD –m state –state RELATE,ESTABLISHED –j ACCEPT

实例分析:

   如何做网关:

   弄清网络拓扑

   本机上网

   设置nat     启用路由转发   地址伪装SNAT/MASQUERADE     

   ADSL 拨号上网的拓扑:

   echo "1" > /proc/sys/net/ipv4/ip_forward

   iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –o ppp0 –j MASQUERADE

 

   如何限制内网用户

   过滤位置filterFORWARD

   匹配条件 –s –d –p –s/dport

   处理动作 ACCEPT DROP

   iptables –A FORWARD –s 192.168.0.3 –j DROP

   iptables –A FORWARD –m mac –mac-source 11:22:33:44:55:66 –j DROP

   iptables –A FORWARD –d bbs.chinaunix.net –j DROP

 

【Filter,这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。Nat,这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING(修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。Mangle这个表用来对指定的包进行修改,它有两个内建的规则:PREROUTING(修改路由之前进入的包)OUTPUT(修改路由之前本地的包)。】

你可能感兴趣的:(filter,delete,input,insert,NetWork,output)