欢迎来到之路教程(on itroad-com)
重新启动后不加载 iptables 规则
我们已经设置并保存了 iptables 防火墙规则,但在重新启动后它们仍未加载。
重新启动后,不会加载 iptables 规则,而是:
由于未保存/应用新规则,因此需要重新定义防火墙规则。
必须重新启动 iptables 服务才能加载规则。
故障排除
- 验证服务是否设置为开机启动:
# chkconfig iptables --list iptables 0:off 1:off 2:off 3:on 4:on 5:on 6:off
- 如果iptables关闭,则为runlevels 3-5启用服务
# chkconfig iptables on
- 确保规则已保存到磁盘
3-1. 验证新规则是否保存在 /etc/sysconfig/iptables 中。
3-2. 如果没有保存,则通过以下两种方法之一设置后保存当前规则:
通过iptables服务命令保存规则:
# service iptables save
将以下命令的输出保存到 /etc/sysconfig/iptables 文件。
我们还可以通过手动将规则写入文件来保存规则。
# iptables-save
- 确保iptables模块在启动时加载
4-1. 验证启动后立即加载了iptables模块。
RHEL 5 输出应该类似于:
# lsmod | grep tables ip_tables 55457 1 iptable_filter ip6_tables 50177 1 ip6table_filter x_tables 50505 6 ipt_REJECT,xt_state,ip_tables,ip6t_REJECT,xt_tcpudp,ip6_tables
RHEL 6 输出应该类似于:
# lsmod | grep table iptable_filter 2793 1 ip_tables 17831 1 iptable_filter ip6table_filter 2889 1 ip6_tables 19458 1 ip6table_filter
4-2. 如果模块加载失败,请从 modprobe 配置中删除 iptables 模块的所有黑名单行。
# grep -r iptables /etc/modprobe* /etc/modprobe.d/blacklist.conf:blacklist iptables /etc/modprobe.d/blacklist.conf:blacklist ip6tables
- 检查规则表,看它们是否为空或者缺少规则
以下是已刷新或者空表的示例:
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 references) target prot opt source destination
- 验证规则文件在重启后没有改变
# cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bkp # reboot # sdiff -s /etc/sysconfig/iptables /etc/sysconfig/iptables.bkp
- 查看重启iptables服务是否成功加载规则
检查启动后是否需要运行“service iptables restart”并正常加载表。
# service iptables restart # service iptables status
iptables 实用程序控制 Linux 内核中的网络包过滤代码。
iptables 功能用于在 Linux 内核中设置、维护和检查 IP 包过滤规则表。
这篇文章讨论了 iptables 最常遇到的问题以及如何解决这些问题。
日期:2020-09-17 00:12:20 来源:oir作者:oir