但是受限于,现在有一些局域网内的路由他拒绝icmp或者udp响应,所以只能看到中间极个别的ip地址以及源节点和目的节点的IP地址,有没有一种思路可以逐渐探索出某个局域网的主机周围有哪些设备,最好能完整拓扑出来的,那同样如果跨vlan之后呢?是否可以同样迁移?
24条回答 默认 最新
关注 获得2.40元问题酬金 引自免费微信小程序:皆我百晓生
要实现一个类似于Traceroute但适应更多限制条件(如ICMP或UDP响应被过滤)的网络拓扑发现工具,我们可以采取一些策略绕过这些限制,同时利用TCP、ARP或其他网络协议特性。这里提供一个基于Python的方案,结合TCP SYN扫描和ARP请求来尝试揭示局域网内的设备连接情况。跨VLAN的探测则较为复杂,通常需要路由器或交换机的支持,或者在每个VLAN中部署代理节点。
1. 利用TCP SYN扫描
TCP SYN扫描(半开放扫描)可以在不建立完整连接的情况下探测目标端口的状态,这在某些情况下比ICMP或UDP更不容易被过滤。我们可以使用Python的
scapy
库来实现这一功能。安装scapy:
pip install scapy
TCP SYN扫描示例代码:
from scapy.all import IP, TCP, sr1, conf def tcp_syn_scan(target_ip, port): # 配置不发送ICMP错误响应 conf.verb = 0 conf.L3socket = conf.L3RawSocket ip_layer = IP(dst=target_ip) tcp_layer = TCP(dport=port, flags="S") packet = ip_layer/tcp_layer response = sr1(packet, timeout=2, verbose=0) if response is None: print(f"{target_ip}:{port} is filtered or host down.") elif response.haslayer(TCP) and response.getlayer(TCP).flags == 0x12: # SYN/ACK received print(f"{target_ip}:{port} is open.") elif response.haslayer(TCP) and response.getlayer(TCP).flags == 0x14: # RST/ACK received print(f"{target_ip}:{port} is closed.") else: print(f"Unexpected response from {target_ip}:{port}") # 扫描示例 tcp_syn_scan('192.168.1.1', 80)
2. 使用ARP请求发现局域网内主机
ARP协议用于解析IP地址到MAC地址,我们可以通过广播ARP请求来发现局域网内的设备。注意,ARP仅限于同一子网内。
ARP请求示例代码:
from scapy.all import ARP, Ether, srp def arp_discovery(ip_range): arp = ARP(pdst=ip_range) ether = Ether(dst="ff:ff:ff:ff:ff:ff") packet = ether/arp result, unanswered = srp(packet, timeout=2, verbose=0) devices = [] for sent, received in result: devices.append({'ip': received.psrc, 'mac': received.hwsrc}) return devices # 发现局域网内所有主机 devices = arp_discovery("192.168.1.0/24") for device in devices: print(f"IP: {device['ip']} MAC: {device['mac']}")
3. 综合应用与拓扑构建
结合上述方法,你可以先通过ARP发现局域网内的设备,然后对每个发现的IP地址执行TCP SYN扫描以判断其活跃状态及开放的服务。根据扫描结果,可以构建一个简单的拓扑图,记录哪些IP地址是直接相连的(基于它们在局域网内的响应)。
跨VLAN的考虑
跨VLAN探测需要网络设备支持,例如,配置了允许特定类型流量透传的VLAN间路由(Inter-VLAN Routing)。如果你有管理权限配置网络设备,可以设置允许探测包穿越VLAN,或者部署代理节点在每个VLAN内进行局部探测,然后汇总信息。但通常这涉及到网络管理和安全问题,需要相应权限和规划。
注意事项
- 上述操作可能涉及网络安全与隐私问题,请确保合法合规,并在授权的网络环境下操作。
- 对生产网络进行此类扫描前,务必通知相关管理员,以免影响网络正常运行。
- 考虑到网络环境多样性,上述方法可能需要根据实际情况调整。
通过这些方法,你可以逐步探索并构建局域网内部的设备连接图,尽管受限条件下可能无法达到100%准确,但可以作为一个起点。
解决 1无用
悬赏问题
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题
- ¥20 RL+GNN解决人员排班问题时梯度消失
- ¥60 要数控稳压电源测试数据
- ¥15 能帮我写下这个编程吗
- ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路