一个适配器上的多个全局范围 IPv6 地址是否正常?

Ste*_*e-o 4 linux solaris ipv6

在 Linux 上设置 IPv6 非常简单,您可以遵循 IPv4 指南并给自己一个静态 IPv6 地址。

在 Solaris 上,事情并不那么乐观,IPv6 仅在运行in.ripng. 运行此程序后,您将在本地 LAN 段上获得 IPv6 地址自动配置。因此,虽然我为 Solaris 配置了一个静态 IPv6 地址,但最终我得到了三个地址,即链接本地作用域、静态全局作用域和一个自动配置的全局作用域:

lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
eri0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.6.28.36 netmask ffffff00 broadcast 10.6.28.255
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128 
eri0: flags=2100841<UP,RUNNING,MULTICAST,ROUTER,IPv6> mtu 1500 index 2
        inet6 fe80::203:baff:fe4e:6cc8/10 
eri0:1: flags=2100841<UP,RUNNING,MULTICAST,ROUTER,IPv6> mtu 1500 index 2
        inet6 2002:dce8:d28e::36/64 
eri0:2: flags=2180841<UP,RUNNING,MULTICAST,ADDRCONF,ROUTER,IPv6> mtu 1500 index 2
        inet6 2002:dce8:d28e:0:203:baff:fe4e:6cc8/64 
Run Code Online (Sandbox Code Playgroud)

eri0:1是我为匹配 IPv4 主机而简单选择的静态地址,eri0:2显示自动配置的地址重新使用来自链路本地接口的数字。

in.ripng配置为/etc/inet/ndpd.conf

ifdefault AdvSendAdvertisements true
prefixdefault AdvOnLinkFlag on AdvAutonomousFlag on

if eri0 AdvSendAdvertisements 1
prefix 2002:dce8:d28e::/64 eri0
Run Code Online (Sandbox Code Playgroud)

因此,自动配置扩展到 LAN 段上的所有其他主机,因此以前只有一个全局范围地址的 Linux 服务器现在产生两个:

eth0      Link encap:Ethernet  HWaddr 00:14:5e:bd:6d:da  
          inet addr:10.6.28.31  Bcast:10.6.28.255  Mask:255.255.255.0
          inet6 addr: 2002:dce8:d28e:0:214:5eff:febd:6dda/64 Scope:Global
          inet6 addr: fe80::214:5eff:febd:6dda/64 Scope:Link
          inet6 addr: 2002:dce8:d28e::31/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Run Code Online (Sandbox Code Playgroud)

这些是合理的配置吗?

让面向 Internet 的服务器从其 MAC 地址中获取地址似乎是不现实的。

从网络堆栈的开发角度来看,我想绑定到eth0IPv6,虽然忽略链接本地范围接口很简单,但我如何在两个全局范围地址之间进行选择?

由于两者具有相同的范围和前缀长度,因此很难应用RFC 3484排序规则。

编辑: Solaris 管理员的旁注,在查看系统配置后,我实际上现在可以在没有自动配置的情况下使静态寻址正常工作。

San*_*ann 5

这种情况是完全正常的。如果您不希望 Linux 机器自动配置 IPv6 地址,您可以随时在 /etc/sysctl.conf 中的 Linux 机器上关闭它:

net.ipv6.conf.eth0.autoconf = 0
Run Code Online (Sandbox Code Playgroud)