あんたいとる

無駄の中に宝がある!

【CCNP ENARSI】 DHCPとIPv6アドレス

個人的な学習メモです。試験の範囲を網羅しているわけではないので注意してください。
網羅的に学習したい場合は、参考資料欄の情報を確認してください。

DHCP

基本

メッセージ 用途
DHCPDISCOVER利用可能なサーバーを見つける為の、クライアントによるブロードキャスト。UDP ポート 67 を使用。
DHCPOFFERサーバーからクライアントへの DHCPDISCOVER に対する応答。構成パラメータの内容を含む。UDP ポート 68 を使用
DHCPREQUEST クライアントからサーバーへの、次の何れかのメッセージ。(a) 提供されたパラメータをあるサーバーから要求し、暗黙的にその他すべてのサーバーからの申し出を断る。(b) 例えばシステムリブート後に、前に割当てられていたアドレスの正当性を確認する。(c) ある特定のネットワークアドレスのリースを延長する。
DHCPACK決定したネットワークアドレスを含む構成パラメータを持つ、サーバーからクライアントへのメッセージ
DHCPNAKクライアントのネットワークアドレスの考えが間違っている事(例 クライアントが新しいサブネットに移動した)、またはクライアントのリースが期限切れである事を示す為に、サーバーからクライアントへ。
DHCPDECLINE ネットワークアドレスが既に利用されている事を示す為に、クライアントからサーバーへ。
DHCPRELEASE ネットワークアドレスを放棄し残りのリースをキャンセルする為に、クライアントからサーバーへ。
DHCPINFORM ローカルの構成パラメータを問合せる為だけにクライアントからサーバーへ。クライアントは既に他からネットワークアドレスを設定されている。

設定例

構成

ネットワーク:192.168.1.0/24
DHCPサーバ: 192.168.1.5
DHCP割当範囲:192.168.1.100 - 192.168.1.250
DHCP除外IP: 192.168.1.1 - 192.168.1.10
デフォルトGW:192.168.1.1
DNSサーバ:10.1.1.1、10.2.2.2

Cisco機器での設定コマンド

DHCPサーバ
DHCPServer#conf t
DHCPServer(config)#! DHCPサービスを有効にする
DHCPServer(config)# service dhcp
DHCPServer(config)#! DHCP除外アドレス設定
DHCPServer(config)# ip dhcp excluded-address 192.168.1.1 192.168.1.10
DHCPServer(config)#! DHCPプール設定 
DHCPServer(config)#ip dhcp pool POOL
DHCPServer(dhcp-config)#! ネットワークの設定
DHCPServer(dhcp-config)#network 192.168.1.0 255.255.255.0
DHCPServer(dhcp-config)#! デフォルトGWの設定
DHCPServer(dhcp-config)#default-router 192.168.1.1
DHCPServer(dhcp-config)#! DNSサーバ設定
DHCPServer(dhcp-config)#dns-server 10.1.1.1 10.2.2.2

DHCPクライアント設定

DHCPClient#conf t
DHCPClient(config)#! ethernet 0/0にDHCPでIPアドレスを割当て
DHCPClient(config)#int ethernet 0/0
DHCPClient(config-if)#ip address dhcp

DHCPリレーエージェント

DHCPサーバとDHCPクライアントが別ネットワークの場合には、DHCPクライアントからのDHCPパケットがDHCPサーバまで届かない。

DHCPパケット(DHCP DISCOVER)がブロードキャストで送信されるため、ルータを超えて通信ができないためである。

このような場合は、間にいるルータでDHCPパケットをDHCPサーバへ転送する設定(DHCPリレーエージェント設定)が必要になる。

DHCPリレーエージェントの設定はDHCPクライアントからのパケットが届くルータのインターフェースで設定する。

DHCPRelay#conf t
DHCPRelay(config)#
DHCPRelay(config)#! ethernet 0/0 にてDHCPクライアントからの通信を受信する場合の例
DHCPRelay(config)#int ethernet 0/0
DHCPRelay(config-if)#! helper-addressの値にDHCPサーバのIPアドレスを指定する
DHCPRelay(config-if)#ip helper-address 192.168.1.5

この設定をすると、Ethernet0/0で受信したDHCPパケットをDHCPサーバのIPへ転送するようになる。
※ルータとDHCPサーバ簡の通信はブロードキャストではなくユニキャスト通信となる。

設定確認&トラブルシューティングコマンド

コマンド 出力内容
show ip dhcp poolDHCP アドレス プール情報を表示
show ip dhcp binding個々の IP アドレス割り当てのバインディング情報および割り当てられたサブネットが表示される( IP アドレスとMACアドレスの対応情報やリースの有効期限など)
show ip dhcp conflictDHCPサーバにより検出したIPアドレス競合を表示
debug ip dhcp server eventsアドレス割り当てやデータベース更新などの DHCP サーバのイベントを出力
clear ip dhcp bindingDHCP サーバ データベースから特定のプールからの自動アドレス バインディングまたはオブジェクトをクリア。
clear ip dhcp [ pool pool-name ] binding { * | address }
clear ip dhcp conflictDHCP サーバ データベースから特定のプールからの 1 つ以上のアドレスの競合をクリア。
clear ip dhcp [ pool pool-name ] conflict { * | address }
clear ip dhcp subnet指定されている DHCP プールまたは pool-name が指定されていない場合のすべての DHCP プールから、現在リースされているすべてのサブネットをクリア
clear ip dhcp [ pool pool-name ] subnet { * | address }

