ヤマハルータのDHCP機能でIoT機器に固定IPアドレスを発行する場合の注意


DHCPのClient-Identifierオプションが使われる場合、使われない場合

多くのPCやスマートフォンのDHCPクライアント機能が送出するDHCPメッセージは、Client-Identifierオプションを使う形で発行される。私が確認した例では、以下の機器がこのパターンに該当した。

  • Windows10 PC
    • イーサネットインタフェースのドライバは「Realtek PCIe GBE Family Controller」とあった
  • Androidスマートフォン:HTC E11 Life
    • Androidのバージョンは8.0.0

これに対し、IoT機器のDHCPクライアント機能が送出するDHCPメッセージは、Client-Identifierオプションを使わない形で発行されることがある。私が確認した例では、以下のIoT機器がこのパターンに該当した。

  • Google Home Mini
  • Philips hue

接続されている機器のDHCPクライアント機能がClient-Identifierオプションを発行しているかどうかを確認する

ヤマハルータにおいて、接続されている機器のDHCPクライアント機能がClient-Identifierオプションを発行しているかどうかは、show status dhcpコマンドで確認することができる。

接続されている機器のDHCPクライアント機能がClient-Identifierオプションを発行している場合、show status dhcpの当該機器に対する結果は以下のようになる。

割り当て中アドレス: xxx.xxx.xxx.xxx
 (タイプ) クライアントID: (01) 23 45 67 89 ab cd
リース残時間: ...略

IPアドレスに対応するMACアドレスが出力される部分において、タイトルが「(タイプ) クライアントID」となっているのがポイントである。

一方、接続されている機器のDHCPクライアント機能がClient-Identifierオプションを発行していない場合、show status dhcpの当該機器に対する結果は以下のようになる。

割り当て中アドレス: xxx.xxx.xxx.xxx
クライアントイーサネットアドレス: 01:23:45:67:89:ab
リース残時間: ...略

IPアドレスに対応するMACアドレスが出力される部分において、タイトルが「クライアントイーサネットアドレス」となっているのがポイントである。

本題…注意点は何か

ヤマハルータのDHCPサーバ機能において、特定のMACアドレスに対して発行されるIPアドレスを固定するために使われるコマンドはdhcp scope bindである。ところが、このコマンドの書式は、DHCPクライアントがClient-Identifierオプションを発行する場合と発行しない場合で異なるのである。以下にその違いを記す。ここで、xx:xx:xx:xx:xx:xxというのは、対象機器のMACアドレスを指すものとする。

  • 対象機器のDHCPクライアントがClient-Identifierオプションを発行する場合…dhcp scope bind {スコープ番号} ethernet xx:xx:xx:xx:xx:xx
  • 対象機器のDHCPクライアントがClient-Identifierオプションを発行しない場合…dhcp scope bind {スコープ番号} xx:xx:xx:xx:xx:xx

間違った書式のdhcp scope bindを使った場合、指定したMACアドレスに対して指定したIPアドレスが発行されない。