Manual:IPv6/Address

From MikroTik Wiki
Jump to navigation Jump to search
Version.png

Applies to RouterOS: v3, v4 +

Summary

Sub-menu: /ipv6 address
Standards: RFC 4291


IPv6 uses 16 bytes addresses compared to 4 byte addresses in IPv4. IPv6 address syntax and types are described in RFC 4291.

There are multiple IPv6 address types, that can be recognized by their prefix. RouterOS distinguishes the following:

  • multicast (with prefix ff00::/8)
  • link-local (with prefix fe80::/10)
  • loopback (the address ::1/128)
  • unspecified (the address ::/128)
  • other (all other addresses, including the obsoleted site-local addresses, and RFC 4193 unique local addresses; they all are treated as global unicast).

One difference between IPv6 and IPv4 addressing is that IPv6 automatically generates a link-local IPv6 address for each active interface that has IPv6 support.

EUI-64

IPv6 automatically generated addresses consist of two parts:

  • 64 bit long network prefix (usually manually configured for routers, and advertised via RADVD to host);
  • 64 bit long unique identifier.

The 64 bit unique ID is generated from hardware serial numbers or MAC addresses. In case of a 48 bit MAC address, this so called EUI-64 (Extended Unique Identifier) is generated by the following algorithm:

  1. use the first 3 bytes of the MAC address (OUI) as the first 3 bytes for the EUI-64, except that the second-least significant bit of the most significant byte is inverted;
  2. insert 0xFF and 0xFE as 4th and 5th bytes respectively for the EUI-64;
  3. use the last 3 bytes of the MAC address as the last 3 bytes for the EUI-64;

Ipv6eui64.png

In RouterOS, if the eui-64 parameter of an address is configured, the last 64 bits of that address will be automatically generated and updated using interface's MAC address. These last bits must be configured to be zero for this case. Example:

[admin@MikroTik] > ipv6 address add address=fc00:3::/64 interface=ether3 eui-64=yes
[admin@MikroTik] > ipv6 address print
Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local
 #    ADDRESS                                     INTERFACE                  ADVERTISE
 ...
 5  G fc00:3::20c:42ff:fe1d:3d4/64                ether3                     yes
[admin@MikroTik] > interface ethernet set ether3 mac-address=10:00:00:00:00:01
[admin@MikroTik] > ipv6 address print
Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local
 #    ADDRESS                                     INTERFACE                  ADVERTISE
 ...
 5  G fc00:3::1200:ff:fe00:1/64                   ether3                     yes

Stateless address autoconfiguration

Icon-note.png

Note: Stateless autoconfiguration does not work for routers!


RouterOS has stateless IPv6 address autoconfiguration router-side support using Router Advertisement Daemon (RADVD). Prefixes of all addresses with 64 bit netmask are advertised by default. Example:

 [admin@MikroTik] > ipv6 address print
 Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local
  #    ADDRESS                                     INTERFACE         ADVERTISE
  0  G fc00:1::1/64                                ether1            yes

'''/ipv6 nd prefixes print''' console command shows information about prefixes that are currently advertised:

 [admin@MikroTik] > ipv6 nd prefix print
 Flags: X - disabled, I - invalid, D - dynamic
  0 D prefix=fc00:1::/64 interface=ether1 on-link=yes autoconfig=yes
       valid-lifetime=4w2d preferred-lifetime=1w

On a host that is directly attached to the router we see that an address was added. The address consists of prefix part (first 64 bits) that takes prefix from the prefix advertisement, and host part (last 64 bits) that is automatically generated from local MAC address:

 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
 <b>    inet6 fc00:1::21a:4dff:fe56:1f4d/64 scope global dynamic
        valid_lft 2588363sec preferred_lft 601163sec</b>
     inet6 fe80::21a:4dff:fe56:1f4d/64 scope link
        valid_lft forever preferred_lft forever

The host has received the fc00:1::/64 prefix from the router and configured an address with it.

There is also an option to redistribute DNS server information using RADVD:

 [admin@MikroTik] > ip dns set secondary-dns=fc00:1::2
 [admin@MikroTik] > ip dns print
             primary-dns: 10.0.0.1
           secondary-dns: fc00:1::2
 ...
 [admin@MikroTik] > ipv6 nd set [f] advertise-dns=yes

You will need a running client side software with Router Advertisement DNS support to take advantage of the advertised DNS information.


See also: http://www.tcpipguide.com/free/t_IPv6Addressing.htm

Properties

Property Description
address (Address/Netmask; Default: ) Ipv6 address. Allowed netmask range is 0..128
advertise (yes | no; Default: no) Whether to enable stateless address configuration. The prefix of that address is automatically advertised to hosts using ICMPv6 protocol. The option is set by default for addresses with prefix length 64. Note that the prefix length must be equal to 64 for host autoconfiguration to work. Read more >>
comment (string; Default: ) Descriptive name of an item
disabled (yes | no; Default: no) Whether address is disabled or not. By default it is disabled
eui-64 (yes | no; Default: no) Whether to calculate last 64 bits of that address using interface's MAC address. Read more >>
interface (string; Default: ) Name of an interface on which Ipv6 address is set.


Read-only properties

Property Description
actual-interface (string) Actual interface on which address is set up. For example, if address was configured on ethernet interface and ethernet interface was added to bridge, then actual interface is bridge not ethernet.
dynamic (yes | no) Whether address is dynamically created
global (yes | no) Whether address is global
invalid (yes | no)
link-local (yes | no) Whether address is link local



[ Top | Back to Content ]