CentOS 7 下使用 iptables
<p>系统升级到CentOS 7后总感觉iptables怪怪的,比如不管怎么保存重启后都被初始化一下,即便我最后发大绝招启动时候加命令:<br>
首先<strong>iptables-save > /etc/iptables.rules</strong>保存当前状态。<br>
然后再在/etc/rc.local中强制加上</p>
<p>
/etc/rc.local <br><br><code>iptables-restore</code> <code>/etc/iptables</code> <code>.rules</code></p>
<p>
重启后虽然规则生效但仔细看规则还是一些被莫名添加的额外的内容,让人很是不爽。</p>
<p>
仔细一google,发现问题之所在了。RedHat在7中更改了系统软件,不再使用iptables作为系统的防火墙,而是使用了FirewallD,但是为了兼容过去的命令也可以使用iptables来设置防护规则,但启动的时候自搞了一套。</p>
<p>
解决方法也很简单。</p>
<p>
首先,可以考虑follow官方的想法转用FirewallD。其实查看一些官方文档也能用。<br>
但是,个人觉得若没有显著的提升也可以继续使用原来的iptables。若打算继续使用iptables, 可以继续做如下:</p>
<p>
备份当前规则</p>
<p>
1 <code>iptables-save > iptables.rules</code><br>
禁用FireWallD,安装&启用iptables-services systemctl stop firewalld systemctl mask firewalld yum install iptables-services -y systemctl enable iptables </p>
<p>
这时候检查iptables发现规则被清空了</p>
<p>
1 <code>iptables -L -x -n</code></p>
<p>
将备份的规则还原</p>
<p>
1 <code>iptables-restore iptables.rules</code></p>
<p>
保存当前规则</p>
<p>
1 <code>/usr/libexec/iptables/iptables</code> <code>.init save</code></p>
<p>
若使用minimize版本的安装,可能会出现提示</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_313468">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">iptables: Saving firewall rules to </code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">/etc/sysconfig/iptables</code><code class="bash plain">: </code><code class="bash plain">/etc/init</code><code class="bash plain">.d</code><code class="bash plain">/iptables</code><code class="bash plain">: line 274: restorecon: </code><code class="bash functions">command</code> <code class="bash plain">not found</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
这是因为selinux没有安装的缘故,缺少一个组件。安装policycoreutils即可。</p>
<p>
1 <code>yum</code> <code>install</code> <code>policycoreutils -y</code></p>
頁:
[1]