Converting AIX dhcpsd.conf to Lnx pattern dhcpd.conf

Glenn Satchell glenn.satchell at uniq.com.au
Tue Feb 8 12:18:46 UTC 2011


Hio Stewart

There are a set of quite long and detailed online man pages. There is 
also the somewhat old DHCP Handbook 2nd Edition that you might pick up 
cheaply now.

Suggested reading are the following man pages:

dhcpd.conf
dhcp-options
dhcp-eval
dhcpd

more responses inline...

On 02/08/11 07:08, Stewart Dean wrote:
> I am converting a legacy AIX DHCP service (which I created and have been
> running for yea 10 years or so) to Linux (CentOS 5.5). I have an AIX
> 2300 line legacy config file which, while vaguely of the same faith as
> the Linux version, is definitely a different denomination. I throw
> myself on the mercy of those experienced in Linux DHCP.
> I would dork around with a sample config file to figure out syntax
> questions, but all of the sample/prototype DHCP config files on the
> install (I looked with a find / -name "*dhcp*" -ls) fail when trying to
> start DHCP. Yes, there are syslog messages, and I've been around and
> around to no avail trying to patch something up that wouldn't cause DHCP
> to barf. So.......
>
> #1: Would someone suggest a URL to a barebones, 30-50 lines or less,
> dhcpd.conf file that will successfully start so I can play with the syntax

See the EXAMPLES section in the dhcpd.conf man page.

> #2 I see in Linux
> subnet ww.xx.yy.zz netmask 255.255.255.0 {
> My old AIX syntax is:
> subnet ww.xx.yy.zz 255.255.255.0
> {
> I can squirt in the netmask word, but does the open curly brace have to
> be on the same line or can it be on the next (as I currently have in on
> AIX)?

      subnet 204.254.239.0 netmask 255.255.255.224 {
        subnet-specific parameters...
        option routers 204.254.239.1;
        range 204.254.239.10 204.254.239.30;
      }

I think it is convention that the { goes on the same line. I have always 
seen it done that way, but other things work ok with the { on a new 
line, so you might be ok.

> #3 In AIX, all the clients with declared addresses are called out either:
> with:
> = withing the subnet definition envelope with a line like this:
> client 1 <hex MAC address> ww.xx.yy.zz
> and with ww.xx.yy.zz falling within a range statement like this:
> range aa.bb.cc.dd-mm.nn.oo.pp
> (of course in Linux, I have to remove the dash)
> OR
> If there is a hostname defined, then the declaration goes *outside* the
> subnet envelope like this:
> subnet ww.xx.yy.zz netmask 255.255.255.0
> {
> stuff, including a range statement that includes ww.xx.yy.zz
> }
> client 1 <hex MAC address> ww.xx.yy.zz
> {
> option 12 hostnamewombat
> }
> I am thoroughly confused by the docs, so I'll ask some kind soul to give
> me a sample declare with and without a hostname linking a MAC to a
> specific dotted quad IP in the range, but some questions on some
> details....

host foo {
   hardware ethernet 01:02:03:04:05:06;
   fixed-address 10.11.12.13;
   # or if there is a DNS or /etc/hosts entry, note no quotes!
   fixed-address foo.example.com;
   # this is optional to send the hostname to the client
   option host-name "foo.example.com";
}

The item after the word host is a label, nit related to the hostname, 
and it must be unique.

The range statement is for specifying addresses that should be offered 
to dynamic clients.

The IP address specified in the fixed-address must not be located inside 
a specified range. dhcpd will try to ping the address before offering 
it, but if it is not connected to the net or more commonly runs a 
firewall blocking icmp, then that IP could be assigned to some other client.

It is best to *not* define host statements inside a subnet definition. 
It can cause unexpected inheritance problems.

> = must the MAC address have colons in it or can it be done as a long hex
> string (as in AIX)?.

man dhcp-eval says this about string expressions:

      string

        A string, enclosed in quotes, may be specified as  a  data
        expression,  and  returns  the  text  between  the quotes,
        encoded in  ASCII.

      colon-separated hexadecimal list

        A list of hexadecimal octet values, separated  by  colons,
        may be specified as a data expression.

So, yes it must always be separated by colons.

> = must the ethernet keyword always be there or is it optional

No, it is not optional. It specifies the type of the hardware address. 
There can be other types such as token-ring and fddi, although in 
practice ethernet is the most common type these days.

And the common bits from my home dhcpd.conf

authoritative;
log-facility local7;
option domain-name "example.com.au";
option domain-name-servers drill.example.com.au, grinder.example.com.au;
default-lease-time 14400;
max-lease-time 86400;
ping-check true;
ddns-update-style none;

host plane {
   hardware ethernet 00:03:47:70:74:cf;
   fixed-address plane.example.com.au;
}

host hornet {
   hardware ethernet 0:e:7f:64:df:2;
   fixed-address hornet.example.com.au;
   # this is needed for Solaris to get the hostname
   option host-name "hornet.example.com.au";
}

subnet 192.168.14.0 netmask 255.255.255.0 {
   option routers grinder.example.com.au;
   pool {
     range 192.168.14.230 192.168.14.253;
   }
}

regards,
-glenn



More information about the dhcp-users mailing list