1. iptables基本概念
iptables基于Linux内核提供的netfilter框架实现,是一个基于规则的数据包过滤系统。iptables将所有进入和离开系统的网络数据包与其定义的规则进行比较,并根据规则来处理数据包。iptables规则包括以下几个部分:
- 表(table):iptables规则的容器,用于存储规则链和对应的规则。iptables提供了多种表用于不同的网络处理任务,例如filter表用于过滤数据包、nat表用于进行网络地址转换等。
- 规则链(chain):每个表中都包含多个规则链,用于存储规则。iptables中默认包含三个规则链:INPUT(输入规则)、FORWARD(转发规则)和OUTPUT(输出规则),分别对应处理进入系统的数据包、从系统转发的数据包和从系统输出的数据包。
- 规则(rule):iptables规则由匹配条件和动作两部分组成。匹配条件可以是源地址、目的地址、协议类型、端口等,动作可以是ACCEPT(接受数据包)、DROP(丢弃数据包)、REJECT(拒绝数据包)等。
2. iptables命令格式
iptables命令的基本格式如下:
代码语言:javascript复制iptables [-t 表名] 命令 [链名] [匹配条件] [动作选项]
其中,-t 表名选项用于指定要操作的表名,命令选项用于指定要执行的操作,链名用于指定要操作的规则链,匹配条件用于指定要匹配的数据包,动作选项用于指定要执行的动作。
3. iptables命令示例
3.1 显示iptables规则
要查看当前iptables规则,可以使用以下命令:
代码语言:javascript复制iptables -L
该命令会列出默认规则链的所有规则,包括每条规则的编号、匹配条件和动作。
3.2 添加iptables规则
要添加一条iptables规则,可以使用以下命令:
代码语言:javascript复制iptables -A 链名 匹配条件 动作选项
例如,要添加一条允许所有进入系统的HTTP数据包的规则,可以使用以下命令:
代码语言:javascript复制iptables -A INPUT -p tcp --dport 80 -j ACCEPT
该命令将在INPUT规则链的末尾添加一条匹配协议类型为tcp、目的端口为80的数据包,并将其动作设置为接受数据包。
3.3 删除iptables规则
要删除一条iptables规则,可以使用以下命令:
代码语言:javascript复制iptables -D 链名 规则编号
例如,要删除INPUT规则链中编号为2的规则,可以使用以下命令:
代码语言:javascript复制iptables -D INPUT 2
该命令将从INPUT规则链中删除编号为2的规则。
3.4 清除iptables规则
要清除所有iptables规则,可以使用以下命令:
代码语言:javascript复制iptables -F
该命令将清除默认规则链中的所有规则。
3.5 开启iptables
要开启iptables防火墙,可以使用以下命令:
代码语言:javascript复制service iptables start
该命令将启动iptables防火墙服务。
3.6 关闭iptables
要关闭iptables防火墙,可以使用以下命令:
代码语言:javascript复制service iptables stop
该命令将停止iptables防火墙服务。
3.7 保存iptables规则
要保存当前iptables规则,以便在系统重启后能够恢复规则,可以使用以下命令:
代码语言:javascript复制service iptables save
该命令将保存当前iptables规则到/etc/sysconfig/iptables文件中。
3.8 加载iptables规则
要加载之前保存的iptables规则,可以使用以下命令:
代码语言:javascript复制service iptables reload
该命令将重新加载之前保存的iptables规则。