DHCP認証機能

$Date: 2023/07/06 20:22:18 $


概要

本機能を用いることで、あらかじめネットワーク管理者により使用を許可された端末(登録済み端末)と許可されていない端末(未登録端末)とをネットワーク上で区別し、許可の有無によってそれぞれの端末がアクセス可能なネットワークを制御することができます。
例えば、登録済み端末には社内・社外全てのネットワークへのアクセスを可能にし、未登録端末に対しては社内の特定セグメントのみへのアクセスに制限するなど、端末毎に異なるアクセス権を設定することが可能です。

端末に許可を与えるためのしくみとして、許可する端末に対して、DHCPによって割り当てられるIPアドレスをあらかじめ予約しておく方法を用います。IPアドレスの予約は、端末のMACアドレスをあらかじめルータに設定しておくことで行ないます。
また、登録済み端末と未登録端末をネットワーク上で区別するために、プライマリアドレス・セカンダリアドレスのしくみを用います。端末が接続される1つの物理ネットワークを2つの論理ネットワーク(プライマリネットワークとセカンダリネットワーク)に分割し、登録済み端末にはプライマリネットワークに対応するIPアドレスを、未登録端末にはセカンダリネットワークに対応するIPアドレスを割り当てることで、登録済み端末と未登録端末を区別します。

DHCPにより割り当てられるIPアドレスで端末の認証を行う場合、未登録端末であっても固定IPアドレスを使用してプライマリアドレスを設定することで登録済み端末と同じネットワークアクセスが可能になるという問題がありますが、本機能においては、MACアドレスを用いたイーサネットレベルでのフィルタリングを併用することでこの問題を解決しています。プライマリネットワークから送信されるパケットに対しては、送信元の端末が登録済み端末かどうかを判定してパケットのフィルタリングを行うことで、未登録端末が不正にプライマリネットワークから通信することを防ぎます。

本機能は、下記の機能を組み合わせることで実現します。

イーサネットレベルでのフィルタリング
許可されたMACアドレスの通信のみを通過させます。
静的設定情報の他、DHCPの予約設定情報も指定することができます。
DHCPの予約設定情報を指定した場合にはMACアドレスだけでなくIPアドレスの一致もチェックします。
DHCP 予約限定機能
IPアドレスの割り当ては予約されたクライアントだけに限定することができます。
スコープ内に割り当て可能なIPアドレスがある状態でも、予約されたクライアント以外には割り当ては行われません。
通知機能
フィルタリングの結果について、ログの表示とメール通知を行います。
DHCP 状態表示、設定変換機能
現在の割り当て情報の一覧から予約情報への設定移行変換を簡単に行うことができます。
DHCP サーバ・DHCPリレーエージェント連携機能
DHCP サーバにて設定された DHCP スコープ情報および DHCP スコープに設定されたアドレス予約情報を、DHCP リレーエージェントに通知してフィルタリングの際に参照します。

注意事項・関連文書

プライマリネットワーク・セカンダリネットワークについては、以下の文書をご参照下さい。


対応機種とファームウェアリビジョン

ヤマハ RT シリーズでは、以下の機種およびファームウェアで、DHCP 認証機能をサポートしています。

機種 ファームウエア
vRX VMware ESXi版
すべてのリビジョン
vRX Amazon EC2版
RTX3510
RTX1300
RTX1220
RTX830
NVR510
NVR700W
RTX1210
RTX5000
RTX3500
FWX120
RTX810
NVR500
RTX1200
SRT100
RT58i
Rev.9.01.11 以降
RTX3000
Rev.9.00.15 以降
RT107e
Rev8.03.42 以降
RTX1100/RTX1500
Rev8.03.37 以降

設定・操作方法

コマンド

