まだ解決していない場合。あなたの iptables は言う:
<ブロック引用>状態関連、確立
つまり、すでに確立されている接続のみを渡すことができます...これは、リモート マシンではなく、ユーザーによって確立されたものです。次に、次のルールでこれに対する例外を確認できます:
state NEW tcp dpt:ssh
これは ssh に対してのみカウントされるため、http に対して同様のルール/行を追加する必要があります。これは次のように行うことができます:
state NEW tcp dpt:80
次のようにできます:
sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
(この場合、4 行目に新しいルールを追加することを選択しています)
ファイルを編集したら、次のように保存する必要があることに注意してください:
sudo /etc/init.d/iptables save
CentOS 7 は現在、デフォルトで firewalld を使用しています。しかし、すべての回答は iptables に焦点を当てています。そこで、firewalld に関する回答を追加したいと思いました。
firewalld は iptables の「ラッパー」であるため、antonio-fornie の回答を使用しても機能するようですが、その新しいルールを「保存」できませんでした。そのため、ファイアウォールの再起動が発生するとすぐに、Apache サーバーに接続できませんでした。幸いなことに、実際には、firewalld コマンドを使用して同等の変更を行う方がはるかに簡単です。まず、firewalld が実行されているかどうかを確認します:
firewall-cmd --state
実行中の場合、応答は単に「実行中」という 1 行になります。
公開ゾーンで http (ポート 80) 接続を一時的に許可するには:
sudo firewall-cmd --zone=public --add-service=http
上記は「保存」されません。次にfirewalldサービスが再起動されると、デフォルトのルールに戻ります。次に進む前に、この一時的なルールを使用して接続の問題をテストし、解決することを確認する必要があります。
公開ゾーンで http 接続を永続的に許可するには:
sudo firewall-cmd --zone=public --permanent --add-service=http
「temporary」コマンドを実行せずに「permanent」コマンドを実行する場合は、firewalld を再起動して新しいデフォルト ルールを取得する必要があります (CentOS 以外のシステムでは異なる場合があります)。
sudo systemctl restart firewalld.service
これで接続の問題が解決しない場合は、インターフェイスが「パブリック ゾーン」にないことが原因である可能性があります。次のリンクは、firewalld について学習するための優れたリソースです。ゾーンを確認、割り当て、構成する方法について詳しく説明します:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
SELinux はデフォルトで、Apache (したがってすべての Apache モジュール) がリモート接続を確立するのを防ぎます。
# setsebool -P httpd_can_network_connect=1