Page tree
Skip to end of metadata
Go to start of metadata

В этой статье мы рассмотрим настройку коммутаторов SNR в качестве Stateful DHCP сервера, функционал IPv6 Prefix Delegation и использование опций 37 и 38.

Домашние пользователи обычно подключаются к интернету через CPE (например Wi-Fi роутеры), а не напрямую. Для таких абонентов мы будем использовать Prefix Delegation, который сообщает CPE его часть префикса, а остальную тот добавляет сам и раздает своим хостам global-unicast адреса. Для другой части абонентов мы будем использовать классическую выдачу IPv6 адресов из пула, опираясь на опции 37 и 38 в полях DHCPv6 пакетов.

Stateful DHCPv6

Привычный для DHCPv4 метод выделения IPv6 адресов из заранее определенного пула. Клиент отправляет Router Solicitation (RS) сообщения с запросом информации о способе динамического получения IPv6 адреса. В ответ, от ближайшего маршрутизатора, он получает Router Advertisment (RA) сообщение, в котором содержится default gateway (link-local адрес этого маршрутизатора) и флаг 'M'. Такой флаг говорит клиенту о необходимости обратиться к DHCPv6 серверу для получения IPv6 адреса и других реквизитов stateful методом.

DHCPv6 опции 37 и 38

Коммутаторы SNR могут присваивать DHCPv6 пакетам две опции - 37 Remote-ID (rfc4649) и 38 Subscriber-ID (rfc4580), которые являются аналогами Option 82 в IPv4. Возможные форматы для обоих - ascii (default) и hex.

IPv6 Prefix Delegation

CPE инициирует DHCPv6-PD в его SOLICIT сообщении. REPLY сообщение содержит в себе IPv6 префикс. Этот префикс CPE будет использовать для выделения IPv6 адресов своим клиентам во внутренней сети. Если делегируемый префикс короче /64, то CPE может выделять несколько подсетей. В нашем случае префикс /54, значит CPE может создать 256 /64-сетей.

Приступим к конфигурации L3-коммутатора. Включим DHCPv6 сервер и его поддержку им опций 37, 38.

(config)#service dhcpv6 
(config)#ipv6 dhcp server remote-id option 
(config)#ipv6 dhcp server subscriber-id option

Создадим dhcp-класс NAG, с помощью которого мы будем сверять значения в опциях 37, 38 и укажем данные нашего коммутатора

(config)#ipv6 dhcp class NAG  
(dhcpv6-class-nag-config)#remote-id f8-f0-82-75-cd-41 subscriber-id vlan200+Ethernet1/0/2
(dhcpv6-class-nag-config)#exit

Определим делегируемый префикс и создадим пул для раздачи IPv6 адресов устройствам через CPE

(config)#ipv6 local pool DHCPV6-PD-POOL 2001:db8:abcd:e000::/52 56
(config)#ipv6 dhcp pool DHCP-POOL 
(dhcpv6-dhcp-pool-config)#prefix-delegation pool DHCPV6-PD-POOL lifetime 600 200
(dhcpv6-dhcp-pool-config)#dns-server 2001:db8:cafe:9::99
(dhcpv6-dhcp-pool-config)#domain-name ipv6.org
(dhcpv6-dhcp-pool-config)#exit

Настроим второй пул для раздачи IPv6 адресов stateful методом с использованием класса NAG. Абоненты, подключенные через L2-коммутатор, будут получать адреса в диапазоне 2001:db8:cafe:9::120 - 150

(config)#ipv6 dhcp pool DHCP-POOL2
(dhcpv6-dhcp-pool2-config)#network-address 2001:db8:cafe:9::100 2001:db8:cafe:9::200                      
(dhcpv6-dhcp-pool2-config)#excluded-address 2001:db8:cafe:9::1
(dhcpv6-dhcp-pool2-config)#dns-server 2001:db8:cafe:9::99
(dhcpv6-dhcp-pool2-config)#domain-name ipv6.org
(dhcpv6-dhcp-pool2-config)#class NAG
(dhcpv6-pool-dhcp-pool2-class-nag-config)#address range 2001:db8:cafe:9::120 2001:db8:cafe:9::150
(dhcpv6-pool-dhcp-pool2-class-nag-config)#exit
(dhcpv6-dhcp-pool2-config)#exit

Включим добавление опций 37, 38 DHCPv6 пакетам

(config)#savi enable
(config)#ipv6 dhcp snooping remote-id option
(config)#ipv6 dhcp snooping subscriber-id option

Примечание

Включение механизма SAVI необходимо для использования snooping.

Выставим режим работы портов

(config)#int e1/0/1
(config-if-ethernet1/0/1)#switchport access vlan 100
(config-if-ethernet1/0/1)#int e1/0/2
(config-if-ethernet1/0/2)#switchport mode trunk 
(config-if-ethernet1/0/2)#switchport trunk allowed vlan 200
(config-if-ethernet1/0/2)#exit

Назначим SVI IPv6 адреса, используемые пулы и установим флаги в RA сообщениях

(config)#int vlan100
(config-if-vlan100)#ipv6 address 2001:db8:abcd:e000::1/64
(config-if-vlan100)#ipv6 dhcp server DHCP-POOL
(config-if-vlan100)#int vlan200
(config-if-vlan200)#ipv6 address 2001:db8:cafe:9::1/64
(config-if-vlan200)#no ipv6 nd suppress-ra
(config-if-vlan200)#ipv6 nd managed-config-flag
(config-if-vlan200)#ipv6 dhcp server DHCP-POOL2

Проверим статус выдачи адресов

#sh ipv6 dhcp binding 

Creating DHCPv6 binding table...

The number of DHCPv6 bindings is 2
 Client: fe80::faf0:82ff:fe7a:2afb (Vlan100)
  DUID: 00030001f8f0827a2afb
    IA PD: IA ID 11100, T1 100, T2 160
       Prefix: 2001:db8:abcd:e000::/56
            preferred lifetime 200, valid lifetime 600
            expires at Mon Apr 13 10:50:51 2020 (549 seconds)
Client: iatype IANA, iaid 0xbb71d300
  DUID: 00:01:00:01:26:26:fa:ec:38:63:bb:71:d3:00
  IANA leased address: 2001:db8:cafe:9::120
  Preferred lifetime 604800 seconds, valid lifetime 2592000 seconds
  Lease obtained at %Apr 13 10:41:13 2020 
  Lease expires at %May 13 10:41:13 2020  (2591971 seconds left)