○イーサネットフィルタの設定

    [書式]
        ethernet filter FILTER_NUM PASS_REJECT SRC_MAC [DST_MAC [OFFSET BYTE_LIST]]
        ethernet filter FILTER_NUM PASS_REJECT TYPE [SCOPE] [OFFSET BYTE_LIST]
        no ethernet filter FILTER_NUM [PASS_REJECT ...]

    [設定値]
        FILTER_NUM        ... 静的フィルタの番号(1..100)
        PASS_REJECT
            pass-log      ... 一致すれば通す(ログに記録する)
            pass-nolog    ... 一致すれば通す(ログに記録しない)
            reject-log    ... 一致すれば破棄する(ログに記録する)
            reject-nolog  ... 一致すれば破棄する(ログに記録しない)
        SRC_MAC           ... 始点MACアドレス
                              - xx:xx:xx:xx:xx:xx (xxは16進数、または*)
                              - * (すべてのMACアドレスに対応)
        DST_MAC           ... 終点MACアドレス
                              - 始点MACアドレスSRC_MACと同じ形式
                              - 省略時は1つの*と同じ
        TYPE
            dhcp-bind     ... 指定されたDHCPスコープで予約設定され
                              ているホストを対象にする
            dhcp-not-bind ... 指定されたDHCPスコープで予約設定され
                              ていないホストを対象にする
        SCOPE             ... DHCPスコープ
                              - 1..65535の整数
                              - DHCPスコープのリース範囲に含まれるIPア
                                ドレス
        OFFSET            ... オフセットを表す10進数(イーサネットフレー
                              ムの始点MACアドレスの直後を0とする)
        BYTE_LIST         ... バイト列
                              - xx(2桁の16進数)あるいは*(任意のバイト)
                                をカンマで区切った並び(16個以内)

    [説明]
        イーサネットフレームのフィルタを設定する。本コマンドで設定され
        たフィルタは、ethernet lan filterコマンドで用いられる。

        通常型のフィルタでは、始点MACアドレス、終点MACアドレスなどで送
        受信するイーサネットフレームにフィルタを適用する。

        dhcp-bind型のフィルタでは、以下のイーサネットフレームにフィルタ
        を適用する。対象とならないイーサネットフレームはフィルタに合致
        しないものとして扱う。

        o 以下のいずれかに該当する、IPv4パケットの場合
          - イーサネットタイプがIPv4(0x0800)
          - PPPoE環境で、イーサネットタイプがPPPoEデータフレーム
            (0x8864)、プロトコルIDがIPv4(0x0800)
          - 802.1QタグVLAN環境で、TPIDが802.1Qタグ(0x8100)、イーサネッ
            トタイプがIPv4(0x0800)

          イーサネットフレームの始点MACアドレスと始点IPアドレスの組が、
          対象となるDHCPスコープで予約されているならフィルタに合致する
          とみなす。

        o イーサネットタイプが、以下のいずれかの場合
          - ARP(0x0806)
          - RARP(0x8035)
          - PPPoE制御パケット(0x8863)
          - MACレイヤ制御パケット(0x8808)

          イーサネットフレームの始点MACアドレスが、対象となるDHCPスコー
          プで予約されているならフィルタに合致するとみなす。

        dhcp-not-bind型のフィルタでは、以下のイーサネットフレームにフィ
        ルタを適用する。対象とならないイーサネットフレームはフィルタに
        合致しないものとして扱う。

        o イーサネットタイプがIPv4(0x0800)である場合

          イーサネットフレームの始点IPアドレスが、対象となるDHCPスコー
          プのリース範囲に含まれていて、かつ、始点MACアドレスがDHCPスコー
          プで予約されていない時にフィルタに合致するとみなす。

        dhcp-bind、dhcp-not-bind型のフィルタで対象とするDHCPスコープは、
        SCOPEパラメータで指定する。SCOPEパラメータとしてはDHCPスコープ
        番号を指定することもできるし、DHCPスコープが定義されているサブ
        ネットに含まれるIPアドレスで指定することもできる。IPアドレスで
        DHCPスコープを指定する場合に、複数のDHCPスコープが該当する時には、
        その中で最も長いネットマスク長を持つDHCPスコープを選択する。

        SCOPEパラメータを省略した場合には、フィルタが適用されるインタ
        フェースで使用されるDHCPスコープがすべて対象となる。

        dhcp-bind、dhcp-not-bind型のフィルタが DHCP リレーエージェント
        として動作しているルータに設定された場合、DHCP サーバから DHCP
        スコープとその DHCP スコープにおけるクライアントの予約情報を
        取得し、フィルタの適用時に参照する。
        DHCP サーバからの DHCP スコープおよび予約情報の取得は、DHCP メ
        ッセージをリレーする際、DHCP メッセージのオプション部に予約情
        報を書き込んで通知することにより行なわれる。

    [ノート]
        LAN分割機能を使用する場合には、ルータ内部でイーサネットタイプと
        して0x8100〜0x810fの値を使用しているので、それらのイーサネット
        フレームをフィルタして送受信できないようにすると、LAN分割機能を
        使用しているポートで通信できなくなるので注意が必要である。

        dhcp-bind、dhcp-not-bind型のフィルタでは、イーサネットフレーム
        の始点MACアドレスや始点IPアドレスを用いてフィルタの判定をするた
        め、ethernet lan filterコマンドでは通常in方向にのみ使用すること
        になる。out方向の場合、始点MACアドレスはルータ自身のMACアドレス
        になるため、DHCPの予約情報と一致することはない。

        dhcp-bind型フィルタは、予約されているクライアントだけを通過させ
        る、という形になるため、通常はpass等と組み合わせて使用する。一
        方、dhcp-not-bind型フィルタは、予約されていないクライアントを破
        棄する、という形になるため、通常はreject等と組み合わせて使用す
        ることになる。

○インタフェースでのイーサネットフィルタリングの設定

    [書式]
    ethernet IF filter DIR LIST
        no ethernet IF filter DIR [LIST]

    [設定値]
        IF      ... LANインタフェース名
        DIR
            in  ... LAN側から入ってくるパケットのフィルタリング
            out ... LAN側に出ていくパケットのフィルタリング
        LIST    ... 空白で区切られた静的フィルタ番号の並び(100個以内)

    [説明]
        LAN側を通るパケットについて、ethernat filterコマンドによるパケットのフィル
        タを組み合わせて、通過するパケットの種類を制限する。

    [ノート]
        LANインタフェース名に指定できるのは物理的なLANだけであり、VLANインタフェー
        スは指定できない。

    [初期値]
        フィルタは設定されていない

○DHCP アドレス割り当て動作の設定

    [書式]
        dhcp scope lease type SCOPE_NUM TYPE [fallback=FALLBACK_SCOPE_NUM]
        no dhcp scope lease type SCOPE [TYPE ...]


    [設定値]
        SCOPE_NUM, FALLBACK_SCOPE_NUM ... スコープ番号 (1..65535)
        TYPE                          ... 割り当ての動作
            bind-priority             ... 予約情報を優先して割り当てる
            bind-only                 ... 予約情報だけに制限して割り当てる

    [説明]
        SCOPE_NUMで指定したDHCPスコープにおける、アドレスの割り当て方法
        を制御する。

        TYPEにbind-priorityを指定した場合には、dhcp scope bindコマンド
        で予約されたクライアントには予約どおりのIPアドレスを、予約され
        ていないクライアントには他のクライアントに予約されていない空き
        アドレスがスコープ内にある限りそれを割り当てる。

        TYPEにbind-priorityを指定した場合には、fallbackオプションは指
        定できない。

        TYPEにbind-onlyを指定した場合は、fallbackオプションでフォールバッ
        クスコープを指定しているかどうかによって動作が変わる。

        fallbackオプションの指定が無い場合、dhcp scope bindコマンドで
        予約されているクライアントにのみIPアドレスを割り当て、予約され
        ていないクライアントにはたとえスコープに空きがあってもIPアドレ
        スを割り当てない。

        TYPEにbind-onlyを指定し、同時にfallbackオプションでフォールバッ
        クスコープを指定している場合には、以下のような動作になる。

        (1) クライアントが、スコープでIPアドレスを予約されている時には、
            予約どおりのIPアドレスを割り当てる。

        (2) クライアントが、スコープではIPアドレスが予約されていないが、
            フォールバックスコープでは予約されている時には、フォールバッ
            クスコープでの予約どおりのIPアドレスを割り当てる。

        (3) クライアントが、スコープ、フォールバックスコープのいずれで
            もIPアドレスを予約されていない時には、フォールバックスコー
            プに対するdhcp scope lease typeコマンドの設定によって動作が
            変わる。

          (3a) フォールバックスコープに対するdhcp scope lease typeコマ
               ンドの設定がbind-priorityになっている時には、クライアン
               トにはフォールバックスコープに空きアドレスがある限りそれ
               を割り当てる。

          (3b) フォールバックスコープに対するdhcp scope lease typeコマ
               ンドの設定がbind-onlyになっている時には、クライアントに
               はIPアドレスは割り当てられない。

        いずれの場合も、リース期間は各DHCPスコープの定義に従う。

    [初期値]
        bind-priority

