登录 立即注册

首页 > 绿虎论坛 > 电脑 > 讨论/求助 (发帖)

标题: 发现一种通过IPv6多播ping探测局域网内其他节点的方法(不需要路由器支持IPv6)

作者: @Ta

时间: 2023-02-01发布,2023-02-01修改

点击: 6465

# 查看网卡名称
ifconfig

# ping网卡名称上的链路本地广播地址
ping6 FF02::1%网卡名称

# 等待一段时间,然后查看发现的节点
ip neigh
# 会打印节点的IPv6链路本地地址和MAC地址
# 备注:节点的IPv4地址也会顺便显示出来,但不是ping IPv6获得的,所以不完整

所有开启了IPv6功能并且未禁ping的机器都会出现,不需要路由器支持IPv6,因为只要开启了IPv6,机器就会给自己分配链路本地地址,不需要路由器分配。

不过发送ping的机器自己必须开启IPv6,ping的接口也不能关闭IPv6,否则多播发不出去。

ip neigh发现的局域网IPv6本地地址(形如fe80::xxxx:xxxx:xxxx:xxxx)可以用于直接通信,不过也得加上%网卡名称,比如:

# 尝试连接其中一台机器:
telnet fe80::xxxx:xxxx:xxxx:xxxx%网卡名称 443
curl 'http://[fe80::xxxx:xxxx:xxxx:xxxx%网卡名称]:80/'
ssh fe80::xxxx:xxxx:xxxx:xxxx%网卡名称

比如在安卓上:

ifconfig
# 发现网卡名称是wlan0

ping6 FF02::1%wlan0

# 等待一段时间,然后执行
ip neigh

# 尝试连接其中一台机器
telnet fe80::1234:2234:3234:4234%wlan0 443
curl "http://[fe80::1234:2234:3234:4234%wlan0]:80/"
ssh fe80::1234:2234:3234:4234%wlan0

在Windows上也可以进行类似操作

# 查看网卡序号
route print -6
# 在“接口列表”中找到属于局域网的网卡序号,比如我的是12

ping -t FF02::1%12
# 等待一段时间。
# Windows的ping不能正确显示多播结果,所以只会显示“请求超时”,但ping的结果会填充邻居节点列表。
# 你也可以通过 Wireshark 抓包来查看 ping 的结果,捕获过滤器填 icmp6 即可。

# 查看节点列表
netsh int ipv6 show neigh 12
netsh int ipv4 show neigh 12
# 备注:IPv4节点列表只是顺便显示出来,不是ping IPv6获得的,所以不完整

# 连接其中一个节点
ssh fe80::1234:2234:3234:4234%12

[隐藏样式|查看源码]


『回复列表(6|隐藏机器人聊天)』

1. mac 似乎没有ip neigh命令
zsh: command not found: ip
(/@Ta/2023-02-01 14:49//)

2.

@残缘,你可以试试:

ndp -an
arp -an
(/@Ta/2023-02-01 15:48//)

3.

能做些什么?能通俗解释一下吗?过于专业听不懂
小米8(白)

(/@Ta/2023-02-02 00:16//)

4.

@艾木友尔尔巴,发现局域网内的其他设备

(/@Ta/2023-02-02 09:03//)

5.

师傅,你是做什么工作的?

修空调回头蓝衣服.mp4
小米MIX2s(白)

(/@Ta/2023-02-02 09:42//)

6. 我知道ipv4的时候可以这么做,ping 网卡ip的广播地址 然后arp -a看结果
(/@Ta/2023-02-02 14:03//)

回复需要登录

5月15日 06:37 星期三

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1