๐ฏ Lab Objectives
- Understand the IPv6 address format and types
- Configure global unicast and link-local addresses
- Use EUI-64 to auto-generate interface IDs
- Configure SLAAC for automatic address assignment
- Configure IPv6 static routes
IPv4 exhaustion is real โ all 4.3 billion IPv4 addresses are allocated. IPv6 provides 340 undecillion addresses (3.4ร10ยณโธ). The internet backbone is already dual-stack. CCNA tests both.
Step 1 โ Why IPv6?
# IPv4 problems IPv6 solves:
Problem 1: Address exhaustion (only 4.3 billion IPv4 addresses)
IPv6 fix: 128-bit addresses = 340 undecillion addresses
Problem 2: NAT complexity (private โ public translation)
IPv6 fix: every device gets a globally unique public address
Problem 3: No built-in security
IPv6 fix: IPSec mandatory (though often optional in practice)
Problem 4: Fragmentation at every hop
IPv6 fix: only source can fragment; routers don't
# IPv4 vs IPv6:
IPv4: 32-bit โ 192.168.1.1
IPv6: 128-bit โ 2001:0db8:85a3:0000:0000:8a2e:0370:7334
Step 2 โ IPv6 Address Types
# IPv6 address format: 8 groups of 4 hex digits, separated by :
2001:0db8:85a3:0000:0000:8a2e:0370:7334
# Abbreviation rules:
# 1. Drop leading zeros: 0db8 โ db8, 0000 โ 0
2001:db8:85a3:0:0:8a2e:370:7334
# 2. Replace consecutive all-zero groups with :: (once only!)
2001:db8:85a3::8a2e:370:7334
# IPv6 address types:
Global Unicast (GUA): 2000::/3 โ like public IPv4, routable on internet
Example: 2001:db8::/32 (documentation range)
Link-Local: FE80::/10 โ only valid on local segment, NOT routed
Every IPv6 interface auto-generates one (FE80::...)
Used for: neighbor discovery, routing protocol hello packets
Loopback: ::1 โ like 127.0.0.1 in IPv4
Unspecified: :: โ like 0.0.0.0 in IPv4
Multicast: FF00::/8 โ like 224.0.0.0/4 in IPv4
Unique Local: FC00::/7 โ like private IPv4 (not internet routable)
Step 3 โ Configure IPv6 on Cisco
# Enable IPv6 routing (required on routers)
ipv6 unicast-routing
# Configure a Global Unicast Address (GUA):
interface GigabitEthernet0/0
ipv6 address 2001:db8:1::1/64
no shutdown
# The /64 prefix is standard for most IPv6 subnets
# /64 means first 64 bits = network, last 64 bits = host
# Link-local is auto-generated but you can set it manually:
interface GigabitEthernet0/0
ipv6 address FE80::1 link-local
# Configure multiple addresses on one interface:
interface GigabitEthernet0/0
ipv6 address 2001:db8:1::1/64
ipv6 address 2001:db8:2::1/64
ipv6 address FE80::1 link-local
no shutdown
Step 4 โ EUI-64 (Auto Interface ID)
# EUI-64 generates the 64-bit host portion from the MAC address
# Process:
MAC: 00:50:56:AB:CD:EF (48-bit)
Step 1: Split into two halves: 0050:56 | ABCDEF
Step 2: Insert FF:FE in middle: 0050:56FF:FEAB:CDEF
Step 3: Flip bit 7 of first byte: 00 โ 02 (universal/local bit)
Result: 0250:56FF:FEAB:CDEF
With prefix 2001:db8::/64:
Full IPv6 address: 2001:db8::0250:56FF:FEAB:CDEF
# Configure EUI-64 on Cisco (let the router auto-generate the host part):
interface GigabitEthernet0/0
ipv6 address 2001:db8:1::/64 eui-64
no shutdown
# Verify what address was generated:
show ipv6 interface GigabitEthernet0/0
Step 5 โ SLAAC & DHCPv6
# SLAAC = Stateless Address Autoconfiguration
# Hosts auto-configure IPv6 without a DHCP server
# How SLAAC works:
1. Router sends RA (Router Advertisement) every 200 seconds
โ Contains: prefix (e.g. 2001:db8:1::/64), default gateway, flags
2. Host receives RA
3. Host generates interface ID (EUI-64 or random)
4. Host combines: RA prefix + interface ID = full IPv6 address
5. Host uses router's link-local address as default gateway
# Enable SLAAC on router interface:
interface GigabitEthernet0/0
ipv6 address 2001:db8:1::1/64
ipv6 nd ra interval 30 # send RA every 30 seconds (default 200)
no ipv6 nd ra suppress # make sure RAs are sent
# Stateful DHCPv6 (server assigns full address, like DHCPv4):
ipv6 dhcp pool IPV6_POOL
address prefix 2001:db8:1::/64
dns-server 2001:4860:4860::8888 # Google's IPv6 DNS
domain-name kalirange.local
interface GigabitEthernet0/0
ipv6 dhcp server IPV6_POOL
ipv6 nd managed-config-flag # tells hosts to use DHCPv6 for address
Step 6 โ IPv6 Static Routes
# IPv6 static route syntax:
# ipv6 route DESTINATION/PREFIX NEXT-HOP
# Next-hop by IPv6 address:
ipv6 route 2001:db8:2::/64 2001:db8:12::2
# Next-hop by link-local address (must specify exit interface too!):
ipv6 route 2001:db8:2::/64 GigabitEthernet0/1 FE80::2
# IPv6 default route:
ipv6 route ::/0 FE80::1 GigabitEthernet0/0
# Floating static (backup) โ higher admin distance:
ipv6 route 2001:db8:2::/64 FE80::3 GigabitEthernet0/2 200
Step 7 โ Verify IPv6
# Show all IPv6 addresses on all interfaces
show ipv6 interface brief
GigabitEthernet0/0 [up/up]
FE80::1 โ link-local (auto)
2001:DB8:1::1 โ global unicast (configured)
# Show IPv6 routing table
show ipv6 route
C 2001:DB8:1::/64 [0/0] via GigabitEthernet0/0, directly connected
S 2001:DB8:2::/64 [1/0] via FE80::2, GigabitEthernet0/1
# Ping IPv6
ping ipv6 2001:db8:2::1
ping 2001:db8::1 source Gi0/0 # source-specific ping
# Ping link-local (must specify interface):
ping FE80::1 GigabitEthernet0/0
# Show neighbour discovery table (IPv6 equivalent of ARP table)
show ipv6 neighbors
# On Linux:
ip -6 addr show # IPv6 addresses
ip -6 route show # IPv6 routes
ping6 2001:db8::1 # IPv6 ping
Lab Complete! IPv6 appears on every CCNA exam. Know the address types, /64 prefix convention, SLAAC, EUI-64, and how IPv6 routing differs from IPv4 (link-local next-hops need exit interface specified).