○DHCP 割り当て情報を元にした予約設定の生成

    [書式]
        dhcp convert lease to bind SCOPE_N [except] [IDX [...]]

    [設定値]
        SCOPE_N         ... スコープ番号(1-65535)
        IDX
            番号        ... show status dhcp summaryコマンドで表示されるインデックス番号、最大100個
            all         ... 割り当て中の情報全てを対象とする
            省略時はall

    [説明]
        現在の割り当て情報を元に予約設定を作成する。exceptキーワードを指示すると、
        指定した番号以外の情報が予約設定に反映される。

    [ノート]
        以下の変換規則でIPアドレス割り当て情報が予約設定に変換される。
IPアドレス割り当て情報のクライアント識別種別
(show status dhcpで表示される名称)
クライアント識別情報 例 予約設定情報 例
クライアントイーサネットアドレス 00:a0:de:01:02:03 ethernet 00:a0:de:01:02:03 ※1
00:a0:de:01:02:03 ※2
クライアントID (01) 00 a0 de 01 02 03 ethernet 00:a0:de:01:02:03
(01) 00 a0 de 01 02 03 04 01 00 a0 de 01 02 03 04
(00) 31 32 33 00 31 32 33
        ※1:rfc2131 compliant onあるいはuse-clientidありの場合、このようなIPアドレ
             ス割り当て情報の表示はARPチェックの結果である可能性が高く、通常の割り
             当て時にはクライアントIDオプションが使われるため、この形式で予約設定を
             する
             ただし、MACアドレスと異なるクライアントIDを使うホストが存在する場合は
             この自動変換による予約は有効に機能しないため、そのようなホストに対する
             予約設定は別途、手動で行う必要がある

        ※2:rfc2131 compliant offあるいはuse-clientidなしの場合、chaddrフィールド
             を使用する

        コマンド実行時点での割り当て情報を元に予約設定を作成する。サマリ表示からこ
        の変換コマンドの実行までに時間が経過した場合には、本コマンド実行後に意図し
        たペアの予約が作成されていることをshow configで確認するべきである。

        変換作成された予約情報を不揮発性メモリに保存するためには別途saveコマンドを
        実行する。

○メール通知の設定(トリガーの条件にイーサネットフィルタを追加)

    [書式]
        mail notify NUM TEMPLATE_ID trigger backup IF_B RANGE [IF_B RANGE ...]
        mail notify NUM TEMPLATE_ID trigger route ROUTE [ROUTE ...]
        mail notify NUM TEMPLATE_ID trigger filter ethernet IF_F DIR [IF_F DIR [...]]
        no mail notify NUM

    [設定値]
        NUM         ... 設定番号(1-10)
        TEMPLATE_ID ... メールテンプレートID(1-10)
        IF_B        ... メール通知を行うバックアップ対象のインタフェース
            pp      ... PPバックアップ
            lanN    ... LANバックアップ
            tunnel  ... TUNNELバックアップ
        RANGE       ... インタフェース番号および範囲指定、pp, tunnelのみ(*,xx-yy,zz etc)
        ROUTE       ... ネットマスク付きの経路
        IF_F        ... メール通知を行うフィルタの設定されたLANインタフェース
        DIR         ... フィルタ設定の方向
            in      ... 受信方向
            out     ... 送信方向

    [説明]
        メール通知を行うトリガ動作の設定を行う。バックアップ、経路変更、およびフィルタ
        のログ表示をトリガとして指定できる。
        バックアップおよび経路については以下で設定されたものが対象となる。
           PPバックアップ           ... pp backupコマンド
           LANバックアップ          ... lan backupコマンド
           TUNNELバックアップ       ... tunnel backupコマンド
           経路に対するバックアップ ... ip routeコマンド
        フィルタについてはログ表示されるものが対象となる。
           イーサネットフィルタ     ... pass-log, reject-logパラメータの定義
        また、一つのテンプレートIDに所属するメール通知設定はまとめて処理される。

    [ノート]
        RT58i、RT107eは対応していない。
        ネットワークバックアップは経路に対するバックアップなので、trigger routeを使用する。

    [設定例]
        mail notify 1 1 trigger backup pp * lan2 lan3 tunnel 1-10,12
        mail notify 2 1 trigger route 192.168.1.0/24,172.16.0.0/16
        mail notify 3 1 trigger filter ethernet lan1 in

○DHCP予約アドレスの設定(IPアドレスとして'*'を指定可能とするよう拡張)

    [書式]
        dhcp scope bind SCOPE_NUM IP_ADDRESS [TYPE] ID
        dhcp scope bind SCOPE_NUM IP_ADDRESS MAC_ADDRESS
        dhcp scope bind SCOPE_NUM IP_ADDRESS ipcp
        no dhcp scope bind SCOPE_NUM IP_ADDRESS [[TYPE] ID]
        no dhcp scope bind SCOPE_NUM IP_ADDRESS MAC_ADDRESS

    [設定値]
        SCOPE_NUM                ... スコープ番号(1..65535)
        IP_ADDRESS               ...予約するIP アドレス
                                    - xxx.xxx.xxx.xxx(xxxは10進数)
                                    - * (リースするIPアドレスを指定しない)
        TYPE                     ... Client-Identifier オプションのtypeフィールド
                                     を決定する
                                     - 0x00(text)
                                     - 0x01(ethernet)
        ID
            typeがethernetの場合 ... MACアドレス
            typeがtextの場合     ... 文字列
            typeが省略された場合 ... 2桁16進数の列で先頭はtypeフィールド
        MAC_ADDRESS              ... 予約クライアントのMACアドレス
                                     - xx:xx:xx:xx:xx:xx (xxは16進数)
        ipcp                     ... IPCPでリモート側に与えることを示すキーワード

    [説明]
        IPアドレスをリースするDHCPクライアントを固定的に設定する。

        Rev.8.03以降のファームウェアでは、IPアドレスを固定せずに'*'指定とし
        てクライアントだけを指定することもできる。この形式を削除する場合はク
        ライアント識別子を省略できない。

    [ノート]
        従来のコマンドリファレンスの記述より変更なし。

