在 CentOS 6 的自定义 kickstart 安装过程中,我无法修改 iptables 配置。kickstart 过程是在最小 ISO 映像上安装几个自定义 RPM。其中一个 rpm 尝试修改 iptables 规则,但在 Anaconda 完成安装后,原始默认规则仍设置在 /etc/sysconfig/iptables 中。
我尝试使用 iptables(保存|恢复),但 iptables 模块在安装期间不可用。 iptables -L
返回错误“无法初始化 iptables‘filter’:表不存在”,并且保存/恢复命令都无法运行。
经过一番搜索,我发现 system-config-firewall-base 软件包已安装,似乎正在设置默认规则。此外,我发现我的规则已被复制到其中,/etc/sysconfig/iptables.old
但我搞不清楚是什么原因造成的。我尝试将其添加Requires: system-config-firewall-base
到我的软件包中,希望在设置规则后可以更改 %post 中的规则,但没有成功。
安装此软件包后首次启动正确设置规则。
关于如何在安装过程中正确配置 iptables 的任何建议,或者如何配置某些东西以在首次启动时自动实现这一点?
谢谢。
答案1
最好的办法是直接在 kickstart 文件的 %post 部分中的脚本中编辑 /etc/sysconfig/iptables 文件。这将在您安装软件包后运行。
答案2
您正在尝试进行哪些防火墙修改?
你可以使用 kickstart 进行防火墙修改
例如,要启用 ssh (tcp 22) 和 http (tcp 80),请在 kickstart 中输入以下行
防火墙--启用--http--ssh
答案3
我要指出的是,有一个用于编辑 iptables 配置文件的编程 API
以下是一个例子:
iptables -I INPUT -p tcp --dport 8880 -j ACCEPT
iptables -I INPUT -p tcp --dport 8443 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
service iptables restart