PHPコードを使用してユーザーのIPアドレスを取得しようとしました:
$_SERVER["REMOTE_ADDR"];
同じネットワークに関連付けられているコンピューターを調べたところ、すべてのコンピューターに同じ IP アドレスが提供されていました...なぜそうなのですか。個別の IP アドレスを期待していました。PHPを使用して個別のIPアドレスを取得するにはどうすればよいですか?
PHPコードを使用してユーザーのIPアドレスを取得しようとしました:
$_SERVER["REMOTE_ADDR"];
同じネットワークに関連付けられているコンピューターを調べたところ、すべてのコンピューターに同じ IP アドレスが提供されていました...なぜそうなのですか。個別の IP アドレスを期待していました。PHPを使用して個別のIPアドレスを取得するにはどうすればよいですか?
IPV4 IP アドレスの数には制限があります。したがって、公開サーバーを実行していないほとんどの人はNetwork Address Translationを使用します。
これには、LAN上のコンピューター( 192.168.1.2などのプライベートアドレス空間のIPを持つ)と、LAN IPアドレスとインターネット上のサーバーとの間のトラフィックを中継するインターネットIPアドレスを持つルーターを使用することが含まれます.
インターネット上のサーバーは、インターネットに面しているルーターの IP アドレスのみを認識します。
プライベート IP アドレスを確認するには、LAN の境界内でソフトウェアを実行する必要があります。理論的には、ユーザーに署名付き Java アプレットの実行を許可するように説得できればアドレスを取得できますが、それでも複数の IP が使用されている場合は問題が発生する可能性があります。(たとえば、現在、ループバック IP、イーサネット IP、Wi-Fi IP があり、2 つの仮想マシンを実行しており、ワークステーションにはそれらが接続するための IP がいくつかあります)。
サーバーのIPがあり、ローカルネットワークには外部IPがあります(これが表示されます)。そのネットワーク上のすべてのコンピューターには、独自の内部 IP があります。
コンピューターがサーバーに接続すると、ルーター/スイッチのIPを介して接続されます。
同じ LAN 内にいる場合、ルーターが NAT を使用している場合 (ほとんどの場合)、同じ IPv4 アドレスが使用されます。それについては何もできません。誰かが IPv6 を使用している場合、ほとんどの場合、すべてのコンピューターが固有の IP アドレスを持っていることに注意してください。
追加の注意事項: ルーターは送信接続を追跡しているため、すべてのデータ パッケージが正しいソース (内部コンピューター) に到達していることを確認しています。それを追跡する方法もないので、実際にそれを処理する必要があります。ただし、使用しているコードで「通常のIPアドレス」を使用すると、非常に一意になることにも注意してください。ネットワーク内の一部のユーザーが同じ IP アドレスを持っている可能性がありますが、それはその特定のネットワークの一意の識別子です。また、動的な IPv4 アドレスを持つことができることにも注意してください。つまり、IP アドレスは頻繁に変更されます。「静的」IP アドレスは、ネットワークにとどまるアドレスです。これは、ISP が制御するものです。
マシンがネットワーク プロキシ サーバーの背後にある可能性があります。
この場合、Web サーバーはローカル ネットワークの外にあります。サーバー変数からは、プロキシ サーバーの IP アドレスしか確認できません。