○DHCPアドレス割り当て状態の表示("summary"キーワード追加)

    [書式]
        show status dhcp [summary] [SCOPE_N]

    [設定値]
        summary  ... 各DHCP スコープのIP アドレス割り当て状況の概要を表示する
        SCOPE_N  ... スコープ番号(1-65535)

    [説明]
        各 DHCP スコープのリース状況を表示する。以下の項目が表示される。
            - DHCP スコープのリース状態
            - DHCP スコープ番号
            - ネットワークアドレス
            - 割り当て中 IP アドレス
            - 割り当て中クライアント MAC アドレス
            - リース残時間
            - 予約済(未使用) IP アドレス
            - DHCP スコープの全 IP アドレス数
            - 除外 IP アドレス数
            - 割り当て中 IP アドレス数
            - 利用可能アドレス数(うち予約済 IP アドレス数)

    [ノート]
        Rev.8.03以降のファームウェアで、summary を指定可能。

設定例

[プライマリネットワークのみの設定例1] 特定の端末のみ外部との通信を許可

[概要]

[構成図]

               172.16.1.0/24
      ┌─┐        │
 端末A│○+────+
      └─┘        │
 00:a0:de:01:02:03  │
 172.16.1.2を与える │
                    │
      ┌─┐        │
 端末B│○+────+
      └─┘        │
 00:a0:de:11:12:13  │      ┌───┐   外部ネットワークへ
 172.16.1.3を与える +───+ルータ+────→
                    │  lan1└───┘
      ┌─┐        │      DHCPサーバ
 端末C│○+────+
      └─┘        │
 00:a0:de:21:22:23  │
 172.16.1.4を与える │
                    │
      ┌─┐        │
      │×+────+
      └─┘        │
      その他
 外部へのアクセスを禁止

[設定手順]

# ethernet filter 1 pass-nolog dhcp-bind 1
# ethernet lan1 filter in 1
# dhcp service server
# dhcp scope lease type 1 bind-only
# dhcp scope 1 172.16.1.2-172.16.1.127/24
# dhcp scope bind 1 172.16.1.2 ethernet 00:a0:de:01:02:03
# dhcp scope bind 1 172.16.1.3 ethernet 00:a0:de:11:12:13
# dhcp scope bind 1 172.16.1.4 ethernet 00:a0:de:21:22:23

[解説]

  1. # ethernet filter 1 pass-nolog dhcp-bind 1
    # ethernet lan1 filter in 1
    送信元MACアドレスとIPアドレスがDHCP予約設定に一致するパケットのみを通過させます。
  2. # dhcp service server
    DHCPサーバとして機能させます。
  3. # dhcp scope lease type 1 bind-only
    スコープ1の範囲内のIPアドレスに空きがあったとしても、予約されたクライアント以外にはIPアドレスを割り当てません。
  4. # dhcp scope 1 172.16.1.2-172.16.1.127/24
    DHCPサーバとしてクライアントに与えるアドレス範囲を設定します。
  5. # dhcp scope bind 1 172.16.1.2 ethernet 00:a0:de:01:02:03
    # dhcp scope bind 1 172.16.1.3 ethernet 00:a0:de:11:12:13
    # dhcp scope bind 1 172.16.1.4 ethernet 00:a0:de:21:22:23
    端末A/B/CにIPアドレスの割り当てを予約します。

[プライマリネットワークのみの設定例2] 許可されていない端末の通信を検知したらメールで通知

[概要]

[構成図]

               172.16.1.0/24
      ┌─┐        │
 端末A│○+────+
      └─┘        │
 00:a0:de:01:02:03  │
                    │
      ┌─┐        │
 端末B│○+────+
      └─┘        │
 00:a0:de:11:12:13  │      ┌───┐   外部ネットワークへ
                    +───+ルータ+────→
                    │  lan1└+──┘
      ┌─┐        │        │
 端末C│○+────+    ──+─+──
      └─┘        │            │ mx.example.co.jp
 00:a0:de:21:22:23  │      ┌──+───┐
                    │      │メールサーバ│
      ┌─┐        │      └──────┘
      │×+────+
      └─┘        │
      その他
 外部へのアクセスを禁止

[設定手順]

# ethernet filter 1 pass-nolog 00:a0:de:01:02:03
# ethernet filter 2 pass-nolog 00:a0:de:11:12:13
# ethernet filter 3 pass-nolog 00:a0:de:21:22:23
# ethernet filter 100 reject-log *
# ethernet lan1 filter in 1 2 3 100
# mail server smtp 1 mx.example.co.jp
# mail template 1 1 From:filter@rtx1500 To:admin@example.co.jp
# mail notify 1 1 trigger filter ethernet lan1 in

[解説]

  1. # ethernet filter 1 pass-nolog 00:a0:de:01:02:03
    # ethernet filter 2 pass-nolog 00:a0:de:11:12:13
    # ethernet filter 3 pass-nolog 00:a0:de:21:22:23
    端末A/B/Cからのパケットを通過させるためのフィルタ定義を設定します。
  2. # ethernet filter 100 reject-log *
    メール通知用にログ出力するフィルタ定義を設定します。
  3. # ethernet lan1 filter in 1 2 3 100
    LAN1から受信するパケットに対して各定義を適用します。
  4. # mail server smtp 1 mx.example.co.jp
    # mail template 1 1 From:filter@rtx1500 To:admin@example.co.jp
    メール通知で使用するSMTPサーバおよびヘッダ情報を設定します。
  5. # mail notify 1 1 trigger filter ethernet lan1 in
    メール通知するトリガとしてLAN1の受信方向のフィルタを設定します。

