无论如何在PHP中使用唯一标识用户的路由器?

时间:2010-11-25 22:33:28

标签: php unique router

无论如何在PHP中使用唯一标识用户的路由器?我想知道用户在同一个路由器上是什么。

3 个答案:

答案 0 :(得分:4)

一般的答案基本上是没有 - 检测网络拓扑是一项非常重要的操作(当然,检测从端点获取的数据包几乎是不可能的)。但是,听起来你有某种特定的拓扑结构,或许如果你告诉我们更多关于我们可以帮助你的话。

假设以下事项:

  • 您有两个入口路由器
  • 您的网络服务器只有一个以太网接口
  • 您正在尝试确定流量来自哪个路由器

您可以在每个入口接口上对所有传入流量进行VLAN标记(并将所有主机放在未标记的交换机接口上),并在Web服务器上为每个VLAN提供一个接口别名,从而了解您所在的虚拟接口在,您将知道流量来自哪个入口路由器。

答案 1 :(得分:2)

您可以使用$_SERVER['REMOTE_ADDR']检索用户IP地址,然后使用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";
    }
}
?>

答案 2 :(得分:1)

您可以做的最好的事情是使用$_SERVER['REMOTE_ADDR']识别用户的IP地址。如果ip地址对应路由器,那么你很幸运。