CentOSにiptablesを保存し、古いルールを新しく保存したルールとマージしますか?

CentOSにiptablesを保存し、古いルールを新しく保存したルールとマージしますか?

コマンドを使用していくつかの新しいルールを追加した後、iptables次のように保存しました。/sbin/service iptables save

その後、/etc/sysconfig/iptables私の新しいルールだけがファイルに表示されます。これで、すべての以前のルールが/etc/sysconfig/iptables.saveファイルにあります。

私が知っているのは、システムが再起動されると新しいルールが適用されますが、古いルールは適用されません。新しいルールと既存のルールの両方を適用するにはどうすればよいですか?

答え1

あなたの問題は、新しいルールを追加したときに古いルールセットがロードされないことです。したがって、保存すると、新しく追加されたルールのみが保存され、以前のルールはすべて上書きされます。

ルールセットからルールを追加または削除するには、まずを使用する必要があります。その後、現在のルールセットを再service iptables start編集して保存できます。これにより、マージを実行する必要がなくなります。service iptables save/etc/sysconfig/iptables

2つのファイルをマージするには、手動で編集する必要があります。たとえば、ルールの1つをロードしてから、別のルールからマージするルールを手動でコピーして貼り付けて、コマンドを使用して挿入してから、iptablesこのservice iptables save操作をやり直して設定ファイルに保存します。

次の再起動時にファイルのルールが自動的にロードされるようにするには、次の手順を実行します。これにより、chkconfig iptables oniptablesサービスがデフォルトの実行レベルに追加されます。

答え2

唯一のオプションは、テキストエディタを使用して2つのファイルを手動でマージすることです。両方のファイルのエントリはプレーンテキストであるため、これはかなり簡単に行えます。

はい

これは私のファイルです/etc/sysconfig/iptables

$ sudo more /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 631 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

他のファイルの項目をマージするときは、/etc/sysconfig/iptables.save順序がそのまま残っていることを確認してください。したがって、そのファイルに行がある場合は、-A INPUT ...すでに存在する行の末尾に置きます。

私は同様の規則に従います。したがって、テーブル内の項目をINPUT一緒に配置し、FORWARDテーブルの規則を一緒に配置します。

引用する

関連情報