[プライマリネットワークのみの設定例3] 現在の DHCP のアドレス割り当て情報から DHCP の予約設定を作成

[概要]

[構成図]

               172.16.1.0/24
      ┌─┐        │
 端末A│○+────+
      └─┘        │
 00:a0:de:01:02:03  │
 172.16.1.2を与える │
                    │
      ┌─┐        │
 端末B│○+────+
      └─┘        │
 00:a0:de:11:12:13  │      ┌───┐   外部ネットワークへ
 172.16.1.3を与える +───+ルータ+────→
                    │  lan1└───┘
      ┌─┐        │      DHCPサーバ
 端末C│○+────+
      └─┘        │
 00:a0:de:21:22:23  │
 172.16.1.4を与える │
                    │
      ┌─┐        │
      │×+────+
      └─┘        │
      その他
 外部へのアクセスを禁止

[設定手順]

# dhcp service server
# dhcp scope 1 172.16.1.2-172.16.1.127/24
# show status dhcp summary 1
DHCPスコープ番号: 1
  1:        172.16.1.2:  00:a0:de:01:02:03, hostname_A
  2:        172.16.1.3:  00:a0:de:11:12:13, hostname_B
  3:        172.16.1.4:  00:a0:de:21:22:23, hostname_C
  4:        172.16.1.5:  00:a0:de:31:32:33, hostname_D
  5:        172.16.1.6:  00:a0:de:41:42:43, hostname_E
# dhcp convert lease to bind 1 1 2 3
# dhcp scope lease type 1 bind-only
# ethernet filter 1 pass-nolog dhcp-bind 1
# ethernet lan1 filter in 1

[解説]

  1. # dhcp service server
    DHCPサーバとして機能させます。
  2. # dhcp scope 1 172.16.1.2-172.16.1.127/24
    DHCPサーバとしてクライアントに与えるアドレス範囲を設定します。
    この後、各端末でIPアドレスを取得するなどしてDHCPサーバがクライアントの割り当て情報を管理できるようにします。
  3. # show status dhcp summary 1
    クライアントに割り当てたIPアドレス情報の概要を表示します。
       # show status dhcp summary 1
       DHCPスコープ番号: 1
         1:        172.16.1.2:  00:a0:de:01:02:03, hostname_A
         2:        172.16.1.3:  00:a0:de:11:12:13, hostname_B
         3:        172.16.1.4:  00:a0:de:21:22:23, hostname_C
         4:        172.16.1.5:  00:a0:de:31:32:33, hostname_D
         5:        172.16.1.6:  00:a0:de:41:42:43, hostname_E
      
  4. # dhcp convert lease to bind 1 1 2 3
    表示1,2,3番の割り当て情報を予約設定に移行します。
    例えばこの場合、1番の割り当て情報からは
    dhcp scope bind 1 172.16.1.2 ethernet 00:a0:de:01:02:03
    のコマンドが作成されます。
    なおこのコマンドはコマンド実行時点での割り当て情報を元に予約設定を作成します。
    サマリ表示からこの変換コマンドの実行までに時間が経過した場合には、本コマンド実行後に意図したペアの予約が作成されていることを show config で確認してください。
  5. # dhcp scope lease type 1 bind-only
    スコープ1の範囲内のIPアドレスに空きがあったとしても、予約されたクライアント以外にはIPアドレスを割り当てません。
  6. # ethernet filter 1 pass-nolog dhcp-bind 1
    # ethernet lan1 filter in 1
    LAN1 から入ってきたパケットについて、送信元MACアドレスとIPアドレスがDHCP予約設定に一致するパケットのみを通過させます。

[セカンダリネットワークを用いた設定例1] インターネットアクセス

[概要]

[構成図]

           (primary) 192.168.0.0/24
         (secondary) 172.16.0.0/24
                    |
    +-------+       |
    | 端末1 +-------+
    +-------+       |
00:a0:de:01:02:03   |
 primary address    |
     (DHCP)         |
                    |
    +-------+       |
    | 端末2 +-------+
    +-------+       |
00:a0:de:11:12:13   |
secondary address   |        192.168.100.0/24
     (DHCP)         |               |
                    |               |
    +-------+       |               |
    | 端末3 +-------+               | lan3
    +-------+       |               | 192.168.100.1/24
00:a0:de:21:22:23   |            +--+------+
  192.168.0.200     +------------+ ルータA +-----------> 外部ネットワークへ
     (固定IP)       |       lan1 +---------+ lan2
                     (primary) 192.168.0.1/24
                   (secondary) 172.16.0.1/24

[設定手順]

(WAN側の設定は省略)

(ルータA)
# ip lan1 address 192.168.0.1/24
# ip lan1 secondary address 172.16.0.1/24
# ip lan3 address 192.168.100.1/24
# dhcp service server
# dhcp scope 1 192.168.0.2-192.168.0.5/24
# dhcp scope 2 172.16.0.2-172.16.0.5/24
# dhcp scope bind 1 192.168.0.2 ethernet 00:a0:de:01:02:03
# dhcp scope lease type 1 bind-only fallback=2
# ip filter 1 pass-nolog 192.168.0.0/24 *
# ip lan2 secure filter out 1
# ethernet filter 1 reject-log dhcp-not-bind 192.168.0.1
# ethernet filter 2 pass-nolog *:*:*:*:*:* *:*:*:*:*:*
# ethernet lan1 filter in 1 2

