iptables 语法概述
iptables -A 添加规则 (在最后一条规则后添加)
-I 添加规则 (默认在第一条规则前添加,可输入指定的规则号)
-D 删除规则 (可匹配条件,也可指定规则号)
-R 替换规则 (可替换内容)
-F 清空规则
-P 设置默认规则 (默认允许或拒绝)
-L 列出规则
匹配条件:
-i 入口
-o 出口
-i <匹配数据进入的网络接口>
例如:
-i eth0
匹配是否从网络接口 eth0 进来
-i ppp0
匹配是否从网络接口 ppp0 进来
-o 匹配数据流出的网络接口
例如:
-o eth0
-o ppp0
-s 源地址
-d 目的地址
-s <匹配来源地址>
可以是 IP、NET、DOMAIN,也可空(任何地址)
例如:
-s 192.168.0.1 匹配来自 192.168.0.1 的数据包
-s 192.168.1.0/24 匹配来自 192.168.1.0/24 网络的数据包
-s 192.168.0.0/16 匹配来自 192.168.0.0/16 网络的数据包
-d <匹配目的地址>
可以是 IP、NET、DOMAIN,也可以空
例如:
-d 202.106.0.20 匹配去往 202.106.0.20 的数据包
-d 202.106.0.0/16 匹配去往 202.106.0.0/16 网络的数据包
-d www.abc.com 匹配去往域名 www.abc.com 的数据包
-p 协议类型
可以是 TCP、UDP、ICMP 等,也可为空
例如:
-p tcp
-p udp
-p icmp --icmp-type 类型
ping: type 8 pong: type 0
--sport 源端口
--dport 目的端口
--sport <匹配源端口>
可以是个别端口,可以是端口范围
例如:
--sport 1000 匹配源端口是 1000 的数据包
--sport 1000:3000 匹配源端口是 1000-3000 的数据包(含1000、3000)
--sport :3000 匹配源端口是 3000 以下的数据包(含 3000)
--sport 1000: 匹配源端口是 1000 以上的数据包(含 1000)
--dport <匹配目的端口>
可以是个别端口,可以是端口范围
例如:
--dport 80 匹配源端口是 80 的数据包
--dport 6000:8000 匹配源端口是 6000-8000 的数据包(含6000、8000)
--dport :3000 匹配源端口是 3000 以下的数据包(含 3000)
--dport 1000: 匹配源端口是 1000 以上的数据包(含 1000)
-m multiport --d/sport 多个端口
注意:--sport 和 --dport 必须配合 -p 参数使用
动作(处理方式):
ACCEPT
-j ACCEPT
通过,允许数据包通过本链而不拦截它.类似 Cisco 中 ACL 里面的 permit
例如:
iptables -A INPUT -j ACCEPT
允许所有访问本机 IP 的数据包通过
DROP
-j DROP
丢弃,阻止数据包通过本链而丢弃它
类似 Cisco 中 ACL 里的 deny
例如:
iptables -A FORWARD -s 192.168.80.39 -j DROP
阻止来源地址为 192.168.80.39 的数据包通过本机
SNAT
-j SNAT --to IP[-IP][:端口-端口](nat 表的 POSTROUTING 链)
源地址转换,SNAT 支持转换为单 IP,也支持转换到 IP 地址池
(一组连续的 IP 地址)
例如:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
将内网 192.168.0.0/24 的原地址修改为 1.1.1.1,用于 NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10
DNAT
-j DNAT --to IP[-IP][:端口-端口](nat 表的 PREROUTING 链)
目的地址转换,DNAT 支持转换为单 IP,也支持转换到 IP 地址池
(一组连续的 IP 地址)
例如:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1
把从 ppp0 进来的要访问 TCP/80 的数据包目的地址改为 192.168.0.1
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -j DNAT --to 192.168.0.2:80
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1-192.168.0.10
MASQUERADE
-j MASQUERADE
动态源地址转换(动态 IP 的情况下使用)
例如:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
将源地址是 192.168.0.0/24 的数据包进行地址伪装
-m :一些 iptables 的模块,主要常?的有:
state :状态
--state :数据包的状态,主要有:
INVALID :无效的数据包,例如?料损坏的数据包
ESTABLISHED:已经连接的数据包;
RELATED :与本机发送的数据包相关的连接
举例:只要已建立或相关的数据包包就予以通过,只要是不合法封包就丢弃
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
铁虫 于 2017-01-05 20:44:18发表:
多谢楼主!!!
eddw00001 于 2013-11-21 14:47:29发表:
感?分享
jt120117 于 2013-11-12 14:24:55发表:
不错
tht_517 于 2013-06-21 15:30:04发表:
学习!!!
seaside_city 于 2012-03-14 14:54:10发表:
iptables 支持一下:0wl;l1
hackerlirui 于 2012-03-11 22:10:34发表:
谢谢楼主
daen 于 2011-06-28 14:34:38发表:
太好了
qianji 于 2011-06-28 11:13:54发表:
简单实用。感谢。。
littercs 于 2011-06-03 20:00:04发表:
保存了,打印出来,非常感谢!!
shuming 于 2011-05-28 19:30:21发表:
不错 很详细啊
ylinuxs 于 2011-03-04 14:31:44发表:
linux下iptables命令选项、条件匹配及动作目录说明及案例实训[url]http://hi.baidu.com/ylinuxs/blog/item/7b6e91201971485f92580710.html[/url]
Iptables(防火墙)的基本配置说明及实例演示[url]http://hi.baidu.com/ylinuxs/blog/item/039753ece2e86b38adafd549.html[/url]
shari2000 于 2011-02-24 08:25:22发表:
真的很好,我这两天正好上头要求我弄这个东西,
跪谢楼主啊!
能不能再给来几个 例句 讲解下
anlingna 于 2011-02-17 11:59:59发表:
学习一下。
花开花败2011 于 2011-02-11 20:03:49发表:
谢谢分享
tobecto 于 2011-01-21 13:37:07发表:
楼主写的不错,顶
芈祖 于 2011-01-17 16:13:23发表:
现在下载来看看
taotie 于 2010-09-09 10:55:00发表:
:0)1
gdh7201 于 2010-08-13 09:52:42发表:
thanks!
panda6401 于 2010-05-29 10:50:13发表:
顶
stuskr 于 2010-05-17 22:53:48发表:
{:3_111:}收藏了,半夜精神不好,回头研究。嘿嘿,不要见怪我
blue7590 于 2010-05-06 16:05:24发表:
刚好学习ING,看看
gudujianxfh 于 2010-03-21 00:02:31发表:
学习,辛苦了!!!
wangyoubang 于 2009-07-14 20:52:32发表:
支持
lmy5262008 于 2009-05-10 10:49:02发表:
支持一个,很详细!
angel.wing 于 2009-05-06 22:15:01发表:
支持 分享
lovemmlzy 于 2009-05-03 17:40:32发表:
晕了,用你的帖子回一网友呢,不小心发你这了(5ty(
lovemmlzy 于 2009-05-03 17:36:24发表:
楼主 85030455发表于 2009/4/28 09:44
iptables 基本语法
iptables 语法概述
iptables -A 添加规则 (在最后一条规则后添加)
-I 添加规则 (默认在第一条规则前添加,可输入指定的规则号)
-D 删除规则 (可匹配条件,也可指定规则号)
-R 替换规则 (可替换内容)
-F 清空规则
-P 设置默认规则 (默认允许或拒绝)
-L 列出规则
匹配条件:
-i 入口
-o 出口
-i <匹配数据进入的网络接口>
例如:
-i eth0
匹配是否从网络接口 eth0 进来
-i ppp0
匹配是否从网络接口 ppp0 进来
-o 匹配数据流出的网络接口
例如:
-o eth0
-o ppp0
-s 源地址
-d 目的地址
-s <匹配来源地址>
可以是 IP、NET、DOMAIN,也可空(任何地址)
例如:
-s 192.168.0.1 匹配来自 192.168.0.1 的数据包
-s 192.168.1.0/24 匹配来自 192.168.1.0/24 网络的数据包
-s 192.168.0.0/16 匹配来自 192.168.0.0/16 网络的数据包
-d <匹配目的地址>
可以是 IP、NET、DOMAIN,也可以空
例如:
-d 202.106.0.20 匹配去往 202.106.0.20 的数据包
-d 202.106.0.0/16 匹配去往 202.106.0.0/16 网络的数据包
-d www.abc.com 匹配去往域名 www.abc.com 的数据包
-p 协议类型
可以是 TCP、UDP、ICMP 等,也可为空
例如:
-p tcp
-p udp
-p icmp --icmp-type 类型
ping: type 8 pong: type 0
--sport 源端口
--dport 目的端口
--sport <匹配源端口>
可以是个别端口,可以是端口范围
例如:
--sport 1000 匹配源端口是 1000 的数据包
--sport 1000:3000 匹配源端口是 1000-3000 的数据包(含1000、3000)
--sport :3000 匹配源端口是 3000 以下的数据包(含 3000)
--sport 1000: 匹配源端口是 1000 以上的数据包(含 1000)
--dport <匹配目的端口>
可以是个别端口,可以是端口范围
例如:
--dport 80 匹配源端口是 80 的数据包
--dport 6000:8000 匹配源端口是 6000-8000 的数据包(含6000、8000)
--dport :3000 匹配源端口是 3000 以下的数据包(含 3000)
--dport 1000: 匹配源端口是 1000 以上的数据包(含 1000)
-m multiport --d/sport 多个端口
注意:--sport 和 --dport 必须配合 -p 参数使用
动作(处理方式):
ACCEPT
-j ACCEPT
通过,允许数据包通过本链而不拦截它.类似 Cisco 中 ACL 里面的 permit
例如:
iptables -A INPUT -j ACCEPT
允许所有访问本机 IP 的数据包通过
DROP
-j DROP
丢弃,阻止数据包通过本链而丢弃它
类似 Cisco 中 ACL 里的 deny
例如:
iptables -A FORWARD -s 192.168.80.39 -j DROP
阻止来源地址为 192.168.80.39 的数据包通过本机
SNAT
-j SNAT --to IP[-IP][:端口-端口](nat 表的 POSTROUTING 链)
源地址转换,SNAT 支持转换为单 IP,也支持转换到 IP 地址池
(一组连续的 IP 地址)
例如:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
将内网 192.168.0.0/24 的原地址修改为 1.1.1.1,用于 NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10
DNAT
-j DNAT --to IP[-IP][:端口-端口](nat 表的 PREROUTING 链)
目的地址转换,DNAT 支持转换为单 IP,也支持转换到 IP 地址池
(一组连续的 IP 地址)
例如:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1
把从 ppp0 进来的要访问 TCP/80 的数据包目的地址改为 192.168.0.1
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -j DNAT --to 192.168.0.2:80
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1-192.168.0.10
MASQUERADE
-j MASQUERADE
动态源地址转换(动态 IP 的情况下使用)
例如:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
将源地址是 192.168.0.0/24 的数据包进行地址伪装
-m :一些 iptables 的模块,主要常?的有:
state :状态
--state :数据包的状态,主要有:
INVALID :无效的数据包,例如?料损坏的数据包
ESTABLISHED:已经连接的数据包;
RELATED :与本机发送的数据包相关的连接
举例:只要已建立或相关的数据包包就予以通过,只要是不合法封包就丢弃
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
lovemmlzy 于 2009-05-03 17:12:58发表:
:0wmjh(1
支持