#iptables [OPTION] COMMAND CHAIN 匹配标准 -j TARGET
[OPTION]
-t TABLENAME 不指定默认为filter
-j 指定TARGET
COMMAND
管理规则
-A 在链的尾部添加一条规则
-I CHAIN [NUM] 在CHINA链上插入第NUM条规则,不指定NUM表示插入为第一条
-D CHAIN [NUM] 删除CHAIN链上的第NUM条规则
-R CHAIN [NUM] 替换CHAIN链上的第NUM条规则
管理链
-F [CHAIN] flush 清空指定规则链,若不指定链,则删除对应表中的所有链
-P CHAIN TAREGT 设置指定链的默认策略
-N 自定义一条空链
-X 删除自定义空链
-Z 清空指定链中所有规则的计数器
-E OLDCHAINNAME NEWCHAINNAME 重命名自定义链名
查看类
-L list 显示指定表中的规则
-n 以数字格式显示主机地址和端口号,否则默认iptables将反解主机名和端口
-v 显示详细信息
-x 显示计数器精确值,不做单位换换和圆整
--line-numbers 显示规则号码
CHAIN 链的名称
匹配标准
注意:绝大部分匹配条件都可以取反,即使用!
通用匹配
-s,--scr 源地址
-d,--dst 目的地址
-p {tcp|udp|icmp} 协议类型
-i INTERFACE 指定数据报文流入的接口
只能定义在PREROUTING INPUT FORWARD链
-o INTERFACE 指定数据报文流出的接口
只能定义在POSTROUTING OUTPUT FORWARD链
扩展匹配
隐含扩展
-p PROTOCOL
PROTOCOL
tcp
--sport PORT[-PORT] 源端口,可以使用连续端口
--dport PORT[-PORT] 目标端口,可以使用连续端口
--tcp-flags MASK COMP tcp标志位,指定MASK表中,查找COMP表中为1,其余为0的标记位。常用的标记位:SYN FIN ACK RST ALL NONE
--syn 匹配3次握手中的第一次
udp
--sport
--dport
icmp
--icmp-type TYPE
TYPE
0 ICMP响应报文
8 ICMP请求报文
显示扩展 使用额外的匹配机制
-m EXTESTION SPECIAL-OPTION
/lib/iptables/libpt_*.so 扩展模块
state 状态扩展,结合ip_conntrack追踪会话的状态
--state
NEW 发起的连接请求
ESTABLISHED 已建立的连接
INVALID 非法连接
RELATED 相关联的
multiport 离散的多端口匹配扩展,最多支持15个端口
--source-ports PORT,...PORT1:PORT2,... 源端口
--destination-ports PORT,...PORT1:PORT2,... 目的端口
--ports PORT,...PORT1:PORT2,... 端口
iprange 指定IPv4地址段
--src-range IP1-IP2
--dst-range IP1-IP2
connlimit 连接数限制
--connlimit-above NUM 指定每个客户端已存在的tcp连接个数超出NUM个
limit 令牌桶过滤器机制的流量整合,不控制最大上限,只控制单位时间内速率以及单位时间内峰值
--limit NUM/RATE 指定单位时间内的请求速率
RATE
second
minute
hour
--limit-burst NUM 单位时间内请求峰值,默认值为5
string 匹配符合某种模式的字符
--algo bm|kmp 指定匹配算法
--string PATTERN 指定PATTERN
--hex-string PATTERN 把PATTERN变为16进制
recent 创建IP地址清单用于匹配
--set 添加报文源地址到清单,若源地址已存在则更新
--name NAME 创建一个名为NAME的清单,不指定NAME使用DEFAULT作为名称。
--update 更新源地址,但是不会更新”last seen“时间戳
--seconds NUM 匹配清单中存在的并且在过去NUM秒中出现的的地址。
--hitcount NUM 匹配清单中存在并且接收数据包大于或等于NUM次的地址
layer7 安装l7以后才能使用此扩展
--l7proto PROTOCOL 具体协议请参照/etc/l7-protocols下
time 重新编译内核后才有
--datestrat YYYY-MM-DDThh:mm:ss 不指定默认为1970-01-01
--datestop YYYY-MM-DDThh:mm:ss 不指定默认为2038-01-19
--timestart hh:mm:ss
--timestop hh:mm:ss
--montudayes DAY1,[DAY2...]
DAY取值为1-31
--weekdays DAY1,[DAY2...]
DAY取值为Mon Tue Wed Thu Fri Sat Sun 或者1-7
TARGET 处理动作
ACCEPT 允许
DROP 丢弃
REJECT 丢弃并返回信息
REDIRECT 端口重定向
RETURN 跳转回主链
CHAINNAME 自定义链名成
LOG 记录日志
--log_level NUM 日志级别
--log_prefix “STRING” 日志前缀,最长29字符
--log_tcp_sequence TCP序列号
--log_tcp_options TCP报文选项
--log_ip_options IP报文选项
--log-uid 数据包对应进程的用户id
MARK 设定标记
SNAT 源地址转换
--to-source IP[-IP][:PORT1-PORT2] 指定把源地址转换为IP
DNAT 目标地址转换
--to-destination IP 指定把目标地址转换为IP
MASQUERADE 地址伪装
类似与SNAT --to-source,适用于pppoe等源地址随时变动的情况,会自动指定地址。效率比SNAT低。