我一直致力于打包一些侦听TCP端口的软件。我有一个RPM规范,为CentOS 6.5创建一个包。我唯一的问题是我必须在rpm安装后手动添加iptables规则或完全禁用iptables。
是否有任何幂等方式在RPM%帖子部分添加iptables规则。它甚至有意义吗?我发现的大多数解决方案都涉及grep
和其他实用程序的某种组合。这对我来说似乎非常容易出错。
答案 0 :(得分:1)
在CentOS中,规则保存在/etc/sysconfig/iptables
中。使用/etc/init.d/iptables
脚本启动防火墙时会解析此文件。
问题在于,可以通过运行service iptables save
在任何时候重新生成这一点,这意味着您的RPM后期脚本所做的任何工作可能/将会遭到破坏...... system-config-firewall
也是如此。< / p>
最简单的选择是在您的RPM中包含一个脚本,该脚本从post运行,应用您的规则并更新/etc/sysconfig/iptables
,并打印一条警告,如果用户需要重新运行该脚本以后使用system-config-firewall
。
示例SPEC片段:
%post blah
/path/to/my/script/my-update-iptables && exit 0
示例脚本片段:
#!/bin/bash
#
# do stuff here
#
iptables ... # do stuff to append / insert rules as required
#
service iptables save
#
echo "WARNING - you may need to rerun this `$0` if you change the firewall" >&2