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

おすすめ記事