Linux – ipv6: `ifconfig` shows “Scope:Link” . What is “Scope:Link”

ipv6linux

I'm on a RedHat 6 box. IPv6 is enabled by default, and all interfaces have been assigned an IPv6 address.

ifconfig reports that these IPv6 addresses have the Scope of 'Link'.

% ifconfig
eth0 Link encap:Ethernet HWaddr 00:24:90:AA:BB:1A
inet addr:192.168.10.100 Bcast:192.168.10.255
Mask:255.255.255.0
inet6 addr: fe80::224:90ff:feaa:bb1a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth1 Link encap:Ethernet HWaddr 00:24:90:AA:BB:1B
inet addr:10.8.8.44 Bcast:10.8.8.255 Mask:255.255.255.0
inet6 addr: fe80::224:90ff:feaa:bb1b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

What does 'Scope:Link' mean? I see that the latter part of the IPv6 address is similar to the MAC address of the NIC. Are other devices on the same network segment able to ping this device, even though I have not explicitly set up an IPv6 address?

Why does this Scope not appear for my IPv4 addresses? Is "Scope:Link" a IPv6-only concept?

Best Answer

Link scope, fe80::/10 (it's practically implemented as a /64, but the whole /10 is reserved), is isolated to devices on a layer 2 segment. You can use a device's fe80 address to communicate within the segment, but you'll need an address with a different scope to do any communication that requires routing outside of the segment.


Regarding your edit: While the idea of a private addressing is certainly in place in IPv4 (169.254/16 and the RFC 1918 ranges), the implementation of those is somewhat different due to the prevalence of NAT. In contrast, link-scope addresses and the fc00::/7 range (which is roughly equivalent to the RFC1918 ranges of IPv4) exist and are used alongside the global address of each device.

Special handling is in place in many implementations to account for an address' scope that wasn't needed in IPv4 implementations.