【问题标题】:Get DHCP IP-Address range获取 DHCP IP 地址范围
【发布时间】:2014-01-15 16:29:54
【问题描述】:

我想在本地网络中搜索要与之通信的特殊服务器。为了实现这一点,我正在运行一个 for 循环 ping 我给该函数的范围内的所有 IP 地址。

例如findServers("192.168.0.x", 101, 255) ping 192.168.0.101192.168.0.255 之间的所有地址,如果可以访问,则尝试连接到特定端口以查明服务器是否正在运行。

但我不想手动输入范围。有什么方法可以获取 DHCP 服务器为网络中的机器分配地址的 IP 范围?

【问题讨论】:

  • 子网掩码在这里没有帮助。 DHCP 动态地址范围不必是网络子网的正确子网。

标签: java networking ip-address dhcp


【解决方案1】:

获得此信息的唯一方法是询问 DHCP 服务器的管理员。一种远程可能性是,如果 DHCP 服务器也暴露了 SNMP 服务器并且 SNMP 服务器提供了信息。但是,没有一个称职的系统管理员会公开该信息,因此不太可能。

简而言之,答案大约有 99.9% 的可能性是“你不能”。

【讨论】:

  • DHCP 是我正在管理的路由器...但我希望它也可以在其他网络中使用
  • 答案仍然有效。没有标准 API 可用于查询 DHCP 服务器的动态范围。在有限的特定情况下,您可能能够使用 SNMP。如果您控制所有您想要执行此操作的 DHCP 服务器,您可以在每台 DHCP 机器上设置一个 SNMP 服务器并发布信息。
【解决方案2】:

您可以查看您机器的子网并尝试连接到有问题的端口。这使您无需知道 DHCP 将给出的特定地址范围。

您不需要确定主机是否可访问,因为您仍然需要尝试连接到端口。如果您使用线程池连接到 255 个地址,则需要几秒钟。

您可以使用 UDP 代替 TCP。 UDP 可以将广播发送到整个子网或使用单个数据包跨网络进行多播。这将允许您向任意数量的机器发送请求,以了解它们是否有可用的服务。

【讨论】:

    【解决方案3】:

    没有这样的协议可以传播 DHCP 服务器提供的可用 IP 地址范围。

    【讨论】:

      【解决方案4】:

      我知道它很旧,但也许有人用谷歌搜索它。您可以使用 PowerShell 获取它:

      $dhcpserver = "10.17.5.1"
      $ScopeList = Get-DhcpServerv4Scope -ComputerName $dhcpserver | Where-Object {$_.name -like "*toip*"}
      
      ForEach($Scope in $ScopeList){
      
          $voip += Get-DhcpServerv4Lease -ComputerName $dhcpserver -ScopeId $Scope.ScopeId
      
      }
      

      这只有在 Voips 的范围具有“toip”之类的模式时才有效

      【讨论】:

        猜你喜欢
        • 2013-07-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-31
        • 1970-01-01
        • 2022-07-22
        • 2018-10-08
        • 2014-07-03
        • 2018-03-09
        相关资源
        最近更新 更多