FortigateのDHCPサーバ設定と通信シーケンスの詳細解説 (FortiOS 6.0.9)

音声で聞く

読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。

FortiGate はインターフェースごとに DHCP サーバを動かせます。小さな拠点なら、FortiGate だけで端末へのアドレス配布まで済ませられます。

この記事では、FortiGate の internal に DHCP サーバを設定し、端末がアドレスを受け取るまでのやり取りをパケットキャプチャで確認します。後半では、リレー、DHCP オプションの追加、MAC アドレスによるアドレスの予約といった高度な設定も試します。検証時の FortiOS は 6.0.9 です。

この記事でわかること
  1. インターフェースで DHCP サーバを有効にする設定
  2. 端末側でのアドレス取得結果の確認
  3. Discover / Offer / Request / ACK の4つのメッセージの中身
  4. リース状態を確認・クリアするコマンド
  5. リレー、DHCP オプション、MAC アドレスによる予約

検証構成

FortiGate の internal(192.168.100.254/24)に端末を1台つなぎ、192.168.100.100〜192.168.100.200 の範囲でアドレスを配ります。端末は Mac で、MAC アドレスは 04:ab:18:7f:b5:d9 です。

クライアント(Mac) MACアドレス 04:ab:18:7f:b5:d9 FortiGate DHCPサーバ internal 192.168.100.254/24 割り当て範囲:192.168.100.100〜192.168.100.200
図1 検証構成。端末が FortiGate の internal から DHCP でアドレスを受け取る

DHCPサーバ設定の手順

設定するインターフェースを開く

DHCP サーバはインターフェース単位で設定します。ネットワーク ›› インターフェース を開き、一覧から internal を選んで編集します。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

FortiGate 管理画面画面イメージ
ネットワーク ›› インターフェース
ステータス名前メンバーIP/ネットマスク
ハードウェアスイッチ (2)
fortilinkA, BFortiSwitchにデディケート
1internal1〜5192.168.100.254 255.255.255.0
物理 (3)
dmz10.10.10.1 255.255.255.0
図2 インターフェースの一覧(実際の画面ではなく、表示のポイントを示したイメージです)

internal には、あらかじめ 192.168.100.254/24 を設定しています。DHCP サーバの設定は、編集画面の下のほうにあります。

FortiGate 管理画面(internal の編集)画面イメージ
ネットワーク ›› インターフェース ›› internal
アドレス
アドレッシングモード◉ マニュアル○ DHCP○ PPPoE
1IP/ネットワークマスク192.168.100.254/255.255.255.0
管理者アクセス
IPv4☑ HTTPS☑ HTTP☑ PING☑ FMGアクセス☑ CAPWAP☑ SSH☐ SNMP☐ FTM☐ RADIUSアカウンティング☐ FortiTelemetry
2DHCPサーバOFF(ここを ON にする)
図3 internal の編集画面(実際の画面ではなく、設定項目のポイントを示したイメージです)

DHCPサーバを有効にして、配る内容を決める

DHCP サーバを ON にすると、配るアドレスの範囲などの設定項目が表示されます。

