CenOS / RHEL7で再起動した後にiptablesサービスを自動的に起動させる方法は?

CenOS / RHEL7で再起動した後にiptablesサービスを自動的に起動させる方法は?

準備している新しく設置したホームサーバーに問題が生じました。 CentOS7をインストールしましたが、ポート80と443がデフォルトで閉じていることがわかりました。だから私は次のコマンドを使ってiptablesに追加しました。

iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
service iptables save

存在しないiptableサービスもインストールしました。問題は、コンピュータを再起動するたびに新しい設定が消去されることです。

chkconfigにiptableサービスを追加しようとしましたが、次のエラーが発生しました。

[root@CentOS-7]# chkconfig --add iptables
error reading information on service iptables: No such file or directory

このエラーが発生する理由は、/etc/init.d/にiptableスクリプトがないためだと思います。しかし、実際に正しいことをしている、または/またはより簡単で信頼性の高い方法がある場合は、誰でもスクリプトをお持ちですか?これで?そうでなければ、どうすればこの問題を解決できますか?結局、ホームサーバーをWeb /メールサーバーとして使用する必要がありました...

私はまた、flemingovirusが提案したように "systemctlを有効にするiptables"コマンドを試しましたが、成功しませんでした。コマンドを入力すると、次のような結果が出力されます。

ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants`/iptables.service'`

アップデート:iptablesを確認しましたが、「service iptables save」コマンドが正常に動作します。この問題は、再起動時にサービスが開始されないために発生するようです。 /etc/rc.localに次の行を追加した後、再起動時にサービスが正常に実行されました。

systemctl start  iptables.service

しかし、この場合、「systemctlを有効にするiptables」コマンドが機能しない理由を知りたいです。私は何を逃したことがありませんか?ありがとう

答え1

この質問は古いですが、同じ問題に直面して解決策を見つけました。ここ

systemctl mask firewalld
systemctl stop firewalld

デフォルトでは、Firewalldはiptablesと競合するため、iptablesはロードされません。

# cat /usr/lib/systemd/system/firewalld.service 
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network.target
Before=libvirtd.service
Before=NetworkManager.service
Conflicts=iptables.service ip6tables.service ebtables.service

...

ファイアウォールが自動的に起動せず、再起動しないようにブロックすることでこの問題を解決できました。もちろん、iptablesが有効になっていることを確認する必要があります。

systemctl enable iptables

答え2

初期化スクリプトが消えました。これで、systemctlすべてのCentOS7ドキュメントにあります。起動時に ipatables を chkconfig または iptables サービスを開始するには、次のコマンドを使用する必要があります。

systemctlはiptableを有効にします。

Cyber​​citiのドキュメントでsystemctlの簡単な知識を確認する必要があります。iptables

答え3

まず試してみると、#chkconfig --add /sbin/iptables「iptables」が認識されます。その後、iptables設定用のスクリプトを作成し、起動時にスクリプトを起動する必要があります。スクリプトを生成します。

#!/bin/bash
#
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/service iptables save

そして名前をつけてくださいmyfirewall。実行可能にし、起動時にスクリプトを起動するようにchmod +x myfirewall作成します。./myfirewall/etc/rc.local

関連情報