获取DHCP IP地址范围

时间:2014-01-15 16:29:54

标签: java networking ip-address dhcp

我想在本地网络中搜索要与之通信的特殊服务器。为了达到这个目的,我正在运行一个for-loop ping我在函数范围内的所有IP地址。

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

但我不想手动输入范围。有没有办法获得DHCP服务器为网络中的机器分配地址的IP范围?

4 个答案:

答案 0 :(得分:2)

获得此功能的唯一方法是询问DHCP服务器的管理员。一种远程可能性是DHCP服务器也暴露了SNMP服务器并且SNMP服务器提供了信息。但是,没有值得他/她盐的系统管理员会暴露这些信息,所以不太可能。

简而言之,答案是99.9%可能是“你不能”。

答案 1 :(得分:1)

您可以查看计算机的子网并尝试连接到相关端口。这样可以节省您需要知道DHCP将给出的特定地址范围。

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

您可以使用UDP而不是使用TCP。 UDP可以使用单个数据包将广播转发到整个子网或跨网络进行多播。这将允许您向任意数量的计算机发送请求,以确定他们是否有可用的服务。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我知道它的历史,但也许有人用它搜索它。您可以使用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

}

仅当Voip的作用域具有“ toip”之类的模式时,此功能才有效。