我只是想找出网络上未使用的 IP 地址。我认为使用 nmap 是可以的。有人能告诉我方法吗?
笔记:
我只需要免费的 IP 列表。
答案1
快速扫描仪arp 扫描它使用地址解析协议“查看”网络上的其他机器。它还会返回 MAC 地址并尝试确定网络适配器的制造商。
使用示例(如果需要可替换wlan0
为eth0
):
$ sudo arp-scan -I wlan0 192.168.1.0/24
Interface: wlan0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.6 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.10 00:90:f5:33:e2:f2 CLEVO CO.
192.168.1.254 00:14:7f:72:cd:05 Thomson Telecom Belgium
2 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.6: 256 hosts scanned in 1.406 seconds (182.08 hosts/sec). 2 responded
请注意,此实用程序仅报告已打开电源的机器。ping
可以阻止,但arp-scan
不能阻止,因为机器需要与网络上的其他机器交互。要确保 IP 未被使用,您最好查看路由器(用于静态/动态地址)和 DHCP 服务器(用于动态地址)。
答案2
sudo nmap -sP -PR 192.168.0.*
(或者无论您的网络是什么)都可以。
要安装它,请使用sudo apt-get install nmap
。
来源:服务器故障。
刚刚测试过,效果很好,包括模糊主机,您需要添加 sudo 才能使用该-PR
选项。
答案3
我发现 fping 很有用;除其他外,它会 ping 一系列地址并列出哪些是“活动的”以及哪些是“不可达的”。默认情况下未安装 fping。
sudo apt-get install fping
简单的方法就是在一系列地址上运行它。
fping -g 192.168.0.2 192.168.0.254 2>/dev/null
更复杂一点,生成一个未使用的 IP 列表。
fping -g 192.168.0.2 192.168.0.254 2>/dev/null | grep 'is unreachable' | cut -d ' ' -f 1 | sort -t '.' -k 4 -n
答案4
这应该在 bash 中正确执行:
#!/bin/bash
#setting language variables for subshell making sure we grep for the right word
LC_ALL=C
LANG=C
# retrieve IP from user input
read -p "Input your network (example: 192.168.0): " my_net
for i in $(seq 1 254);
do
ip="$my_net.$i"
check="$(ping -c1 "$ip")"
if [ "$(grep "Unreachable" <<<"$check")" != "" ]
then
echo "$ip is unreachable"
fi
done