[解説]

  1. # ip lan1 address 192.168.0.1/24
    # ip lan1 secondary address 172.16.0.1/24
    LAN側(lan1ポート)のプライマリアドレスとセカンダリアドレスを設定します。
  2. # ip lan3 address 192.168.100.1/24
    LAN側(lan3ポート)のIPアドレスを設定します。
  3. # dhcp service server
    DHCPサーバとして機能させます。
  4. # dhcp scope 1 192.168.0.2-192.168.0.5/24
    # dhcp scope 2 172.16.0.2-172.16.0.5/24
    プライマリ・セカンダリネットワークに対する DHCP スコープを定義します。
    gateway パラメータを省略しているので、ゲートウェイアドレスとしてはそれぞれルータのIPアドレスが通知されます。
  5. # dhcp scope bind 1 192.168.0.2 ethernet 00:a0:de:01:02:03
    プライマリネットワークのDHCPスコープ(DHCPスコープ番号1)に、端末1のIPアドレスを予約します。
  6. # dhcp scope lease type 1 bind-only fallback=2
    プライマリネットワークのDHCPスコープ(DHCPスコープ番号1)においてアドレスが予約されている端末には、予約済みのアドレスを割り当てます。
    スコープ1からのアドレス割り当てに失敗した場合、スコープ2からの割り当てを試みます。
  7. # ip filter 1 pass-nolog 192.168.0.0/24 *
    # ip lan2 secure filter out 1
    プライマリネットワークからのパケットのみを外部ネットワークへ通過させます。
  8. # ethernet filter 1 reject-log dhcp-not-bind 192.168.0.1
    # ethernet filter 2 pass-nolog *:*:*:*:*:* *:*:*:*:*:*
    # ethernet lan1 filter in 1 2
    プライマリネットワークからのパケットについては、dhcp scope bind コマンドで予約されていない端末からのパケットを破棄します。
    プライマリネットワーク以外からのパケットについては全てを通過させます。

[参考]

セカンダリネットワーク(172.16.0.0/24)からプライマリネットワーク(192.168.0.0/24)へのアクセスも禁止したい場合には、IPフィルタの設定を以下のように変更します。
この場合、セカンダリネットワークからルータAへ届く DHCP パケットをフィルタリングしないように注意が必要です。

# ip filter 1 pass-nolog 172.16.0.0/24 192.168.100.0/24 *
# ip filter 2 pass-nolog 192.168.0.0/24 *
# ip filter 3 pass-nolog 0.0.0.0 *
# ip filter 4 pass-nolog 172.16.0.0/24 172.16.0.1 *
# ip lan1 secure filter in 1 2 3 4

[セカンダリネットワークを用いた設定例2] インターネットVPN

[概要]

[構成図]

(p): primary
(s): secondary
                                                (p) 192.168.0.0/24
                                                (s) 192.168.100.0/24
                                                           |
                                         +--------+        |
                                         | 端末C1 +--------+
                                         +--------+        |
                                      00:a0:de:61:62:63    |
                                       primary address     |
                                                           |
                                         +--------+        |
                                         | 端末C2 +--------+
                                         +--------+        |
                                      00:a0:de:71:72:73    |
                                      secondary address    |
         (p) 192.168.1.0/24                (DHCP)          |
         (s) 192.168.101.0/24                              |
                    |                    +--------+        |
   +--------+       |                    | 端末C3 +--------+
   | 端末A1 +-------+                    +--------+        |
   +--------+       |                 00:a0:de:81:82:83    |
00:a0:de:01:02:03   |                   192.168.0.200      |
 primary address    |                     (固定IP)         |
     (DHCP)         |                                      |
                    |                                      |
   +--------+       |                 (p) 192.168.0.1/24   |
   | 端末A2 +-------+                 (s) 192.168.100.1/24 |   192.168.200.0/24
   +--------+       |                                 lan1 |          |
00:a0:de:11:12:13   |                                 +----+----+     |
secondary address   |                      (センター) | ルータC +-----+
     (DHCP)         |                                 +----+----+ lan3
                    |                                 lan2 |      192.168.200.1/24
   +--------+       |                                      |
   | 端末A3 +-------+                                      |
   +--------+       |          (拠点1)                /----+---\
00:a0:de:21:22:23   |            +---------+          |        |
  192.168.1.200     +------------+ ルータA +----------+        |
    (固定IP)        |       lan1 +---------+ lan2     |        |
                     (p) 192.168.1.1/24               |        |
                     (s) 192.168.101.1/24             |        |
                                                      |        |
                                                      |        |
                                                      |        |
         (p) 192.168.2.0/24                           |        |
         (s) 192.168.102.0/24                         |        |
                    |                                 |        |
   +--------+       |                                 |        |
   | 端末B1 +-------+                                 |  VPN   |
   +--------+       |                                 | tunnel |
00:a0:de:31:32:33   |                                 |        |
 primary address    |                                 |        |
     (DHCP)         |                                 |        |
                    |                                 |        |
   +--------+       |                                 |        |
   | 端末B2 +-------+                                 |        |
   +--------+       |                                 |        |
00:a0:de:41:42:43   |                                 |        |
secondary address   |                                 |        |
     (DHCP)         |                                 |        |
                    |                                 |        |
   +--------+       |                                 |        |
   | 端末B3 +-------+                                 |        |
   +--------+       |         (拠点2)                 |        |
00:a0:de:51:52:53   |            +---------+          |        |
  192.168.2.200     +------------+ ルータB +----------+        |
    (固定IP)        |       lan1 +---------+ lan2     |        |
                     (p) 192.168.2.1/24               \--------/
                     (s) 192.168.102.1/24

[設定手順]

(それぞれWAN側の設定は省略)

(ルータA)

# ip lan1 address 192.168.1.1/24
# ip lan1 secondary address 192.168.101.1/24
# dhcp service relay
# dhcp relay server 192.168.0.1
# ip filter 1 pass-nolog 192.168.101.0/24 192.168.200.0/24
# ip filter 2 pass-nolog 192.168.1.0/24 *
# ip lan2 secure filter out 1 2
# ethernet filter 1 reject-log dhcp-not-bind 192.168.1.1
# ethernet filter 2 pass-nolog *:*:*:*:*:* *:*:*:*:*:*
# ethernet lan1 filter in 1 2


