iptables命令选项详解
语法
iptables -t [talblename] {-A|-D|-I|-F|-L|-Z|-P} 链名 具体规则
选项
-t : 对指定的table进行操作。raw,nat,filter,mangle中的一个。默认是filter。
-A :追加防火墙规则
-D :删除规则
-I :插入规则
-F: 清空规则
-L :列出规则
-R:替换规则
-Z:清空计数
-P: 设置链默认规则
-N:创建新链
-X:删除用户自定义引用计数为0的空链
-E:自定义链重命名
-S: 列出选定链的规则
-n # 以数字形式显示地址和端口
-v # 在打印规则时显示详细信息
--line-numbers # 在打印规则时显示规则序号
###反向匹配
# 只需在选项前面使用 ! 即可,如: ! -s 192.168.0.0/16 表示除 192.168/16 外的源 IP
-p:匹配协议 {tcp|udp|udplite|icmp|icmpv6|esp|ah|sctp|mh|all} # 指定匹配的协议,all 表示所有
-s: 匹配源地址 # 源 IP,可以有多个,使用逗号隔开,有多少个地址就有多少条规则
-d:匹配目的地址 目的 IP,可以有多个,使用逗号隔开,有多少个地址就有多少条规则
-i: 匹配入站网卡地址
-o:匹配出站网卡地址
--sport: 匹配源端口
--dport:匹配目的端口
-j :满足某条件时执行什么样的动作。
触发动作:
ACCEPT :允许数据包通过
DROP :丢弃数据包
REJECT :拒绝数据包通过
LOG :将数据包信息记录syslog日志
DNAT :目的地址转换
SNAT :源地址转换
MASQUERADE :地址欺骗
REDIRRECT :重定向
扩展规则
扩展规则分为显式扩展和隐式扩展,显式扩展是指使用-m参数;隐式扩展是指在-p参数后可以省略-m参数
隐式扩展参数:
-p tcp
--sport port[:port] # 源端口号,100:200 表示端口范围
--dport port[:port] # 目的端口号,100:200 表示端口范围
--tcp-flags mask comp # TCP 标志位,flags={SYN|ACK|FIN|RST|URG|PSH|ALL|NONE}
--syn # SYN 标志位,等同于 --tcp-flags SYN,RST,ACK,FIN SYN
--tcp-option number # TCP 选项
-p udp
--sport port[:port] # 源端口号
--dport port[:port] # 目的端口号
-p icmp
--icmp-type name[/code] # icmp 类型,常用的两个: ping、pong,请求和应答
********************************************************************************************____________________________________________________________________________________________
********************************************************************************************
显式扩展匹配 (-m module-name)必须显式地指明使用的扩展模块进行扩展
## multiport 多端口,以离散的方式定义多端口匹配;最多指定15个端口
--sports port[,port:port,port...] # 匹配多个源端口[范围]
--dports port[,port:port,port...] # 匹配多个目的端口[范围]
--ports port[,port:port,port...] # 匹配多个源和目的端口[范围]
## owner 所属用户(组)
--uid-owner userid[-userid] # 匹配 UID[范围]/username
--gid-owner groupid[-groupid] # 匹配 GID[范围]/groupname
--socket-exists # 匹配与套接字相关联的数据包
## state 连接状态(基本)根据“连接追踪机制”去检查连接的状态;跟TCP协议没有关系
--state [INVALID|ESTABLISHED|NEW|RELATED|UNTRACKED][,...]
# NEW 新连接
# ESTABLISHED 已建立的连接
# RELATED 关联的连接,如 ftp
# INVALID 无效/非法的连接
# UNTRACKED 未启用连接跟踪的连接
## conntrack 连接状态
--ctstate {INVALID|ESTABLISHED|NEW|RELATED|UNTRACKED|SNAT|DNAT}[,...]
## iprange IP范围
--src-range ip[-ip] # 匹配指定的源 IP 范围
--dst-range ip[-ip] # 匹配指定的目的 IP 范围
## mac 源MAC地址
--mac-source XX:XX:XX:XX:XX:XX # 匹配源 MAC 地址
## addrtype 地址类型
--src-type type[,...] # 匹配 source ip 地址的类型
--dst-type type[,...] # 匹配 destination ip 地址的类型
# UNSPEC 未指定的地址,如 0.0.0.0
# UNICAST 单播地址
# LOCAL 本机地址
# BROADCAST 广播地址
# ANYCAST 任播地址
# MULTICAST 多播地址
# BLACKHOLE 黑洞地址
# UNREACHABLE 不可达地址
# PROHIBIT 禁止访问的地址
## time 时间,根据将报文到达时间与指定的时间范围进行匹配
--datestart time # 起始日期 YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--datestop time # 结束日期 YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart time # 起始时间 hh:mm[:ss]
--timestop time # 结束时间 hh:mm[:ss]
--monthdays value # 几号,1 至 31,默认为 all
--weekdays value # 星期几,1 至 7,默认为 all
--kerneltz # 使用内核时区而非 UTC
## string 关键字匹配,对报文中的应用层数据做字符串模式匹配检测;
--from offset # 设置起始偏移量
--to offset # 设置结束偏移量
--algo {bm|kmp} # 指定使用的算法
--icase # 忽略大小写匹配
--string string # 要匹配的字符串
--hex-string string # 要匹配的字符串,十六进制
## length 数据包大小
--length length[:length] # 匹配数据包大小[范围]
## mark 防火墙标记
--mark value[/mask] # 匹配有指定防火墙标记的数据包
## connmark "连接"标记
--mark value[/mask] # 如果当前数据包所属的"连接"打了给定的标记,则匹配成功
## limit 速率限制, 基于收发报文的速率做匹配
--limit avg # 平均速率限制,如 3/hour,单位: second|minute|hour|day
--limit-burst number # 封顶速率限制,默认为 5
## connlimit 并发连接数, 根据每客户端IP做并发连接数量匹配
--connlimit-upto n # 连接的数量小于等于n时匹配
--connlimit-above n # 连接的数量大于n时匹配
### -j target 动作
## 无参数系列
ACCEPT # 接收数据包
DROP # 丢弃数据包
CUST-CHAIN # 进入自定义链
RETURN # 退出当前链,分两种情况:
# 如果当前链是自定义链,则返回调用链,继续匹配调用点的下一条规则
# 如果当前链不是自定义链,则执行当前链的默认策略,如 ACCEPT、DROP
## 带参数系列
# REJECT 拒绝(带原因)
--reject-with type # 丢弃数据包,并回复源主机,可用的 type 如下:
icmp-net-unreachable # ICMP 网络不可达
net-unreach # 同上,别名
icmp-host-unreachable # ICMP 主机不可达
host-unreach # 同上,别名
icmp-proto-unreachable # ICMP 协议不可达
proto-unreach # 同上,别名
icmp-port-unreachable # ICMP 端口不可达(默认)
port-unreach # 同上,别名
icmp-net-prohibited # ICMP 网络限制
net-prohib # 同上,别名
icmp-host-prohibited # ICMP 主机限制
host-prohib # 同上,别名
icmp-admin-prohibited # ICMP 管理员限制
admin-prohib # 同上,别名
tcp-reset # TCP RST 连接重置
tcp-rst # 同上,别名
# MARK 打防火墙标记
--set-mark value[/mask] # 设置标记,mask OR value(推荐)
--set-xmark value[/mask] # 设置标记,mask XOR value
--and-mark bits # 设置二进制标记,AND
--or-mark bits # 设置二进制标记,OR
--xor-mask bits # 设置二进制标记,XOR
# CONNMARK 打"连接"标记
--set-mark value[/mask] # 设置当前数据包所属连接的连接标记
--save-mark [--mask mask] # 将当前数据包的标记作为其所属连接的标记
--restore-mark [--mask mask] # 将当前数据包所属连接的标记作为该数据包的标记
# LOG 防火墙日志,dmesg 可查看
--log-level level # 日志级别(syslog.conf)
--log-prefix prefix # 日志前缀字符串
--log-tcp-sequence # 记录 TCP seq 序列号
--log-tcp-options # 记录 TCP options 选项
--log-ip-options # 记录 IP options 选项
--log-uid # 记录套接字相关联的 UID
--log-macdecode # 解析 MAC 地址和协议
# ULOG 防火墙日志,kernel 2.4+
--ulog-nlgroup nlgroup # 记录的 NETLINK 组
--ulog-cprange size # 要复制的字节数
--ulog-qthreshold # 内核队列的消息阈值
--ulog-prefix prefix # 日志前缀字符串
# NFLOG 防火墙日志,kernel 2.6+
--nflog-group NUM # 记录的 NETLINK 组
--nflog-size NUM # 要复制的字节数
--nflog-threshold NUM # 内核队列的消息阈值
--nflog-prefix STRING # 日志前缀字符串
**************以下是NAT功能****************************************************************
# SNAT 源地址转换,用在 POSTROUTING、INPUT 链
--to-source [<ipaddr>[-<ipaddr>]][:port[-port]]
--random # 映射到随机端口号
--random-fully # 映射到随机端口号(PRNG 完全随机化)
--persistent # 映射到固定地址
# DNAT 目的地址转换,用在 PREROUTING、OUTPUT 链
--to-destination [<ipaddr>[-<ipaddr>]][:port[-port]]
--random # 映射到随机端口号
--persistent # 映射到固定地址
# MASQUERADE 源地址转换(适用于 DHCP 动态 IP),用在 POSTROUTING 链
--to-ports <port>[-<port>] # 映射到指定端口号[范围]
--random # 映射到随机端口号
# REDIRECT 目的地址转换(重定向至 localhost:端口号),用在 PREROUTING、OUTPUT 链
--to-ports <port>[-<port>] # 重定向到指定端口号[范围]
--random # 重定向到随机端口号
原文链接:iptables命令选项详解,转载请注明来源!