using option 82 to assign a static ip-address

Glenn Satchell glenn.satchell at uniq.com.au
Mon Dec 17 00:03:57 UTC 2012


Hi Nico

Please see comments below.

On Mon, December 17, 2012 12:17 am, Nico De Ranter wrote:
> Hi,
>
>
>
> I'm trying to use DHCP option 82 to assign a different address to a host
> depending on which network port it is connected to.
> I'vve created the following section in my config:
>
> ############
> stash-agent-options true;
> ...
> subnet 10.103.0.0 netmask 255.255.255.0
> {
>         option routers 10.103.0.1;
>         class "OK1Endo" {
>                 match if  binary-to-ascii(16, 8, ":", substring(option
> agent.remote-id, 2, 7)) = "84:78:ac:84:e5:80"

This string "8 4 : 7 8 : ... : 8 0" is 17 characters long. So a 7 char
substring will never be equal to it. I can't see how it ever matches.

>                         and     binary-to-ascii (16, 8, ":", hardware) =
> "1:0:14:2d:40:f:15"
>                         and     binary-to-ascii (16, 8, ":",
> substring(option agent.circuit-id, 5, 5)) = "e";

This may or may not match. If the agent.circuit-id is exactly 5 characters
long it will return that last char only and if that is an 'e' then it will
match.

These can all be re-written without the binary-to-ascii and be much clearer:

match if substring(option agent.remote-id, 2, 7)) = 84:78:ac:84:e5:80
     and hardware = 1:0:14:2d:40:f:15
     and substring(option agent.circuit-id, 5, 1)) = e;

Finally, putting the class definition inside the subnet can cause some
unexpected inheritance. Probably ok if you only have a single subnet in
your definition, but better to put the class outside the subnet
definition.

>         }
>         pool {
>                 filename "pxelinux.0";
>                 next-server 10.103.0.202;
>                 option mobile-ip-home-agent 10.103.0.202;
>                 option log-servers 10.103.0.202;
>                 option tz "Europe/Brussels";
>                 use-host-decl-names on;
>                 allow members of "OK1Endo";
>                 range 10.103.0.220 10.103.0.220;
>         }
>   }
> ###########
>
> I'm sure the class definition is correct and the pool matches as I also
> added a log statement which only seems to trigger if the client matches
> the
> pool (if I change the class definition or remove the 'allow members' I
> don't see the logs appearing in the log files anymore).
>
> However the dhcpd server doesn't seem to send any reply to the host: in
> tcpdump I see a bootp/dhcp request from the clients MAC but no replies
> from
> the server.  If I replace the 'pool' section with a simple 'host'
> definition the server responds immediately.
>
> Any ideas what I'm doing wrong?
>
> Note: I'm using a very old version of dhcpd (3.1.1) which unfortunately I
> cannot upgrade at the moment.
>
> Thanks in advance,
>
> Nico
>
> --
> Nico De Ranter
>
> Operations Engineer
>
>
> eSATURNUS
>
> T. +32 16 40 12 82
>
> M. +32 497 91 53 78
>
> www.esaturnus.com
>
>
> <http://www.esaturnus.com/>
>
>
>  <http://vcard.esaturnus.com/>
> _______________________________________________
> dhcp-users mailing list
> dhcp-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/dhcp-users




More information about the dhcp-users mailing list