Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.13. 使用 iptables设置和控制 IP 集

firewalldiptables (和 ip6tables)服务之间的基本区别是:
  • iptables 服务将配置存储在 /etc/sysconfig/iptables/etc/sysconfig/ip6tables 中,而 firewalld 将其存储在 /usr/lib/firewalld/ 和 /etc/firewalld / 中的各种 XML 文件中。请注意,/etc/sysconfig/iptables 文件不存在,因为 Red Hat Enterprise Linux 中默认安装了 firewalld
  • 使用 iptables 服务时,每次更改都意味着清除所有旧规则并从 /etc/sysconfig/iptables 中读取所有新规则,而 firewalld 不会重新创建所有规则。仅应用差异。因此,firewalld 可以在不丢失现有连接的情况下在运行时更改设置。
两者都使用 iptables 工具与内核数据包过滤器进行通信
要使用 iptablesip6tables 服务而不是 firewalld,请以 root 用户身份运行以下命令来禁用 firewalld
~]# systemctl disable firewalld
~]# systemctl stop firewalld
然后以 root 用户身份输入以下命令安装 iptables-services 软件包:
~]# yum install iptables-services
iptables-services 软件包包含 iptables 服务和 ip6tables 服务。
然后,要启动 iptablesip6tables 服务,以 root 用户身份输入以下命令:
~]# systemctl start iptables
~]# systemctl start ip6tables
要在每次系统启动时启用服务,请输入以下命令:
~]# systemctl enable iptables
~]# systemctl enable ip6tables
ipset 实用程序用于管理 Linux 内核中的 IP 集。IP 集合是用于存储 IP 地址、端口号、IP 和 MAC 地址对或 IP 地址和端口对的框架。集合的索引方式可以非常快,即使在集合非常大时也可以对集合进行非常快速的匹配。IP 集实现了更简单、更易于管理的配置,在使用 iptables 时具有性能优势。iptables 匹配和目标,引用集合来保护内核中给定的集合。当存在指向这个集合的单个参考时,无法销毁集合。
使用 ipset 可让 iptables 命令(如下面的命令)被一个集合替代:
~]# iptables -A INPUT -s 10.0.0.0/8 -j DROP
~]# iptables -A INPUT -s 172.16.0.0/12 -j DROP
~]# iptables -A INPUT -s 192.168.0.0/16 -j DROP
这个集合创建如下:
~]# ipset create my-block-set hash:net
~]# ipset add my-block-set 10.0.0.0/8
~]# ipset add my-block-set 172.16.0.0/12
~]# ipset add my-block-set 192.168.0.0/16
然后,这个集合在 iptables 命令中被引用,如下所示:
~]# iptables -A INPUT -m set --set my-block-set src -j DROP
如果在配置时节省一次,则使用集合多次。如果集合包含许多条目,则会节省处理时间。