私は、言語を学習しながら PHP の全機能にアクセスできるように、Macbook に Apache HTTP サーバーをセットアップしました。登録済みのドメイン名や安定したネットワーク アクセスがないため、このサーバーで実際の Web サイトをホストすることは現実的ではありません。これは学習目的のためだけに行っていることです。
とにかく、疑問に思ったことがあります。Web ブラウザーにプライベート IP アドレス (ループバック アドレスではなく、実際の DHCP 割り当てアドレス) を入力すると、サーバーによってホストされている Web ページにアクセスできることに気付きました。つまり、コンピューターの外部からアクセスできるということです。ただし、パブリック IP アドレスを入力すると、ネットワーク タイムアウトが発生します。つまり、ローカル ネットワークの外部から Web サーバーにアクセスできないということです (接続が非常に遅い場合を除く)。
なぜそうなるのか疑問に思います。LAN 内のコンピューターに外部からアクセスできないようにするセキュリティ レイヤーが設定されているのでしょうか?
答え1
コンピュータから始まる回線には、3 つのブロッキング ホップが存在する可能性があります。
お使いの OS にファイアウォールが設定されていて、着信要求をブロックしている可能性があります。同じサブネットまたは別のサブネット上にあるが、ホーム ルーターの背後にある別のマシンを使用してこれを確認できます。私は MAC OS に詳しくないので、ファイアウォールの設定方法を説明できません。
あなたが接続する家庭用ルーター(またはほとんどのWi-Fiルーター)は、NATサブネットをその背後に「隠し」、ISP から取得した単一のグローバル IP アドレスで複数のデバイスが通信できるようにします。LAN からリモート サーバーにリクエストを送信すると、任意のデバイスから、リモート サーバーはリクエストがルーターから送信されたことを認識します。外部からパブリック IP アドレスにリクエストを送信する場合、実際にはルーターにアドレス指定することになります。ルーター宛てのHTTPリクエストをすべてルーターの背後にあるラップトップで処理したい場合は、ポート転送ルーターのメニューのルールをラップトップの IP アドレスとポート 80 (標準 HTTP ポート)、または HTTPS の場合はポート 443 に設定します。
最近では、ISP がパブリック (グローバルにルーティング可能な) IP アドレスさえ提供しないことがますます一般的になっています。ISP は NAT (グローバル IPv4 アドレスを保存するため) も使用し、ルーターの外部 IP アドレスは ISP のプライベート サブネットから取得されます。これには、ISP のルーターにポート転送ルールを登録する必要がありますが、ISP はこれを行ってくれません。この場合、インターネットからラップトップにアクセスすることはできません。
答え2
これが起こる理由は、NAT 変換によるものです。
インターネットに接続すると、ISP からパブリック IP アドレスが提供され、インターネットと通信できるようになります。
インターネット上の誰かが Web サーバーにアクセスしようとして、パブリック IP アドレスを入力すると、ルーターはネットワーク内のどこにリクエストが向かうのかを知る必要があります。これは NAT 変換と呼ばれ、ポート マッピングを設定することで実行されます。
ウェブサイトはデフォルトでポート 80 に設定されている HTTP トラフィックを使用するため、ポート 80 を内部 IP アドレスに転送するようにルーターにルールを作成する必要があります。これが完了すると、外部の誰かがブラウザにパブリック IP アドレスを入力すると、ルーターはリクエストを MacBook に転送する必要があることを認識します。
さて、質問にもう 1 つ追加があります。ポート転送を設定すると、ほとんどのルーターはパブリック IP アドレスが自分のものであることを認識しないため、自分のパブリック IP アドレスから Web サイトにアクセスできない可能性が高くなります。
MacBook はルーターにリクエストを送信し、ルーターはそれを ISP に送信します。ISP はそれを返信しますが、ルーターはそれを予期していないため、リクエストを無視し、ルーター自体に接続できないためタイムアウトが発生します。