DHCP オプション 43 はちょっと変わったものです。ベンダーはそれを好きなように扱うことができます - オプション番号が DHCP オプション番号と一致することを期待する人もいれば、そうでない人もいます.
基本的な構造は、オプション ID の 1 バイト、オプション データの長さの 1 バイト (n)、次に実際のオプション データの n バイトであり、すすぎと繰り返しです。
dhcp-options の例を見てみましょう。読みやすくするために、戦略的な場所に改行を貼り付けました。実際、構成した設定は次のとおりです。
02:04:AC:11:41:01:03:12:73:75:6e:64:68:63:70:2d:73:65:72:76:65:72:31:37:2d:31:04:12:2f:65:78:70:6f:72:74:2f:72:6f:6f:74:2f:69:38:36:70:63;
あなたが探しているものを知らなければ、これはかなり読みにくいです。パーツを分解してみましょう:
- バイト 1、
0x02
.これは、このブロックがオプション番号 2 の構成であることを示しています。それがどのように解釈されるかは、ベンダー次第です。 - バイト 2、
0x04
.これは、オプション 2 のデータが次の 4 バイトを占めることを示しています。 - バイト 3 ~ 6、
0xAC114101
.これらの 4 バイトが実際のデータです。デコードしようとしたときに見たように、読み取り可能なデータではありません. - バイト 7、次のオプション ブロックの開始 、
0x03
.チェーン全体が最初からやり直します。これは、次の構成がオプション 3 用であることを示しています。 - など、3 つのセクションについて
snom wiki ページからの別の例:
42:0c:68:74:74:70:3a:2f:2f:74:65:73:74:00:43:12:73:6e:6f:6d:2f:73:65:74:74:69:6e:67:73:2e:70:68:70:00;
- バイト 1、
0x42
.オプション コード 66 の場合、16 進数の 42 は 66 です。 - バイト 2、
0x0c
. 12 バイトの長さ。 - バイト 3 ~ 14、
0x687474703a2f2f7465737400
.これはhttp://test
です null バイト (0x00
) 終わりに。なぜそこにあるのかわからない. - バイト 15、
0x43
.オプション 67。 - バイト 16、
0x12
. 18 バイトの長さ。 - バイト 17 ~ 34、
0x736e6f6d2f73657474696e67732e70687000
.snom/settings.php
.繰り返しますが、最後の null バイトです。
では、オプション 43 を http://phone.example.com
で構築する必要があるとしましょう。 オプションとして 66 および phonesettings.txt
オプション 67 として。
- バイト 1、オプション コード 66、
0x42
- バイト 2、
http://phone.example.com
で 24 バイトの長さ 、だから0x18
- バイト 3 ~ 26、データ。
0x687474703a2f2f70686f6e652e6578616d706c652e636f6d
- バイト 27、オプション コード 67、
0x43
- バイト 28、
phonesettings.txt
で 17 バイトの長さ 、だから0x11
- バイト 29 ~ 45、データ。
0x70686f6e6573657474696e67732e747874
したがって、完全な構成文字列:
42:18:68:74:74:70:3a:2f:2f:70:68:6f:6e:65:2e:65:78:61:6d:70:6c:65:2e:63:6f:6d:43:11:70:68:6f:6e:65:73:65:74:74:69:6e:67:73:2e:74:78:74;
それがうまくいかない場合は、例のようにデータ文字列の最後に null バイトを追加してみてください (それに応じて長さフィールドを増やしてください)。各オプションの長さ。それがオプション 43 の欠点です。彼らはやりたいことを何でもできます!
これは、オプション 43 を構成するための間違いなく最もくだらない方法です。代わりに、ISC の「ベンダー オプション スペース」構文を使用して、構成内容を人間が読み取って間違いを回避できるようにする必要があります。
option space db;
option db.db-server code 1 = ip-address;
option db.loginid code 2 = text;
option db.db-name code 3 = text;
ジャン=イヴ・ビジョウ
ローカル カプセル化を忘れずに使用してください:
option space cisco;
option cisco.wlc code 241 = array of ip-address;
option local-encapsulation code 43 = encapsulate cisco;
option cisco.wlc 10.7.3.6, 10.7.3.2;