服务器测评网
我们一直在努力

linux查看局域网的ip

在Linux系统中,查看局域网内的IP地址是网络管理、故障排查和设备连接的基础操作,无论是系统管理员需要监控网络设备,还是普通用户需要找到路由器、打印机等设备的IP,掌握多种Linux下的局域网IP查看方法都十分必要,本文将详细介绍从基础到进阶的多种技巧,帮助用户根据实际需求选择合适的方案。

linux查看局域网的ip

局域网IP查看的核心需求

局域网IP查看的核心在于快速、准确地识别网络中活跃设备的IP地址与MAC地址映射关系,这有助于判断设备在线状态、定位网络故障(如IP冲突)、发现未授权设备,或为后续的网络配置(如端口映射、访问控制)提供数据支持,Linux系统提供了多种命令行工具,支持从简单扫描到深度分析的不同场景,用户可根据网络规模、设备类型和权限灵活选择。

基础命令:快速扫描局域网设备

使用arp-scan主动扫描

arp-scan是一款通过发送ARP(地址解析协议)请求来主动发现局域网设备的工具,扫描速度快且结果详细,适合中小型网络。

安装方法

  • Ubuntu/Debian:sudo apt install arp-scan
  • CentOS/RHEL:sudo yum install arp-scan

基本用法

sudo arp-scan --localnet

参数--localnet会自动识别本机所在网段(如192.168.1.0/24),并向网段内所有设备发送ARP请求,输出结果包含IP地址、MAC地址、设备厂商(通过MAC地址前缀查询)等信息,

Interface: eth0, MAC: 00:1a:2b:3c:4d:5e, IPv4: 192.168.1.101  
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)  
192.168.1.1       00:11:22:33:44:55   (Unknown)  
192.168.1.105     aa:bb:cc:dd:ee:ff   Apple, Inc.  
192.168.1.200     12:34:56:78:9a:bc   HUAWEI TECHNOLOGIES CO.,LTD.  

技巧:若需指定网段扫描,可使用-r参数,如sudo arp-scan -r 192.168.1.0/24

使用nmap全面扫描

nmap(Network Mapper)不仅是端口扫描工具,还支持主机发现功能,可通过多种协议(如ARP、ICMP、TCP SYN)扫描局域网设备,适合需要获取设备详细信息的场景。

安装方法

  • Ubuntu/Debian:sudo apt install nmap
  • CentOS/RHEL:sudo yum install nmap

基本用法

nmap -sn 192.168.1.0/24

参数-sn表示“Ping扫描”,仅发现主机而不进行端口扫描,可快速获取在线设备的IP和MAC地址,输出示例:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-01 10:00 CST  
Nmap scan report for 192.168.1.1  
Host is up (0.0020s latency).  
MAC Address: 00:11:22:33:44:55 (Router Vendor)  
Nmap scan report for 192.168.1.105  
Host is up (0.015s latency).  
MAC Address: AA:BB:CC:DD:EE:FF (Apple, Inc.)  

进阶技巧:结合-O参数可尝试识别操作系统,如nmap -sn -O 192.168.1.0/24

linux查看局域网的ip

使用netdiscover被动/主动扫描

netdiscover是一款专注于局域网主机发现的工具,支持主动扫描和被动监听两种模式,被动模式通过监听网络中的ARP请求,不主动发送数据包,隐蔽性更强,适合需要悄无声息监控网络的场景。

安装方法

  • Ubuntu/Debian:sudo apt install netdiscover
  • CentOS/RHEL:需从EPEL源安装,sudo yum install epel-release && sudo yum install netdiscover

主动扫描模式

sudo netdiscover -i eth0 -r 192.168.1.0/24

参数-i指定网卡(如eth0),-r指定网段。

被动监听模式

sudo netdiscover -i eth0 -p

被动模式下,工具会自动捕获本机网络接口收到的ARP请求,无需主动发送数据包,适合长期监控网络设备变化。

结合pingarp命令(基础方法)

