使用Linux配置DHCP Option.docx
《使用Linux配置DHCP Option.docx》由会员分享,可在线阅读,更多相关《使用Linux配置DHCP Option.docx(11页珍藏版)》请在冰豆网上搜索。
使用Linux配置DHCPOption
使用Linux配置DHCPOption
摘要
目前在公司产品开发中要求验证相关DHCPOption功能的项目越来越多。
本指导书旨在指导测试人员正确完成对CPE网关设备的DHCPOption功能的测试,以判断产品是否符合相关需求。
其中CPE网关设备作为DHCPServer,主要是测试Option60,Option43和Option125等作为接入认证技术的功能。
如果其中CPE网关设备是作为DHCPClient,则主要是测试一些基本功能,如DHCPOption6,Option15,Option42和Option50等。
如果其中CPE网关设备是作为DHCPRelayAgent,则主要是测试Option82功能。
正文
1.预置条件
1.准备PC机一台,安装Linux操作系统RHELAS4(请注意需安装ethereal抓包软件);
2.验证Linux系统中可以使用命令dhclient(即PC机作为DHCPClient,CPE设备作为DHCPServer)。
如该命令无效,则需安装相应的dhclientRPM包。
3.验证Linux系统中已经安装dhcpd服务器(此时CPE设备为DHCPClient,PC机作为DHCPServer);如果“servicedhcpdrestart”命令无效,则需安装相应的dhcpdRPM包。
4.网线、电话线若干;
2.测试拓扑图
Fig1测试拓扑图1
Fig2测试拓扑图2
Fig3测试拓扑图3
3.测试步骤
测试内容可以包括五大部分(I、II、III、Ⅳ、Ⅴ)
I.DHCPOption60测试(参照测试拓扑图1)
DHCPOPTION60中带有Vendor和ServiceOption信息,是由用户终端发起DHCP请求时携带的信息,
网络设备只需要透传即可。
其在应用中的作用是用来识别用户终端类型,从而识别用户业务类型,
DHCP服务器可以依赖于此分配不同的业务IP地址。
其格式为:
CodeLenVendorclassIdentifier
+-----+-----+-----+-----+---
|60|n|i1|i2|...
+-----+-----+-----+-----+---
1.编辑/etc/dhclient.conf文件(默认安装后此文件并不存在,需要手工创建),举例如下:
interface“eth0”{
sendvendor-class-identifier“IP_Camera”;
#上面即PC机作为DHCPClient时,要求携带DHCPOption60,值为“IP_Camera”。
可以根据不同客户需求设置不同的值。
requestsubnet-mask,broadcast-address,time-offset,routers,domain-name,domain-name-servers,host-name,netbios-name-servers,netbios-scope;
#上面即DHCPOption55中的相关内容。
可以设置不同的参数集合。
}
2.在终端中输入命令:
#dhclient–r
其中“#”为linux超级用户命令提示符;
该命令为释放当前的租约,终止DHCPClient。
#ifconfigeth0192.168.1.2
该命令为eth0端口随意设置一IP,便于下面抓包工具启动抓包。
3.启动抓包工具ethereal。
(选择eth0端口)
4.在终端中输入命令:
#dhclienteth0
命令完成后在抓包工具中过滤栏中输入:
bootp,可以在DHCPDiscover和DHCPRequest行中看到Option60的参数和值。
II.DHCPOption43测试(参照测试拓扑图1)
DHCPOption43格式如下:
CodeLenVendor-specificinformation
+-----+-----+-----+-----+---
|43|n|i1|i2|...
+-----+-----+-----+-----+---
如果使用封装的Vendor-specificinformation,则iX信息如下格式:
CodeLenDataitemCodeLenDataitemCode
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|T1|n|d1|d2|...|T2|n|D1|D2|...|...|
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
1.ClientPC开启编辑/etc/dhclient.conf文件,举例(TR111要求的)如下:
interface“eth0”{
sendvendor-encapsulated-options01:
04:
41:
41:
41:
41:
02:
05:
42:
42:
42:
42:
42:
03:
06:
43:
43:
43:
43:
43:
43;
#上面即PC机作为DHCPClient时,要求携带封装的DHCPOption43:
Code为1的Data段为4个0x41(即字母B);Code为2的Data段为5个0x41(即字母C);Code为3的Data段为6个0x43(即字母C);可以自行根据实际需要修改添加。
requestsubnet-mask,broadcast-address,time-offset,routers,domain-name,domain-name-servers,host-name,netbios-name-servers,netbios-scope;
#上面即DHCPOption55中的相关内容。
可以设置不同的参数集合。
}
2.在终端中输入命令:
#dhclient–r
其中“#”为linux超级用户命令提示符;
该命令为释放当前的租约,终止DHCPClient。
#ifconfigeth0192.168.1.2
该命令为eth0端口随意设置一IP,便于下面抓包工具启动抓包。
3.启动抓包工具ethereal。
(选择eth0端口)
4.在终端中输入命令:
#dhclienteth0
命令完成后在抓包工具中过滤栏中输入:
bootp,可以在DHCPDiscover和DHCPRequest行中看
到Option43的参数和值。
III.DHCPOption125测试(参照测试拓扑图1)
DHCPOption125格式如下:
Fig3RFC3925中对于Option125报文格式的说明
5.ClientPC开启编辑/etc/dhclient.conf文件,举例(TR111要求的)如下:
optionoption-125code125=string;
interface“eth0”{
sendoption-12500:
0D:
E9:
18:
01:
06:
41:
41:
41:
41:
41:
41:
02:
06:
42:
42:
42:
42:
42:
42:
03:
06:
43:
43:
43:
43:
43:
43;
#上面即PC机作为DHCPClient时,要求携带DHCPOption125,Option125的OptionDataEnterpriseNumberforDSLForum3561:
000DE9;Datalength:
0x18,此EnterpriseNumber包含的OptionData的总长度;DeviceOUI为6个0x41(即字母B);DeviceSerialNumber为6个0x42(即字母C);DeviceProductClass为6个0x43(即字母C);
requestsubnet-mask,broadcast-address,time-offset,routers,domain-name,domain-name-servers,host-name,netbios-name-servers,netbios-scope;
#上面即DHCPOption55中的相关内容。
可以设置不同的参数集合。
}
6.在终端中输入命令:
#dhclient–r
其中“#”为linux超级用户命令提示符;
该命令为释放当前的租约,终止DHCPClient。
#ifconfigeth0192.168.1.2
该命令为eth0端口随意设置一IP,便于下面抓包工具启动抓包。
7.启动抓包工具ethereal。
(选择eth0端口)
8.在终端中输入命令:
#dhclienteth0
命令完成后在抓包工具中过滤栏中输入:
bootp,可以在DHCPDiscover和DHCPRequest行中看到Option125的参数和值。
Ⅳ。
DHCPOption6/15/42/121/50等测试(参照测试拓扑图2)
这个需求是CPE网关设备作为DHCPClient,而PC机作为DHCPServer。
其中:
DHCPOption6是DomainNameServer,其格式为:
CodeLenAddress1Address2
+-----+-----+-----+-----+-----+-----+-----+-----+--
|6|n|a1|a2|a3|a4|a1|a2|...
+-----+-----+-----+-----+-----+-----+-----+-----+--
DHCPOption15是DomainName,其格式为:
CodeLenDomainName
+-----+-----+-----+-----+-----+-----+--
|15|n|d1|d2|d3|d4|...
+-----+-----+-----+-----+-----+-----+--
DHCPOption42是NetworkTimeProtocolServers,其格式为:
CodeLenAddress1Address2
+-----+-----+-----+-----+-----+-----+-----+-----+--
|42|n|a1|a2|a3|a4|a1|a2|...
+-----+-----+-----+-----+-----+-----+-----+-----+--
DHCPOption121是ClasslessStaticRoute的Option,其格式(请参考RFC3442)为:
CodeLenDestination1Router1
+-----+---+----+-----+----+----+----+----+----+
|121|n|d1|...|dN|r1|r2|r3|r4|
+-----+---+----+-----+----+----+----+----+----+
Destination2Router2
+----+-----+----+----+----+----+----+
|d1|...|dN|r1|r2|r3|r4|
+----+-----+----+----+----+----+----+
1.编辑/etc/dhcpd.conf文件,举例如下:
(RHELAS4中,可以参考/user/share/doc/dhcp-3.0.1/dhcpd.conf.sample)
ddns-update-styleinterim;
ignoreclient-updates;
(下面两行仅供配置Option121,如无需测试可用#注释)
optionclassless-static-routescode249=string;
optionclassless-static-routes00:
c0:
a8:
01:
01:
0a:
0a:
57:
c0:
a8:
01:
64;
(添加2条静态路由:
1,路由为0.0.0.0mask0.0.0.0gw192.168.1.1
2,路由为10.64.0.0mask255.192.0.0gw192.168.1.100)
subnet172.24.0.0netmask255.255.0.0{
optionrouters172.24.1.1;
optionssubnet-mask255.255.255.0;
optiondomain-name“domain.org”;
optionnis-domain“domain.org”;
optiondomain-name-servers172.24.1.1;
optiontime-offset-18000;
optionntp-servers172.24.1.1;
rangedynamic-bootp172.24.2.100172.24.2.200;
default-lease-time21600;
max-lease-time43200;
}
2.在PC终端中输入命令:
#servicedhcpdrestart
启动DHCPD后台进程
3.在CPE网关设备上查看此modem的DNS是否为dhcpd.conf中设置的如“172.24.1.1”。
4.在CPE网关设备上查看此modem的DomainName是否为dhcpd.conf中设置的如“domain.org”。
5.通过在CPE网关设备上查看此modem的NetworkTimeProtocolServers是否为dhcpd.conf中设置的如“172.24.1.1”。
6.(option121)通过telnet到CPE,通过routeshow命令显示是否已经增加设置的两条静态路由。
其中:
DHCPOption50是RequestedIPAddress,其格式为:
CodeLenAddress
+-----+-----+-----+-----+-----+-----+
|50|4|a1|a2|a3|a4|
+-----+-----+-----+-----+-----+-----+
此DHCPOption是DHCPServer必须支持的,无需在配置文件中进行设置,现在是测试DHCPClient,所以只需抓包看即可。
Ⅴ。
DHCPOption82测试(参照测试拓扑图3)
这个需求是CPE网关设备作为DHCPRelay,而PC2机作为DHCPServer。
举例配置dhcpd.conf如下:
(根据DHCPOption82不同的应用需要选择不同的配置策略)
ddns-update-styleinterim;
ignoreclient-updates;
optionspaceagent;
optionagent.circuit_idcode1=string;
optionagent.remote_idcode2=unsignedinteger16;
optionagent.link_selectioncode5=string;
optionrelay_agentcode82=encapsulateagent;
subnet172.24.0.0netmask255.255.0.0{
class"TEST1"{
matchifoptionagent.circuit-id=”test1”;}
class"TEST2"{
matchifoptionagent.circuit-id=”test2”;}
pool{allowmembersof"TEST1";
optionrouters172.24.242.1;
optiondomain-name-servers172.24.10.10,172.24.11.10;
rangedynamic-bootp172.24.35.10172.24.35.15;
default-lease-time21600;
max-lease-time43200;
}
pool{allowmembersof"TEST2";
optionrouters172.24.242.1;
optiondomain-name-servers172.24.10.10,172.24.11.10;
rangedynamic-bootp172.24.55.10172.24.55.15;
default-lease-time21600;
max-lease-time43200;
}
}
在上面的配置文件中,我们定义了两个类“TEST1”和“TEST2”,当DHCPServer收到的OPTION32字段的circuit_id子选项为test1的时候,我们将其归在类“TEST1”中,并给其分配172.24.55.10-172.24.55.15范围内的地址,同样,当DHCPServer收到的OPTION82字段的circuit_id子选项为test2的时候,我们将其归在类“TEST2”中,并给其分配172.24.35.10-172.24.35.15范围内的地址。
4.总结
1.CPE网关设备作为DHCPServer,则PC作为DHCPClient主要通过/etc/dhclient.conf进行配置和dhclient命令进行操作。
2.CPE网关设备作为DHCPClient,则PC作为DHCPServer主要通过/etc/dhcpd.conf进行配置和servicedhcpdrestart命令进行操作。
5.备注说明
1.目前尚没有实现如何在Linux系统中设置DHCPInform包。
2.DHCP协议中的magiccookie是固定的:
63825363(16进制,RFC2132),与其它协议不太相似。
附件
1.《多业务接入认证技术白皮书.pdf》:
2.DHCP自定义选项.rtf
参考文献
【1】:
IETFRFC3925《Vendor-IdentifyingVendorOptionsforDynamicHostConfigurationProtocolversion4(DHCPv4)》
【2】:
IETFRFC2132《DHCPOptionsandBOOTPVendorExtensions》
【3】:
IETFRFC3046《DHCPRelayAgentInformationOption》
【4】:
IETFRFC3342《TheClasslessStaticRouteOptionforDynamicHostConfigurationProtocol(DHCP)version4》