Google HomeをIPアドレスで叩いてしゃべらすスクリプトを運用している関係で、IPアドレスを固定したかったんだけど、いつもどおりRTXで
1 |
dhcp bind scope 1 192.168.0.xxx ethernet xx:xx:xx:xx:xx:xx |
してもダメ。何度再起動してもmanual releaseしても意図せぬIPアドレスが割り振られてしまう。
結局、
1 |
dhcp bind scope 1 192.168.0.xxx xx:xx:xx:xx:xx:xx |
と「ethernet」句を抜いたらいけた。公式マニュアルにある書式2、設定例Dにあたるが理由はよくわからない。ない方が汎用性高いのかと思って試しに全部ethernet句ぬいてみたらWindows機が固定されなくなり、結局Google Home/miniの3台分だけethernet句無しにした。
ちなみに、
1 |
dhcp server rfc2131 compliant except remain-silent |
設定(これなんでだっけ?)。普通にonの方がいいのかな?
マニュアルによると、DHCPクライアントはMACアドレスとは別にクライアントIDという値をリースの際に使う。Macなんかだとこれを自分で書き換えて任意の文字列にすることができる。しかしデフォルトでは「0x01+MACアドレス」となっている。マニュアルのtype指定の表によると、ethernetは0x01、textは0x00とあるので、なるほど、ethernetは「MACアドレスを使う」という意味ではなく「クライアントIDに書いてある0x01で始まるMACアドレス相当の文字列を使う、ということなわけか。ethrenet句=0x01と読み替えてもいいかも知れない。そしてGoogle HomeのクライアントIDが「0x01+MACアドレス」形式ではなに何かをもっているので、「ethernet (MACアドレス)」ではマッチしない、とということ?
1 |
show status dhcp |
すると、各クライアントがどっちを使ってリースしてるかわかる。ざっとみるとクライアントIDを使ってる(が中身は0x01+MACアドレス)のものが多い。なるほどこれだとethernetがあってもなくても大丈夫なわけだ。
そういえば前にもAndroidTVなBRAVIAがどうしても固定割り当てできなかったな。Google製品(Androidベース製品)はクライアントIDに独特のルールがあるのかしら?
結果としてガチにMACアドレスを使いたい場合はむしろethernet句を書かない方がよさげ。ただしウチでWindowsが固定されなくなったのは謎。Windowsの場合はコマンドプロンプトからクライアントID(DHCPクラスID)を変更できるぽいけど、特に指定はされてなかった。