Linux 如何知道在客户端上运行 dhcpv6?

Linux 如何知道在客户端上运行 dhcpv6?

我正在家庭网络上使用 ipv6。我试图了解 Linux 客户端(如果重要的话,在 ubuntu 16.04 上)如何知道与 dhcpv6 服务器通信(无论是获取 IP 地址还是获取 DNS 服务器)。似乎很多工作都是从内核完成的,就像我这样做时一样:

$ sudo ifup --verbose p2p1

我看到输出中

/sbin/sysctl -q -e -w net.ipv6.conf.p2p1.accept_ra=2
/sbin/sysctl -q -e -w net.ipv6.conf.p2p1.autoconf=1

我还在该输出中看到很多 dhcpv4 消息,但没有看到任何与 dhcpv6 相关的消息。

我还看到我的路由器正在宣传还有其他可用配置:

$ rdisc6 p2p1
Soliciting ff02::2 (ff02::2) on p2p1...

Hop limit                 :           64 (      0x40)
Stateful address conf.    :          Yes
Stateful other conf.      :          Yes
Router preference         :       medium
Router lifetime           :         1800 (0x00000708) seconds
Reachable time            :  unspecified (0x00000000)
Retransmit time           :  unspecified (0x00000000)
 Prefix                   : 2601:xxx:xxx:xxx::/64
  Valid time              :         3600 (0x00000e10) seconds
  Pref. time              :         3600 (0x00000e10) seconds
 Prefix                   : fd0f:e273:26d2::/64
  Valid time              :         3600 (0x00000e10) seconds
  Pref. time              :         3600 (0x00000e10) seconds
 MTU                      :         1500 bytes (valid)
 Source link-layer address: BC:AE:C5:C3:0A:55
 Recursive DNS server     : 2601:xxx:xxx:xxx::1
  DNS server lifetime     :         3600 (0x00000e10) seconds
 from fe80::beae:c5ff:fec3:a55

但我显然遗漏了决定调用 dhclient -6 的那个部分。

仅供参考:

$ cat /etc/network/interfaces | tail -5
# The primary network interface
auto p2p1
iface p2p1 inet dhcp
# This is an autoconfigured IPv6 interface
iface p2p1 inet6 auto

如果我将最后一行改为:

iface p2p1 inet6 dhcp

那么对我来说一切都说得通了。但我想坚持使用自动,因为这似乎是 ipv6 应该的工作方式。

我之所以选择这条路,是因为 isc-dhcp-client 根本不发送 dhcp6 查询(已在我的 openwrt 上使用 tcpdump 验证),但 dhcpc5 会发送。但切换到 dhcp5c 会导致网络管理器被卸载,从而导致其他麻烦。一旦我开始寻找,我想我还不如学着钓鱼。我希望在知道如何实际调用 dhclient -6 后,追踪我的确切问题应该很简单。

谢谢,克雷格

相关内容