我和一个同事都推测这是一个明确的“否”,但是,不可否认,我们的networking知识是有限的。
如果不事先了解networkingconfiguration(即没有DHCP或静态IPconfiguration),甚至有可能找出networking的网关? 如果确实有可能,怎么样?
首先,我猜测有90%的时间是你的子网中的第一个IP地址(所以, 10.10.5.0/24 ,这将是10.10.5.1 ) – 虽然我的networking有一个在.17和一个.23 (在.1上什么也没有); 所以你要做什么。
如果它是一个wifinetworking,你可以听取promiscious模式,并看看什么是最常见的外部stream量目的地,如果其他人使用的网关,你可以从那里推断出来(通过大大减lessIP的数量来检查)。
如果这是一个完全交换的networking,事情变得更加困难,但是我过去所做的就是观察ARP请求,并系统地通过最广泛的ARP设备。
但是,说“ 不”的方式还有很长的路要走,networking网关所在的IP地址,networking甚至是网关,都无从确知。
实际的例子:我曾经inheritance过一个守卫防火墙,我有它的口令,但不知道它在听什么networking,这很像你的理论困境。 我最终做的是开发Wireshark并开始捕获ARPstream量。 过了一段时间,watchguard的MAC地址开始出现在全球的广播stream量中,做了无情的ARP,寻找某个未知的预configuration设备的IP地址。 从那里设置自己的子网并find它的IP地址非常简单。
Al West提出了一个有趣的观点 – 如果使用自动configuration,IPv6网关是相当容易find的 – 每个路由器(通过RA)宣传自己,您可以只听它们。 如果是DHCPnetworking,或者没有自动configuration或DHCP的networking,则应用上述相同的规则
我想我不得不在这里不同意@马克·亨德森。 除了我认为的边缘情况:
除此之外,这是可能的。 但这不是微不足道的,可能需要很长时间。 我已经构build了脚本来testing无证networking中的路由调查。 你必须先解决一些问题:
为了解决第一部分你可以tcpdump的接口,它会显示一些stream量,希望一些广播或ARPstream量。 通常最好是尝试使用DHCP,但如果这样做不起作用,您可以只听一小时,然后select一个您所看到的范围内的IP地址。 另外,如果你在这个networking上经常看到arp请求,那么它可能就是路由器。 这意味着在testing其他可用主机之前,您应该首先将这些源作为网关进行testing。
为了解决第二部分,在得到一个分配了IP地址的节点运行nmap或者strobe并且找出networking上的其他设备。
要解决最后一块使用route命令设置一个静态路由到默认(0.0.0.0)或某些特定的IP,看看你是否可以ping你的外部testing主机。 这可以是一个简单的ICMPtesting,或者我会build议一个具有CGI的HTTP请求,它返回你的源IP地址,这样你就可以知道你的NAT了。
正如马克和波利斯在答案中所说的那样,它可能可以做到,但这不是微不足道的,它将依赖于一定数量的幸运猜测和假设。
作为一个假设的例子:您可以将一台笔记本电脑插入networking并运行一个数据包捕获程序。 至less你会拿起一些广播stream量(ARP,NetBIOS等)。 这将允许你确定在networking上使用的IP地址(但它不会告诉你使用的是什么子网掩码)。 然后你可以在networking中select一个随机的IP地址(你必须对子网掩码作出有根据的猜测,并且你必须希望这个地址还没有被使用)。 然后,您可以使用ARP扫描程序在networking上运行ARP扫描,并希望程序能够准确地识别响应ARP扫描的设备,如果有,您可以从设备标识中确定哪个设备可能是路由器,您也可以通过查看识别制造商的MAC地址的前3个八位位组,并在这个OUI列表中查找它们来找出可能是DG的设备。 例如,发现的任何思科设备都将成为99%的案例中的交换机或路由器。 从那里猜测和猜测关于在ARP扫描中返回的关于哪一个ID是DG的IP地址。
正如你所看到的,这种方法(我相信还有其他方法可以解决这个问题)几乎不科学,也难以保证产生确定的结果。
由于(IP)网关是在每个连接的节点上configuration的,而不是实际networkingconfiguration的一部分,networking本身不可能告诉你“网关”是什么 – 没有这样的野兽。
但是,通过一些混杂的ARP嗅探,你可以找出所有其他节点正在使用哪个节点作为它们的网关,并假定这也适用于你。