首页 » IDC运维 » iptables命令选项详解

iptables命令选项详解

 

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命令选项详解,转载请注明来源!

0