873 lines
33 KiB
Plaintext
873 lines
33 KiB
Plaintext
|
|
DHCP mini-HOWTO
|
|
|
|
Vladimir Vuksan
|
|
|
|
vuksan@veus.hr
|
|
|
|
Revision History
|
|
Revision v4.12 October 22, 2000 Revised by: vv
|
|
|
|
This document attempts to answer basic questions on how to set up your
|
|
Linux box to serve as a DHCP server or a DHCP client.
|
|
_________________________________________________________________
|
|
|
|
Table of Contents
|
|
1. [1]Introduction
|
|
|
|
1.1. [2]Standard Disclaimer
|
|
1.2. [3]New Versions of this Document
|
|
1.3. [4]Feedback
|
|
1.4. [5]Contributors
|
|
1.5. [6]Copyright Information
|
|
|
|
2. [7]DHCP protocol
|
|
3. [8]Client Setup
|
|
|
|
3.1. [9]Downloading the client daemon (dhcpcd)
|
|
3.2. [10]Slackware
|
|
3.3. [11]RedHat 6.x and Mandrake 6.x
|
|
3.4. [12]RedHat 5.x
|
|
3.5. [13]RedHat 4.x and Caldera OpenLinux 1.1/1.2
|
|
3.6. [14]Debian
|
|
3.7. [15]LinuxPPC and MkLinux
|
|
3.8. [16]Tying it all together
|
|
3.9. [17]Various notes
|
|
3.10. [18]Troubleshooting
|
|
3.11. [19]Alternative DHCP client (ISC dhclient)
|
|
|
|
4. [20]DHCP Server Setup
|
|
|
|
4.1. [21]DHCP server for UNIX
|
|
4.2. [22]DHCP server configuration
|
|
4.3. [23]Options for DHCPd
|
|
4.4. [24]Starting the server
|
|
4.5. [25]Other interesting documents
|
|
|
|
1. Introduction
|
|
|
|
1.1. Standard Disclaimer
|
|
|
|
No liability for the contents of this documents can be accepted. Use
|
|
the concepts, examples and other content at your own risk. As this is
|
|
a new edition of this document, there may be errors and inaccuracies,
|
|
that may of course be damaging to your system. Proceed with caution,
|
|
and although this is highly unlikely, I don't take any responsibility
|
|
for that.
|
|
|
|
Also bear in mind that this is NOT official information. Much content
|
|
in this document are assumptions, which appear to work for people. Use
|
|
the information at your own risk.
|
|
_________________________________________________________________
|
|
|
|
1.2. New Versions of this Document
|
|
|
|
New versions of this document are available from
|
|
|
|
[26]http://www.oswg.org/oswg-nightly/DHCP.html
|
|
|
|
Following translations of the DHCP mini-HOWTO are available:
|
|
|
|
* Chinese - [27]http://www.linux.org.tw/CLDP/mini/DHCP.html
|
|
* Japanese - [28]http://www.linux.or.jp/JF/JFdocs/DHCP.html
|
|
* Spanish -
|
|
[29]ftp://cuates.pue.upaep.mx/pub/linux/LuCAS/DHCP-mini-Como/
|
|
|
|
Permission is hereby granted to all individuals who want to translate
|
|
the document into their own language. I would only ask that you
|
|
provide a link back to this document and inform me of a URL to your
|
|
translation so I can include a link to it.
|
|
_________________________________________________________________
|
|
|
|
1.3. Feedback
|
|
|
|
Feedback is most certaintly welcome for this document. Without your
|
|
submissions and input, this document wouldn't exist. So, please post
|
|
your additions, comments and criticisms to
|
|
<[30]vuksan-feedback@veus.hr>.
|
|
_________________________________________________________________
|
|
|
|
1.4. Contributors
|
|
|
|
This document has been modified from the original version by Paul
|
|
Makeev.
|
|
|
|
The following people have contributed to this mini-HOWTO.
|
|
|
|
* Heiko Schlittermann
|
|
* Jonathan Smith
|
|
* Dan Khabaza
|
|
* Hal Sadofsky
|
|
* Henrik Stoerner
|
|
* Paul Rossington
|
|
* numerous others
|
|
_________________________________________________________________
|
|
|
|
1.5. Copyright Information
|
|
|
|
This document is copyrighted (c) 1998 Vladimir Vuksan and distributed
|
|
under the terms of the OpenContent License (OPL). Full text of the
|
|
license can be found at
|
|
|
|
[31]http://www.opencontent.org/opl.shtml
|
|
_________________________________________________________________
|
|
|
|
2. DHCP protocol
|
|
|
|
DHCP is Dynamic Host Configuration Protocol. It is used to control
|
|
vital networking parameters of hosts (running clients) with the help
|
|
of a server. DHCP is backward compatible with BOOTP. For more
|
|
information see RFC 2131 (old RFC 1541) and other. (See Internet
|
|
Resources section at the end of the document). You can also read
|
|
[32]http://web.syr.edu/~jmwobus/comfaqs/dhcp.faq.html.
|
|
|
|
This mini-HOWTO covers both the DHCP _SERVER_ daemon as well as DHCP
|
|
_CLIENT_ daemon. Most people need the client daemon which is used by
|
|
workstations to obtain network information from a remote server. The
|
|
server daemon is used by system administrators to distribute network
|
|
information to clients so if you are just a regular user you need the
|
|
_CLIENT_ daemon.
|
|
_________________________________________________________________
|
|
|
|
3. Client Setup
|
|
|
|
Currently there are three different DHCP client programs for Linux,
|
|
dhcpcd, pump and dhclient. This mini-HOWTO deals primarily with
|
|
dhcpcd.
|
|
_________________________________________________________________
|
|
|
|
3.1. Downloading the client daemon (dhcpcd)
|
|
|
|
Depending on your distribution you might have to download the DHCP
|
|
client daemon. If you want to compile it from the source you package
|
|
you need is called dhcpcd and the current version is 1.3.18. It is
|
|
maintained by Sergei Viznyuk <[33]sergei@phystech.com> and today it
|
|
comes as a binary package with most distributions.
|
|
|
|
dhcpcd source can be downloaded from following locations
|
|
|
|
* [34]ftp://ftp.phystech.com/pub/ (Primary site)
|
|
* [35]http://www.cps.msu.edu/~dunham/out/
|
|
|
|
Then follow the instructions below. They should be the same.
|
|
_________________________________________________________________
|
|
|
|
3.2. Slackware
|
|
|
|
You can download the latest copy of the DHCPcd from any Metalab mirror
|
|
or following:
|
|
|
|
* [36]ftp://metalab.unc.edu/pub/Linux/system/network/daemons
|
|
* [37]ftp://ftp.phystech.com/pub/ (Primary site)
|
|
|
|
Download the latest version of dhcpcd.tar.gz.
|
|
|
|
* Unpack it
|
|
tar -zxvf dhcpcd-1.3.18pl1.tar.gz
|
|
* cd into the directory and make dhcpcd
|
|
cd dhcpcd-1.3.18pl1
|
|
make
|
|
* Install it (you have to run the following command as root)
|
|
make install
|
|
|
|
This will create the directory /etc/dhcpc where DHCPcd will store the
|
|
DHCP information and dhcpcd file will be copied into /usr/sbin.
|
|
|
|
In order to make the system initialize using DHCP during boot type:
|
|
|
|
cd /etc/rc.d
|
|
|
|
mv rc.inet1 rc.inet1.OLD
|
|
|
|
This will move the old network initialization script into
|
|
rc.inet1.OLD. You now need to create the new rc.inet1 script.
|
|
Following code is all you need:
|
|
#!/bin/sh
|
|
#
|
|
# rc.inet1 This shell script boots up the base INET system.
|
|
|
|
HOSTNAME=`cat /etc/HOSTNAME` #This is probably not necessary but I
|
|
#will leave it in anyways
|
|
|
|
# Attach the loopback device.
|
|
/sbin/ifconfig lo 127.0.0.1
|
|
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
|
|
|
|
# IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to configure the
|
|
# eth0 interface. If you're only using loopback or SLIP, don't include the
|
|
# rest of the lines in this file.
|
|
|
|
/usr/sbin/dhcpcd
|
|
|
|
Save it and reboot your computer.
|
|
|
|
When you are finished go the [38]last step.
|
|
_________________________________________________________________
|
|
|
|
3.3. RedHat 6.x and Mandrake 6.x
|
|
|
|
DHCPcd configuration under RedHat 6.0+ is really easy. All you need to
|
|
do is start the Control Panel by typing control-panel.
|
|
|
|
* Select "Network Configuration"
|
|
* Click on Interfaces
|
|
* Click Add
|
|
* Select Ethernet
|
|
* In the Edit Ethernet/Bus Interface select "Activate interface at
|
|
boot time" as well as select "DHCP" as "Interface configuration
|
|
protocol"
|
|
|
|
Please note that in RedHat 6.x Redhat as default includes a DHCP
|
|
client called pump instead of above mentioned dhcpcd. CD-ROM does
|
|
include dhcpcd RPM so if you have no luck with pump try with dhcpcd.
|
|
After you install dhcpcd (e.g. rpm -i dhcpcd-1.3.17pl2-1.i386.rpm) you
|
|
will have to make some [39]changes.
|
|
|
|
Additional notes from Alexander Stevenson
|
|
<[40]alexander.stevenson@home.com>:
|
|
|
|
I had no luck with DHCPcd. What finally worked for me was "pump",
|
|
which comes with Linux Mandrake 6.0 (and so I assume it is included
|
|
with RedHat as well). The command I used was:
|
|
|
|
pump -i eth0 -h hostname
|
|
|
|
It didn't matter what "hostname" was, but without it the server would
|
|
not respond.
|
|
|
|
I then changed the line in my /sbin/ifup script to reflect the change;
|
|
the default version does not have the -h switch, and so didn't work
|
|
for me.
|
|
|
|
Basically, if you're using linuxconf, and after setting the adapter to
|
|
"DHCP" it still doesn't work, try adding a "-h hostname" to the pump
|
|
line in the /sbin/ifup script. My script now looks like this:
|
|
...
|
|
if [ -n "$PUMP" ]; then
|
|
echo -n "Determining IP information for $DEVICE..."
|
|
if /sbin/pump -i $DEVICE -h hostname; then
|
|
echo " done."
|
|
else
|
|
echo " failed."
|
|
exit 1
|
|
fi
|
|
else ...
|
|
|
|
Another more elegant way to add hostname field is provided by Aad van
|
|
der Klaauw:
|
|
|
|
Currently i'm configuring a gateway system at home, needed to set the
|
|
MAC address and use the '-h hostname' workaround. So I decided to
|
|
*not* change the script but to use the configure file. In my
|
|
/etc/sysconfig/network-scripts/ifcfg-eth0 I have added the following
|
|
DEVICE="eth0"
|
|
MACADDR="00:11:22:33:44:55"
|
|
DHCP_HOSTNAME="trigger_for_terayon"
|
|
|
|
Which will survive upgrades, and is imho a "cleaner" way.
|
|
|
|
That is it. Reboot your machine or type /sbin/ifup eth0 on the command
|
|
line.
|
|
_________________________________________________________________
|
|
|
|
3.4. RedHat 5.x
|
|
|
|
DHCPcd configuration under RedHat 5.0+ is really easy. All you need to
|
|
do is start the Control Panel by typing control-panel.
|
|
|
|
* Select "Network Configuration"
|
|
* Click on Interfaces
|
|
* Click Add
|
|
* Select Ethernet
|
|
* In the Edit Ethernet/Bus Interface select "Activate interface at
|
|
boot time" as well as select "DHCP" as "Interface configuration
|
|
protocol"
|
|
|
|
When you are finished go the [41]last step.
|
|
_________________________________________________________________
|
|
|
|
3.5. RedHat 4.x and Caldera OpenLinux 1.1/1.2
|
|
|
|
DHCPcd is included in the standard RedHat distribution as an RPM and
|
|
you can find it on your distribution's CD-ROM in RPMS directory or you
|
|
can download it from:
|
|
|
|
[42]ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhcpcd
|
|
-0.6-2.i386.rpm
|
|
|
|
Install it with rpm -i dhcpcd-0.6-2.i386.rpm.
|
|
|
|
Alternatively you can compile your own version by following the steps
|
|
outlined in the [43]Slackware.
|
|
|
|
The following information was provided to me by nothing
|
|
<[44]nothing@cc.gatech.edu>.
|
|
|
|
Removed my static ip and name from /etc/resolv.conf. However, I did
|
|
leave in the search line and my two nameserver lines (for some
|
|
reason my dhcpcd never creates a /etc/dhcpc/resolv.conf, so I have
|
|
to use a static /etc/resolv.conf).
|
|
|
|
In /etc/sysconfig/network I removed the HOSTNAME and GATEWAY
|
|
entries. I left the other entries as is (NETWORKING, DOMAINNAME,
|
|
GATEWAYDEV).
|
|
|
|
In /etc/sysconfig/network-scripts/ifcfg-eth0 I removed the IPADDR,
|
|
NETMASK, NETWORK, and BROADCAST entries. I left DEVICE and ONBOOT
|
|
as is. I changed the BOOTPROTO line to BOOTPROTO=dhcp.
|
|
|
|
Save the file. Reboot your computer.
|
|
|
|
When you are finished go the [45]last step.
|
|
_________________________________________________________________
|
|
|
|
3.6. Debian
|
|
|
|
There is a deb package of DHCPcd (make sure it starts with dhcpcd) at:
|
|
|
|
[46]http://ftp.debian.org/debian/dists/slink/main/binary-i386/net/
|
|
|
|
Or, follow the [47]Slackware installation instructions.
|
|
|
|
To unpack the deb package type dpkg -i
|
|
/where/ever/your/debian/packages/are/dhcpcd*deb.
|
|
|
|
It appears that there isn't a need for any DHCPcd configuration
|
|
because:
|
|
|
|
|
|
The dhcpcd package installs it's startup script as usual for debian
|
|
packages in /etc/init.d/package_name, here as /etc/init.d/dhcpcd, and
|
|
links this to the various /etc/rc?.d/ directories.
|
|
|
|
--From: Heiko Schlittermann <[48]heiko@os.inf.tu-dresden.de>
|
|
|
|
The contents of the /etc/rc?.d/ dirs is then executed at boot time.
|
|
|
|
If you don't reboot after installing you should consider starting the
|
|
daemon manually: /etc/init.d/dhcpcd start.
|
|
|
|
When you are finished go the [49]last step.
|
|
_________________________________________________________________
|
|
|
|
3.7. LinuxPPC and MkLinux
|
|
|
|
Following section has been written by R. Shapiro
|
|
|
|
As of the "1999" (R5) release, Linuxppc is now almost completely
|
|
compatible with Redhat 6, with one caveat (see below). In general the
|
|
instructions are exactly the same as for the current release of
|
|
[50]RedHat 6.x and Mandrake 6.x.
|
|
|
|
The remaining problem is that Redhat 6 uses the 'pump' client for dhcp
|
|
by default, and 'pump' doesn't work reliably in Linuxppc. To get
|
|
around this, you should install the latest dhcpcd from Sergei Viznyuk,
|
|
and then edit /sbin/ifup to use dhcpcd instead of pump.
|
|
|
|
Change
|
|
if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then
|
|
PUMP=true
|
|
fi
|
|
|
|
if [ -n "$PUMP" ]; then
|
|
|
|
with
|
|
if [ "$BOOTPROTO" = bootp ]; then
|
|
echo " done."
|
|
else
|
|
echo " failed."
|
|
exit 1
|
|
fi
|
|
elif [ "$BOOTPROTO" = dhcp ]; then
|
|
echo -n "Determining IP information for $DEVICE..."
|
|
if /sbin/dhcpcd -d $DEVICE ; then
|
|
if [ -f /etc/dhcpc/dhcpcd-${DEVICE}.exe ]; then
|
|
/etc/dhcpc/dhcpcd-${DEVICE}.exe
|
|
fi
|
|
|
|
and a coresponding changes for ifdown. Change
|
|
if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then
|
|
....
|
|
fi
|
|
|
|
with
|
|
if [ "$BOOTPROTO" = bootp ]; then
|
|
fi
|
|
|
|
if [ "$BOOTPROTO" = dhcp ]; then
|
|
if [ -f /var/run/dhcpcd-${DEVICE}.pid ]; then
|
|
kill `cat /var/run/dhcpcd-${DEVICE}.pid`
|
|
rm -f /var/run/dhcpcd-${DEVICE}.pid
|
|
fi
|
|
fi
|
|
|
|
A working ppc rpm for dhcpcd is included on the Linuxppc 1999 cd; a
|
|
slightly later rpm is available in the contrib directory on
|
|
[51]ftp://ftp.linuxppc.org/. Sources, which compile out of the box in
|
|
Linuxppc 1999, are available from
|
|
[52]ftp://ftp.phystech.com/pub/dhcpcd-1.3.17-pl9.tar.gz.
|
|
_________________________________________________________________
|
|
|
|
3.8. Tying it all together
|
|
|
|
After your machine reboots your network interface should be
|
|
configured. Type: ifconfig.
|
|
|
|
You should get something like this:
|
|
lo Link encap:Local Loopback
|
|
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
|
|
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
|
|
RX packets:302 errors:0 dropped:0 overruns:0 frame:0
|
|
TX packets:302 errors:0 dropped:0 overruns:0 carrier:0 coll:0
|
|
|
|
eth0 Link encap:Ethernet HWaddr 00:20:AF:EE:05:45
|
|
inet addr:24.128.53.102 Bcast:24.128.53.255 Mask:255.255.254.0
|
|
^^^^^^^^^^^^^^^^^^^^^^^
|
|
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
|
|
RX packets:24783 errors:1 dropped:1 overruns:0 frame:1
|
|
TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0 coll:96
|
|
Interrupt:10 Base address:0x300
|
|
|
|
If you have some normal number under inet addr you are set. If you see
|
|
0.0.0.0 don't despair, it is a temporary setting before dhcpcd
|
|
acquires the IP address. If even after few minutes you are seeing
|
|
0.0.0.0 please check out [53]Troubleshooting. DHCPcd is a daemon and
|
|
will stay running as long as you have your machine on. Every three
|
|
hours it will contact the DHCP server and try to renew the IP address
|
|
lease. It will log all the messages in the syslog (on Slackware
|
|
/var/adm/syslog, RedHat/OpenLinux /var/log/syslog).
|
|
|
|
One final thing. You need to specify your nameservers. There are two
|
|
ways to do it, you can either ask your provider to provide you with
|
|
the addresses of your name server and then put those in the
|
|
/etc/resolv.conf or DHCPcd will obtain the list from the DHCP server
|
|
and will build a resolv.conf in /etc/dhcpc.
|
|
|
|
I decided to use DHCPcd's resolv.conf by doing the following:
|
|
|
|
Back up your old /etc/resolv.conf: mv /etc/resolv.conf
|
|
/etc/resolv.conf.OLD
|
|
|
|
If directory /etc/dhcpc doesn't exist create it: mkdir /etc/dhcpc
|
|
|
|
Make a link from /etc/dhcpc/resolv.conf to /etc/resolv.conf: ln -s
|
|
/etc/dhcpc/resolv.conf /etc/resolv.conf
|
|
|
|
If that doesn't work try this (fix suggested by
|
|
<[54]nothing@cc.gatech.edu> with a little amendment by Henrik
|
|
Stoerner):
|
|
|
|
This last step I had to perform only because my dhcpcd doesn't create
|
|
an /etc/dhcpc/resolv.conf. In /etc/sysconfig/network-scripts/ifup I
|
|
made the following changes (which are a very poor hack, but they work
|
|
for me):
|
|
elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
|
|
echo -n "Using DHCP for ${DEVICE}... "
|
|
/sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE}
|
|
echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh
|
|
|
|
if [ -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
|
|
^^^^
|
|
echo "failed."
|
|
exit 1
|
|
|
|
I changed to:
|
|
elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
|
|
echo -n "Using DHCP for ${DEVICE}... "
|
|
/sbin/dhcpcd
|
|
echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh
|
|
|
|
if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
|
|
^^^^^^
|
|
echo "failed."
|
|
exit 1
|
|
|
|
Note: Notice the ! (bang) in if [ ! -f
|
|
/var/run/dhcp-wait-${DEVICE}.pid ];
|
|
|
|
Now sit back and enjoy :-).
|
|
_________________________________________________________________
|
|
|
|
3.9. Various notes
|
|
|
|
Following step(s) are not necessary but might be useful to some
|
|
people:
|
|
|
|
a. If you need network connectivity only occasionally you can start
|
|
dhcpcd from the command line (you have to be root to do this)
|
|
with: /usr/sbin/dhcpcd.
|
|
When you need to down (turn off) the network type /usr/sbin/dhcpcd
|
|
-k.
|
|
_________________________________________________________________
|
|
|
|
3.10. Troubleshooting
|
|
|
|
If you have followed the steps outlined above and you are unable to
|
|
access the network there are several possible explanations:
|
|
_________________________________________________________________
|
|
|
|
3.10.1. Your network card is not configured properly
|
|
|
|
During the boot up process your Linux will probe your network card and
|
|
should say something along these lines:
|
|
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 20 af ee 11 11, IRQ 10.
|
|
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
|
|
|
|
If a message like this doesn't appear your ethernet card might not be
|
|
recognized by your Linux system. If you have a generic ethernet card
|
|
(a NE2000 clone) you should have received a disk with DOS utilities
|
|
that you can use to set up the card. Try playing with IRQs until Linux
|
|
recognizes your card (IRQ 9,10,12 are usually good).
|
|
_________________________________________________________________
|
|
|
|
3.10.2. Your DHCP server supports RFC 1541/My DHCP server is Windows NT
|
|
|
|
Try running dhcpcd by typing dhcpcd -r.
|
|
|
|
Use ifconfig to check if your network interface is configured (wait
|
|
few seconds for the configuration process, initally it will say
|
|
Inet.addr=0.0.0.0)
|
|
|
|
If this solves your problem add the "-r" flag to the boot up scripts,
|
|
ie: instead of /sbin/dhcpcd you will have /sbin/dhcpcd -r.
|
|
|
|
For example under RedHat edit script
|
|
/etc/sysconfig/network-scripts/ifup and change the following:
|
|
IFNAME=$[ {DEVICE} \
|
|
"/sbin/dhcpcd -r -c /etc/"- etc etc.
|
|
_________________________________________________________________
|
|
|
|
3.10.3. During bootup I get error message "Using DHCP for eth0 ... failed"
|
|
but my system works fine.
|
|
|
|
You are most likely using RedHat and you haven't followed instructions
|
|
carefully :-). You are missing the ! (bang) in one of the if
|
|
statements. Jump [55]here and check how to fix it.
|
|
_________________________________________________________________
|
|
|
|
3.10.4. My network works for few minutes and then stops responding
|
|
|
|
There are some reports of gated (gateway daemon) screwing up routing
|
|
on Linux boxes which results in problem described above. Check if
|
|
gated is running with: ps -auxww | grep gate.
|
|
|
|
If it is try removing it with RedHat's RPM manager or removing the
|
|
entry in /etc/rc.d/.
|
|
_________________________________________________________________
|
|
|
|
3.10.5. My ethernet card is recognized during boot up but I still get "NO
|
|
DHCPOFFER" message in my logs. I also happen to have a PCMCIA ethernet card.
|
|
|
|
You need to make sure that you have the 10BaseT port ("phone" plug) on
|
|
your network card activated. Best way to verify it is to check what
|
|
kind of connector your card is configured for during bootup e.g.
|
|
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 20 af ee 11 11, IRQ 10.
|
|
^^^^^^^^^^^^
|
|
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
|
|
|
|
I have received reports of laptop users having this kind of problems
|
|
due to the PCMCIA utilities (specifically ifport) that would set the
|
|
connector type to 10Base2 (thinnet). You have to make sure you use
|
|
10BaseT for your connection. If you are not reconfigure the card and
|
|
restart the computer.
|
|
_________________________________________________________________
|
|
|
|
3.10.6. My DHCP client broadcasts requests but no one answers (Contributed
|
|
by Peter Amstutz)
|
|
|
|
On some systems, you need to include some hostname for your machine as
|
|
part of the request. With dhcpcd, do this with dhcpcd -h foohost
|
|
Probably the hostname wanted will be your account username on the
|
|
network.
|
|
_________________________________________________________________
|
|
|
|
3.10.7. I have followed all the steps but still my machine is not able to
|
|
connect
|
|
|
|
The cable modem will usually memorize the ethernet address of your
|
|
network card so if you connect a new computer or switch network cards
|
|
you will somehow have to "teach" your cable modem to recognize the new
|
|
computer/card. Usually you can turn of the modem and bring it back up
|
|
while computer is on or you will have to call tech support and tell
|
|
them that you have changed a network card in the computer.
|
|
|
|
You have firewall rules (ipfwadm rules) that disallow port 67/68
|
|
traffic used by DHCP to distribute configuration info. Check your
|
|
firewall rules carefully.
|
|
_________________________________________________________________
|
|
|
|
3.10.8. I have MediaOne Express service and I still can't connect.
|
|
|
|
It appears that MediaOne has been using adding some things to DHCP
|
|
that shouldn't be there. Supposedly this is not a problem anymore but
|
|
if you experience outages check for these things. If you are (un)lucky
|
|
to have Windows NT on your machine if you go into Event Viewer you
|
|
will see a warning like this:
|
|
DHCP received an unknown option 067 of length 005. The raw option data is
|
|
given below.
|
|
|
|
0000: 62 61 73 69 63 basic
|
|
|
|
If this is the problem go to [56]ftp://vanbuer.ddns.org/pub/ and
|
|
either download a binary or get the source for the change.
|
|
_________________________________________________________________
|
|
|
|
3.11. Alternative DHCP client (ISC dhclient)
|
|
|
|
If you have not had success getting your Linux connection running with
|
|
the dhcpcd you might want to try ISC dhclient. dhclient comes with the
|
|
DHCP distribution from ISC which includes both a DHCP client and a
|
|
DHCP server. Instructions on how to get and compile the DHCP
|
|
distribution can be found [57]here. When you are done with it please
|
|
return to this section to configure the client.
|
|
|
|
Note: Following information has been provided by Ted Lemon
|
|
<[58]mellon@isc.org> one of the authors of dhclient.
|
|
|
|
With the current version of the DHCP client, you don't actually need a
|
|
dhclient.conf. All you have to do is invoke dhclient e.g.:
|
|
/sbin/dhclient.
|
|
|
|
This will configure all broadcast interfaces. If this doesn't work or
|
|
you want to specify only one interface create a /etc/dhclient.conf
|
|
file with this example configuration.
|
|
interface "eth0" {
|
|
send dhcp-client-identifier 1:xx:xx:xx:xx:xx:xx;
|
|
send dhcp-lease-time 86400;
|
|
}
|
|
|
|
Here we assume that the ethernet interface is eth0. If not change
|
|
accordingly. Also replace xx:xx:xx:xx:xx with your ethernet address.
|
|
This dhclient.conf makes the client look more like a Win95 client.
|
|
_________________________________________________________________
|
|
|
|
4. DHCP Server Setup
|
|
|
|
4.1. DHCP server for UNIX
|
|
|
|
There are several DHCP servers available for U*X-like OSes, both
|
|
commercial and free. One of the more popular free DHCP servers is Paul
|
|
Vixie/ISC DHCPd. Currently the latest version is 2.0 (suggested for
|
|
most users) but 3.0 is in beta testing. You can get them from
|
|
|
|
[59]ftp://ftp.isc.org/isc/dhcp/
|
|
|
|
Some of the distributions provide binary packages for dhcpd so skip
|
|
the following section if you got it installed that way.
|
|
|
|
After you download unpack it. After you do cd into the distribution
|
|
directory and type: ./configure
|
|
|
|
It will take some time to configure the settings. After it is done
|
|
type: make and make install.
|
|
_________________________________________________________________
|
|
|
|
4.2. DHCP server configuration
|
|
|
|
When done with installation type ifconfig -a. You should see something
|
|
like this:
|
|
eth0 Link encap:10Mbps Ethernet HWaddr 00:C0:4F:D3:C4:62
|
|
inet addr:183.217.19.43 Bcast:183.217.19.255 Mask:255.255.255.0
|
|
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
|
|
RX packets:2875542 errors:0 dropped:0 overruns:0
|
|
TX packets:218647 errors:0 dropped:0 overruns:0
|
|
Interrupt:11 Base address:0x210
|
|
|
|
If it doesn't say MULTICAST you should reconfigure your kernel and add
|
|
multicast support. On most systems you will not need to do this.
|
|
|
|
Next step is to add route for 255.255.255.255. Quoted from DHCPd
|
|
README:
|
|
|
|
"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."
|
|
|
|
Type: route add -host 255.255.255.255 dev eth0
|
|
|
|
If you get a message "255.255.255.255: Unknown host", you should 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
|
|
|
|
or
|
|
route add 255.255.255.0 dev eth0
|
|
|
|
eth0 is of course the name of the network device you are using. If it
|
|
differs change appropriately.
|
|
_________________________________________________________________
|
|
|
|
4.3. Options for DHCPd
|
|
|
|
Now you need to configure DHCPd. In order to do this you will have to
|
|
create or edit /etc/dhcpd.conf. There is a graphical interface for
|
|
dhcpd configuration under KDE ( [60]http://www.kde.org/ ) called
|
|
kcmdhcpd that is very similar to the DHCP configurator on Windows NT.
|
|
When KDE 2.0 comes out it should come with kcmdhcpd or you could get
|
|
it directly from:
|
|
|
|
[61]ftp://ftp.us.kde.org/pub/kde/unstable/apps/network/
|
|
|
|
If you want to configure it by hand follow instructions below.
|
|
|
|
Most commonly what you want to do is assign IP addresses randomly.
|
|
This can be done with settings as follows:
|
|
# Sample /etc/dhcpd.conf
|
|
# (add your comments here)
|
|
default-lease-time 600;
|
|
max-lease-time 7200;
|
|
option subnet-mask 255.255.255.0;
|
|
option broadcast-address 192.168.1.255;
|
|
option routers 192.168.1.254;
|
|
option domain-name-servers 192.168.1.1, 192.168.1.2;
|
|
option domain-name "mydomain.org";
|
|
|
|
subnet 192.168.1.0 netmask 255.255.255.0 {
|
|
range 192.168.1.10 192.168.1.100;
|
|
range 192.168.1.150 192.168.1.200;
|
|
}
|
|
|
|
This will result in DHCP server giving a client an IP address from the
|
|
range 192.168.1.10-192.168.1.100 or 192.168.1.150-192.168.1.200. It
|
|
will lease an IP address for 600 seconds if the client doesn't ask for
|
|
specific time frame. Otherwise the maximum (allowed) lease will be
|
|
7200 seconds. The server will also "advise" the client that it should
|
|
use 255.255.255.0 as its subnet mask, 192.168.1.255 as its broadcast
|
|
address, 192.168.1.254 as the router/gateway and 192.168.1.1 and
|
|
192.168.1.2 as its DNS servers.
|
|
|
|
If you need to specify a WINS server for your Windows clients you will
|
|
need to include the netbios-name-servers option e.g.
|
|
option netbios-name-servers 192.168.1.1;
|
|
|
|
You can also assign specific IP addresses based on clients ethernet
|
|
address e.g.
|
|
host haagen {
|
|
hardware ethernet 08:00:2b:4c:59:23;
|
|
fixed-address 192.168.1.222;
|
|
}
|
|
|
|
This will assign IP address 192.168.1.222 to a client with ethernet
|
|
address 08:00:2b:4c:59:23.
|
|
|
|
You can also mix and match e.g. you can have certain clients getting
|
|
"static" IP addresses (e.g. servers) and others being alloted dynamic
|
|
IPs (e.g. mobile users with laptops). There are a number of other
|
|
options e.g. nis server addresses, time server addresses etc., if you
|
|
need any of those options please read the dhcpd.conf man page.
|
|
_________________________________________________________________
|
|
|
|
4.4. Starting the server
|
|
|
|
There is only one thing to do before starting the server. In most
|
|
cases DHCP installation doesn't create a dhcpd.leases files. This file
|
|
is used by DHCPd to store information about current leases. It is in
|
|
the plain text form so you can view it during the operation of DHCPd.
|
|
To create dhcpd.leases type:
|
|
touch /var/state/dhcp/dhcpd.leases
|
|
|
|
This will create an empty file (file size = 0). Some of the older
|
|
version of dhcpd 2.0 placed the file in /etc/dhcpd.leases. You do not
|
|
need to make any changes to the leases file it will be manipulated by
|
|
the dhcpd. If you get a message saying that file exists simply ignore
|
|
it and go to the next step.
|
|
|
|
You can now invoke the DHCP server. Simply type (or include in the
|
|
bootup scripts)
|
|
/usr/sbin/dhcpd
|
|
|
|
This will invoke dhcpd on eth0 device. If you want to invoke it on
|
|
another device simply supply it on the command line e.g.
|
|
/usr/sbin/dhcpd eth1
|
|
|
|
To verify that everything is working fine you should first turn on the
|
|
debugging mode and put the server in foreground. You can do this by
|
|
typing
|
|
/usr/sbin/dhcpd -d -f
|
|
|
|
Then boot up one of your clients and check out the console of your
|
|
server. You will see a number of debugging messages come up. If
|
|
everything works out fine you are done :-). Quit dhcpd and start it
|
|
without the -d -f and arguments. If you want dhcpd to start at boot-up
|
|
include dhcpd in e.g.
|
|
/etc/rc.d/rc.local
|
|
_________________________________________________________________
|
|
|
|
4.5. Other interesting documents
|
|
|
|
Linux Magazine has a pretty good article in their April issue called
|
|
[62]Network Nirvana: How to make Network Configuration as easy as DHCP
|
|
that discusses the set up for DHCP.
|
|
|
|
References
|
|
|
|
1. DHCP.html#AEN17
|
|
2. DHCP.html#AEN19
|
|
3. DHCP.html#AEN24
|
|
4. DHCP.html#AEN41
|
|
5. DHCP.html#AEN45
|
|
6. DHCP.html#AEN64
|
|
7. DHCP.html#AEN69
|
|
8. DHCP.html#AEN74
|
|
9. DHCP.html#AEN77
|
|
10. DHCP.html#SLACKWARE
|
|
11. DHCP.html#REDHAT6
|
|
12. DHCP.html#AEN166
|
|
13. DHCP.html#AEN183
|
|
14. DHCP.html#DEBIAN
|
|
15. DHCP.html#AEN230
|
|
16. DHCP.html#NAMESERVER
|
|
17. DHCP.html#AEN293
|
|
18. DHCP.html#TROUBLESHOOTING
|
|
19. DHCP.html#AEN355
|
|
20. DHCP.html#AEN369
|
|
21. DHCP.html#DHCPSERVER
|
|
22. DHCP.html#AEN382
|
|
23. DHCP.html#AEN403
|
|
24. DHCP.html#AEN422
|
|
25. DHCP.html#AEN440
|
|
26. http://www.oswg.org/oswg-nightly/DHCP.html
|
|
27. http://www.linux.org.tw/CLDP/mini/DHCP.html
|
|
28. http://www.linux.or.jp/JF/JFdocs/DHCP.html
|
|
29. ftp://cuates.pue.upaep.mx/pub/linux/LuCAS/DHCP-mini-Como/
|
|
30. mailto:vuksan-feedback@veus.hr
|
|
31. http://www.opencontent.org/opl.shtml
|
|
32. http://web.syr.edu/~jmwobus/comfaqs/dhcp.faq.html
|
|
33. mailto:sergei@phystech.com
|
|
34. ftp://ftp.phystech.com/pub/
|
|
35. http://www.cps.msu.edu/~dunham/out/
|
|
36. ftp://metalab.unc.edu/pub/Linux/system/network/daemons
|
|
37. ftp://ftp.phystech.com/pub/
|
|
38. DHCP.html#NAMESERVER
|
|
39. DHCP.html#LINUXPPC-RH6
|
|
40. mailto:alexander.stevenson@home.com
|
|
41. DHCP.html#NAMESERVER
|
|
42. ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhcpcd-0.6-2.i386.rpm
|
|
43. DHCP.html#SLACKWARE
|
|
44. mailto:nothing@cc.gatech.edu
|
|
45. DHCP.html#NAMESERVER
|
|
46. http://ftp.debian.org/debian/dists/slink/main/binary-i386/net/
|
|
47. DHCP.html#SLACKWARE
|
|
48. mailto:heiko@os.inf.tu-dresden.de
|
|
49. DHCP.html#NAMESERVER
|
|
50. DHCP.html#REDHAT6
|
|
51. ftp://ftp.linuxppc.org/
|
|
52. ftp://ftp.phystech.com/pub/dhcpcd-1.3.17-pl9.tar.gz
|
|
53. DHCP.html#TROUBLESHOOTING
|
|
54. mailto:nothing@cc.gatech.edu
|
|
55. DHCP.html#ERROR3
|
|
56. ftp://vanbuer.ddns.org/pub/
|
|
57. DHCP.html#DHCPSERVER
|
|
58. mailto:mellon@isc.org
|
|
59. ftp://ftp.isc.org/isc/dhcp/
|
|
60. http://www.kde.org/
|
|
61. ftp://ftp.us.kde.org/pub/kde/unstable/apps/network/
|
|
62. http://www.linux-mag.com/2000-04/networknirvana_01.html
|