(ルータB)

# ip lan1 address 192.168.2.1/24
# ip lan1 secondary address 192.168.102.1/24
# dhcp service relay
# dhcp relay server 192.168.0.1
# ip filter 1 pass-nolog 192.168.102.0/24 192.168.200.0/24
# ip filter 2 pass-nolog 192.168.2.0/24 *
# ip lan2 secure filter out 1 2
# ethernet filter 1 reject-log dhcp-not-bind 192.168.2.1
# ethernet filter 2 pass-nolog *:*:*:*:*:* *:*:*:*:*:*
# ethernet lan1 filter in 1 2


(ルータC)

# ip lan1 address 192.168.0.1/24
# ip lan1 secondary address 192.168.100.1/24
# ip lan3 address 192.168.200.1/24
# dhcp service server

# dhcp scope 1 192.168.1.2-192.168.1.5/24 gateway 192.168.1.1
# dhcp scope 2 192.168.101.2-192.168.101.5/24 gateway 192.168.101.1
# dhcp scope bind 1 192.168.1.2 ethernet 00:a0:de:01:02:03
# dhcp scope lease type 1 bind-only fallback=2

# dhcp scope 3 192.168.2.2-192.168.2.5/24 gateway 192.168.2.1
# dhcp scope 4 192.168.102.2-192.168.102.5/24 gateway 192.168.102.1
# dhcp scope bind 3 192.168.2.2 ethernet 00:a0:de:31:32:33
# dhcp scope lease type 3 bind-only fallback=4

# dhcp scope 5 192.168.0.2-192.168.0.5/24 gateway 192.168.0.1
# dhcp scope 6 192.168.100.2-192.168.100.5/24 gateway 192.168.100.1
# dhcp scope bind 5 192.168.0.2 ethernet 00:a0:de:61:62:63
# dhcp scope lease type 5 bind-only fallback=6

# ip filter 1 pass-nolog 192.168.0.0/24 *
# ip lan2 secure filter out 1
# ethernet filter 1 reject-log dhcp-not-bind 192.168.0.1
# ethernet filter 2 pass-nolog *:*:*:*:*:* *:*:*:*:*:*
# ethernet lan1 filter in 1 2

[解説]

(ルータA)
  1. # ip lan1 address 192.168.1.1/24
    # ip lan1 secondary address 192.168.101.1/24
    LAN側(lan1)のプライマリアドレスとセカンダリアドレスを設定します。
  2. # dhcp service relay
    # dhcp relay server 192.168.0.1
    DHCPリレーエージェントとして動作させます。
    センター側のルータをDHCPサーバに指定します。
  3. # ip filter 1 pass-nolog 192.168.101.0/24 192.168.200.0/24
    # ip filter 2 pass-nolog 192.168.1.0/24 *
    # ip lan2 secure filter out 1 2
    セカンダリネットワークからのパケットは、192.168.100.0/24 へ向かうパケットのみを通過させます。
    プライマリネットワークからのパケットは全て通過させます。
  4. # ethernet filter 1 reject-log dhcp-not-bind 192.168.1.1
    # ethernet filter 2 pass-nolog *:*:*:*:*:* *:*:*:*:*:*
    # ethernet lan1 filter in 1 2
    プライマリネットワークからのパケットについては、センター側の DHCP サーバにおいて、dhcp scope bind コマンドで予約されていない端末からのパケットを破棄します。
    プライマリネットワーク以外からのパケットについては全てを通過させます。
(ルータB) (ルータC)
  1. # ip lan1 address 192.168.0.1/24
    # ip lan1 secondary address 192.168.100.1/24
    LAN側(lan1)のプライマリアドレスとセカンダリアドレスを設定します。
  2. # ip lan3 address 192.168.200.1/24
    LAN側(lan3)のIPアドレスを設定します。
  3. # dhcp service server
    DHCPサーバとして機能させます。
  4. # dhcp scope 1 192.168.1.2-192.168.1.5/24 gateway 192.168.1.1
    # dhcp scope 2 192.168.101.2-192.168.101.5/24 gateway 192.168.101.1
    # dhcp scope bind 1 192.168.1.2 ethernet 00:a0:de:01:02:03
    # dhcp scope lease type 1 bind-only fallback=2
    拠点1のネットワークに対応するDHCPサーバの設定を行います。
    拠点1のプライマリ・セカンダリネットワークに対するDHCPスコープを設定し、端末A1のアドレスをプライマリネットワークに予約します。
    プライマリネットワークのDHCPスコープ(DHCPスコープ番号1)において予約されていない端末は、セカンダリネットワークのDHCPスコープ(DHCPスコープ番号2)からアドレスを割り当てます。
  5. # dhcp scope 3 192.168.2.2-192.168.2.5/24 gateway 192.168.2.1
    # dhcp scope 4 192.168.102.2-192.168.102.5/24 gateway 192.168.102.1
    # dhcp scope bind 3 192.168.2.2 ethernet 00:a0:de:31:32:33
    # dhcp scope lease type 3 bind-only fallback=4
    拠点1と同様の設定を、拠点2に対して行います。
  6. # dhcp scope 5 192.168.0.2-192.168.0.5/24 gateway 192.168.0.1
    # dhcp scope 6 192.168.100.2-192.168.100.5/24 gateway 192.168.100.1
    # dhcp scope bind 5 192.168.0.2 ethernet 00:a0:de:61:62:63
    # dhcp scope lease type 5 bind-only fallback=6
    拠点1と同様の設定を、センターに対して行います。
  7. # ip filter 1 pass-nolog 192.168.0.0/24 *
    # ip lan2 secure filter out 1
    プライマリネットワークからのパケットのみを外部へ通過させます。
  8. # ethernet filter 1 reject dhcp-not-bind 192.168.0.1
    # ethernet filter 2 pass-nolog *:*:*:*:*:* *:*:*:*:*:*
    # ethernet lan1 filter in 1 2
    プライマリネットワークからのパケットについては、dhcp scope bind コマンドで予約されていない端末からのパケットを破棄します。
    プライマリネットワーク以外からのパケットについては全てを通過させます。