对于小型网络或临时查看,可结合pingarp命令实现:

  1. 先通过ifconfigip addr查看本机IP和网段,例如本机IP为168.1.101,子网掩码为255.255.0,则网段为168.1.0/24
  2. 使用ping命令广播网段(需开启ICMP响应):
    ping -b 192.168.1.255

    参数-b表示广播,向网段内所有设备发送ICMP请求(部分设备可能不响应广播)。

  3. 查看ARP缓存表,获取已响应设备的IP与MAC映射:
    arp -a

    输出示例:

    ? (192.168.1.1) at 00:11:22:33:44:55 [ether] on eth0  
    ? (192.168.1.105) at aa:bb:cc:dd:ee:ff [ether] on eth0  

    注意:此方法依赖设备响应ICMP请求,对关闭ICMP响应的设备可能无效。

进阶技巧:自动化与精准定位

使用Shell脚本批量扫描

若需定期扫描或记录结果,可编写Shell脚本实现自动化,使用nmap扫描并保存结果到文件:

linux查看局域网的ip

#!/bin/bash
# 扫描192.168.1.0/24网段,保存在线设备信息到scan_results.txt
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
echo "扫描时间: $timestamp" >> scan_results.txt
nmap -sn 192.168.1.0/24 | grep "Nmap scan report\|MAC Address" >> scan_results.txt
echo "------------------------" >> scan_results.txt

将脚本保存为scan_local.sh,赋予执行权限(chmod +x scan_local.sh),然后通过crontab设置定时任务(如每天凌晨2点扫描),即可实现自动化监控。

使用Python工具(Scapy)实现自定义扫描

对于需要更灵活控制的场景(如自定义ARP请求内容、过滤特定设备),可使用Python的Scapy库,编写脚本扫描网段并只显示特定厂商的设备:

from scapy.all import ARP, Ether, srp
def scan_network(network):
    arp = ARP(pdst=network)  # ARP请求目标网段
    ether = Ether(dst="ff:ff:ff:ff:ff:ff")  # 广播MAC地址
    packet = ether / arp  # 构造数据包
    result = srp(packet, timeout=3, verbose=0)[0]  # 发送并接收响应
    print("在线设备列表:")
    for sent, received in result:
        print(f"IP: {received.psrc}\tMAC: {received.hwsrc}")
if __name__ == "__main__":
    scan_network("192.168.1.0/24")

安装Scapy:pip install scapy,运行脚本即可输出网段内所有在线设备的IP和MAC。

结合日志分析实现长期监控

若需长期跟踪网络设备变化,可将扫描结果记录到日志文件,并通过grepawk分析,使用arp-scan扫描并追加日志:

sudo arp-scan --localnet >> network_log.txt 2>&1

然后通过以下命令统计最近24小时内新上线设备:

grep "$(date -d '24 hours ago' '+%Y-%m-%d %H:%M')" network_log.txt | awk '{print $1}' | sort -u

常见问题排查:解决扫描中的疑难杂症

权限不足问题

部分工具(如arp-scannmap发送原始数据包)需要root权限执行,若提示“Permission denied”,需在命令前加sudo

扫描结果不准确或设备遗漏

  • 原因1:目标设备关闭了ARP响应或ICMP功能(如部分服务器、防火墙设备)。
    解决:尝试使用nmap-PU(UDP Ping)或-PE(ICMP Ping)参数,或改用被动扫描模式(如netdiscover -p)。
  • 原因2:本机网卡未开启混杂模式(Promiscuous Mode),无法捕获非本机网段数据包。
    解决:使用tcpdump开启混杂模式(sudo tcpdump -i eth0 -p),或确保网卡驱动支持混杂模式。

如何区分“在线”与“离线”设备?

  • 单次扫描:通过nmap -snarp-scan的结果中“Host is up”或直接响应的设备视为在线。
  • 多次扫描验证:由于设备可能临时下线,建议间隔5-10分钟重复扫描2-3次,多次出现的设备确认为稳定在线。

选择适合你的方法

Linux查看局域网IP的方法多样,用户可根据需求选择:

  • 快速扫描arp-scan(中小型网络)、nmap -sn(功能全面)。
  • 隐蔽监控netdiscover -p(被动监听)。
  • 基础临时查看ping+arp组合。
  • 自动化与定制:Shell脚本或Python(Scapy)。

掌握这些工具和技巧,不仅能高效解决日常网络问题,还能为更复杂的网络管理(如设备监控、安全审计)打下基础,在实际使用中,需注意网络环境限制(如防火墙、设备配置),并结合多种方法交叉验证结果,确保准确性。

赞(0)
未经允许不得转载:好主机测评网 » linux查看局域网的ip