您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 2 小时玩转 iptables 企业版 v1_5_2
ChinaUnixChinaUnix讲座讲座22小时玩转小时玩转iptablesiptables企业版企业版cu.platinum@gmail.comcu.platinum@gmail.com2006.03.182006.03.18最后修改时间:最后修改时间:2006.07.232006.07.23文档维护者:白金文档维护者:白金(platinum)(platinum)、陈绪、陈绪((bjchenxubjchenxu))v1.5.2v1.5.2主题大纲主题大纲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)3.13.1iptablesiptables语法概述语法概述£iptables[-t要操作的表]操作命令[要操作的链][规则号码][匹配条件][-j匹配到以后的动作]3.23.2命令概述命令概述£操作命令(-A、-I、-D、-R、-P、-F)£查看命令(-[vnx]L)3.2.13.2.1--AA-A链名APPEND,追加一条规则(放到最后)例如:iptables-tfilter-AINPUT-jDROP在filter表的INPUT链里追加一条规则(作为最后一条规则)匹配所有访问本机IP的数据包,匹配到的丢弃3.2.23.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.33.2.3--DD-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.33.2.3--RR-R链名规则号码具体规则内容REPLACE,替换一条规则例如:iptables-RINPUT3-jACCEPT将原来编号为3的规则内容替换为“-jACCEPT”注意:确保规则号码≤已有规则数,否则报错3.2.43.2.4--PP-P链名动作POLICY,设置某个链的默认规则例如:iptables-PINPUTDROP设置filter表INPUT链的默认规则是DROP注意:当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理。动作前面不能加–j,这也是唯一一种匹配动作前面不加–j的情况。3.2.53.2.5--FF-F[链名]FLUSH,清空规则例如:iptables-FINPUT清空filter表INPUT链中的所有规则iptables-tnat-FPREROUTING清空nat表PREROUTING链中的所有规则注意:1、-F仅仅是清空链中规则,并不影响-P设置的默认规则2、-P设置了DROP后,使用-F一定要小心!!!3、如果不写链名,默认清空某表里所有链里的所有规则3.2.63.2.6--[[vxn]Lvxn]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,也可空(任何地址)例如:-s192.168.0.1匹配来自192.168.0.1的数据包-s192.168.1.0/24匹配来自192.168.1.0/24网络的数据包-s192.168.0.0/16匹配来自192.168.0.0/16网络的数据包-d匹配目的地址可以是IP、NET、DOMAIN,也可以空例如:-d202.106.0.20匹配去往202.106.0.20的数据包-d202.106.0.0/16匹配去往202.106.0.0/16网络的数据包-d、UDP、ICMP等,也可为空例如:-ptcp-pudp-picmp--icmp-type类型ping:type8pong:type03.3.43.3.4按来源目的端口匹配按来源目的端口匹配--sport匹配源端口可以是个别端口,可以是端口范围例如:--sport1000匹配源端口是1000的数据包--sport1000:3000匹配源端口是1000-3000的数据包(含1000、3000)--sport:3000匹配源端口是3000以下的数据包(含3000)--sport1000:匹配源端口是1000以上的数据包(含1000)--dport匹配目的端口可以是个别端口,可以是端口范围例如:--dport80匹配源端口是80的数据包--dport6000:8000匹配源端口是6000-8000的数据包(含6000、8000)--dport:3000匹配源端口是3000以下的数据包(含3000)--dport1000:匹配源端口是1000以上的数据包(含1000)注意:--sport和--dport必须配合-p参数使用3.3.53.3.5匹配应用举例匹配应用举例1、端口匹配-pudp--dport53匹配网络中目的地址是53的UDP协议数据包2、地址匹配-s10.1.0.0/24-d172.17.0.0/16匹配来自10.1.0.0/24去往172.17.0.0/16的所有数据包3、端口和地址联合匹配-s192.168.0.1-d,去往协议数据包注意:1、--sport、--dport必须联合-p使用,必须指明协议类型是什么2、条件写的越多,匹配越细致,匹配范围越小3.43.4动作(处理方式)动作(处理方式)£ACCEPT£DROP£SNAT£DNAT£MASQUERADE3.4.13.4.1--jACCEPTjACCEPT-jACCEPT通过,允许数据包通过本链而不拦截它类似Cisco中ACL里面的permit例如:iptables-AINPUT-jACCEPT允许所有访问本机IP的数据包通过3.4.23.4.2--jDROPjDROP-jDROP丢弃,阻止数据包通过本链而丢弃它类似Cisco中ACL里的deny例如:iptables-AFORWARD-s192.168.80.39-jDROP阻止来源地址为192.168.80.39的数据包通过本机3.4.43.4.4--jDNATjDNAT-jDNAT--toIP[-IP][:端口-端口](nat表的PREROUTING链)目的地址转换,DNAT支持转换为单IP,也支持转换到IP地址池(一组连续的IP地址)例如:iptables-tnat-APREROUTING-ippp0-ptcp--dport80\-jDNAT--to192.168.0.1把从ppp0进来的要访问TCP/80的数据包目的地址改为192.168.0.1iptables-tnat-APREROUTING-ippp0-ptcp--dport81\-jDNAT--to192.168.0.2:80iptables-tnat-APREROUTING-ippp0-ptcp--dport80\-jDNAT--to192.168.0.1-192.168.0.103.4.33.4.3--jSNATjSNAT-jSNAT--toIP[-IP][:端口-端口](nat表的POSTROUTING链)源地址转换,SNAT支持转换为单IP,也支持转换到IP地址池(一组连续的IP地址)例如:iptables-tnat-APOSTROUTING-s192.168.0.0/24\-jSNAT--to1.1.1.1将内网192.168.0.0/24的原地址修改为1.1.1.1,用于NATiptables-tnat-APOSTROUTING-s192.168.0.0/24\-jSNAT--to1.1.1.1-1.1.1.10同上,只不过修改成一个地址池里的IP3.4.53.4.5--jMASQUERADEjMASQUERADE-jMASQUERADE动态源地址转换(动态IP的情况下使用)例如:iptables-tnat-APOSTROUTING-s192.168.0.0/24-jMASQUERADE将源地址是192.168.0.0/24的数据包进行地址伪装3.53.5附加模块附加模块£按包状态匹配(state)£按来源MAC匹配(mac)£按包速率匹配(limit)£多端口匹配(multiport)3.5.1state3.5.1state-mstate--state状态状态:NEW、RELATED、ESTABLISHED、INVALIDNEW:有别于tcp的synESTABLISHED:连接态RELATED:衍生态,与conntrack关联(FTP)INVALID:不能被识别属于哪个连接或没有任何状态例如:iptables-AINPUT-mstate--stateRELATED,ESTABLISHED\-jACCEPT3.5.23.5.2macmac-mmac--mac-sourceMAC匹配某个MAC地址例如:iptables-AFORWARD-mmac--mac-sourcexx:xx:xx:xx:xx:xx\-jDROP阻断来自某MAC地址的
本文标题:2 小时玩转 iptables 企业版 v1_5_2
链接地址:https://www.777doc.com/doc-6077576 .html