読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。
FortiGate はインターフェースごとに DHCP サーバを動かせます。小さな拠点なら、FortiGate だけで端末へのアドレス配布まで済ませられます。
この記事では、FortiGate の internal に DHCP サーバを設定し、端末がアドレスを受け取るまでのやり取りをパケットキャプチャで確認します。後半では、リレー、DHCP オプションの追加、MAC アドレスによるアドレスの予約といった高度な設定も試します。検証時の FortiOS は 6.0.9 です。
- インターフェースで DHCP サーバを有効にする設定
- 端末側でのアドレス取得結果の確認
- Discover / Offer / Request / ACK の4つのメッセージの中身
- リース状態を確認・クリアするコマンド
- リレー、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 です。
DHCPサーバ設定の手順
設定するインターフェースを開く
DHCP サーバはインターフェース単位で設定します。ネットワーク ›› インターフェース を開き、一覧から internal を選んで編集します。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| ステータス | 名前 | メンバー | IP/ネットマスク |
|---|---|---|---|
| ハードウェアスイッチ (2) | |||
| fortilink | A, B | FortiSwitchにデディケート | |
| 1 | internal | 1〜5 | 192.168.100.254 255.255.255.0 |
| 物理 (3) | |||
| dmz | 10.10.10.1 255.255.255.0 | ||
internal には、あらかじめ 192.168.100.254/24 を設定しています。DHCP サーバの設定は、編集画面の下のほうにあります。
| アドレッシングモード | ◉ マニュアル○ 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 にする) |
DHCPサーバを有効にして、配る内容を決める
DHCP サーバを ON にすると、配るアドレスの範囲などの設定項目が表示されます。
| 1アドレス範囲 | + 新規作成 編集 削除
| ||||
| 2ネットマスク | 255.255.255.0 | ||||
| 3デフォルトゲートウェイ | ◉ インターフェースIPと同じ○ 指定 | ||||
| 4DNSサーバ | ◉ システムDNSと同じ○ インターフェースIPと同じ○ 指定 | ||||
| ⊞ 高度な設定 |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | アドレス範囲 | 端末に配るアドレスの範囲を、最初と最後のアドレスで指定します。「新規作成」で範囲を追加できます。今回は 192.168.100.100〜192.168.100.200 です。 |
| 2 | ネットマスク | 端末に配るサブネットマスクです。FortiGate のインターフェースと同じ 255.255.255.0 にします。 |
| 3 | デフォルトゲートウェイ | 「インターフェースIPと同じ」を選ぶと、FortiGate のインターフェースのアドレス(192.168.100.254)がデフォルトゲートウェイとして配られます。「指定」で別のアドレスも配れます。 |
| 4 | DNSサーバ | 「システムDNSと同じ」を選ぶと、FortiGate 自身に設定している DNS サーバが配られます。今回はこれを選びました。検証環境のシステム DNS は 208.91.112.53(プライマリ)と 208.91.112.52(セカンダリ)です。 |
DNS サーバで「インターフェースIPと同じ」を選ぶと、FortiGate のインターフェースのアドレスが DNS サーバとして配られ、端末は FortiGate に名前解決を問い合わせるようになります。この場合は、FortiGate 側でそのインターフェースの DNS サービスを有効にしておく必要があります。DHCP の設定画面ではこの点はチェックされないので、注意してください。
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 のネットワーク設定の表示です。
| IPv4の設定 | DHCPサーバを使用 |
| 1IPアドレス | 192.168.100.100 |
| サブネットマスク | 255.255.255.0 |
| ルーター | 192.168.100.254 |
| DNSサーバ | 208.91.112.53, 208.91.112.52 |
| 検索ドメイン |
アドレス範囲の先頭の 192.168.100.100 が割り当てられ、STEP 2 で決めたサブネットマスク、デフォルトゲートウェイ(ルーター)、DNS サーバもそのまま届いています。
DHCP通信のシーケンス
端末がアドレスを受け取るまでには、Discover、Offer、Request、ACK の4つのメッセージをやり取りします。頭文字をとって DORA と呼ばれることもあります。DHCP にはほかにも NAK や Release などのメッセージがありますが、アドレスを新しく受け取るときの基本はこの4つです。
キャプチャでメッセージの中身を確認する
STEP 3 でアドレスを取得したときのパケットを、Wireshark でキャプチャしました。4つのメッセージが順に並んでいます。
| Source | Destination | Protocol | Info |
|---|---|---|---|
| 0.0.0.0 | 255.255.255.255 | DHCP | DHCP Discover |
| 192.168.100.254 | 192.168.100.100 | DHCP | DHCP Offer |
| 0.0.0.0 | 255.255.255.255 | DHCP | DHCP Request |
| 192.168.100.254 | 192.168.100.100 | DHCP | DHCP ACK |
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 サーバを探すために、最初にブロードキャストで送るメッセージです。
▾ 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)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Boot Request (1) | 端末からサーバへのメッセージです。サーバからの返答は Boot Reply (2) になります。 |
| 2 | Transaction ID | やり取りを識別する番号です。このあとの Offer、Request、ACK も同じ 0xa1d75c1b で、一連のやり取りだとわかります。 |
| 3 | Bootp flags: 0x0000 | ブロードキャストビットが 0 です。サーバからの返答をユニキャストで受け取れることを示します。 |
| 4 | Client MAC address | 端末の MAC アドレスです。Elecom_ の部分は、Wireshark が MAC アドレスの先頭(ベンダー識別子)からメーカー名を表示したものです。 |
| 5 | DHCP: Discover (1) | オプション53(DHCP メッセージタイプ)が 1、つまり Discover です。 |
Offer:使えるアドレスを提案する
DHCP サーバが、端末に使えるアドレスを提案するメッセージです。この時点では、端末はまだアドレスを使っていません。
▾ 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)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Boot Reply (2) | サーバから端末への返答です。 |
| 2 | Your (client) IP address | サーバが提案するアドレスで、192.168.100.100 です。 |
| 3 | DHCP: Offer (2) | メッセージタイプが 2、つまり Offer です。 |
Request:提案されたアドレスを要求する
端末が、提案されたアドレスを使いたいとサーバに要求するメッセージです。Discover と同じくブロードキャストで送ります。
▾ 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)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | DHCP: Request (3) | メッセージタイプが 3、つまり Request です。 |
| 2 | Option: (50) | 要求するアドレスです。Offer で提案された 192.168.100.100 が入っています。 |
| 3 | Option: (54) | 端末が選んだ DHCP サーバの識別子(192.168.100.254)です。DHCP サーバが複数あっても、ブロードキャストされたこの値で、どのサーバの提案を受けたかが全サーバに伝わります。 |
ACK:割り当てを確定する
DHCP サーバが、要求されたアドレスを正式に割り当てるメッセージです。ACK を受け取ると、端末はそのアドレスを使い始めます。サブネットマスクやデフォルトゲートウェイなどの設定も、ここでオプションとして届きます。
▾ 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
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Your (client) IP address | 割り当てたアドレス(192.168.100.100)です。 |
| 2 | DHCP: ACK (5) | メッセージタイプが 5、つまり ACK です。 |
| 3 | Option: (1) | サブネットマスク(255.255.255.0)です。 |
| 4 | Option: (3) | デフォルトゲートウェイ(Router)で、192.168.100.254 です。 |
| 5 | Option: (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
| 表示 | 意味 |
|---|---|
| internal | DHCP サーバを動かしているインターフェースです。 |
| 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 アドレスによる予約を試します。
| ⋮ (アドレス範囲〜DNSサーバは図4 と同じ) | |||||||||
| ⊟ 高度な設定 | |||||||||
| 1モード | ◉ サーバ○ リレー | ||||||||
| NTPサーバ | ○ ローカル○ システムNTPと同じ◉ 指定0.0.0.0 | ||||||||
| タイムゾーン | ◉ システムと同じ○ 指定 | ||||||||
| 次のブートストラップサーバ | 0.0.0.0 | ||||||||
| 2その他のDHCPオプション |
| ||||||||
| 3MAC予約+アクセス制御 |
| ||||||||
| タイプ | ◉ レギュラー○ IPsec | ||||||||
リレーエージェントにする(モード)
ここまでは FortiGate 自身を DHCP サーバにしましたが、モードを「リレー」にすると、端末からの要求を別の DHCP サーバへ転送するリレーエージェントとして動きます。リレーを選ぶと、アドレス範囲などの項目の代わりに、転送先の「DHCPサーバIP」を入力する欄が表示されます。
| 1モード | ○ サーバ◉ リレー |
| 2DHCPサーバIP | |
| タイプ | ◉ レギュラー○ IPsec |
DHCP サーバを拠点ごとに置かず、センタのサーバにまとめるときなどに使います。DHCP サーバIP には、転送先の DHCP サーバのアドレスを入力します。
DHCPオプションを追加する
DHCP では、IP アドレス以外の情報もオプションとして端末に配れます。よく使う情報にはオプション番号が決まっていて、STEP 4 の ACK(図11)にも次のオプションが入っていました。
| オプション | 内容 |
|---|---|
| 1 | サブネットマスク |
| 3 | デフォルトゲートウェイ(Router) |
| 6 | DNS サーバ |
| 51 | リース時間(秒) |
| 53 | DHCP メッセージタイプ(1:Discover、2:Offer、3:Request、5:ACK など) |
| 54 | DHCP サーバの識別子 |
| 58 / 59 | リースの更新(T1)と再バインド(T2)を始めるまでの時間 |
決まったオプション以外の情報を配りたいときは、「その他のDHCPオプション」に追加します。たとえば Cisco の IP 電話は、オプション150 で受け取った TFTP サーバから設定ファイルをダウンロードします。このような IP 電話をつなぐときは、オプション150 を追加します。
「その他のDHCPオプション」の「新規作成」をクリックすると行が追加され、オプションコードを選べます。
| 追加済みの行 |
| ||||
| 2オプションコード | 4 (タイムサーバ – 16進数) 5 (ネームサーバ – 16進数) 7 (ログサーバ – 16進数) 12 (ホスト名 – 16進数) 13 (ブートファイルサイズ – 16進数) 15 (ドメイン) 16 (サーバをスワップ – 16進数) 51 (リース時間) 67 (ファイル名) 150 (TFTP サーバ)指定 (16進数) 指定 (文字列) 指定 (IP) |
今回はオプション150 を選び、TFTP サーバとして 10.10.10.10 を設定します。
| シーケンス# | オプションコード | 値 | 16進数値 |
|---|---|---|---|
| 51 (リース時間) | 604800 | ||
| 1 | 150 (TFTP サーバ) | 10.10.10.10 |
端末がもう一度アドレスを取得したときの DHCP ACK を見ると、オプション150 が配られています。
▸ 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
また、オプション51 のリース時間は、何も設定しなくても最初から入っていて、端末に配られています。既定値は 604800 秒(7日)で、この値は変更できます。
▸ 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
MACアドレスでIPアドレスを予約する
特定の端末に、毎回同じアドレスを割り当てることもできます。ここまで MAC アドレス 04:ab:18:7f:b5:d9 の端末には 192.168.100.100 が割り当てられていましたが、これを 192.168.100.150 に固定してみます。
「MAC予約+アクセス制御」の「新規作成」をクリックし、アクションに「IPを予約」を選んで、MAC アドレスと割り当てるアドレスを入力します。
| MACアドレス | アクションまたはIP | 説明 |
|---|---|---|
| 104:ab:18:7f:b5:d9 | 2IPを予約 ▾ 192.168.100.150 | |
| 不明なMACアドレス | IPを割り当て |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | MACアドレス | 予約する端末の MAC アドレス(04:ab:18:7f:b5:d9)です。「DHCPクライアント一覧から追加」を使うと、今アドレスを受け取っている端末から選べます。 |
| 2 | アクションまたはIP | 「IPを予約」を選び、割り当てるアドレス(192.168.100.150)を入力します。 |
最後の行の「不明なMACアドレス」は、ここに登録していない端末の扱いです。「IPを割り当て」なので、登録していない端末にもアドレス範囲から割り当てます。
端末でもう一度アドレスを取得すると、192.168.100.150 が割り当てられました。
| IPv4の設定 | DHCPサーバを使用 |
| 1IPアドレス | 192.168.100.150 |
| サブネットマスク | 255.255.255.0 |
| ルーター | 192.168.100.254 |
| DNSサーバ | 208.91.112.53, 208.91.112.52 |
| 検索ドメイン |
まとめ
| やりたいこと | 設定する場所 | 今回の値 |
|---|---|---|
| 配るアドレスの範囲 | 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つがそろっているか、どこで止まっているかを見ると原因を絞り込めます。
コメント