IPv6

IPv6についてのアレコレについては、プロフェッショナルIPv6という書籍(無料版あり)が詳しいです。
以下ではIPv6の基本とCCNP試験に関連しそうなコマンドなどを中心にまとめてます。

基本

IPv6アドレスの種類

アドレスの種類       説明
ユニキャストアドレス 1対1で通信を行う際に使用するアドレス
マルチキャストアドレス 特定のグループに対して送信する際に使用するアドレス
エニーキャストアドレス 複数の機器に同じアドレスを割当て、ネットワーク的に最も近いところと通信する際に使用するアドレス

ユニキャストの種類

種類               説明
グローバルユニキャストアドレス インターネット上で一意なアドレス。IPv4グローバルIPに相当
リンクローカルユニキャストアドレス 同じサブネット上での通信が可能なアドレス
ユニークローカルユニキャストアドレス 企業などのローカルで使用されるアドレス。IPv4のプライベートIPに相当
サイトローカルユニキャストアドレス 特定のサイト内でのみ利用できるアドレス(現在は使用されない)

IPv6アドレスの割当て

グローバルユニキャスト
アドレス範囲          説明
2001::16 インターネット用のIPv6アドレス
2002::/16 6to4用のアドレス
2003::/16 ~ 3FFD::/16 未割当て
リンクローカルユニキャスト
アドレス範囲          説明
FE80::/10 最初の10ビットが 1111111010で始まる
ユニークローカルユニキャスト
アドレス範囲          説明
FC70::/7(FD00::/8) 最初の7ビットが 1111110で始まるが、8ビット目の 0は未使用なので 1が入り実際使用されているのはFD00::/8となる
マルチキャスト
アドレス範囲          説明
FF00::/8 最初の8ビットが 11111111で始まる。続く8ビットのうち前半の4ビットがフラグ、後半の4ビットがスコープになる
FF02::1 すべてのノードを表す
FF02::2 すべてのルータを表す
FF02::5 すべてのOSPFが動作しているルータを表す
FF02::6 すべてのOSPF DR・BDRを表す
FF02::1:FFxx:xxxx 要請ノードマルチキャストアドレス(IPv6アドレスのMACアドレス解決に使用される)

IPv6アドレス割当て

静的IP設定

手動設定
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int ethernet 0/0
R1(config-if)#
R1(config-if)#ipv6 address 2001:db8:a:a::1/64
R1(config-if)#no shut
手動IP設定(EUI-64)
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int ethernet 0/0
R1(config-if)#
R1(config-if)#ipv6 address 2001:db8:a:a::/64 eui-64
R1(config-if)#no shut
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int ethernet 0/0
R1(config-if)#! リンクローカル(FE80::/10)で始まるアドレスを指定。それ以外を指定するとエラー
R1(config-if)#ipv6 address <リンクローカルアドレス> link-local
R1(config-if)#no shut

動的IP設定

  • IPv6 SLAAC(Stateless Address Auto Configuration)
  • ステートレス DHCPv6
  • ステートフル DHCPv6
IPv6 SLAAC

以下のICMPv6が使用される。

名前    タイプ 説明
RS(Router Solicitation) Type133 ルータにプレフィックス情報やデフォルトゲートウェイの情報を要請する。
宛先IPはFF02::2
RA(Router Advertisement) Type134 自身に設定されているプレフィックス情報、デフォルトゲートウェイ情報を広告する。

以下ではR1がRA(Router Advertisement)を送信する側の設定、R2がRS(Router Solicitation)を送信する側の設定。

R1---------------------------------------
Switch#conf t
Switch(config)#ipv6 unicast-routing
Switch(config)#int e0/0
Switch(config-if)#ipv6 address 2001:db8:1:1::1/64
Switch(config-if)#no shut

R2---------------------------------------
R2#conf t
R2(config)#int ethernet 0/0
R2(config-if)#
R2(config-if)#ipv6 address autoconfig
R2(config-if)#no shut

R1側では、以下の設定が必要。

  • ipv6 unicast-routing の設定がされていること(以下の設定例では設定済みの想定のため省略してます)
  • インターフェースで適切なIPv6アドレスが有効になっていること(プレフィックス /64で設定されている)
  • RAが抑制されていないこと(インターフェースで ipv6 nd ra suppress all コマンドが設定されていないこと)
ステートレス DHCPv6

R1でDHCPv6サーバの設定。R2はDHCPv6クライアント。 ※R1のe0/0へのIPv6アドレスは設定済み

R1---------------------------------------
※DHCPv6プールを作成
R1#conf t
R1(config)#ipv6 dhcp pool DHCPv6POOL
R1(config-dhcpv6)#dns-server 2001:db8:2:2::1
R1(config-dhcpv6)#domain-name cisco.com

