1. ipatales表:
filter: 用于过滤的时候。
nat : 用于做NAT的时候。
mangle: 用于修改封包内容。
链:
INPUT: 位于filter表,匹配目的ip是本机的数据包
FORWARD: 位于filter表,匹配穿过本机的数据包。
PREROUTING:位于nat表,用于修改目的地址(DNAT)
POSTROUTING:位于nat表,用于修改源地址(SNAT)
2.iptables语法格式:
iptables [-t 要操作的表]<操作命令>[要操作的链][规则号码][匹配条件][-j匹配到以后的动作]
【操作命令】:( -A -I -D -R -P -F)
查看命令(-[vnx]L)
(1)-A <链名>
APPEND,追加一条规则(放到最后)
例:iptables -t filter -A INPUT -j DROP
(2)-I<链名>[规则号码]
INSERT,插入一条规则
例:iptables -I INPUT -j DROP #在filter表的INPUT 链里插入一条规则(插入成第一条)
iptables -I INPUT 3 -j DROP #在filter链里插入一条规则(插入成第三条)
(3)-D<链名><规则号码|具体规则内容>
DELETE,删除一条规则
例:iptables -D INUT 3 #删除filter表INPUT链中的第三条规则(不管它的内容是什么)
iptables -D INPUT -s 192.168.0.2 -j DROP (按内容匹配)#删除filter表INPUT链中的内容"-s 192.168.0.2 -j DROP"的规则
(4)-R <链名><规则号码><具体规则内容>
REPLACE,替换一条规则
例; iptables -R INPUT 3 -j ACCEPT
(5)-P <链名><动作> POLICY ,设置某个链的默认规则
例:iptables -P INPUT DROP #设置filter表INPUT 链的默认规则DROP
(6)-F[链名]FLUSH,清空规则
例; iptables -F INPUT #清空filter 表INPUT链中的所有规则
iptables -t nat -F PREROUTING #清空nat表PREROUTING链中的所有规则
(6)-L[链名]LIST,列出规则
v:显示详细信息,包括每条规则的匹配包数量和匹配字节数。
x:在v的基础上,禁止自动单位换算(k,M)
n:只显示ip地址和端口号码,不显示域名和服务名称。
例:iptables -L #粗略出filter表所有链所有规则。
iptables -t nat -vnL #用详细方式列出nat表所有链的所有规则,只显示ip地址和端口号
iptables -t nat -vxnL PREROUTING #用详细方式列出nat表PREROUTING链的所有规则以及详细数字
【匹配条件】
匹配条件:
流入,流出接口 (-i ,-o)
来源,目的地址 (-s,-d)
协议类型 (-p)
来源,目的端口(--sport,--dport)
(1),按网络接口匹配
-i <匹配数据进入网络接口>
例: iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.100.1 -j ACCEPT #允许这个网段数据从eth0 进入
(2),按源地址目的地址匹配
-s<匹配来源地址>
可以是IP ,NET,DOMAIN,也可以(任何地址)
例:iptables -A INPUT -s 192.168.10.0/24 -j ACCEPT #允许来自这个网段的数据进入
-d<匹配目的地址>
可以使IP ,NET,DOMAIN,也可以空
例:iptables -A INPUT -d 192.168.10.1 -j DROP #拒绝去往这个网段的数据包
(3)按协议类型匹配
-p <匹配协议类型>
可以使TCP,UDP,ICMP等,可以是空
-p tcp
-p udp
-p icmp --icmp-type 类型
例:iptables -A INPUT -s 192.168.1.0/24 -p tcp -j ACCEPT #允许来源这个网段的数据用tcp传输数据
(4)按来源目的的端口匹配
--sport<匹配源端口> 可以是个别端口,可以是端口范围
--sport 1000 匹配源端口是1000的数据包
--sport 1000:2000 匹配端口1000-2000的数据包(含1000,3000)
--sport :3000 匹配源端口3000以下的数据包(含3000)
--sport 1000: 匹配源端口是1000以下的数据包(1000)
例: iptables -A INPUT -s 192.168.11.0/24 -p tcp --sport 1000 -j ACCEPT #允许来源这个网段的数据使用tcp的1000端口上传输数据
iptables -A INPUT -s 192.168.33.0/24 -p tcp --sport 1000:2000 -j ACCEPT
--dport<匹配目的的端口>可以是个别端口,也可以是端口范围
--dport 80 匹配目的端口是80的数据包
--dport 1000:2000 匹配目的端口是1000-2000的数据包(含1000,2000)
--dport :3000 匹配目的端口是3000以下的数据包(含3000)
--dport 1000: 匹配目的的端口是1000以下的数据包(含1000)
例: iptables -A INPUT -s 192.168.6.0/24 -p tcp --dport 80 -j ACCEPT #允许去往这个网段的数据使用tcp的80端口上传输数据
注意: --sport 和 --dport 必须配合-p参数使用
本篇文章来源于 Linux公社网站( www.linuxidc.com ) 原文链接: http://www.linuxidc.com/Linux/2013-02/79890.htm
filter: 用于过滤的时候。
nat : 用于做NAT的时候。
mangle: 用于修改封包内容。
链:
INPUT: 位于filter表,匹配目的ip是本机的数据包
FORWARD: 位于filter表,匹配穿过本机的数据包。
PREROUTING:位于nat表,用于修改目的地址(DNAT)
POSTROUTING:位于nat表,用于修改源地址(SNAT)
2.iptables语法格式:
iptables [-t 要操作的表]<操作命令>[要操作的链][规则号码][匹配条件][-j匹配到以后的动作]
【操作命令】:( -A -I -D -R -P -F)
查看命令(-[vnx]L)
(1)-A <链名>
APPEND,追加一条规则(放到最后)
例:iptables -t filter -A INPUT -j DROP
(2)-I<链名>[规则号码]
INSERT,插入一条规则
例:iptables -I INPUT -j DROP #在filter表的INPUT 链里插入一条规则(插入成第一条)
iptables -I INPUT 3 -j DROP #在filter链里插入一条规则(插入成第三条)
(3)-D<链名><规则号码|具体规则内容>
DELETE,删除一条规则
例:iptables -D INUT 3 #删除filter表INPUT链中的第三条规则(不管它的内容是什么)
iptables -D INPUT -s 192.168.0.2 -j DROP (按内容匹配)#删除filter表INPUT链中的内容"-s 192.168.0.2 -j DROP"的规则
(4)-R <链名><规则号码><具体规则内容>
REPLACE,替换一条规则
例; iptables -R INPUT 3 -j ACCEPT
(5)-P <链名><动作> POLICY ,设置某个链的默认规则
例:iptables -P INPUT DROP #设置filter表INPUT 链的默认规则DROP
(6)-F[链名]FLUSH,清空规则
例; iptables -F INPUT #清空filter 表INPUT链中的所有规则
iptables -t nat -F PREROUTING #清空nat表PREROUTING链中的所有规则
(6)-L[链名]LIST,列出规则
v:显示详细信息,包括每条规则的匹配包数量和匹配字节数。
x:在v的基础上,禁止自动单位换算(k,M)
n:只显示ip地址和端口号码,不显示域名和服务名称。
例:iptables -L #粗略出filter表所有链所有规则。
iptables -t nat -vnL #用详细方式列出nat表所有链的所有规则,只显示ip地址和端口号
iptables -t nat -vxnL PREROUTING #用详细方式列出nat表PREROUTING链的所有规则以及详细数字
【匹配条件】
匹配条件:
流入,流出接口 (-i ,-o)
来源,目的地址 (-s,-d)
协议类型 (-p)
来源,目的端口(--sport,--dport)
(1),按网络接口匹配
-i <匹配数据进入网络接口>
例: iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.100.1 -j ACCEPT #允许这个网段数据从eth0 进入
(2),按源地址目的地址匹配
-s<匹配来源地址>
可以是IP ,NET,DOMAIN,也可以(任何地址)
例:iptables -A INPUT -s 192.168.10.0/24 -j ACCEPT #允许来自这个网段的数据进入
-d<匹配目的地址>
可以使IP ,NET,DOMAIN,也可以空
例:iptables -A INPUT -d 192.168.10.1 -j DROP #拒绝去往这个网段的数据包
(3)按协议类型匹配
-p <匹配协议类型>
可以使TCP,UDP,ICMP等,可以是空
-p tcp
-p udp
-p icmp --icmp-type 类型
例:iptables -A INPUT -s 192.168.1.0/24 -p tcp -j ACCEPT #允许来源这个网段的数据用tcp传输数据
(4)按来源目的的端口匹配
--sport<匹配源端口> 可以是个别端口,可以是端口范围
--sport 1000 匹配源端口是1000的数据包
--sport 1000:2000 匹配端口1000-2000的数据包(含1000,3000)
--sport :3000 匹配源端口3000以下的数据包(含3000)
--sport 1000: 匹配源端口是1000以下的数据包(1000)
例: iptables -A INPUT -s 192.168.11.0/24 -p tcp --sport 1000 -j ACCEPT #允许来源这个网段的数据使用tcp的1000端口上传输数据
iptables -A INPUT -s 192.168.33.0/24 -p tcp --sport 1000:2000 -j ACCEPT
--dport<匹配目的的端口>可以是个别端口,也可以是端口范围
--dport 80 匹配目的端口是80的数据包
--dport 1000:2000 匹配目的端口是1000-2000的数据包(含1000,2000)
--dport :3000 匹配目的端口是3000以下的数据包(含3000)
--dport 1000: 匹配目的的端口是1000以下的数据包(含1000)
例: iptables -A INPUT -s 192.168.6.0/24 -p tcp --dport 80 -j ACCEPT #允许去往这个网段的数据使用tcp的80端口上传输数据
注意: --sport 和 --dport 必须配合-p参数使用
本篇文章来源于 Linux公社网站( www.linuxidc.com ) 原文链接: http://www.linuxidc.com/Linux/2013-02/79890.htm