首页 » Linux » linux学习笔记之iptables

linux学习笔记之iptables

表和链的关系

一共三个表,每个表有好几个链,每个链有很多规则

表和链如下:

filter:INPUT FORWARD OUTPUT
nat:PREROUTING OUTPUT POSTROUTING
mangle:不知道,没用过

常用命令:
iptables
Commands:

  –append  -A chain            #Append to chain
    #在链尾插入一条规则
  –delete  -D chain            #Delete matching rule from chain
  –delete  -D chain rulenum    #删除规则
                                #Delete rule rulenum (1 = first) from chain
  –insert  -I chain [rulenum]  #在特定条目前插入规则
                                #Insert in chain as rulenum (default 1=first)
  –replace -R chain rulenum    #替换某条规则
                                #Replace rule rulenum (1 = first) in chain
  –list    -L [chain [rulenum]]#显示规则
                                #List the rules in a chain or all chains
  –flush   -F [chain]          #清空所有规则
    #Delete all rules in  chain or all chains
  –zero    -Z [chain]          #Zero counters in chain or all chains
    #清空计数器
  –delete-chain  #清空链的内容
            -X [chain]          #Delete a user-defined chain
  –policy  -P chain target #更改默认策略(DROP ACCEPT)
                                #Change policy on chain to target
 
Options:

  –proto       -p [!] proto    #protocol协议
  –source      -s [!] address[/mask]
                                #source specification源地址
  –destination -d [!] address[/mask]
                                #destination specification目的地址
  –in-interface -i [!] input name[+]
                                #network interface name ([+] for wildcard)入口网卡名称
  –jump        -j target
                                #target for rule (may load target extension)动作
 
  –match       -m match
                                #extended match (may load extension)匹配
  –numeric     -n              #numeric output of addresses and ports
  –out-interface -o [!] output name[+]
                                #network interface name ([+] for wildcard)指定出接口
  –table       -t table        #table to manipulate (default: `filter’)指定表名
  –verbose     -v              #verbose mode
  –line-numbers                #print line numbers when listing显示行号
  –exact       -x              #expand numbers (display exact values)
  –fragment    -f              #match second or further fragments only
  –modprobe=<command>          #try to insert modules using this command
  –version     -V              #print package version.显示版本号

保存
iptables-save
service iptables save
效果是把当前配置保存成/etc/sysconfig/iptables,原配置备份成old。

常见规则

1.拒绝所有
iptables -F
iptables -t nat -F              #清空原有规则
iptables -P INPUT DROP
  -P FORWARD DROP
iptables -t nat -P PREROUTING ACCEPT
    #默认策略,拒绝所有

2.允许环回口

iptables -A INPUT -i lo -j ACCEPT

3.状态化连接设置

iptables -A INPUT -m state –state ESTABLISHED,RELEATED -j ACCEPT
iptables -A FORWARD -m state –state ESTABLISHED,RELEATED -j ACCEPT

4.允许DNS、HHTP、ICMP穿越

iptables -A FORWARD -p udp –dport 53 -j ACCEPT
iptables -A FORWARD -p udp –dport 80 -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT
TCP的DNS一般不用做,要是不放心,自己添加
QQ可以通过80口登录,要彻底禁止需要封腾讯IP

5.转跳(透明代理,计费网关)

iptables -A PREROUTING -i eth1 -p tcp -m tcp –dport 80

-j REDIRECT –to-ports 3128

6.NAT(网关)

iptables -t nat -A POSTROUTING -s 192.168.100.17 -j SNAT –to-destination 205.254.211.17
iptables -t nat -A POSTROUTING -s 192.168.100.17 -j MASQUERADE

7.DNAT(内部发布网站)

iptables -t nat -A PREROUTING -i eth2 -p tcp –dport 80
-j DNAT –to-destination 192.168.0.3:8080

iptables -A FORWARD -p tcp –dport 8080 -j ACCEPT

看清这两条规则,注意表和链的顺序
可参考:http://redking.blog.51cto.com/27212/143185

======================================

新补充资料 2010-07-12

Iptables的规则表和链:
Iptables采用“表”和“链”的分层结构。在REHL4中是三张表五个链。现在REHL5成了四张表五个链了,不过多出来的那个表用的也不太多,所以基本还是和以前一样。下面罗列一下这四张表和五个链。注意一定要明白这些表和链的关系及作用,因为很多的人就是在这一块不清楚。万一不行就把它背下来在慢慢地去体会。
规则表:
1.       filter表——三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包  内核模块:iptables_filter.
2.       Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
3.       Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
内核模块:iptable_mangle
(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)
4.       Raw表——两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理  内核模块:iptable_raw
(这个是REHL4没有的,不过不用怕,用的不多)
规则链:
1.       INPUT——进来的数据包应用此规则链中的策略
2.       OUTPUT——外出的数据包应用此规则链中的策略
3.       FORWARD——转发数据包时应用此规则链中的策略
4.       PREROUTING——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
5.       POSTROUTING——对数据包作路由选择后应用此链中的规则
规则表之间的优先顺序:
Raw——mangle——nat——filter
规则链之间的优先顺序(分三种情况):
第一种情况:入站数据流向
从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。
第二冲情况:转发数据流向
来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理。
第三种情况:出站数据流向
防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

参考资料:http://zpp2009.blog.51cto.com/730423/285192

资料来源于互联网,如有错误,敬请指正,谢谢!

, ,

目前这篇文章有3条评论(Rss)

  1. tk4479 | #1
    October 22, 2010 at 1:33 pm

    –line-numbers
    可以显示各个条目的序号。

  2. tk4479 | #2
    October 23, 2010 at 10:53 pm

    iptables -I FORWARD 66 -s 172.16.123.119 -m mac –mac-source 00:E0:90:B0:09:39 -j ACCEPT

    插入到66行之前

  3. tk4479 | #3
    November 1, 2010 at 6:02 pm

    先做状态化!

我要评论

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif 

*
请输入图片中的字符以验证你并非垃圾机器人. 点击图片收听验证码的语音版.
点击这里收听此验证码的语音版本