获取 DHCP IP 地址范围

问题描述 投票:0回答:5

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

例如

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

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

java networking ip-address dhcp
5个回答
2
投票

获取此信息的唯一方法是询问 DHCP 服务器的管理员。一种远程可能性是 DHCP 服务器也公开了 SNMP 服务器并且该 SNMP 服务器提供了信息。然而,没有一个称职的系统管理员会泄露这些信息,所以这是不可能的。

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


1
投票

您可以查看您的计算机的子网并尝试连接到有问题的端口。这样您就无需知道 DHCP 将给出的具体地址范围。

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

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


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”的模式时,这才有效。


0
投票
使用 PowerShell 远程执行此操作:

$DHCPServer="<name or IP address of DHCP Server>" $Cred=Get-Credential -Message "Input credentials" -UserName "<username>" $CimSession=New-CimSession -ComputerName $DHCPServer -Credential $Cred $Scopes=Get-DhcpServerv4Scope -ComputerName $DHCPServer -CimSession $CimSession Remove-CimSession -CimSession $CimSession $Scopes | Select-Object -Property ScopeId,Name,Description,StartRange,EndRange
    

-1
投票
不存在这样的协议来传播由 DHCP 服务器提供的可用 IP 地址范围。

© www.soinside.com 2019 - 2024. All rights reserved.