FortiGate 管理画面(internal の編集)画面イメージ
ネットワーク ›› インターフェース ›› internal
DHCPサーバ:ON
1アドレス範囲+ 新規作成 編集 削除
最初のIPアドレス終了IP
192.168.100.100192.168.100.200
2ネットマスク255.255.255.0
3デフォルトゲートウェイ◉ インターフェースIPと同じ○ 指定
4DNSサーバ◉ システムDNSと同じ○ インターフェースIPと同じ○ 指定
⊞ 高度な設定 
図4 DHCP サーバの基本設定(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1アドレス範囲端末に配るアドレスの範囲を、最初と最後のアドレスで指定します。「新規作成」で範囲を追加できます。今回は 192.168.100.100〜192.168.100.200 です。
2ネットマスク端末に配るサブネットマスクです。FortiGate のインターフェースと同じ 255.255.255.0 にします。
3デフォルトゲートウェイ「インターフェースIPと同じ」を選ぶと、FortiGate のインターフェースのアドレス(192.168.100.254)がデフォルトゲートウェイとして配られます。「指定」で別のアドレスも配れます。
4DNSサーバ「システムDNSと同じ」を選ぶと、FortiGate 自身に設定している DNS サーバが配られます。今回はこれを選びました。検証環境のシステム DNS は 208.91.112.53(プライマリ)と 208.91.112.52(セカンダリ)です。

DNS サーバで「インターフェースIPと同じ」を選ぶと、FortiGate のインターフェースのアドレスが DNS サーバとして配られ、端末は FortiGate に名前解決を問い合わせるようになります。この場合は、FortiGate 側でそのインターフェースの DNS サービスを有効にしておく必要があります。DHCP の設定画面ではこの点はチェックされないので、注意してください。

現在の FortiOS では

FortiOS 7.0.4 以降では、FortiGuard の DNS サーバを使う設定の既定値が 96.45.45.45(プライマリ)と 96.45.46.46(セカンダリ)に変わり、FortiGate からの問い合わせには DNS over TLS が使われます。7.0.4 にアップグレードした機器も、この新しい既定値に置き換わります。「システムDNSと同じ」で配られるアドレスは、ネットワーク ›› DNS で確認してください。

端末で取得結果を確認する

端末のアドレスを自動取得にして接続すると、DHCP サーバから受け取った設定が反映されます。次は Mac のネットワーク設定の表示です。

クライアント(Mac)のネットワーク設定画面イメージ
IPv4の設定DHCPサーバを使用
1IPアドレス192.168.100.100
サブネットマスク255.255.255.0
ルーター192.168.100.254
DNSサーバ208.91.112.53, 208.91.112.52
検索ドメイン 
図5 端末が受け取った設定(実際の画面ではなく、表示のポイントを示したイメージです)

アドレス範囲の先頭の 192.168.100.100 が割り当てられ、STEP 2 で決めたサブネットマスク、デフォルトゲートウェイ(ルーター)、DNS サーバもそのまま届いています。

DHCP通信のシーケンス

端末がアドレスを受け取るまでには、Discover、Offer、Request、ACK の4つのメッセージをやり取りします。頭文字をとって DORA と呼ばれることもあります。DHCP にはほかにも NAK や Release などのメッセージがありますが、アドレスを新しく受け取るときの基本はこの4つです。

クライアント(アドレスなし) FortiGate(DHCPサーバ) ① Discover0.0.0.0 → 255.255.255.255(ブロードキャスト) ② Offer192.168.100.100 を提案 ③ Request0.0.0.0 → 255.255.255.255(ブロードキャスト) ④ ACK192.168.100.100 の割り当てを確定
図6 アドレスを受け取るまでの4つのメッセージ

キャプチャでメッセージの中身を確認する

STEP 3 でアドレスを取得したときのパケットを、Wireshark でキャプチャしました。4つのメッセージが順に並んでいます。

パケットキャプチャ(Wireshark)画面イメージ
SourceDestinationProtocolInfo
0.0.0.0255.255.255.255DHCPDHCP Discover
192.168.100.254192.168.100.100DHCPDHCP Offer
0.0.0.0255.255.255.255DHCPDHCP Request
192.168.100.254192.168.100.100DHCPDHCP ACK
図7 アドレス取得時のキャプチャ一覧(実際の画面ではなく、表示内容のポイントを示したイメージです)

Discover と Request は、端末にまだアドレスがないので、送信元 0.0.0.0、宛先 255.255.255.255(ブロードキャスト)で送られています。一方、Offer と ACK は FortiGate から 192.168.100.100 宛てに送られています。メッセージの Bootp flags のブロードキャストビットが 0(Unicast)なので、サーバはブロードキャストせずに、端末の MAC アドレスと割り当てるアドレス宛てに返しています。

Discover:DHCP サーバを探す

端末がネットワーク上の DHCP サーバを探すために、最初にブロードキャストで送るメッセージです。

パケットキャプチャ(Wireshark)画面イメージ
▾ Dynamic Host Configuration Protocol (Discover)1    Message type: Boot Request (1)    Hardware type: Ethernet (0x01)    Hardware address length: 6    Hops: 02    Transaction ID: 0xa1d75c1b    Seconds elapsed: 443  ▸ Bootp flags: 0x0000 (Unicast)    Client IP address: 0.0.0.0    Your (client) IP address: 0.0.0.0    Next server IP address: 0.0.0.0    Relay agent IP address: 0.0.0.04    Client MAC address: Elecom_7f:b5:d9 (04:ab:18:7f:b5:d9)    Client hardware address padding: 00000000000000000000    Server host name not given    Boot file name not given    Magic cookie: DHCP  ▾ Option: (53) DHCP Message Type (Discover)      Length: 15      DHCP: Discover (1)
図8 DHCP Discover の中身(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1Boot Request (1)端末からサーバへのメッセージです。サーバからの返答は Boot Reply (2) になります。
2Transaction IDやり取りを識別する番号です。このあとの Offer、Request、ACK も同じ 0xa1d75c1b で、一連のやり取りだとわかります。
3Bootp flags: 0x0000ブロードキャストビットが 0 です。サーバからの返答をユニキャストで受け取れることを示します。
4Client MAC address端末の MAC アドレスです。Elecom_ の部分は、Wireshark が MAC アドレスの先頭(ベンダー識別子)からメーカー名を表示したものです。
5DHCP: Discover (1)オプション53(DHCP メッセージタイプ)が 1、つまり Discover です。

Offer:使えるアドレスを提案する

DHCP サーバが、端末に使えるアドレスを提案するメッセージです。この時点では、端末はまだアドレスを使っていません。

パケットキャプチャ(Wireshark)画面イメージ
▾ Dynamic Host Configuration Protocol (Offer)1    Message type: Boot Reply (2)    Hardware type: Ethernet (0x01)    Hardware address length: 6    Hops: 0    Transaction ID: 0xa1d75c1b    Seconds elapsed: 44  ▸ Bootp flags: 0x0000 (Unicast)    Client IP address: 0.0.0.02    Your (client) IP address: 192.168.100.100    Next server IP address: 0.0.0.0    Relay agent IP address: 0.0.0.0    Client MAC address: Elecom_7f:b5:d9 (04:ab:18:7f:b5:d9)    Client hardware address padding: 00000000000000000000    Server host name not given    Boot file name not given    Magic cookie: DHCP  ▾ Option: (53) DHCP Message Type (Offer)      Length: 13      DHCP: Offer (2)
図9 DHCP Offer の中身(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1Boot Reply (2)サーバから端末への返答です。
2Your (client) IP addressサーバが提案するアドレスで、192.168.100.100 です。
3DHCP: Offer (2)メッセージタイプが 2、つまり Offer です。

Request:提案されたアドレスを要求する

端末が、提案されたアドレスを使いたいとサーバに要求するメッセージです。Discover と同じくブロードキャストで送ります。

パケットキャプチャ(Wireshark)画面イメージ
▾ Dynamic Host Configuration Protocol (Request)    Message type: Boot Request (1)    Hardware type: Ethernet (0x01)    Hardware address length: 6    Hops: 0    Transaction ID: 0xa1d75c1b    Seconds elapsed: 46  ▸ Bootp flags: 0x0000 (Unicast)    Client IP address: 0.0.0.0    Your (client) IP address: 0.0.0.0    Next server IP address: 0.0.0.0    Relay agent IP address: 0.0.0.0    Client MAC address: Elecom_7f:b5:d9 (04:ab:18:7f:b5:d9)    Client hardware address padding: 00000000000000000000    Server host name not given    Boot file name not given    Magic cookie: DHCP  ▾ Option: (53) DHCP Message Type (Request)      Length: 11      DHCP: Request (3)  ▸ Option: (55) Parameter Request List  ▸ Option: (57) Maximum DHCP Message Size  ▸ Option: (61) Client identifier2  ▸ Option: (50) Requested IP Address (192.168.100.100)3  ▸ Option: (54) DHCP Server Identifier (192.168.100.254)
図10 DHCP Request の中身(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1DHCP: Request (3)メッセージタイプが 3、つまり Request です。
2Option: (50)要求するアドレスです。Offer で提案された 192.168.100.100 が入っています。
3Option: (54)端末が選んだ DHCP サーバの識別子(192.168.100.254)です。DHCP サーバが複数あっても、ブロードキャストされたこの値で、どのサーバの提案を受けたかが全サーバに伝わります。

ACK:割り当てを確定する

DHCP サーバが、要求されたアドレスを正式に割り当てるメッセージです。ACK を受け取ると、端末はそのアドレスを使い始めます。サブネットマスクやデフォルトゲートウェイなどの設定も、ここでオプションとして届きます。

パケットキャプチャ(Wireshark)画面イメージ
▾ Dynamic Host Configuration Protocol (ACK)    Message type: Boot Reply (2)    Hardware type: Ethernet (0x01)    Hardware address length: 6    Hops: 0    Transaction ID: 0xa1d75c1b    Seconds elapsed: 46  ▸ Bootp flags: 0x0000 (Unicast)    Client IP address: 0.0.0.01    Your (client) IP address: 192.168.100.100    Next server IP address: 0.0.0.0    Relay agent IP address: 0.0.0.0    Client MAC address: Elecom_7f:b5:d9 (04:ab:18:7f:b5:d9)    Client hardware address padding: 00000000000000000000    Server host name not given    Boot file name not given    Magic cookie: DHCP  ▾ Option: (53) DHCP Message Type (ACK)      Length: 12      DHCP: ACK (5)  ▸ Option: (54) DHCP Server Identifier (192.168.100.254)  ▸ Option: (51) IP Address Lease Time3  ▸ Option: (1) Subnet Mask (255.255.255.0)4  ▾ Option: (3) Router      Length: 4      Router: 192.168.100.2545  ▾ Option: (6) Domain Name Server      Length: 8      Domain Name Server: 208.91.112.53      Domain Name Server: 208.91.112.52  ▸ Option: (58) Renewal Time Value
図11 DHCP ACK の中身(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1Your (client) IP address割り当てたアドレス(192.168.100.100)です。
2DHCP: ACK (5)メッセージタイプが 5、つまり ACK です。
3Option: (1)サブネットマスク(255.255.255.0)です。
4Option: (3)デフォルトゲートウェイ(Router)で、192.168.100.254 です。
5Option: (6)DNS サーバです。システム DNS の2つのアドレスが入っています。

確認コマンド

リースの状態を確認・クリアする

FortiGate が今どのアドレスを配っているかは、execute dhcp lease-list で確認できます。

Fortigate-1

Fortigate-1 # execute dhcp lease-list
internal
  IP                MAC-Address             Hostname      VCI             Expiry
  192.168.100.100   04:ab:18:7f:b5:d9       hirotanopc                    Fri Mar 19 20:51:33 2021
表示意味
internalDHCP サーバを動かしているインターフェースです。
IP / MAC-Address割り当てたアドレスと、割り当てた端末の MAC アドレスです。
Hostname端末が知らせてきたホスト名です。
VCIベンダークラス識別子(オプション60)です。今回は空欄になっています。
Expiryリースの有効期限です。

リース情報をクリアするには、execute dhcp lease-clear にオプションを付けて実行します。all ですべてのリースを、アドレスを指定するとそのアドレスのリースだけをクリアします。

Fortigate-1

Fortigate-1 # execute dhcp lease-clear
xxx.xxx.xxx.xxx    Clear lease(s) on this IP address.
all         Clear all leases.
Fortigate-1 # execute dhcp lease-clear all
Fortigate-1 # execute dhcp lease-list
Fortigate-1 #

クリアしたあとに execute dhcp lease-list を実行すると、何も表示されなくなっています。

高度な設定

DHCP サーバの設定で「高度な設定」を開くと、さらに細かい設定ができます。ここでは、実務でよく使うモード、DHCP オプション、MAC アドレスによる予約を試します。

FortiGate 管理画面(internal の編集)画面イメージ
ネットワーク ›› インターフェース ›› internal
DHCPサーバ:ON
⋮ (アドレス範囲〜DNSサーバは図4 と同じ)
⊟ 高度な設定 
1モード◉ サーバ○ リレー
NTPサーバ○ ローカル○ システムNTPと同じ◉ 指定0.0.0.0
タイムゾーン◉ システムと同じ○ 指定
次のブートストラップサーバ0.0.0.0
2その他のDHCPオプション
シーケンス#オプションコード値16進数値
51 (リース時間)604800
3MAC予約+アクセス制御
MACアドレスアクションまたはIP説明
不明なMACアドレスIPを割り当て
タイプ◉ レギュラー○ IPsec
図12 高度な設定を開いた画面(実際の画面ではなく、設定項目のポイントを示したイメージです)

リレーエージェントにする(モード)

ここまでは FortiGate 自身を DHCP サーバにしましたが、モードを「リレー」にすると、端末からの要求を別の DHCP サーバへ転送するリレーエージェントとして動きます。リレーを選ぶと、アドレス範囲などの項目の代わりに、転送先の「DHCPサーバIP」を入力する欄が表示されます。

FortiGate 管理画面(internal の編集)画面イメージ
DHCPサーバ:ON ⊟ 高度な設定
1モード○ サーバ◉ リレー
2DHCPサーバIP 
タイプ◉ レギュラー○ IPsec
図13 モードをリレーにした画面(実際の画面ではなく、設定項目のポイントを示したイメージです)

DHCP サーバを拠点ごとに置かず、センタのサーバにまとめるときなどに使います。DHCP サーバIP には、転送先の DHCP サーバのアドレスを入力します。

DHCPオプションを追加する

DHCP では、IP アドレス以外の情報もオプションとして端末に配れます。よく使う情報にはオプション番号が決まっていて、STEP 4 の ACK(図11)にも次のオプションが入っていました。

オプション内容
1サブネットマスク
3デフォルトゲートウェイ(Router)
6DNS サーバ
51リース時間(秒)
53DHCP メッセージタイプ(1:Discover、2:Offer、3:Request、5:ACK など)
54DHCP サーバの識別子
58 / 59リースの更新(T1)と再バインド(T2)を始めるまでの時間

決まったオプション以外の情報を配りたいときは、「その他のDHCPオプション」に追加します。たとえば Cisco の IP 電話は、オプション150 で受け取った TFTP サーバから設定ファイルをダウンロードします。このような IP 電話をつなぐときは、オプション150 を追加します。

「その他のDHCPオプション」の「新規作成」をクリックすると行が追加され、オプションコードを選べます。

FortiGate 管理画面(その他のDHCPオプション)画面イメージ
1+ 新規作成編集削除
追加済みの行
オプションコード値
51 (リース時間)604800
2オプションコード4 (タイムサーバ – 16進数)
5 (ネームサーバ – 16進数)
7 (ログサーバ – 16進数)
12 (ホスト名 – 16進数)
13 (ブートファイルサイズ – 16進数)
15 (ドメイン)
16 (サーバをスワップ – 16進数)
51 (リース時間)
67 (ファイル名)
150 (TFTP サーバ)指定 (16進数)
指定 (文字列)
指定 (IP)
図14 追加できるオプションコード(実際の画面ではなく、選択肢のポイントを示したイメージです)

今回はオプション150 を選び、TFTP サーバとして 10.10.10.10 を設定します。

FortiGate 管理画面(その他のDHCPオプション)画面イメージ
シーケンス#オプションコード値16進数値
51 (リース時間)604800
1150 (TFTP サーバ)10.10.10.10
図15 オプション150 を追加した状態(実際の画面ではなく、設定のポイントを示したイメージです)

端末がもう一度アドレスを取得したときの DHCP ACK を見ると、オプション150 が配られています。

パケットキャプチャ(Wireshark)画面イメージ
  ▸ Option: (3) Router  ▸ Option: (6) Domain Name Server  ▸ Option: (58) Renewal Time Value  ▸ Option: (59) Rebinding Time Value  ▸ Option: (2) Time Offset1  ▾ Option: (150) TFTP Server Address      Length: 4      TFTP Server Address: 10.10.10.10  ▸ Option: (224) Private  ▸ Option: (255) End
図16 オプション150 を追加したあとの DHCP ACK(実際の画面ではなく、表示内容のポイントを示したイメージです)

また、オプション51 のリース時間は、何も設定しなくても最初から入っていて、端末に配られています。既定値は 604800 秒(7日)で、この値は変更できます。

パケットキャプチャ(Wireshark)画面イメージ
  ▸ Option: (53) DHCP Message Type (ACK)  ▸ Option: (54) DHCP Server Identifier (192.168.100.254)1  ▾ Option: (51) IP Address Lease Time      Length: 4      IP Address Lease Time: (604800s) 7 days  ▸ Option: (1) Subnet Mask (255.255.255.0)  ▸ Option: (3) Router
図17 DHCP ACK のリース時間(実際の画面ではなく、表示内容のポイントを示したイメージです)

MACアドレスでIPアドレスを予約する

特定の端末に、毎回同じアドレスを割り当てることもできます。ここまで MAC アドレス 04:ab:18:7f:b5:d9 の端末には 192.168.100.100 が割り当てられていましたが、これを 192.168.100.150 に固定してみます。

「MAC予約+アクセス制御」の「新規作成」をクリックし、アクションに「IPを予約」を選んで、MAC アドレスと割り当てるアドレスを入力します。

FortiGate 管理画面(MAC予約+アクセス制御)画面イメージ
+ 新規作成編集削除DHCPクライアント一覧から追加
MACアドレスアクションまたはIP説明
104:ab:18:7f:b5:d92IPを予約 ▾ 192.168.100.150
不明なMACアドレスIPを割り当て
図18 MAC アドレスによる予約(実際の画面ではなく、設定のポイントを示したイメージです)
No.項目設定内容
1MACアドレス予約する端末の MAC アドレス(04:ab:18:7f:b5:d9)です。「DHCPクライアント一覧から追加」を使うと、今アドレスを受け取っている端末から選べます。
2アクションまたはIP「IPを予約」を選び、割り当てるアドレス(192.168.100.150)を入力します。

最後の行の「不明なMACアドレス」は、ここに登録していない端末の扱いです。「IPを割り当て」なので、登録していない端末にもアドレス範囲から割り当てます。

端末でもう一度アドレスを取得すると、192.168.100.150 が割り当てられました。

クライアント(Mac)のネットワーク設定画面イメージ
IPv4の設定DHCPサーバを使用
1IPアドレス192.168.100.150
サブネットマスク255.255.255.0
ルーター192.168.100.254
DNSサーバ208.91.112.53, 208.91.112.52
検索ドメイン 
図19 予約したアドレスが割り当てられた(実際の画面ではなく、表示のポイントを示したイメージです)

まとめ

やりたいこと設定する場所今回の値
配るアドレスの範囲DHCPサーバ ›› アドレス範囲192.168.100.100〜192.168.100.200
デフォルトゲートウェイDHCPサーバ ›› デフォルトゲートウェイインターフェースIPと同じ(192.168.100.254)
DNS サーバDHCPサーバ ›› DNSサーバシステムDNSと同じ
別の DHCP サーバへ転送高度な設定 ›› モード(リレー)―
追加の情報を配る高度な設定 ›› その他のDHCPオプション150(TFTP サーバ)= 10.10.10.10
特定の端末に固定のアドレス高度な設定 ›› MAC予約+アクセス制御04:ab:18:7f:b5:d9 → 192.168.100.150
配布状況の確認execute dhcp lease-list―

DHCP のやり取りは、Discover と Request がブロードキャスト、Offer と ACK がサーバからの返答、という形で進みます。アドレスがうまく配られないときは、まずキャプチャでこの4つがそろっているか、どこで止まっているかを見ると原因を絞り込めます。

コメント