1

ユーザーのルーターを一意に識別するためにPHPにとにかくありますか? 同じルーターにどのユーザーがいるか知りたいです。

4

3 に答える 3

4

一般的な答えは、基本的に「いいえ」です。ネットワーク トポロジを検出することは重要な操作です (そして、パケットがたどったパスを検出することは、エンドポイントからはほぼ不可能です)。ただし、何らかの特定のトポロジーがあるように思えますが、詳細を教えていただければ、私たちがお手伝いできる可能性があります。

次のことを前提とします。

  • 2 つのイングレス ルーターがある
  • Web サーバーにはイーサネット インターフェイスが 1 つしかありません
  • トラフィックが通過したルーターを特定しようとしている

各入力インターフェースですべての受信トラフィックに VLAN タグを付け (そしてすべてのホストをタグなしのスイッチ インターフェースに配置)、各 VLAN の Web サーバーにインターフェース エイリアスを自分自身に与えることができます。トラフィックがどの入口ルーターから来たかがわかります。

于 2010-11-25T22:36:08.730 に答える
2

を使用してユーザーの IP アドレスを取得し$_SERVER['REMOTE_ADDR']、ユーティリティを使用しtracerouteてホップを取得し、検索したいルーターを確認します (両方の IP がわかっている場合)。

ルーターがユーザーのアドレス変換を行っていないと仮定すると、ルーターを介してユーザーに戻ることができることに依存しているため、そうでない場合は機能しません。いずれかのルーターがユーザーに戻ることができる場合、まったく機能しません。ただし、ダイヤルイン ユーザーには適しています。

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$router1IP = "123.123.123.123";

$output = array();
exec('traceroute -n ' . $ip, $output, $result);

if ($result == 0) {
    $outputText = implode("\n", $output);
    if (preg_match("/" . preg_quote($router1IP) . "/", $output)) {
        echo "Router 1";
    } else {
        echo "Router 2";
    }
}
?>
于 2010-11-25T22:37:40.930 に答える
1

できる最善の方法は、 を使用してユーザーの IP アドレスを特定することです$_SERVER['REMOTE_ADDR']。IP アドレスがルーターに対応する場合は、幸運です。

于 2010-11-25T22:37:12.500 に答える