追記: 2020-02-05
以下のコマンドを忘れていたので追加しました。
dhcp server rfc2131 compliant use-clientid
use-clientid
がミソらしいです。
やりたかったこと
インターネットおよびプライベートネットワーク参加を、特定の端末だけに絞りたい!
(例: 他部署の人がノートPC持ち込んでLANに繋いでも、通信できないようにしたい)
環境
YAMAHAルーター RTX1210
ファームウェア: Rev.14.01.33
DHCPサーバー機能を有効にしていること。
(同シリーズの機種なら、同じ方法で通用するかも?)
方法
以下の管理コマンドを、RTX1210で実行する。
dhcp server rfc2131 compliant use-clientid
dhcp scope lease type 1 bind-only
dhcp scope bind 1 192.168.100.10 01 aa bb cc dd ee ff
dhcp scope bind 1 192.168.100.11 01 a1 b1 c1 d1 e1 f1
・
・
・
save
ハマったこと
ethernet filter
コマンドは不要
ethernet filter 1 pass-nolog dhcp-bind 1
ethernet lan1 filter in 1
は不要でした。(WEBマニュアルとかあちこちのWEB文献には書いてあったのだが…)
むしろ、実行すると完全不通になり、ルーターを初期化するハメに…
豆粒みたいな物理ボタンを3つも押しながら電源をOFF/ONする指が痛い
dhcp scope bind
コマンドの、MACアドレスの書き方
dhcp scope bind <dhcpスコープ番号> <振りたいプライベートIPアドレス> 01 <MACアドレス>
ポイント1: 01
これが必須…!
出所は何かと言うと、
show status dhcp
を実行すると端末情報一覧が表示されます。
DHCPスコープ番号: 1
ネットワークアドレス: 192.168.100.0
割り当て中アドレス: 192.168.100.10
(タイプ) クライアントID: (01) aa bb cc dd ee ff
ホスト名: yamada-MBP
リース残時間: 89日 22時間 25分 8秒
割り当て中アドレス: 192.168.100.11
(タイプ) クライアントID: (01) a1 b1 c1 d1 e1 f1
ホスト名: yoshida-Windows
リース残時間: 89日 23時間 13分 48秒
・
・
・
もちろん、その中に MACアドレス もあります。
だがしかし!
冒頭に、謎の固定値 (01)
が…
これを dhcp scope bind
にも漏れなく入れないと、ちゃんと動きません。
しかも、もう一味必要で、カッコを省いて 01
として、です…!
これは Client-Identifier という値だそうです。
http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/dhcp/dhcp_scope_bind.html
コマンドの第 1 書式を使う場合は、あらかじめ dhcp server rfc2131 compliant on あるいは use-clientid 機能を使用するよう設定されていなければならない。また dhcp server rfc2131 compliant off あるいは use-clientid 機能が使用されないよう設定された時点で、コマンドの第 2 書式によるもの以外の予約は消去される。
コマンドの第 1 書式でのクライアント識別子は、クライアントがオプションで送ってくる値を設定する。type パラメータを省略した場合には、type フィールドの値も含めて入力する。type パラメータにキーワードを指定する場合には type フィールド値は一意に決定されるので Client-Identifier フィールドの値のみを入力する。
今回は use-clientid
機能を使用なので、コマンド書式は第1書式、typeパラメータのキーワードethernet
を省略して01
(0x01)のみを記入、ということでこうなるわけでした。
これはハマるw
ポイント2: <MACアドレス>
これもWEB文献には諸説あってハマりました。
- MACアドレスの区切り文字は
:
だとか、そうでないとか - 前に、おまじない
ethernet
を付けるとか、付けないとか
これは、文献によって use-clientid
機能を使用・不使用 がまちまちだったりもあって混乱しました。
結論は、ポイント1と同様で
show status dhcp
を実行して出力されたMACアドレスと全く同じ書き方、が正解!
クライアントのOSによっては(01) XX XX XX XX XX XX
(第1書式)ではなくXX:XX:XX:XX:XX:XX
(第2書式)を通知してくるようです。その場合は、そのクライアントだけ第2書式(01
を書かず、コロンで連結)で書けばと良いようです。