237 lines
10 KiB
Plaintext
237 lines
10 KiB
Plaintext
Internet Software Consortium
|
|
Dynamic Host Configuration Protocol Distribution
|
|
Version 2, Beta 1, Patchlevel 0
|
|
December 6, 1997
|
|
|
|
This is the first Beta release of Version 2 of the Internet Software
|
|
Consortium DHCP Distribution. In version 2.0, this distribution
|
|
includes a DHCP server, a DHCP client, and a BOOTP/DHCP relay agent.
|
|
This beta is believed to be fairly stable. However, DHCP server users
|
|
running a production environment should probably still use version
|
|
1.0, which is more stable, having been in a feature freeze since
|
|
November of 1996.
|
|
|
|
In this release, the server and relay agent currently work well on
|
|
Digital Alpha OSF/1, SunOS 4.1.4, NetBSD, FreeBSD, BSD/OS and Ultrix.
|
|
They can also be run usefully on Solaris as long as only one broadcast
|
|
network interface is configured. They also runs on QNX and Linux as
|
|
long as only one broadcast network interface is configured and a host
|
|
route is added from that interface to the 255.255.255.255 broadcast
|
|
address. If you are running a Linux 2.0.31 kernel, the DHCP daemons
|
|
may be able to operate on more than one interface.
|
|
|
|
The DHCP client currently only knows how to configure the network on
|
|
NetBSD, FreeBSD, BSD/os, Linux, Solaris and NextStep. The client
|
|
depends on a system-dependent shell script to do network
|
|
configuration - support for other operating systems is simply a matter
|
|
of porting this shell script to the new platform.
|
|
|
|
If you wish to run the DHCP Distribution on Linux, please see the
|
|
Linux-specific notes later in this document. If you wish to run on a
|
|
SCO release, please see the SCO-specific notes later in this document.
|
|
You particularly need to read these notes if you intend to support
|
|
Windows 95 clients. If you are running a version of FreeBSD prior to
|
|
2.2, please read the note on FreeBSD. If you are running HP-UX or
|
|
Ultrix, please read the notes for those operating systems below.
|
|
If you are running NeXTSTEP, please see the notes on NeXTSTEP below.
|
|
|
|
If you start dhcpd and get a message, "no free bpf", that means you
|
|
need to configure the Berkeley Packet Filter into your operating
|
|
system kernel. On NetBSD, FreeBSD and BSD/os, type ``man bpf'' for
|
|
information. On Digital Unix, type ``man pfilt''.
|
|
|
|
|
|
BUILDING THE DHCP DISTRIBUTION
|
|
|
|
To build the DHCP Distribution, type ``configure''. If configure can
|
|
figure out what sort of system you're running on, it will create a
|
|
custom Makefile for you for that system; otherwise, it will complain.
|
|
If it can't figure out what system you are using, that system is not
|
|
supported - you are on your own.
|
|
|
|
Once you've run configure, just type ``make'', and after a while you
|
|
should have a dhcp server. If you get compile errors on one of the
|
|
supported systems mentioned earlier, please let us know. If you get
|
|
errors on a system not mentioned above, you will need to do some
|
|
programming or debugging on your own to get the DHCP Distribution working.
|
|
|
|
LINUX
|
|
|
|
There are three big LINUX issues: the all-ones broadcast address,
|
|
Linux 2.1 ip_bootp_agent enabling, and operations with more than one
|
|
network interface.
|
|
|
|
BROADCAST
|
|
|
|
In order for dhcpd to work correctly with picky DHCP clients (e.g.,
|
|
Windows 95), it must be able to send packets with an IP destination
|
|
address of 255.255.255.255. Unfortunately, Linux insists on changing
|
|
255.255.255.255 into the local subnet broadcast address (here, that's
|
|
192.5.5.223). This results in a DHCP protocol violation, and while
|
|
many DHCP clients don't notice the problem, some (e.g., all Microsoft
|
|
DHCP clients) do. Clients that have this problem will appear not to
|
|
see DHCPOFFER messages from the server.
|
|
|
|
It is possible to work around this problem on some versions of Linux
|
|
by creating a host route from your network interface address to
|
|
255.255.255.255. The command you need to use to do this on Linux
|
|
varies from version to version. The easiest version is:
|
|
|
|
route add -host 255.255.255.255 dev eth0
|
|
|
|
On some older Linux systems, you will get an error if you try to do
|
|
this. On those systems, try adding the following entry to your
|
|
/etc/hosts file:
|
|
|
|
255.255.255.255 all-ones
|
|
|
|
Then, try:
|
|
|
|
route add -host all-ones dev eth0
|
|
|
|
Another route that has worked for some users is:
|
|
|
|
route add -net 255.255.255.0 dev eth0
|
|
|
|
If you are not using eth0 as your network interface, you should
|
|
specify the network interface you *are* using in your route command.
|
|
|
|
IP BOOTP AGENT
|
|
|
|
Some versions of the Linux 2.1 kernel apparently prevent dhcpd from
|
|
working unless you enable it by doing the following:
|
|
|
|
echo 1 >/proc/sys/net/ipv4/ip_bootp_agent
|
|
|
|
|
|
MULTIPLE INTERFACES
|
|
|
|
Most older versions of the Linux kernel do not provide a networking
|
|
API that allows dhcpd to operate correctly if the system has more than
|
|
one broadcast network interface. However, Linux 2.0 kernels with
|
|
version numbers greater than or equal to 2.0.31 add an API feature:
|
|
the SO_BINDTODEVICE socket option. If SO_BINDTODEVICE is present, it
|
|
is possible for dhcpd to operate on Linux with more than one network
|
|
interface. In order to take advantage of this, you must be running a
|
|
2.0.31 or greater kernel, and you must have 2.0.31 system headers
|
|
installed *before* you build dhcpd.
|
|
|
|
NOTE: People have been having problems finding the 2.0.31 kernel
|
|
because it was only available as a prerelease patch. As of October
|
|
17, Linux 2.0.31 is the stable Linux kernel, and is available as a
|
|
kernel distribution rather than as a test patch. With any luck, it
|
|
will be in the latest version of your favourite Linux distribution
|
|
soon.
|
|
|
|
If you are running a Linux 2.1 kernel, this does not guarantee that you
|
|
have SO_BINDTODEVICE. Linux 2.0.31 was released quite a while after 2.1
|
|
kernel development began. The earliest Linux kernel in the 2.1
|
|
development stream with SO_BINDTODEVICE is version 2.1.68.
|
|
|
|
We have heard reports that you must still add routes to 255.255.255.255
|
|
in order for the all-ones broadcast to work, even on 2.0.31 kernels.
|
|
In fact, you now need to add a route for each interface. Hopefully
|
|
the Linux kernel gurus will get this straight eventually.
|
|
|
|
SCO
|
|
|
|
SCO has the same problem as Linux (described earlier). The thing is,
|
|
SCO *really* doesn't want to let you add a host route to the all-ones
|
|
broadcast address. One technique that has been successful on some
|
|
versions of SCO is the very bizarre command:
|
|
|
|
ifconfig net0 alias 10.1.1.1 netmask 8.0.0.0
|
|
|
|
Apparently this works because of an interaction between SCO's support
|
|
for network classes and the weird netmask. The 10.* network is just a
|
|
dummy that can generally be assumed to be safe. Don't ask why this
|
|
works. Just try it. If it works for you, great. If not, SCO is
|
|
supposedly adding hooks to support real DHCP service in a future
|
|
release - I have this on good authority from the people at SCO who do
|
|
*their* DHCP server and client.
|
|
|
|
HP-UX
|
|
|
|
HP-UX has the same problem with the all-ones broadcast address that
|
|
SCO and Linux have. One user reported that adding the following to
|
|
/etc/rc.config.d/netconf helped (you may have to modify this to suit
|
|
your local configuration):
|
|
|
|
INTERFACE_NAME[0]=lan0
|
|
IP_ADDRESS[0]=1.1.1.1
|
|
SUBNET_MASK[0]=255.255.255.0
|
|
BROADCAST_ADDRESS[0]="255.255.255.255"
|
|
LANCONFIG_ARGS[0]="ether"
|
|
DHCP_ENABLE[0]=0
|
|
|
|
ULTRIX
|
|
|
|
Now that we have Ultrix packet filter support, the DHCP Distribution
|
|
on Ultrix should be pretty trouble-free. However, one thing you do
|
|
need to be aware of is that it now requires that the pfilt device be
|
|
configured into your kernel and present in /dev. If you type ``man
|
|
packetfilter'', you will get some information on how to configure your
|
|
kernel for the packet filter (if it isn't already) and how to make an
|
|
entry for it in /dev.
|
|
|
|
FreeBSD
|
|
|
|
Versions of FreeBSD prior to 2.2 have a bug in BPF support in that the
|
|
ethernet driver swaps the ethertype field in the ethernet header
|
|
downstream from BPF, which corrupts the output packet. If you are
|
|
running a version of FreeBSD prior to 2.2, and you find that dhcpd
|
|
can't communicate with its clients, you should #define BROKEN_FREEBSD_BPF
|
|
in site.h and recompile.
|
|
|
|
NeXTSTEP
|
|
|
|
The NeXTSTEP support uses the NeXTSTEP Berkeley Packet Filter
|
|
extension, which is not included in the base NextStep system. You
|
|
must install this extension in order to get dhcpd or dhclient to work.
|
|
|
|
SUPPORT
|
|
|
|
The Internet Software Consortium DHCP server is not a commercial
|
|
product, and is not supported in that sense. However, it has
|
|
attracted a fairly sizable following on the Internet, which means that
|
|
there are a lot of knowledgable users who may be able to help you if
|
|
you get stuck. These people generally read the dhcp-server@fugue.com
|
|
mailing list.
|
|
|
|
If you are going to use dhcpd, you should probably subscribe to the
|
|
dhcp-server and dhcp-announce mailing lists. If you will be using
|
|
dhclient, you should subscribe to the dhcp-client mailing list.
|
|
PLEASE DO NOT send queries about non-isc clients to the dhcp-client
|
|
mailing list. If you're asking about them on an ISC mailing list,
|
|
it's probably because you're using the ISC DHCP server, so ask there.
|
|
|
|
Please see http://www.fugue.com/dhcp/lists for details on how to
|
|
subscribe. If you don't have WorldWide Web access, you can send mail
|
|
to dhcp-request@fugue.com and tell me which lists you want to
|
|
subscribe to, but please use the web interface if you can, since I
|
|
have to handle the -request mailing list manually, and I will give you
|
|
the third degree if you make me do your subscription manually.
|
|
|
|
PLEASE DO NOT SEND REQUESTS FOR SUPPORT DIRECTLY TO ME! The number of
|
|
people using the DHCP Distribution is sufficiently large that if I
|
|
take an interrupt every time any one of those people runs into
|
|
trouble, I will never get any more coding done.
|
|
|
|
PLEASE DO NOT CALL ME ON THE PHONE FOR SUPPORT! Answering the phone
|
|
takes a lot more of my time and attention than answering email. If you
|
|
do call me on the phone, I will tell you to send email to the mailing
|
|
list, and I won't answer your question, so there's no point in doing
|
|
it.
|
|
|
|
BUGS
|
|
|
|
This release of the DHCP Distribution does not yet contain support for
|
|
DHCPINFORM. Support for DHCPINFORM will be present in the release at
|
|
a later time. DHCPINFORM is somewhat tangential to the main purpose
|
|
of the DHCP protocol, so this probably won't be a major problem for
|
|
most users.
|
|
|
|
Vendor tags and User tags are not currently supported.
|
|
|
|
|