Linux DHCP服务器选项43供应商封装选项,如何格式化/编码?
我管理一个小型企业的网络,该企业有一个IPCop防火墙盒,为网络(以及其他各种服务)提供DHCP服务. IPCop中的DHCP服务器似乎是dhcpd,IPCop提供了一个基于Web的前端来编辑配置文件.
我希望使用vendor-encapsulated-options选项将DHCP选项66和67的特定值发送到特定的供应商类标识符.目的是自动配置一些支持DHCP选项66/67和43/60的VoIP电话. 我已经设法获得选项66 tftp-server-name和67 bootfile-name工作以自动配置手机.但当然这些选项是全局的并发送给所有DHCP客户端.我正在尝试使用vendor-class-indentifier和vendor-encapsulated-options DHCP选项来仅将自动配置信息发送到手机.我意识到这对于小型企业网络来说可能有些过分,但这都是为了拓宽我的知识面. 所以我开始阅读那里的一些信息,我无法弄清楚如何在vendor-encapsulated-options字符串中编码选项66/67. 这些文档似乎暗示选项将以HEX格式编码,但是查看vendor-encapsulated-options选项的手册页示例… The value of this option can be set in one of two ways. The first way is to simply specify the data directly,using a text string or a colon-separated list of hexadecimal values. For example: option vendor-encapsulated-options 2:4:AC:11:41:1: 3:12:73:75:6e:64:68:63:70:2d:73:65:72:76:65:72:31:37:2d:31: 4:12:2f:65:78:70:6f:72:74:2f:72:6f:6f:74:2f:69:38:36:70:63; 当我尝试将该批次从HEX解码为ASCII时,我得到以下内容: 这是来自IPCop的dhcpd.conf的我的片段 subnet 192.168.1.0 netmask 255.255.255.0 #GREEN { range 192.168.1.30 192.168.1.200; option subnet-mask 255.255.255.0; option domain-name "domain.com"; option routers 192.168.1.1; option domain-name-servers 192.168.1.1; option ntp-servers 192.168.1.1; option netbios-name-servers 192.168.1.3; default-lease-time 43200; max-lease-time 172800; option vendor-encapsulated-options "hello"; option vendor-class-identifier "snom320"; option vendor-class-identifier "snom821"; option bootfile-name "voipsettings/firstboot.xml"; option tftp-server-name "http://username:password@intranet.domain.com"; } #GREEN 我根据DHCP请求中的VoIP电话(Snom)提交的值设置了供应商类标识符. bootfile-name和tftp-server-name是我希望在vendor-encapsulated-options中编码的选项(66/67). 任何人都可以告诉我如何正确格式化/编码这些DHCP选项? 解决方法
DHCP选项43有点奇怪的野兽.供应商可以随心所欲地对待它 – 有些人希望选项号与DHCP选项号匹配,有些则不然.
基本结构是1个字节用于选项ID,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,002.这表示此块是配置选项编号2.如何解释这取决于供应商. 另一个例子,来自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,042.对于选项代码66,42 in hex为66. 所以,假设您需要构建一个选项43,其中http://phone.example.com作为选项66,phonesettings.txt作为选项67. >字节1,选项代码66,0×42 所以,一个完整的配置字符串: 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; 如果这不起作用,请尝试将空字节添加到数据字符串的末尾(并相应地增加长度字段),如同在他们的示例中一样 – 它们可能要求每个选项末尾的空字节或偶数个字节对于每个选项的长度.这是选项43的缺点 – 他们可以做任何他们想做的事! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |