登录 立即注册

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

标题: IPv6 网络中,如何通过 mac 地址取 ipv6 地址?

作者: @Ta

时间: 2022-07-05

点击: 21813

有一台支持DHCPv6的路由器
下接了 ubuntu、windows、centos等主机

现需在 ubuntu 上通过 windows/centos 的 mac 地址 获取相应的 ipv6 地址

有无大佬知晓? @老虎会游泳

IPv4 中是直接 ping 一下广播地址,获取到网段中所有 mac 地址及其ipv4;
然而 ipv6 好像不能直接 ping 组播地址,我也不知道如何构造相应的 NS 报文
小米MIX2s(白)


[隐藏样式|查看源码]


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

1.

@天蓝,IPv6使用邻居发现协议,在线的机器都会出现在邻居表中:

ip -6 neigh
(/@Ta/2022-07-05 03:06//)

2.

@天蓝,邻居发现协议确实有一个扩展,用于从mac地址找到IPv6地址。不过我不知道有没有实用工具实现了该功能。

https://www.rfc-editor.org/rfc/rfc3122.html

(/@Ta/2022-07-05 03:20//)

3.

@天蓝,Linux不支持反向邻居发现。所以如果未与对方进行通信,就无法发现对方IPv6地址。

https://superuser.com/questions/911494/ipv6-inverse-neighbor-discovery-doesnt-work

(/@Ta/2022-07-05 03:25//)

4.

@天蓝,如果知道对方的主机名(计算机名),可以使用mdns来解析出对方的IPv6地址。

https://baike.baidu.com/item/mdns/7544078

(/@Ta/2022-07-05 03:29//)

5.

@天蓝,向udp://[FF02::FB]:5353(组播)发送对主机名.lan的AAAA记录查询请求,应该就能收到对方的IPv6地址。

(/@Ta/2022-07-05 03:32//)

6.

@天蓝,有三种用于发现本地设备的服务:
NBNS、MDNS、LLMNR
后两种都可以获取到IPv6地址。
不过设备会不会回应这些查询请求取决于设备功能和配置。

(/@Ta/2022-07-05 03:40//)

7.

@天蓝,LLMNR用于主机名解析可能比MDNS更可靠,因为Linux支持是通过systemd实现的,所以基本上都能支持。Windows当然也支持。不过这应该也只有主机名查询,得知道对方主机名才行。

(/@Ta/2022-07-05 03:42//)

8.

@天蓝,其实还有另一个方法,就是直接发起抓包,这样就能监听到所有局域网组播、广播流量,从而发现其他设备的IPv6地址。

当然,如果其他设备完全保持静默,不发起广播、组播通信,则感知不到它。

(/@Ta/2022-07-05 03:44//)

9.

@天蓝,你也可以考虑使用mac地址直接算出对方的IPv6地址。不过不一定管用,如果对方开了IPv6地址隐私扩展,或者局域网不使用无状态地址自动配置,可能就不管用。

算法叫做EUI-64,从mac地址直接生成IPv6地址的后64位,然后加上路由器给的前64位(所有设备都一样)就是完整的IPv6地址了。

但是这样有隐私问题,网站可以借此获取你的mac地址对你进行跟踪。所以后来设备不会主动用EUI-64生成的地址进行互联网通信了,而是改用随机生成的另一个地址进行互联网通信。不过EUI-64生成的地址通常还是有效的,所以如果你去连,应该能连上。

在这种情况下,ip -6 addr会看到设备有两个公网IPv6地址,一个是EUI-64生成的,一个是随机生成的。

Screenshot_20220705_035441.jpg

(/@Ta/2022-07-05 03:54//)

10.

其实还有另一个方法,就是直接发起抓包,这样就能监听到所有局域网组播、广播流量,从而发现其他设备的IPv6地址。

当然,如果其他设备完全保持静默,不发起广播、组播通信,则感知不到它。


如此的话,操作系统应该已经知道了一些 MAC IPV6之间的映射,为什么不加入到邻居表中,而是要与对方通信之后再加入邻居表呢?
我的ubuntu接入IPv6网络后,其邻居表中就只有一条到网关的信息
小米MIX2s(白)

(/@Ta/2022-07-05 09:44//)

11.

@老虎会游泳
小米MIX2s(白)

(/@Ta/2022-07-05 09:56//)

12.

@天蓝,你自己用wireshark抓包看看嘛,也许并没有可用信息泄露。

(/@Ta/2022-07-05 10:26//)

13.

顺便一提,fe80::本地链路地址是可以ping的,不过需要加%网卡序号或名称

对于Windows,假设局域网使用网卡1:

ping fe80::xxxx%1

对于Linux,假设局域网使用网卡eth0:

ping fe80::xxxx%eth0
(/@Ta/2022-07-05 13:05//)

14.

感谢老虎,目前正则使用 llmnr 通过 mac 获取局域网内 ipv6 地址,但是有一些主机并不会响应 llmnr 请求,所以我正在打算通过 ipv4 ssh 登录这些主机,然后获取其 ipv6 地址,详见:https://hu60.cn/q.php/bbs.topic.103460.html
小米MIX2s(白)

(/@Ta/2022-07-10 00:25//)

15.

@天蓝,用证书登录啊,就不需要输入密码了。

(/@Ta/2022-07-10 17:32//)

16.

@老虎会游泳,我想写一个通用的,这样可以登录多台主机 SSH,不用为每台主机做配置
小米MIX2s(白)

(/@Ta/2022-07-10 18:13//)

回复需要登录

12月22日 15:35 星期天

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1