GNU/Linux >> Linux の 問題 >  >> Linux

Apacheがlocalhostの外部からの着信接続を受け入れない

まだ解決していない場合。あなたの 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

Linux
  1. [修正済み]ユーザー名がsudoersファイルにない

  2. ApacheでvHostを設定する方法

  3. Findが「-execCp{}Dir +」を受け入れないのはなぜですか?

  1. Debian10にApacheをインストールする

  2. visudo:コマンドが見つかりません

  3. sudoedit:コマンドが見つかりません

  1. sudo:コマンドが見つかりません

  2. docrootにないapache suexecコマンド

  3. sudo:npm:コマンドが見つかりません