PHP中是否有唯一标识用户路由器的方法?我想知道同一路由器上有哪些用户。
问问题
348 次
3 回答
4
一般的答案基本上是否定的——检测网络拓扑是一项不平凡的操作(当然从端点检测到你的路径数据包几乎是不可能的)。但是,听起来您有某种特定的拓扑结构,如果您告诉我们更多信息,我们可能会为您提供帮助。
假设以下几点:
- 你有两个入口路由器
- 您的网络服务器只有一个以太网接口
- 您正在尝试确定流量通过哪个路由器
您可以对每个入口接口处的所有传入流量进行 VLAN 标记(并将所有主机放在未标记的交换机接口上),并在 Web 服务器上为每个 VLAN 给自己一个接口别名,因此通过知道您进入哪个虚拟接口,您会知道流量来自哪个入口路由器。
于 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
您能做的最好的事情是使用$_SERVER['REMOTE_ADDR']
. 如果IP地址对应于路由器,那么你很幸运。
于 2010-11-25T22:37:12.500 回答