iptables命令详解

Linux 2017-06-23

起步

iptables是防火墙,已经集成在内核中(netfilter项目的一部分),所有的Linux发行版都能使用 iptables . 快捷高效同时也有很好的扩展性.

语法

简短的语法:

iptables (选项) (参数)

高级命令格式:

iptables [-t 表名] {-A|-D|-I|-F|-L|-Z|-P} 规则链名 [规则号] {-i/o 网卡名} -p 协议名 {-s 源IP/源子网} --sport 源端口 {-d 目标IP|目标子网} --dport 目标端口 -j 动作

参数说明

  • -t: 指定需要维护的防火墙规则表,不使用-t时, 则默认操作对象为filter表. 表名包括:

    • raw:高级功能,如:网址过滤。
    • mangle:数据包修改(QOS),用于实现服务质量。
    • net:地址转换,用于网关路由器。
    • filter:包过滤,用于防火墙规则。
  • -A: 追加防火墙规则
  • -D: 删除防火墙规则
  • -I: 插入防火墙规则在最前
  • -F: 清空防火墙规则
  • -L: 列出防火墙规则
  • -R: 替换防火墙规则
  • -Z: 清空防火墙数据表统计信息
  • -P: 设置链默认规则

规则链名包括:

  • INPUT链:处理输入数据包。
  • OUTPUT链:处理输出数据包。
  • PORWARD链:处理转发数据包。
  • PREROUTING链:用于目标地址转换(DNAT)。
  • POSTOUTING链:用于源地址转换(SNAT)。

匹配参数:

  • -h:显示帮助信息
  • -p:指定要匹配的数据包协议类型
  • -s:指定要匹配的数据包源ip地址
  • -j<目标>:指定要跳转的目标
  • -i<网络接口>:指定数据包进入本机的网络接口
  • -o<网络接口>:指定数据包要离开本机所使用的网络接口。

动作包括:

  • ACCEPT:接收数据包。
  • DROP:丢弃数据包。
  • REDIRECT:重定向、映射、透明代理。
  • SNAT:源地址转换。
  • DNAT:目标地址转换。
  • MASQUERADE:地址欺骗,IP伪装(NAT),用于ADSL。
  • LOG:日志记录。

实例

清除已有iptables规则

iptables -F
iptables -X
iptables -Z

开放指定端口:

iptables -A INPUT -p tcp 80 -j ACCEPT

屏蔽IP

iptables -I INPUT -s 9.9.9.9 -j DROP

# 可以是ip段
iptables -I INPUT -s 9.9.9.9/24 -j DROP

查看所有的规则

iptables -nvL

删除已添加的iptables规则

# 先查看规则编号
iptables -L -n --line-numbers

# 删除对应的编号,如8
iptables -D INPUT 8

备份与还原

contos默认防火墙规则保存在 /etc/sysconfig/iptables 文件中,计算机重启会自动加载该文件的规则.

iptables-save > /etc/sysconfig/iptables
iptables-save > firewall.bak

还原:

iptables-restore < firewall.bak

本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

赏个馒头吧