概述
标准: RFC 2462,RFC 2461,RFC 4861
Routeros使用路由器通告守护程序(RADVD)具有IPv6邻居发现和无状态地址自动配置支持。
节点描述
节点是实现IPv6的设备。 在IPv6网络中,节点分为两种类型:
路由器 - 转发IPv6数据包的节点未明确地解决自身。
主机 - 任何不是路由器的节点。
路由器和主机严格分开,这意味着路由器不能是主机,并且主机不能同时是路由器。
无状态地址自动配置
有几种类型的自动配置:
stateless -地址配置是通过接收路由器通告消息来完成的。 这些消息包括无状态地址前缀,并要求主机不使用状态地址配置协议。
stateful -地址配置是通过使用状态地址配置协议(DHCPV6)完成的。 如果RA消息不包括地址前缀,则使用状态协议。
BOTH - RA消息包括无状态地址前缀,并要求主机使用状态地址配置协议。
IPv6的一个非常有用的功能是能够在不使用诸如DHCP之类的状态配置协议的情况下自动配置自身(请参阅)。
注意: 地址自动配置只能在具有多播功能的界面上执行。
IPv6子网前缀
默认路由器链接 - 本地地址
可能是可选的其他参数:链接MTU,默认的HOP限制和路由器寿命。
然后主机捕获广播,配置全局IPv6地址和默认路由器。 全局IPv6地址是由广播 子网前缀 生成和eui-64 界面标识符。
主机可以通过发送ICMPV6“路由器通告”数据包来询问路由器的广播,这是可选的。 在Linux rtsol 实用程序传输路由器请求数据包。 如果正在运行移动节点,则可能需要定期发送路由器请求。
地址状态
当一个自动配置的地址被分配时,它可以处于以下状态之一:
tentative - 在这种状态下,主机会验证地址是否唯一。验证是通过重复的地址检测进行的。
preferred - 在此状态下,地址被验证为唯一的,节点可以发送和接收来自首选地址的单播流量。优先状态的时间段包含在RA消息中。
deprecated - 该地址仍然有效,但不用于新的连接。
invalid - 节点不能再发送或接收单播流量。一个地址在有效期限过后进入无效状态。
下面的图片说明了状态和寿命之间的关系。
邻居发现
Sub-menu: /ipv6 nd
在这个子菜单中,配置了IPv6邻居发现(ND)协议。
邻居发现(ND)是一组确定相邻节点之间关系的消息和过程。与IPv4相比,ND取代了地址解析协议(ARP)、互联网控制消息协议(ICMP)路由器发现和ICMP重定向,并提供额外的功能。
ND被主机用:
发现邻近的路由器。
发现地址、地址前缀和其他配置参数。
路由器使用ND来:
广播他们的存在、主机配置参数和链路前缀。
通知主机一个更好的下一跳地址来转发数据包到特定的目的地。
节点用ND来:
解决被转发的IPv6数据包的邻接节点的链路层地址,并确定邻接节点的链路层地址何时改变。
确定IPv6数据包是否可以发送到邻居和从邻居接收。
属性
| 属性 | 说明 |
|---|---|
| advertise-dns (yes | no; Default: no) | 选择使用RADVD重新分配DNS服务器信息。需要一个运行中的支持Router Advertisement DNS的客户端软件,以利用广播的 DNS 信息。 阅读更多 |
| advertise-mac-address (yes | no; Default: yes) | 设置时,出站接口的链路层地址将包括在RA中。 |
| comment (string; Default: ) | 项目的描述名称。 |
| dns-servers (unspecified ipv6 addresses; Default: unspecified) | 指定单个IPv6地址或地址列表,提供给主机用于配置DNS服务器。 |
| disabled (yes | no; Default: no) |
| hop-limit (unspecified| integer[0..255]; Default: unspecified) | 放在出站(单播)IP数据包的IP头的Hop Count字段中的默认值。 |
| interface (all | string; Default: ) | 运行邻居发现的接口。 - all - 在所有运行的接口上运行ND。 |
| managed-address-configuration (yes | no; Default: no) | 该标志表明主机是否应该使用有状态的自动配置(DHCPv6)来获得地址。 |
| mtu (unspecified | integer[0..4294967295]; Default: unspecified) | MTU选项在路由器广播信息中使用,确保在链路MTU不为人所知的情况下,链路上的所有节点使用相同的MTU值。 - unspecified - 不发送MTU选项。 |
| other-configuration (yes | no; Default: no) | 该标志表明主机是否应该使用有状态的自动配置来获得额外的信息(不包括地址)。 |
| pref64-prefixes (unspecified | ipv6 prefixes; Default: unspecified) | 指定IPv6前缀或/32, /40. /48、/56、/64或/96子网内的IPv6前缀或前缀列表,它们将作为NAT64前缀提供给主机。 |
| ra-delay (time; Default: 3s) | 从接口发送多播路由器广播之间允许的最小时间。 |
| ra-interval (time[3s..20m50s]-time[4s..30m]; Default: 3m20s-10m) | 允许从接口发送非请求多播路由器广播的最小-最大间隔时间。 |
| ra-preference (low | medium | high; Default: medium) | 指定通过路由器广播传达给IPv6主机的路由器偏好。路由器广播中的 "preference "值使IPv6主机能够选择一个默认的路由器来到达远程目的地。 |
| ra-lifetime (none | time; Default: 30m) | |
| reachable-time (unspecified | time[0..1h]; Default: unspecified) | 一个节点在收到可达性确认后假设邻居可达的时间。由邻居不可达性检测算法使用(见RFC 2461第7.3节) |
| retransmit-interval (unspecified | time; Default: unspecified) | 重发邻居请求信息的间隔时间。用于地址解析和邻居不可达性检测算法(见RFC 2461第7.2和7.3节)。 |
如果ND是由LTE配置自动生成的,那么RA的最大寿命将被限制在1小时。
前缀
Sub-menu: /ipv6 nd prefix。
无状态地址自动配置所使用的RA消息中发送的前缀信息。
注意: 自动配置过程只适用于主机,而不是路由器。
属性
| 属性 | |
|---|---|
| 6to4-interface (none | string; Default: ) | 如果指定了这个选项,这个前缀将与接口名称的IPv4地址相结合,产生一个有效的6to4前缀。这个前缀的前16位将被2002替换,接下来的32位将被配置时分配给接口名称的IPv4地址替换。前缀的其余80位(包括SLA ID)将按照配置文件中的规定进行宣传。 |
| autonomous (yes| no; Default: yes) | 设置时,表示此前缀可用于自治地址配置。否则,前缀信息将沉默忽略。 |
| comment (string; Default: ) | 一个项目的描述名称。 |
| disabled (yes | no; Default: no) | 项目是否被禁用。默认情况下是启用的。 |
| on-link (yes| no; Default: yes) | 设置时表示该前缀可用于确定on-link。未设置时,通告不对前缀的链路上或链路下的属性做任何说明。例如,该前缀可能被用于地址配置,其中一些属于该前缀的地址是链路上的,而另一些则是链路外的。 |
| preferred-lifetime (infinity | time; Default: 1w) | 时间框架(相对于数据包的发送时间),在这之后,生成的地址会变成 "废弃的"。废弃的只用于已经存在的连接,并且在有效期限到期之前可以使用。 阅读全文 |
| prefix (ipv6 prefix; Default: ::/64) | 一个前缀,无状态地址自动配置由此产生有效地址。 |
| valid-lifetime (infinity | time; Default: 4w2d) | 地址保持有效状态的时间长度(相对于数据包的发送时间)。有效寿命必须大于或等于首选寿命。 阅读全文 |
| interface (string; Default: ) | 无状态自动配置运行的接口名称。 |
邻居列表
Sub-menu: /ipv6 neighbor
通过IPv6邻居发现协议(邻居缓存)发现的所有节点列表。
只读属性
| 属性 | 描述 |
|---|---|
| address (ipv6 address) | 节点的链接本地地址。 |
| comment (string) | |
| interface (string) | 检测到该节点的接口。 |
| mac-address (string) | 被发现节点的Mac地址。 |
| router (yes | no) | 被发现的节点是否是一个路由器 |
| status (noarp | incomplete | stale | reachable | delay | probe) | 缓存条目的状态: - noarp - 邻居条目是有效的。不会尝试验证这个条目,寿命到期时,可以将其删除。 - incomplete - 地址解析正在进行中,邻居的链路层地址还没有确定; - reachable -已知该邻居最近(几十秒前)是可以到达的; - stale - 邻居不再是已知可达的,但在向邻居发送流量之前,不尝试验证其可达性; - delay - 邻居不再是已知可达的,并且最近向邻居发送了流量,探测被延迟了一小段时间,以便给上层协议提供可达性确认的机会; - probe - 邻居不再是已知可达的,并且正在发送单播邻居请求探测以验证可达性。 |
示例
无状态自动配置的例子
[admin@MikroTik] > ipv6 address print
Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local
# ADDRESS INTERFACE ADVERTISE
0 G 2001:db8::1/64 ether1 yes
一个例子,advertise 标志启用,表明动态添加了 /ipv6 nd prefix 条目
[admin@MikroTik] > ipv6 nd prefix print
Flags: X - disabled, I - invalid, D - dynamic
0 D prefix=2001:db8::/64 interface=ether1 on-link=yes autonomous=yes
valid-lifetime=4w2d preferred-lifetime=1w
在一个直接连接到路由器的主机上看到一个地址被添加。该地址由前缀部分(前64位)和主机部分(后64位)组成,前者从前缀广播中获取前缀,后者从本地MAC地址中自动生成:
atis@atis-desktop:~$ ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:db8::21a:4dff:fe56:1f4d/64 scope global dynamic
valid_lft 2588363sec preferred_lft 601163sec
inet6 fe80::21a:4dff:fe56:1f4d/64 scope link
valid_lft forever preferred_lft forever
主机已经从路由器收到_2001:db8::/64_前缀,并用它配置了一个地址。
还有一个选项是使用RADVD重新分配 DNS 服务器信息:
[admin@MikroTik] > ip dns set server=2001:db8::2
[admin@MikroTik] > ip dns print servers: 2001:db8::2
...
[admin@MikroTik] > ipv6 nd set [f] advertise-dns=yes
需要一个支持路由器广播DNS的客户端软件来广播DNS信息。
在Ubuntu/Debian Linux发行版上,可以安装 rdnssd 包,它能接收广播的DNS地址。
mrz@bumba:/$ sudo apt-get install rdnssd
mrz@bumba:/$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 2001:db8::2
mrz@bumba:/$ ping6 www.mikrotik.com
PING www.mikrotik.com(2a02:610:7501:1000::2) 56 data bytes
64 bytes from 2a02:610:7501:1000::2: icmp_seq=1 ttl=61 time=2.11 ms
64 bytes from 2a02:610:7501:1000::2: icmp_seq=2 ttl=61 time=1.33 ms
^C
--- www.mikrotik.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.334/1.725/2.117/0.393 ms
mrz@bumba:/$