在添加新规则之前,iptables 是不是需要刷新?

Posted

技术标签:

【中文标题】在添加新规则之前,iptables 是不是需要刷新?【英文标题】:Is a flush required for iptables before adding new rules?在添加新规则之前,iptables 是否需要刷新? 【发布时间】:2015-03-15 19:24:26 【问题描述】:

我对网络很陌生,我正在尝试使用 iptables 为 LAN 访问(SSH 和 HTTP)的服务器做一些简单的配置。如果这很重要,我正在使用 CentOS7。 我一直在学习表单教程,他们似乎建议作为刷新所有现有规则的第一步。 我正在安装一个新的 CentOS,我有几个终端窗口的规则,如果我杀了它们,我绝对不知道尝试恢复它们,而且我绝对不知道它们做了什么,所以我害怕如果我杀了他们,我不明白的网络问题将开始发生,否则我将打开我的服务器面临安全风险。 在这些教程中,他们不会费心解释为什么要刷新当前规则。 只要没有与我最后添加的规则冲突的其他规则,我是否可以不刷新? 如果我做了刷新,只要我不使用 iptable 的保存,一切都会在重启时恢复吗?

【问题讨论】:

服务器配置问题属于Server Fault 【参考方案1】:

不需要刷新当前规则,但有时最好从头开始。即使不想破坏当前的配置,完全从头开始重建它可能会更有益。也就是说,不仅考虑到结果配置的简单性和效率,还考虑到在尝试提出正确规则时的心理。

如果选择保留当前配置并在此基础上进行构建,则应牢记规则的顺序很重要。 -I 参数可用于将新规则插入到指定链中的特定位置,如iptables 手册页所述:

-I, --insert chain [rulenum] 规则规范

在选定的链中插入一个或多个规则作为给定的规则编号。因此,如果规则编号为 1,则将一条或多条规则插入到链的头部。如果没有指定规则编号,这也是默认值。


在修改任何内容之前,建议将当前配置保存到文件中:

iptables-save > <filename>

这个文件以后可以用来恢复原来的配置:

iptables-resotre < <filename>

使用iptables 命令创建的规则存储在内存中。如果在明确声明之前重新启动系统,则当前规则集将丢失。在CentOS7,这是由:

service iptables save

这个命令行的详细信息可以找到here:

这将执行iptables init 脚本,该脚本运行 /sbin/iptables-save 程序并写入当前的iptables 配置为/etc/sysconfig/iptables。现有的 /etc/sysconfig/iptables 文件另存为 /etc/sysconfig/iptables.save.

下次系统启动时,iptables init 脚本会重新应用 通过使用保存在/etc/sysconfig/iptables 中的规则 /sbin/iptables-restore 命令。


请注意,在CentOS7 上,引入了firewalld 来管理iptables。 This answer 解释了如何恢复经典的 iptables 设置。

【讨论】:

以上是关于在添加新规则之前,iptables 是不是需要刷新?的主要内容,如果未能解决你的问题,请参考以下文章

linux firewalld与iptables的区别

转 - Debian系统配置PPTP方法 添加用户和iptables规则

Linux IPTables:如何添加防火墙规则

linux防火墙放行了端口,但是仍然访问不到

iptables过滤设置服务端口

firewalld和iptables区别