※インターフェースでDHCPv6プールを指定
※ステートレスDHCPv6では、インターフェースでOフラグをONにする設定が必要
R1(config-dhcpv6)#int e0/0
R1(config-if)#ipv6 dhcp server DHCPv6POOL
R1(config-if)#ipv6 nd other-config-flag
R1(config-if)#end

R2---------------------------------------
R2#conf t
R2(config)#int ethernet 0/0
R2(config-if)#
R2(config-if)#ipv6 address autoconfig
R2(config-if)#no shut


※DHCPから情報を取得できている
R2#sh ipv6 dhcp interface
Ethernet0/0 is in client mode
  Prefix State is IDLE (2)
  Information refresh timer expires in 23:55:59
  Address State is IDLE
  List of known servers:
    Reachable via address: FE80::A8BB:CCFF:FE00:4000
    DUID: 00030001AABBCC004000
    Preference: 0
    Configuration parameters:
      DNS server: 2001:DB8:2:2::1
      Domain name: cisco.com
      Information refresh time: 0
  Prefix Rapid-Commit: disabled
  Address Rapid-Commit: disabled
ステートフル DHCPv6

R1でDHCPv6サーバの設定。R2はDHCPv6クライアント。 ※R1のe0/0へのIPv6アドレスは設定済み

R1---------------------------------------
※ステートフルDHCPv6では、Pool設定で割当てるIPのプレフィックスを設定する
R1#conf t
R1(config)#ipv6 dhcp pool DHCPv6POOL
R1(config-dhcpv6)#address prefix 2001:db8:1:1::/64
R1(config-dhcpv6)#dns-server 2001:db8:2:2::1
R1(config-dhcpv6)#domain-name cisco.com
※ステートフルDHCPv6ではインターフェースで、MフラグとOフラグをONにする設定が必要
R1(config-dhcpv6)#int e0/0
R1(config-if)#ipv6 dhcp server DHCPv6POOL
R1(config-if)#ipv6 nd managed-config-flag
R1(config-if)#ipv6 nd other-config-flag
R1(config-if)#end

R2---------------------------------------
R2#conf t
R2(config)# int e0/0
R2(config-if)#ipv6 address dhcp
R2(config-if)#ipv6 enable


R2#sh ipv6 int bri
Ethernet0/0            [up/up]
    FE80::A8BB:CCFF:FE00:5000
    2001:DB8:1:1:C8B2:4DCD:7CD8:1DD

R2#sh ipv6 dhcp interface
Ethernet0/0 is in client mode
  Prefix State is IDLE
  Address State is OPEN
  Renew for address will be sent in 11:52:02
  List of known servers:
    Reachable via address: FE80::A8BB:CCFF:FE00:4000
    DUID: 00030001AABBCC004000
    Preference: 0
    Configuration parameters:
      IA NA: IA ID 0x00070001, T1 43200, T2 69120
        Address: 2001:DB8:1:1:C8B2:4DCD:7CD8:1DD/128
                preferred lifetime 86400, valid lifetime 172800
                expires at Sep 16 2024 02:28 AM (172322 seconds)
      DNS server: 2001:DB8:2:2::1
      Domain name: cisco.com
      Information refresh time: 0
  Prefix Rapid-Commit: disabled
  Address Rapid-Commit: disabled
動的IP設定で使用されるフラグ

ICMPv6のRA(Router Advertisement)に含まれるフラグにより3種類の動的IP設定のどれが使用されるか決まる。

フラグの種類
フラグ    説明
Managedフラグ IPv6アドレスの割当てを制御。デフォルトはM=0。
RAルータのインターフェースコンフィグモードで、ipv6 nd managed-config-flag を指定すると M=1になる。
Otherフラグ DHCPサーバから(DNSサーバなどの)オプション情報を提供するかを制御。デフォルトはO=0。
DHCPサーバからオプション情報を提供する場合は、RAルータの飲ファーフェースコンフィグレーションモードで、ipv6 nd other-config-flag を指定すると O=1になる。
動的IP割当の方式によるフラグの違い
動的IP割当方式    MフラグとOフラグの設定
SLAAC M = 0、 O = 0。デフォルトはこれ
Stateless DHCP M = 0、 O = 1。このパターンが多い。
Statefull DHCP M = 1、 O = 1。あまり利用されていない。

DHCPv6 リレーエージェント

DHCPv6クライアントからのパケットを受信するインターフェースで以下のコマンドを設定。 DHCPv6サーバのアドレスは 2001:db8:1:2::10。

R1#conf t
R1(config)# int e0/0
R1(config-if)#ipv6 address 2001:db8:1:1::1/64
R1(config-if)#ipv6 nd managed-config-flag
R1(config-if)#ipv6 nd other-config-flag
R1(config-if)#ipv6 dhcp relay destination 2001:db8:1:2::10

参考資料

書籍

動画

www.udemy.com

コンフィギュレーション ガイド

IPv6 コンフィギュレーション ガイド、Cisco IOS Release 15.1S - DHCP for IPv6 の実装 [Cisco IOS 15.1S] - Cisco