ts9*_*s90 4 networking router ipv6 dhcp-server
以下是信息:
Host link IP: fe80::9eec:b32d:855c:5589
Server link IP: fe80::f03c:91ff:fe11:96c4
Host global IP: 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727 (Ugh!)
Server global IP: 2601:aaaa:bbbb:cccc::1
Run Code Online (Sandbox Code Playgroud)
服务器已为 2601:aaaa:bbbb:cccc::/64 路由块
DHCP尝试将此 IP 分配给主机:2601:aaaa:bbbb:cccc:1000::fa8d
主机必须是通用的: 主机没有自定义网络配置作为要求。假定所有主机都是任何人都拥有的计算机,并且它们将它们插入并且它们应该可以在没有任何自定义的情况下工作。这意味着 dhclient 永远不应该在 IPv6 客户端上使用:一切都应该通过 SLAAC 或有状态的 SLAAC(我想要完成的)完成。
主机与默认为 IPv6 的浏览器配合得很好,并且无论是 IPv6 还是 IPv4,都可以访问所有站点。
主机网络:
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 28:d2:44:6b:bf:9f brd ff:ff:ff:ff:ff:ff
inet 172.21.0.102/24 brd 172.21.0.255 scope global dynamic noprefixroute enp0s25
valid_lft 39535sec preferred_lft 39535sec
inet6 2601:aaaa:bbbb:cccc:ec25:e54d:4255:6c76/64 scope global temporary dynamic
valid_lft 86199sec preferred_lft 14199sec
inet6 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86199sec preferred_lft 14199sec
inet6 fe80::9eec:b32d:855c:5589/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)
服务器的 radvd 配置:
root@li336-239:/var# cat /etc/radvd.conf
interface tap0
{
AdvSendAdvert on;
AdvManagedFlag on;
AdvOtherConfigFlag on;
prefix 2601:aaaa:bbbb:cccc::/64
{
AdvOnLink on;
AdvAutonomous on;
};
};
Run Code Online (Sandbox Code Playgroud)
在全局 IP 分配之前,主机和服务器可以毫无问题地看到对方:
Server: ping6 -c2 fe80::9eec:b32d:855c:5589%tap0 --> Success
Host: ping6 -c2 fe80::f03c:91ff:fe11:96c4%enp0s25 --> Success
Run Code Online (Sandbox Code Playgroud)
主机和服务器将彼此完美地视为具有链接 IP 和全局 IP 的邻居:
主机/服务器:ip -6 neigh --> 成功列出所有内容
ip6tables:所有 FORWARD 和 INPUT 链都不受限制:没有丢包
主机物理联机时的 DHCP 服务器:
10:16:39 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700
10:16:39 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds
10:16:39 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546
10:16:40 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700
10:16:40 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds
10:16:40 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546
10:16:42 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700
10:16:42 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds
10:16:42 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546
10:16:46 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700
10:16:46 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds
10:16:46 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546
10:16:55 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700
10:16:55 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds
10:16:55 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546
10:17:13 li336-239 dhcpd[5067]: Solicit message from fe80::9eec:b32d:855c:5589 port 546, transaction ID 0x83D90700
10:17:13 li336-239 dhcpd[5067]: Advertise NA: address 2601:aaaa:bbbb:cccc:1000::fa8d to client with duid 00:01:00:01:22:b0:4f:4a:28:d2:44:6b:bf:9f iaid = 1147912095 valid for 600 seconds
10:17:13 li336-239 dhcpd[5067]: Sending Advertise to fe80::9eec:b32d:855c:5589 port 546
Run Code Online (Sandbox Code Playgroud)
...但主机似乎将自己分配给 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727(每次都不同),如果我不希望这是有状态的,那就太好了。
物理连接时的主机:
root@some-computer:~# ip monitor
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default
link/ether 28:d2:44:6b:bf:9f brd ff:ff:ff:ff:ff:ff
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default
link/ether 28:d2:44:6b:bf:9f brd ff:ff:ff:ff:ff:ff
Deleted ff02::1:ff5c:5589 dev enp0s25 lladdr 33:33:ff:5c:55:89 NOARP
Deleted ff02::2 dev enp0s25 lladdr 33:33:00:00:00:02 NOARP
Deleted fe80::f03c:91ff:fe11:96c4 dev enp0s25 lladdr f2:3c:91:11:96:c4 router STALE
Deleted ff02::fb dev enp0s25 lladdr 33:33:00:00:00:fb NOARP
Deleted ff02::1:2 dev enp0s25 lladdr 33:33:00:01:00:02 NOARP
Deleted ff02::16 dev enp0s25 lladdr 33:33:00:00:00:16 NOARP
Deleted ff02::1:ff55:6c76 dev enp0s25 lladdr 33:33:ff:55:6c:76 NOARP
Deleted ff02::1:fff9:e727 dev enp0s25 lladdr 33:33:ff:f9:e7:27 NOARP
ff00::/8 dev enp0s25 table local metric 256 pref medium
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default
link/ether 28:d2:44:6b:bf:9f brd ff:ff:ff:ff:ff:ff
Deleted ff00::/8 dev enp0s25 table local metric 256 pref medium
ff00::/8 dev enp0s25 table local metric 256 pref medium
fe80::/64 dev enp0s25 proto kernel metric 256 pref medium
2: enp0s25 inet 172.21.0.102/24 brd 172.21.0.255 scope global dynamic noprefixroute enp0s25
valid_lft 39738sec preferred_lft 39738sec
local 172.21.0.102 dev enp0s25 table local proto kernel scope host src 172.21.0.102
broadcast 172.21.0.255 dev enp0s25 table local proto kernel scope link src 172.21.0.102
broadcast 172.21.0.0 dev enp0s25 table local proto kernel scope link src 172.21.0.102
172.21.0.0/24 dev enp0s25 proto kernel scope link src 172.21.0.102 metric 100
default via 172.21.0.1 dev enp0s25 proto dhcp metric 20100
ipv4 dev enp0s25 rp_filter loose
172.21.0.1 dev enp0s25 lladdr 00:e0:4c:68:3b:72 REACHABLE
169.254.0.0/16 dev enp0s25 scope link metric 1000
10.16.0.1 dev enp0s25 lladdr f2:3c:91:11:96:c4 REACHABLE
2: enp0s25 inet6 fe80::9eec:b32d:855c:5589/64 scope link
valid_lft forever preferred_lft forever
local fe80::9eec:b32d:855c:5589 dev enp0s25 table local proto kernel metric 0 pref medium
2: enp0s25 inet6 fe80::9eec:b32d:855c:5589/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Deleted fe80::/64 dev enp0s25 proto kernel metric 256 pref medium
fe80::/64 dev enp0s25 proto kernel metric 256 pref medium
fe80::/64 dev enp0s25 proto kernel metric 100 pref medium
2: enp0s25 inet 172.21.0.102/24 brd 172.21.0.255 scope global dynamic noprefixroute enp0s25
valid_lft 39736sec preferred_lft 39736sec
default via 172.21.0.1 dev enp0s25 proto dhcp metric 100
Deleted default via 172.21.0.1 dev enp0s25 proto dhcp metric 20100
fe80::f03c:91ff:fe11:96c4 dev enp0s25 lladdr f2:3c:91:11:96:c4 router STALE
2: enp0s25 inet6 fe80::9eec:b32d:855c:5589/64 scope link noprefixroute
valid_lft forever preferred_lft forever
2601:aaaa:bbbb:cccc::/64 dev enp0s25 proto ra metric 100 pref medium
default via fe80::f03c:91ff:fe11:96c4 dev enp0s25 proto ra metric 100 pref medium
[!!HERE--->] 2: enp0s25 inet6 2601:aaaa:bbbb:cccc:ec25:e54d:4255:6c76/64 scope global temporary dynamic
valid_lft 86399sec preferred_lft 14399sec
local 2601:aaaa:bbbb:cccc:ec25:e54d:4255:6c76 dev enp0s25 table local proto kernel metric 0 pref medium
[!!HERE--->] 2: enp0s25 inet6 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86399sec preferred_lft 14399sec
[!!HERE--->] local 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727 dev enp0s25 table local proto kernel metric 0 pref medium
Run Code Online (Sandbox Code Playgroud)
主机似乎分配给自己 2601:aaaa:bbbb:cccc:1854:46d6:c2f9:e727
您的路由器广告有AdvAutonomous on,它告诉他们网络支持无状态配置。如果您不想自主地址自动配置,请不要启用自主地址自动配置。
即使 RA 具有AdvManaged on,并且即使主机收到 DHCPv6 通告,这也适用。(RFC 4862:“应该注意的是,主机可以同时使用无状态地址自动配置和 DHCPv6。”)
这意味着 dhclient 永远不应该在 IPv6 客户端上使用:一切都应该通过 SLAAC 或有状态的 SLAAC(我想要完成的)完成。
没有“有状态的 SLAAC”这样的东西(实际上,“SL”代表“无状态”)。
SLAAC 广告最多可以提示客户端使用 DHCPv6——但它们不能强制客户端使用 DHCPv6。例如:
Linux 默认在内核中执行 SLAAC,内核不会自动 fork DHCP 客户端,dhclient -6也dhcpcd -6不会wide-dhcp6c。这仅在能够理解该标志(例如 NetworkManager 或 systemd-networkd)的用户空间已经运行时才会发生。
基本的 FreeBSDdhclient缺少 DHCPv6 支持;双版本在港口。
OpenBSD 中没有 DHCPv6 客户端(必须通过端口安装)。
Android 根本不支持 DHCPv6。
您的客户端似乎正在运行 NetworkManager,但即便如此,也不能保证它不需要手动配置,具体取决于它的版本以及安装的外部 DHCPv6 客户端。(如果dhcp=internal选中,则当前版本仅支持 DHCPv4。)
如果禁用自主配置(请参阅答案的第一部分),客户端也有可能仅尝试使用 DHCPv6 ,但最终会导致缺乏 DHCPv6 的客户端无法使用 IPv6。
如果您的目标是问责制,我会改为保留 IPv6 地址到 MAC 地址关联的日志。这可以通过监视 Neighbor Advertisements 或通过观察路由器的 ND 缓存 ( ip -6 neigh) 来实现,优点是它可以在任何机制下工作——SLAAC、隐私扩展、DHCPv6、DHCPv4,甚至静态配置的地址也将被跟踪。
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |