準備している新しく設置したホームサーバーに問題が生じました。 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を有効にします。
Cybercitiのドキュメントで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