[セカンダリネットワークを用いた設定例3] フィルタ型ルーティングを用いたプロバイダの切り替え

[概要]

[構成図]

           (primary) 192.168.0.0/24
         (secondary) 172.16.0.0/24
                    |
    +-------+       |
    | 端末1 +-------+
    +-------+       |
00:a0:de:01:02:03   |
 primary address    |
     (DHCP)         |
                    |               +-----> The Internet
    +-------+       |               |
    | 端末2 +-------+        +------+------+
    +-------+       |        | プロバイダA |
00:a0:de:11:12:13   |        +------+------+
secondary address   |               |                   +--> The Internet
     (DHCP)         |           +---+----+              |
                    |           | モデム |       +------+------+
    +-------+       |           +---+----+       | プロバイダB |
    | 端末3 +-------+               |            +------+------+
    +-------+       |               | lan3              |
00:a0:de:21:22:23   |            +--+------+ lan2   +---+----+
  192.168.0.200     +------------+ ルータA +--------+ モデム |
     (固定IP)       |       lan1 +---------+        +--------+
                     (primary) 192.168.0.1/24
                   (secondary) 172.16.0.1/24

[設定手順]

# ip lan1 address 192.168.0.1/24
# ip lan1 secondary address 172.16.0.1/24

# dhcp service server
# dhcp scope 1 192.168.0.2-192.168.0.5/24
# dhcp scope 2 172.16.0.2-172.16.0.5/24
# dhcp scope bind 1 192.168.0.2 ethernet 00:a0:de:01:02:03
# dhcp scope lease type 1 bind-only fallback=2

# nat descriptor type 1 masquerade
# nat descriptor address inner 1 192.168.0.2-192.168.0.5
# pp select 1
pp1# pppoe use lan3
pp1# pp auth accept chap pap
pp1# pp auth myname ID_A PASSWORD_A
pp1# ppp ipcp ipaddress on
pp1# ppp ipcp msext on
pp1# ip pp nat descriptor 1
pp1# ppp lcp mru on 1454
pp1# ip pp mtu 1454
pp1# pp enable 1
pp1# pp select none

# nat descriptor type 2 masquerade
# nat descriptor address inner 2 172.16.0.2-172.16.0.5
# pp select 2
pp2# pppoe use lan2
pp2# pp auth accept chap pap
pp2# pp auth myname ID_B PASSWORD_B
pp2# ppp ipcp ipaddress on
pp2# ppp ipcp msext on
pp2# ip pp nat descriptor 2
pp2# ppp lcp mru on 1454
pp2# ip pp mtu 1454
pp2# pp enable 1
pp2# pp select none

# ip filter 1 pass-nolog 192.168.0.0/24 * * * *
# ip filter 2 pass-nolog 172.16.0.0/24 * * * *
# ip route default gateway pp 1 filter 1 pp 2 filter 2

# ethernet filter 1 reject-log dhcp-not-bind 192.168.0.1
# ethernet filter 2 pass-nolog *:*:*:*:*:* *:*:*:*:*:*
# ethernet lan1 filter in 1 2

[解説]

  1. # ip lan1 address 192.168.0.1/24
    # ip lan1 secondary address 172.16.0.1/24
    LAN側(lan1ポート)のプライマリIPアドレスとセカンダリIPアドレスを設定します。
  2. # dhcp service server
    # dhcp scope 1 192.168.0.2-192.168.0.5/24
    # dhcp scope 2 172.16.0.2-172.16.0.5/24
    # dhcp scope bind 1 192.168.0.2 ethernet 00:a0:de:01:02:03
    # dhcp scope lease type 1 bind-only fallback=2
    DHCPサーバの動作を設定します。
    端末1のIPアドレスをスコープ1内に予約します。
    スコープ1に予約されている端末には、スコープ1から予約済みのアドレスを割り当て、スコープ1に予約されていない端末には、スコープ2から空きアドレスを割り当てます。
  3. # nat descriptor type 1 masquerade
    # nat descriptor address inner 1 192.168.0.2-192.168.0.5
    # pp select 1
    pp1# pppoe use lan3
    pp1# pp auth accept chap pap
    pp1# pp auth myname ID_A PASSWORD_A
    pp1# ppp ipcp ipaddress on
    pp1# ppp ipcp msext on
    pp1# ip pp nat descriptor 1
    pp1# ppp lcp mru on 1454
    pp1# ip pp mtu 1454
    pp1# pp enable 1
    pp1# pp select none
    lan3を用いたプロバイダAへの接続を設定します。
  4. # nat descriptor type 2 masquerade
    # nat descriptor address inner 2 172.16.0.2-172.16.0.5
    # pp select 2
    pp2# pppoe use lan2
    pp2# pp auth accept chap pap
    pp2# pp auth myname ID_B PASSWORD_B
    pp2# ppp ipcp ipaddress on
    pp2# ppp ipcp msext on
    pp2# ip pp nat descriptor 2
    pp2# ppp lcp mru on 1454
    pp2# ip pp mtu 1454
    pp2# pp enable 1
    pp2# pp select none
    lan2を用いたプロバイダBへの接続を設定します。
  5. # ip filter 1 pass-nolog 192.168.0.0/24 * * * *
    # ip filter 2 pass-nolog 172.16.0.0/24 * * * *
    # ip route default gateway pp 1 filter 1 pp 2 filter 2
    フィルタ型ルーティングを用いて、プライマリアドレスからのパケットは pp1 (プロバイダA)へ、セカンダリアドレスからのパケットは pp2 (プロバイダB)へ、それぞれルーティングします。
  6. # ethernet filter 1 reject-log dhcp-not-bind 192.168.0.1
    # ethernet filter 2 pass-nolog *:*:*:*:*:* *:*:*:*:*:*
    # ethernet lan1 filter in 1 2
    プライマリネットワークからのパケットについては、dhcp scope bind コマンドで予約されていない端末からのパケットを破棄します。
    プライマリネットワーク以外からのパケットについては全てを通過させます。

[EOF]