Vendor-class-identifier Option 60 woes
Matt Causey
matt.causey at gmail.com
Tue Dec 22 08:46:50 UTC 2009
On Mon, Dec 21, 2009 at 2:03 AM, Graham Bishop <grim_b at yahoo.com> wrote:
> Hi,
>
> I have been struggling to find an understandable guide to getting a switch
> to pick up some vendor options via dhcpd.
>
> I have captured the output of the entire dhcp discover, offer, request and
> ACK process and tried to manipulate samples of peoples configurations to
> make it work, but as of yet no luck.
>
> Please can I ask that a more experienced dhcpd.conf writer take a look and
> let me know how to pass "option 186 = tftp / ftp address" in response to
> the vendor-class-identifier request from the client?
>
> Output:
>
> tcpdump:
>
> 00:58:05.817153 IP (tos 0x10, ttl 16, id 6, offset 0, flags [none], proto
> UDP (17), length 328) 0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok]
> BOOTP/DHCP, Request from 00:15:70:d9:85:06, length 300, xid 0x6b55630, secs
> 36, Flags [none] (0x0000)
> Client-Ethernet-Address 00:15:70:d9:85:06
> Vendor-rfc1048 Extensions
> Magic Cookie 0x63825363
> DHCP-Message Option 53, length 1: Discover
> Parameter-Request Option 55, length 7:
> Subnet-Mask, BR, Time-Zone, Default-Gateway
> Domain-Name, Domain-Name-Server, Hostname
> Vendor-Class Option 60, length 29:
> "SymbolWS.RFS6000-4.1.0.0-042R"
> END Option 255, length 0
> PAD Option 0, length 0, occurs 16
> 00:58:06.000208 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto
> UDP (17), length 328) 10.0.0.1.bootps > 10.0.0.245.bootpc: [udp sum ok]
> BOOTP/DHCP, Reply, length 300, xid 0x6b55630, secs 36, Flags [none] (0x0000)
> Your-IP 10.0.0.245
> Server-IP 10.0.0.1
> Client-Ethernet-Address 00:15:70:d9:85:06
> Vendor-rfc1048 Extensions
> Magic Cookie 0x63825363
> DHCP-Message Option 53, length 1: Offer
> Server-ID Option 54, length 4: 10.0.0.1
> Lease-Time Option 51, length 4: 21600
> Subnet-Mask Option 1, length 4: 255.255.0.0
> Default-Gateway Option 3, length 4: 10.0.0.1
> Domain-Name-Server Option 6, length 4: 10.0.0.1
> END Option 255, length 0
> PAD Option 0, length 0, occurs 26
> 00:58:06.000983 IP (tos 0x10, ttl 16, id 7, offset 0, flags [none], proto
> UDP (17), length 328) 0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok]
> BOOTP/DHCP, Request from 00:15:70:d9:85:06, length 300, xid 0x6b55630, secs
> 36, Flags [none] (0x0000)
> Client-Ethernet-Address 00:15:70:d9:85:06
> Vendor-rfc1048 Extensions
> Magic Cookie 0x63825363
> DHCP-Message Option 53, length 1: Request
> Server-ID Option 54, length 4: 10.0.0.1
> Requested-IP Option 50, length 4: 10.0.0.245
> Parameter-Request Option 55, length 7:
> Subnet-Mask, BR, Time-Zone, Default-Gateway
> Domain-Name, Domain-Name-Server, Hostname
> Vendor-Class Option 60, length 29:
> "SymbolWS.RFS6000-4.1.0.0-042R"
> END Option 255, length 0
> PAD Option 0, length 0, occurs 4
> 00:58:06.006451 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto
> UDP (17), length 328) 10.0.0.1.bootps > 10.0.0.245.bootpc: [udp sum ok]
> BOOTP/DHCP, Reply, length 300, xid 0x6b55630, secs 36, Flags [none] (0x0000)
> Your-IP 10.0.0.245
> Server-IP 10.0.0.1
> Client-Ethernet-Address 00:15:70:d9:85:06
> Vendor-rfc1048 Extensions
> Magic Cookie 0x63825363
> DHCP-Message Option 53, length 1: ACK
> Server-ID Option 54, length 4: 10.0.0.1
> Lease-Time Option 51, length 4: 21600
> Subnet-Mask Option 1, length 4: 255.255.0.0
> Default-Gateway Option 3, length 4: 10.0.0.1
> Domain-Name-Server Option 6, length 4: 10.0.0.1
> END Option 255, length 0
> PAD Option 0, length 0, occurs 26
>
> The client repeats the "Vendor-Class Option 60, length 29:
> "SymbolWS.RFS6000-4.1.0.0-042R", but I cannot match this to a class to pass
> back the required option 186?
>
> I have the following at the moment:
>
> ddns-update-style interim;
> ignore client-updates;
>
> option space PXE;
> option PXE.ftp-ip code 186 = string;
>
> class "Syms" {
> log(debug, substring(option vendor-class-identifier, 0, 4));
> match if substring (option vendor-class-identifier, 0, 4) =
> 53:79:6d:62;
> }
> subnet 10.0.0.0 netmask 255.255.0.0 {
> range dynamic-bootp 10.0.0.245 10.0.0.247;
> option routers 10.0.0.1;
> option subnet-mask 255.255.0.0;
> option nis-domain "linux.site";
> option domain-name-servers 10.0.0.1;
> default-lease-time 21600;
> max-lease-time 43200;
> next-server 10.0.0.1;
> option tftp-server-name "10.0.0.1";
>
> pool {
> allow members of "Syms";
> option PXE.ftp-ip "tftp://10.0.0.1";
> vendor-option-space PXE;
> range 10.0.0.248 10.0.0.253;
> }
> }
>
> A basic topology of the network may help?
> It is one server running dhcpd (fedora 10) with one switch (the client)
> plugged in at a time. This dhcpd.conf will be used to upgrade firmware /
> configs etc.
>
> The release notes of the switch suggest that it needs this vendor-class and
> that there are other options it will take other than 186.
> I have tried using various combinations of the hex that is returned in a
> packet sniffer and found that SymbolWS.RFS6000-4.1.0.0-042R in hex
> 53796d626f6c57532e524653363030302d342e312e302e302d30343252 so began trying
> to play with vendor-encapsulation options.
>
> Frame 1 (342 bytes on wire, 342 bytes captured)
> Arrival Time: Dec 18, 2009 09:42:15.636302000
> [Time delta from previous captured frame: 0.000000000 seconds]
> [Time delta from previous displayed frame: 0.000000000 seconds]
> [Time since reference or first frame: 0.000000000 seconds]
> Frame Number: 1
> Frame Length: 342 bytes
> Capture Length: 342 bytes
> [Frame is marked: False]
> [Protocols in frame: eth:ip:udp:bootp]
> [Coloring Rule Name: UDP]
> [Coloring Rule String: udp]
> Ethernet II, Src: SymbolTe_d9:85:06 (00:15:70:d9:85:06), Dst: Broadcast
> (ff:ff:ff:ff:ff:ff)
> Destination: Broadcast (ff:ff:ff:ff:ff:ff)
> Address: Broadcast (ff:ff:ff:ff:ff:ff)
> .... ...1 .... .... .... .... = IG bit: Group address
> (multicast/broadcast)
> .... ..1. .... .... .... .... = LG bit: Locally administered address
> (this is NOT the factory default)
> Source: SymbolTe_d9:85:06 (00:15:70:d9:85:06)
> Address: SymbolTe_d9:85:06 (00:15:70:d9:85:06)
> .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
> .... ..0. .... .... .... .... = LG bit: Globally unique address
> (factory default)
> Type: IP (0x0800)
> Internet Protocol, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255
> (255.255.255.255)
> Version: 4
> Header length: 20 bytes
> Differentiated Services Field: 0x10 (DSCP 0x04: Unknown DSCP; ECN: 0x00)
> 0001 00.. = Differentiated Services Codepoint: Unknown (0x04)
> .... ..0. = ECN-Capable Transport (ECT): 0
> .... ...0 = ECN-CE: 0
> Total Length: 328
> Identification: 0x0006 (6)
> Flags: 0x00
> 0.. = Reserved bit: Not Set
> .0. = Don't fragment: Not Set
> ..0 = More fragments: Not Set
> Fragment offset: 0
> Time to live: 16
> Protocol: UDP (0x11)
> Header checksum: 0xa990 [correct]
> [Good: True]
> [Bad : False]
> Source: 0.0.0.0 (0.0.0.0)
> Destination: 255.255.255.255 (255.255.255.255)
> User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
> Source port: bootpc (68)
> Destination port: bootps (67)
> Length: 308
> Checksum: 0x6024 [validation disabled]
> [Good Checksum: False]
> [Bad Checksum: False]
> Bootstrap Protocol
> Message type: Boot Request (1)
> Hardware type: Ethernet
> Hardware address length: 6
> Hops: 0
> Transaction ID: 0x07d173cb
> Seconds elapsed: 39
> Bootp flags: 0x0000 (Unicast)
> 0... .... .... .... = Broadcast flag: Unicast
> .000 0000 0000 0000 = Reserved flags: 0x0000
> Client IP address: 0.0.0.0 (0.0.0.0)
> Your (client) IP address: 0.0.0.0 (0.0.0.0)
> Next server IP address: 0.0.0.0 (0.0.0.0)
> Relay agent IP address: 0.0.0.0 (0.0.0.0)
> Client MAC address: SymbolTe_d9:85:06 (00:15:70:d9:85:06)
> Client hardware address padding: 00000000000000000000
> Server host name not given
> Boot file name not given
> Magic cookie: (OK)
> Option: (t=53,l=1) DHCP Message Type = DHCP Discover
> Option: (53) DHCP Message Type
> Length: 1
> Value: 01
> Option: (t=55,l=7) Parameter Request List
> Option: (55) Parameter Request List
> Length: 7
> Value: 011C02030F060C
> 1 = Subnet Mask
> 28 = Broadcast Address
> 2 = Time Offset
> 3 = Router
> 15 = Domain Name
> 6 = Domain Name Server
> 12 = Host Name
> Option: (t=60,l=29) Vendor class identifier =
> "SymbolWS.RFS6000-4.1.0.0-042R"
> Option: (60) Vendor class identifier
> Length: 29
> Value: 53796D626F6C57532E524653363030302D342E312E302E30...
> End Option
> Padding
>
>
>
> I'm afraid I am a little lost now with not knowing what is needed and what
> is stopping it working etc.
>
> Any help, gratefully received and apologies for the lengthy mail.
>
> Graham.
>
>
>
> _______________________________________________
> dhcp-users mailing list
> dhcp-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/dhcp-users
>
It was a bit fiddly, but we got ours working with this:
###
# Motorola config options
option motoap-config-server-address code 186 = string ;
option motoap-firmware-file-name code 187 = string ;
option motoap-config-file-name code 188 = string ;
option motoap-switch-address code 189 = string ;
option motoap-discovery-mode code 192 = string ;
class "Moto-AP-5131" {
match if substring (option vendor-class-identifier,0,18) =
"MotorolaAP.51xx-V2";
option motoap-config-server-address "";
option motoap-config-file-name "/moto/ap5131cfg.txt";
option motoap-switch-address "";
option motoap-discovery-mode "1";
}
# END Motorola config options
###
HTH
--
Matt
More information about the dhcp-users
mailing list