CCNP-ENARSI_DHCP
DHCP
ネットワーク接続に必要な情報を割り当てるプロトコル
割り当てる情報は下記
- IPアドレス
- サブネットマスク
- デフォルトゲートウェイ
- DNSサーバ
DHCPのメッセージ
-
DHCP DISCOVER
クライアントがIPメッセージなどを要求するメッセージ -
DHCP OFFER
サーバーがIPアドレスなどの情報を返答するメッセージ -
DHCP REQUEST
クライアントがOFFERによって提示された情報の一つを選択し、IPアドレスの取得を正式に要求するメッセージ -
DHCP ACK
サーバーが取得を認めるメッセージ -
DHCP NAK
サーバーが取得を拒否するエラーメッセージ
※要求IPアドレスが使用中の場合に送信 -
DHCP DECLINE
クライアントがサーバーに送信するエラーメッセージ
※OFFERで提示されたIPアドレスがすでに使用中だった場合に送信
-
DHCP INFORM
クライアントがIPアドレス以外のオプションを要求するメッセージ
-
DHCP RELEASE
クライントがIPアドレスを返却するメッセージ
DHCPのクライアント・サーバ設定
DHCPクライアント
IPアドレスなど必要な情報をサーバから取得
DHCPクライアントの設定コマンド
(config-if)#ip address dhcp
DHCPサーバ
クライアントからの要求があった場合、管理しているプールアドレスからIPアドレスを貸出する
DHCPサーバ
# DHCPサーバとDHCPリレーエージェントの有効化(デフォルトで有効)
(config)#service dhcp
# DHCPプールを作成(必須)
(config)#ip dhcp pool プール名
# 貸出するアドレスの範囲を指定(必須)
(dhcp-config)#network ネットワークアドレス {ネットマスク|プレフィックス長}
# 貸し出し期間の指定(デフォルトは1日)
(dhcp-config)#lease {日 [時] [分]|infinite}
※infinite:DHCPで割り当てる期限を無限とする場合設定
# DNSサーバのアドレス指定(最大8つまで)
(dhcp-config)#dns-server IPアドレス IPアドレス2 IPアドレス3
# デフォルトゲートウェイの指定(最大8つまで)
(dhcp-config)#default-router IPアドレス IPアドレス2 IPアドレス3
# WINSサーバのアドレスを指定(最大8つまで)
(dhcp-config)#netbios-name-server IPアドレス IPアドレス2 IPアドレス3
# 中心となるDHCPサーバからパラメータ情報を取得する
(dhcp-config)#import all
# 割り当てから除外するアドレス範囲を指定
(config)#ip dhcp excluded-address 開始アドレス 終了アドレス
DHCPリレーエージェント
DHCPサーバとクライアントが異なるセグメントにいる場合に転送する機能
DHCPのブロードキャストをユニキャストにして転送する
DHCPリレーエージェントのの設定コマンド
(config-if)#ip helper-address 宛先DHCPサーバのIPアドレス
DHCPスヌーピング
DHCPパケットを監視する機能
「snooping」はのぞき見や監視という意味
各ポートを「trustedポート(信頼できるポート)」と「untrustedポート(信頼できないポート)」に分類する
- trustedポートに着信したDHCPパケットは全て許可
- untrustedポートに着信したDHCPパケットは
- クライアント → サーバ :許可
- サーバ → クライアント :拒否
また、DHCPパケットのレートを制限することも可能のため、これによりDoS攻撃などを防ぐことができる。
DHCPスプーフィング
DHCPにおいてユーザからのパケットを盗聴する攻撃
「spoofing」とは「なりすまし」という意味
DHCPスプーフィングの処理の流れ
DHCPの正しい動作を確認してから、DHCPスプーフィングの処理の流れを確認する
DHCPの動作
- DHCPクライアントからDHCPサーバへ。DHCP DISCOVERを送信する
- DHCPサーバはDHCPクライアントへ。DHCP OFFERを応答(IPアドレスやデフォルトゲートウェイなど)
- DHCPクライアントからDHCPサーバへ。DHCP OFFERから一つ選択して、DHCP REQUESTを送信する
- DHCPサーバはDHCPクライアントへ。DHCP ACKで応答する
DHCPスプーフィングの動作
- DHCPクライアントからDHCPサーバへ。DHCP DISCOVERを送信する
- 不正なDHCPサーバはDHCPクライアントへ。DHCP OFFERを応答(不正なDHCPサーバのアドレスをデフォルトゲートウェイとして応答する)
- DHCPクライアントからDHCPサーバへ。DHCP OFFERから一つ選択して、DHCP REQUESTを送信する
- DHCPサーバはDHCPクライアントへ。DHCP ACKで応答する
- DHCPクライアントは不正なDHCPサーバへ通信する
- 不正なDHCPサーバはDHCPサーバへ通信する
DHCPオプション
DHCPにてオプションを指定すると様々な情報を通知する
主なオプションは下記
- 3:ルータ(デフォルトゲートウェイ)のIPアドレス
- 6:DNSサーバのIPアドレス
- 66:1つのTFTPサーバのIPアドレス
- 82:DHCPリレーエージェント情報
- 150:複数のTFTPサーバのIPアドレス
DHCPトラブルシューティング:オプション82とDHCPスヌーピング
DHCPスヌーピングを有効化するとオプション82も有効化される
ただし、DHCPサーバがオプション82に対応していないと問題発生する
DHCPオプション82が付与されたパケットが不正なパケットと判断されて、破棄される
問題発生する理由は?
giaddrフィールドの設定値にてエラーが発生する
対策は?
-
オプション82を無効化する
(config)#no ip dhcp snooping information option
-
DHCPパケットを受け入れる
インターフェイスごとに設定する場合
(config-if)#ip dhcp relay information trusted
全てのインターフェイスに設定する場合
(config)#ip dhcp relay information trust-all
DHCPv6
IPv6を対象としたDHCP
DHCPv6サーバ
DHCPv6において、IPアドレスを割り当て・管理する
DHCPv6-PD
IPv6プレフィックスの機器への自動委任を可能にするプロトコル
コマンド:DHCPv6サーバの設定
# 対象のインターフェースでDHCPサーバ機能を有効化する
(config-if)#ipv6 dhcp server {プール名}
コマンド:DHCPv6プールの設定
# DHCPv6プールを作成し、DHCPv6モードに移行
(config)#ipv6 dhcp pool {プール名}
# クライアントに割り当てるプレフィックスを指定
(config-dhcpv6)#address prefix {プレフィックス}
コマンド:DHCPv6プールの設定(プレフィック委任を行う場合)
(config)#ipv6 local pool {ローカルプール名} {プレフィックス} {サブプレフィックス}:クライアントに割り当てるプレフィックスを指定
(config)#ipv6 dhcp pool {プール名} :DHCPv6プールを作成し、DHCPv6モードに移行
(config-dhcpv6)#prefix-delegation pool {ローカルプール名}:クライアントに委任する(割り当てる)プレフィックスのローカルプール名を指定
(config-dhcpv6)#domain-name {ドメイン名}:クライアントに通知するドメイン名を指定
(config-dhcpv6)#dns-server {IPv6アドレス} :クライアントに通知するDNSサーバのアドレスを指定
DHCPv6クライアント
自身が使用するIPv6アドレスなど必要な情報をサーバから取得する
DHCPv6-PDクライアントの場合は、委任してもらうプレフィックスなどの情報をサーバから取得し、オートコンフィグレーション(ルータが64ビットプレフィックスを含めたネットワーク情報を、RAメッセージとしてそのローカルリンク上に送信)などを行う
コマンド:DHCPv6クライアントの設定
(config-if)#ipv6 address dhcp ・・・ 対象のインターフェースでDHCPv6クライアント機能を有効化する
コマンド:DHCPv6-PDクライアントの設定
(config-if)#ipv6 dhcp client pd {プレフィックス名} ・・・ 対象のインターフェースでDHCPv6-PDクライアント機能を有効化する
DHCPv6の確認コマンド
# DHCPv6サーバ側でDHCPv6クライアントに割り当てたIPv6アドレスを確認する
show ipv6 dhcp binding
DHCPv6リレーエージェント
DHCPサーバとクライアントが異なるセグメントにいる場合に中継する
コマンド:DHCPv6リレーエージェントの設定
# 対象のインターフェースでDHCPv6リレーエージェント機能を有効化する
# ※(DHCPクライアントが存在する側のインターフェースコンフィグレーションモードで設定)
(config-if)#ipv6 dhcp relay destination {宛先DHCPv6サーバのIPv6アドレス}[転送するインターフェース]
DHCPv6ガード
許可されていない不正なDHCPサーバおよびリレーエージェントからのDHCPサーバ応答やDHCPサーバアドバタイズメントをブロックする機能
DHCPv6ガードで処理されるパケットは以下の3つのタイプに分類され、デバイスの役割によって発信できるパケットが決まっています。
- クライアントメッセージ・・・どの役割のデバイスからでも発信可能
- DHCPサーバアドバタイズメント・・・役割がサーバに設定されたデバイスからのみ発信可能
- DHCPサーバ応答・・・役割がサーバに設定されたデバイスからのみ発信可能