iptables命令

本文详细介绍了iptables,它用于建立、管理和查询内核的IP包过滤规则表。阐述了规则表、规则链和规则的组成,规则的模式与动作,还列举了命令组、规则定义参数、匹配扩展、扩展动作等内容,包括tcp、udp等协议的匹配选项及多种扩展动作。

    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

序言 1.1. 为什么要写这个指南 1.2. 指南是如何写的 1.3. 文中出现的术语 2. 准备阶段 2.1. 哪里能取得iptables 2.2. 内核配置 2.3. 编译与安装 2.3.1. 编译 2.3.2. 在Red Hat 7.1上安装 3. 表和链 3.1. 概述 3.2. mangle 表 3.3. nat 表 3.4. Filter 表 4. 状态机制 4.1. 概述 4.2. conntrack记录 4.3. 数据包在用户空间的状态 4.4. TCP 连接 4.5. UDP 连接 4.6. ICMP 连接 4.7. 缺省的连接操作 4.8. 复杂协议和连接跟踪 5. 保存和恢复数据管理规则 5.1. 速度 5.2. restore的不足之处 5.3. iptables-save 5.4. iptables-restore 6. 规则是如何练成的 6.1. 基础 6.2. Tables 6.3. Commands 6.4. Matches 6.4.1. 通用匹配 6.4.2. 隐含匹配 6.4.3. 显式匹配 6.4.4. 针对非正常包的匹配 6.5. Targets/Jumps 6.5.1. ACCEPT target 6.5.2. DNAT target 6.5.3. DROP target 6.5.4. LOG target 6.5.5. MARK target 6.5.6. MASQUERADE target 6.5.7. MIRROR target 6.5.8. QUEUE target 6.5.9. REDIRECT target 6.5.10. REJECT target 6.5.11. RETURN target 6.5.12. SNAT target 6.5.13. TOS target 6.5.14. TTL target 6.5.15. ULOG target 7. 防火墙配置实例 rc.firewall 7.1. 关于rc.firewall 7.2. rc.firewall详解 7.2.1. 参数配置 7.2.2. 外部模块的装载 7.2.3. proc的设置 7.2.4. 规则位置的优化 7.2.5. 缺省策略的设置 7.2.6. 自定义链的设置 7.2.7. INPUT链 7.2.8. FORWARD链 7.2.9. OUTPUT链 7.2.10. PREROUTING链 7.2.11. POSTROUTING链 8. 例子简介 8.1. rc.firewall.txt脚本的结构 8.1.1. 脚本结构 8.2. rc.firewall.txt 8.3. rc.DMZ.firewall.txt 8.4. rc.DHCP.firewall.txt 8.5. rc.UTIN.firewall.txt 8.6. rc.test-iptables.txt 8.7. rc.flush-iptables.txt 8.8. Limit-match.txt 8.9. Pid-owner.txt 8.10. Sid-owner.txt 8.11. Ttl-inc.txt 8.12. Iptables-save ruleset A. 常用命令详解 A.1. 查看当前规则集的命令 A.2. 修正和清空iptables命令 B. 常见问题于与解答 B.1. 模块装载问题 B.2. 未设置SYN的NEW状态包 B.3. NEW状态的SYN/ACK包 B.4. 使用私有IP地址的ISP B.5. 放行DHCP数据 B.6. 关于mIRC DCC的问题 C. ICMP类型 D. 其他资源和链接 E. 鸣谢 F. History G. GNU Free Documentation License 0. PREAMBLE 1. APPLICABILITY AND DEFINITIONS 2. VERBATIM COPYING 3. COPYING IN QUANTITY 4. MODIFICATIONS 5. COMBINING DOCUMENTS 6. COLLECTIONS OF DOCUMENTS 7. AGGREGATION WITH INDEPENDENT WORKS 8. TRANSLATION 9. TERMINATION 10. FUTURE REVISIONS OF THIS LICENSE How to use this License for your documents H. GNU General Public License 0. Preamble 1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 2. How to Apply These Terms to Your New Programs I. 示例脚本的代码 I.1. rc.firewall脚本代码 I.2. rc.DMZ.firewall脚本代码 I.3. rc.UTIN.firewall脚本代码 I.4. rc.DHCP.firewall脚本代码 I.5. rc.flush-iptables脚本代码 I.6. rc.test-iptables脚本代码 List of Tables 3-1. 以本地为目标(就是我们自己的机子了)的包 3-2. 以本地为源的包 3-3. 被转发的包 4-1. 数据包在用户空间的状态 4-2. 内部状态 6-1. Tables 6-2. Commands 6-3. Options 6-4. Generic matches 6-5. TCP matches 6-6. UDP matches 6-7. ICMP matches 6-8. Limit match options 6-9. MAC match options 6-10. Mark match options 6-11. Multiport match options 6-12. Owner match options 6-13. State matches 6-14. TOS matches 6-15. TTL matches 6-16. DNAT target 6-17. LOG target options 6-18. MARK target options 6-19. MASQUERADE target 6-20. REDIRECT target 6-21. REJECT target 6-22. SNAT target 6-23. TOS target 6-24. TTL target 6-25. ULOG target C-1. ICMP类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值