Linux 内核支持 IPv6 SLAAC(无状态地址自动配置),并且能够处理收到的路由器通告消息。
但:据我所知,内核没有处理路由器通告的两件事:
- “M”/“O”标志指示网络中存在 DHCPv6 服务器(这存储在inet6_dev中,但从未使用过)
- 用于在 RA 中传递 DNS 服务器的 DNS 选项(这个完全被忽略了)
有没有办法从用户空间检索这些信息?
答案1
似乎无法通过 netlink 从内核检索此信息
但
感谢用户 AB,我找到了通过另一种方式检索此信息的方法
我使用了一个仅侦听 icmpv6-router-advertisement 消息的原始套接字。这将检索与意志内核完全相同的消息。
对于示例代码,我建议您查看 AB 提到的 ndisc6 项目中的 rdnss/icmp.c 文件。 https://github.com/nomis/ndisc6/blob/master/rdnss/icmp.c