CCNA Configuring IPv6

Lab Topology

This topology consists of five routers. R1 will provide IP addressing information for the other four. R5 is already configured, and you must configure R2 to R4.

Lab Files

Initial ConfigDownload

See general lab information to get started.

Challenge – Scenario

You have a network with five routers. R2 – R5 connects to R1. R1 needs to provide each of the other routers’ IPv6 information.

R1/R2 should be configured with Stateless DHCP.

R1/R3 should be configured to use SLAAC.

R1/R4 should be configured to use stateful DHCP.

R1/R5 is already configured with SLAAC. However, it is not working, so you need to troubleshoot it and resolve the issue.

Challenge – Solution

R1 / R2 – Stateless DHCP

Step 1 for all these requirements is to enable IPv6 unicast routing on R1. You might notice it’s not on yet, which might explain part of why R5 is failing (but we’ll come back to that later).

R1(config)#ipv6 unicast-routing

Next, we can create a DHCP pool. This pool has a DNS server and domain name set. Of course, we don’t actually have a DNS server in this lab…

R1(config)#ipv6 dhcp pool Stateless_DHCP
R1(config-dhcpv6)#dns-server 2001:db8:ab::100

The following step is to configure the interface on R1. This is the interface that connects to R2.

This includes setting an IPv6 address, selecting the DHCP pool that this interface will use when responding to requests, and enabling the ‘other config flag’

R1(config)#interface gi0/0
R1(config-if)#description Link to R2
R1(config-if)#ipv6 address 2001:db8:ab::1/64
R1(config-if)#ipv6 dhcp server Stateless_DHCP
R1(config-if)#ipv6 nd other-config-flag
R1(config-if)#no shut

On R2, we just need to enable IPv6 unicast routing, and configure the interface to request a DHCP address:

R2(config)#ipv6 unicast-routing
R2(config)#int gi0/0
R2(config-if)#description Link to R1
R2(config-if)#ipv6 address autoconfig
R2(config-if)#no shut

We can confirm that this interface successfully gets an IP address:

R2#show ipv6 interface brief
GigabitEthernet0/0     [up/up]

R1 / R3 – SLAAC

Configuring R1 for SLAAC is very simple. We just need an interface with an active IPv6 address:

R1(config)#interface gi0/1
R1(config-if)#description Link to R3
R1(config-if)#ipv6 address 2001:db8:ab:1::1/64
R1(config-if)#no shut 

The R3 side is also quite simple. It is just enabling an interface, and telling it to get it’s IP through ‘autoconfig’:

R3(config)#int gi0/0
R3(config-if)#description Link to R1
R3(config-if)#ipv6 address auto
R3(config-if)#ipv6 address autoconfig 
R3(config-if)#no shut

And we can see that this works:

R3#show ipv6 interface brief 
GigabitEthernet0/0     [up/up]

R1 / R4 – Stateful DHCP

The first step is to define the DHCP pool. This includes a prefix this time, as this is stateful DHCP. That is, DHCP doesn’t use the prefix on the configured interface, it uses the prefix that we tell it to use:

R1(config)#ipv6 dhcp pool Stateful_DHCP
R1(config-dhcpv6)#address pref
R1(config-dhcpv6)#address prefix 2001:db8:ab:2::/64
R1(config-dhcpv6)#dns-server 2001:db8:ab::100

Next is the configuration of the interface itself. Notice that we’re telling NDP to use the ‘managed config’ flag? This means that NDP won’t attempt to use SLAAC on this interface. We’ve told it that we’ll use stateful DHCP instead.

R1(config)#interface gi0/2
R1(config-if)#description Link to R4
R1(config-if)#ipv6 address 2001:db8:ab:2::1/64
R1(config-if)#ipv6 dhcp server Stateful_DHCP
R1(config-if)#ipv6 nd managed-config-flag
R1(config-if)#no shut

Over on R4, we enable IPv6 unicast routing, and then enable IPv6 on the interface. We then tell the interface to get an IP using DHCP (not static, and not SLAAC).

R4(config)#ipv6 unicast-routing 

R4(config)#interface gi0/0
R4(config-if)#description Link to R1
R4(config-if)#ipv6 enable
R4(config-if)#ipv6 address dhcp
R4(config-if)#no shut

And, confirming this works:

R4#show ipv6 interface brief 
GigabitEthernet0/0     [up/up]

Back on R1, we can dig up some DHCP stats:

R1#show ipv6 dhcp binding 
Client: FE80::5054:FF:FE04:9B93 
  DUID: 00030001525400049B93
  Username : unassigned
  VRF : default
  IA NA: IA ID 0x00020001, T1 43200, T2 69120
    Address: 2001:DB8:AB:2:7D40:350D:CC1B:5D44
            preferred lifetime 86400, valid lifetime 172800
            expires at Apr 10 2022 03:12 AM (172679 seconds)

Notice that the client is identified by its link-local address?

R1 / R5 – Troubleshooting

So, SLAAC isn’t working between R1 and R5…

We’ve already configured SLAAC between R1 and R3. The simplest troubleshooting would be to compare the configuration of those two interfaces:

R1#show run int gi0/1
Building configuration...

Current configuration : 151 bytes
interface GigabitEthernet0/1
 description Link to R3
 no ip address
 duplex auto
 speed auto
 media-type rj45
 ipv6 address 2001:DB8:AB:1::1/64

R1#show run int gi0/3
Building configuration...

Current configuration : 148 bytes
interface GigabitEthernet0/3
 no ip address
 duplex auto
 speed auto
 media-type rj45
 ipv6 address 2001:DB8:AB:3::1/64
 ipv6 nd ra suppress

Yep, there’s definitely one line that’s different. On interface gi0/3 we have:

ipv6 nd ra suppress

What’s this doing? This is suppressing NDP Router Advertisement messages on that interface. SLAAC needs NDP to share prefix information, so this has to be removed.

R1(config)#int gi 0/3
R1(config-if)#no ipv6 nd ra suppress