ChinaUnixChinaUnix讲座讲座22小时玩转小时玩转iptablesiptablescu.platinum@gmail.com2006.03.18v1.4主题大纲主题大纲1.概述2.框架图3.语法4.实例分析5.网管策略6.FAQ7.实战1.1.概述概述2.4.x、2.6.x内核netfilter/iptables2.12.1框架图框架图-->PREROUTING-->[ROUTE]-->FORWARD-->POSTROUTING-->mangle|mangle^manglenat|filter|nat||||v|INPUTOUTPUT|mangle^mangle|filter|natv------>local------->|filter2.22.2链和表链和表表filter:顾名思义,用于过滤的时候nat:顾名思义,用于做NAT的时候NAT:NetworkAddressTranslator链INPUT:位于filter表,匹配目的IP是本机的数据包FORWARD:位于filter表,匹配穿过本机的数据包,PREROUTING:位于nat表,用于修改目的地址(DNAT)POSTROUTING:位于nat表,用于修改源地址(SNAT)OUTPUT:位于filter表,匹配源ip是本机的数据包3.1iptables3.1iptables语法概述语法概述iptables[-t要操作的表]<操作命令>[要操作的链][规则号码][匹配条件][-j匹配到以后的动作]3.23.2命令概述命令概述操作命令(-A、-I、-D、-R、-P、-F)查看命令(-[vnx]L)3.2.1-A3.2.1-A-A<链名>APPEND,追加一条规则(放到最后)例如:iptables-tfilter-AINPUT-jDROP在filter表的INPUT链里追加一条规则(作为最后一条规则)匹配所有访问本机IP的数据包,匹配到的丢弃3.2.2-3.2.2-II-I<链名>[规则号码]INSERT,插入一条规则例如:iptables-IINPUT-jDROP在filter表的INPUT链里插入一条规则(插入成第1条)iptables-IINPUT3-jDROP在filter表的INPUT链里插入一条规则(插入成第3条)注意:1、-tfilter可不写,不写则自动默认是filter表2、-I链名[规则号码],如果不写规则号码,则默认是13、确保规则号码≤(已有规则数+1),否则报错3.2.3-D3.2.3-D-D<链名><规则号码|具体规则内容>DELETE,删除一条规则例如:iptables-DINPUT3(按号码匹配)删除filter表INPUT链中的第三条规则(不管它的内容是什么)iptables-DINPUT-s192.168.0.1-jDROP(按内容匹配)删除filter表INPUT链中内容为“-s192.168.0.1-jDROP”的规则(不管其位置在哪里)注意:1、若规则列表中有多条相同的规则时,按内容匹配只删除序号最小的一条2、按号码匹配删除时,确保规则号码≤已有规则数,否则报错3、按内容匹配删除时,确保规则存在,否则报错3.2.3-R3.2.3-R-R<链名><规则号码><具体规则内容>REPLACE,替换一条规则例如:iptables-RINPUT3-jACCEPT将原来编号为3的规则内容替换为“-jACCEPT”注意:确保规则号码≤已有规则数,否则报错3.2.4-P3.2.4-P-P<链名><动作>POLICY,设置某个链的默认规则例如:iptables-PINPUTDROP设置filter表INPUT链的默认规则是DROP注意:当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理3.2.5-F3.2.5-F-F[链名]FLUSH,清空规则例如:iptables-FINPUT清空filter表INPUT链中的所有规则iptables-tnat-FPREROUTING清空nat表PREROUTING链中的所有规则注意:1、-F仅仅是清空链中规则,并不影响-P设置的默认规则2、-P设置了DROP后,使用-F一定要小心!!!3、如果不写链名,默认清空某表里所有链里的所有规则3.2.6-[vxn]L3.2.6-[vxn]L-L[链名]LIST,列出规则v:显示详细信息,包括每条规则的匹配包数量和匹配字节数x:在v的基础上,禁止自动单位换算(K、M)n:只显示IP地址和端口号码,不显示域名和服务名称例如:iptables-L粗略列出filter表所有链及所有规则iptables-tnat-vnL用详细方式列出nat表所有链的所有规则,只显示IP地址和端口号iptables-tnat-vxnLPREROUTING用详细方式列出nat表PREROUTING链的所有规则以及详细数字,不反解3.33.3匹配条件匹配条件流入、流出接口(-i、-o)来源、目的地址(-s、-d)协议类型(-p)来源、目的端口(--sport、--dport)3.3.13.3.1按网络接口匹配按网络接口匹配-i<匹配数据进入的网络接口>例如:-ieth0匹配是否从网络接口eth0进来-ippp0匹配是否从网络接口ppp0进来-o匹配数据流出的网络接口例如:-oeth0-oppp03.3.23.3.2按来源目的地址匹配按来源目的地址匹配-s<匹配来源地址>可以是IP、NET、DOMAIN...