iptables用于建立,管理和查询内核的IP包过滤规则表。每个表可以包含多条规则链。每个链有多条规则组成。每条规则定义了如何处理特定的数据包。
每条规则有模式和动作组成,如果数据包不符合模式则继续下一条规则,否则根据动作进行相应的处理。动作包括:ACCEPT 接受,DROP 丢弃,QUEUE 转给用户处理,RETURN 返回上一层规则链。
选项:
命令组:
规则操作:
-A chain chain rule-specification
向规则链尾添加移条规则,如果ip为名称则使用解析到的可用ip建立规则(可能多条)
-D chain chain rule-specification
chain rulenum
删除一条规则
-I chain [rulenum] rule-specification
插入一条规则(索引以1为基数)
-R chain [rulenum] rule-specification
替换规则,新的规则必须是单条
-L [chain]
显示
-F [chain]
清除
规则链操作:
-Z [chain]
清除统计数据
-N chain
新建规则链
-X chain
删除规则链,不能删除被引用的规则链,不能删除内置的规则链
-P chain target
设置规则链的默认动作,只有内置的规则链可以有,且target不能是queue
-E old-chain new-chain
重命名规则链
规则定义参数:
-p [!] protocol
protocol可以是/etc/protocols文件里的协议名,也可以是数字,0 等价于 all,默认是all
-s [!] ipAddr/mask
源地址,mask可以是xxx.xxx.xxx.xxx或bit数字格式, ipAddr可以是主机名称或网络名称(但建议使用ip地址)
-d [!] ipAddr/mask
目标地址
-j target
目标动作
-i [!] name
有效的进入接口名称,仅作用于INPUT, FORWARD, PREROUTING规则链,name+表示以name开始
的接口。默认对所有的接口有效
-o [!] name
有效的输出接口名称,仅作用于OUTPUT, FORWARD, POSTROUTING规则链,name+表示以name开始
的接口。默认对所有的接口有效
[!] -f
仅匹配分帧的非首包
-c PKTs Bytes
初始化符合某规则的包和字节计数
其他参数:
-v
显示操作信息
-n
使用数字方式显示信息
-e
显示确切的统计数字
--line
显示规则的索引(Index)
--modprobe=command
当增加或插入规则时加载特定的模块
匹配扩展
可以使用-p protocol 然后使用扩展匹配选项,或使用-m module 然后使用模块专用选项
tcp
--source-port/sport [!]port[:port]
忽略前者为0,后者为65535
--destination-port/dport [!]port[:port]
--tcp-flags [!]mask comp
使用逗号分隔,mask是那些Flag需要检查, comp是哪些Flag需要设置
[!]--syn
匹配tcp连接发起包,即:syn设置,ack,fin空
--tcp-option !number
匹配有number选项的tcp包
--mss value[:value]
??? 匹配tcp连接协商包,且mss值或范围匹配的包,Mss控制连接的最大包长度
udp
--source-port [!]port[:port]
--destination-port/dport [!]port[:port]
icmp
--icmp-type [!]typename
用iptables -p icmp -h 查看帮助
mac
--mac-source [!]address
仅匹配来自于特定mac地址的包,适用INPUT, PREROUTING,FORWARD规则链
limit
--limit rate
最大的平均命中率:有效单位有:/second /minute /hour /day,默认是3/hour
--limit-burst num
???默认值为5
multiport
--source-ports/sports port,port ....
最多15个,可以与-p tcp 或 udp一起使用
--destination-ports/dports port,port...
--ports port,port...
不分源和目的,匹配端口号
mask
--mask value/mask
匹配包的mark属性,mark值由netfilter设置的关联属性
owner
匹配包的创建者,仅对OUTPUT规则链有效
--uid-owner userid
匹配包的创建程序的euid
--gid-owner groupid
eguid
--pid-owner proccessid
--sid-owner sessionid
???
--cmd-owner name
???
state
匹配连接的状态
--state state
INVALID 不跟任何连接关联
NEW 新的连接
ESTABLISHED 已建立的连接
RELATED 跟其他连接关联,例如FTP数据连接或ICMP错误包
tos
匹配ip头的服务标志
--tos tos
iptables -m tos -h 查看可使用的tos数字
ah
匹配ipsec的ah头的spi
--ahspi [!]spi[:spi]
esp
匹配ipsec的esp头的spi
--espspi [!]spi[:spi]
length
--length length[:length]
匹配长度或长度范围
ttl
--ttl
匹配ip头的ttl字段
unclean
试验中的选项
扩展动作
LOG
让内核记录日志,不是终结动作,不决定包的处理
--log-level level
参考syslog.conf
--log-prefix prefix
日志前缀,可以用来区分日志记录
--log-tcp-sequence
记录TCP连接的SEQUENCE
--log-tcp-option
--log-ip-option
记录选项
MARK
--set-mark mark
设置标记
REJECT
返回一个错误包,仅对INPUT, OUTPUT FORWARD有效
--reject-with type
type是icmp类型或tcp-reset
TOS
--set-tos tos
设置ip包的tos属性
MIRROR
交换源和目的地址
SNAT
仅对PREROUTING规则链有效
--to-source ipaddr[-ipaddr][:port-port]
如果没有port设置则512保持512一下,其他保持对应范围,尽量不修改
DNAT
仅对PREROUTING 和OUTPUT规则链有效
--to-distination ipaddr[-ipaddr][:port-port]
MASQUERADE
????仅对POSTROUTING规则链有效,一般用于ip是动态分配的情况,设置所有出去的包的ip为动态分配的ip
--to-ports port[-port]
REDIRECT
修改目标地址为本机地址
--to-ports port[-port]
ULOG
提供用户的日志
--ulog-nlgroup group
定义netlink group(1-32)
--ulog-prefix prefix
--ulog-cprange size
复制的包大小,0全部复制
--ulog-qthreshold size
一次发送的包数量
TCPMSS
设置MSS值
--set-mss value
--clamp-mss-to-mtu
自动设置mss为path_mtu - 40
额外的选项
不在标准版本中提供
TTL
--ttl-set ttl
--ttl-dec ttl
--ttl-inc ttl
iptables命令
最新推荐文章于 2023-02-21 10:58:03 发布