Opsi DHCP 43 sedikit aneh. Vendor dapat memperlakukannya sesuai keinginan mereka - beberapa mengharapkan nomor opsi cocok dengan nomor opsi DHCP, yang lainnya tidak.
Struktur dasarnya adalah 1 byte untuk ID opsi, 1 byte untuk panjang data opsi (n), lalu n byte dari data opsi aktual - dan, bilas dan ulangi.
Mari kita ambil contoh dari dhcp-options. Mereka telah menempelkan baris baru di tempat strategis agar lebih mudah dibaca. Pada kenyataannya, setelan yang mereka konfigurasikan hanya seperti ini:
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;
Yang cukup sulit dibaca kecuali Anda tahu apa yang Anda cari. Mari uraikan bagian-bagiannya:
- Byte 1,
0x02
. Dikatakan bahwa blok ini adalah konfigurasi untuk opsi nomor 2. Cara menafsirkannya bergantung pada vendor. - Byte 2,
0x04
. Artinya, data untuk opsi 2 akan menempati 4 byte berikutnya. - Byte 3-6,
0xAC114101
. Empat byte ini adalah data aktual. Seperti yang Anda lihat saat mencoba mendekodekannya, itu bukan data yang dapat dibaca. - Byte 7, awal dari blok opsi berikutnya ,
0x03
. Seluruh rantai dimulai lagi, ini mengatakan bahwa konfigurasi berikut adalah untuk opsi 3. - dan seterusnya, untuk 3 bagian
Contoh lain, dari halaman wiki snom:
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;
- Byte 1,
0x42
. 42 dalam hex adalah 66, untuk kode opsi 66. - Byte 2,
0x0c
. Panjang 12 byte. - Byte 3-14,
0x687474703a2f2f7465737400
. Ini adalahhttp://test
dengan byte null (0x00
) pada akhirnya. Tidak yakin mengapa mereka memilikinya di sana. - Byte 15,
0x43
. Opsi 67. - Byte 16,
0x12
. Panjang 18 byte. - Byte 17-34,
0x736e6f6d2f73657474696e67732e70687000
.snom/settings.php
. Sekali lagi, byte nol di bagian akhir.
Jadi, misalkan Anda perlu membuat opsi 43 dengan http://phone.example.com
sebagai opsi 66 dan phonesettings.txt
sebagai opsi 67.
- Byte 1, kode opsi 66,
0x42
- Byte 2, panjang 24 byte pada
http://phone.example.com
, jadi0x18
- Byte 3-26, data.
0x687474703a2f2f70686f6e652e6578616d706c652e636f6d
- Byte 27, kode opsi 67,
0x43
- Byte 28, panjang 17 byte pada
phonesettings.txt
, jadi0x11
- Byte 29-45, data.
0x70686f6e6573657474696e67732e747874
Jadi, string konfigurasi lengkap :
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;
Jika itu tidak berhasil, coba tambahkan byte nol ke akhir string data (dan tambah bidang panjang yang sesuai) seperti pada contohnya - mereka mungkin menginginkan byte nol di akhir setiap opsi atau jumlah byte genap untuk setiap panjang pilihan. Itulah kelemahan dari opsi 43 - mereka dapat melakukan apa pun yang mereka inginkan!
Itu pasti cara yang paling jelek untuk mengonfigurasi opsi 43. Anda sebaiknya menggunakan sintaks "ruang opsi vendor" ISC yang memungkinkan Anda membaca manusia tentang apa yang Anda konfigurasikan dan menghindari kesalahan:
option space db;
option db.db-server code 1 = ip-address;
option db.loginid code 2 = text;
option db.db-name code 3 = text;
Jean-Yves Bisiaux
Ingatlah untuk menggunakan enkapsulasi lokal:
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;