home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / mini / DHCP < prev    next >
Text File  |  1999-06-13  |  29KB  |  1,123 lines

  1.   DHCP mini-HOWTO (DHCPd/DHCPcd)
  2.   Vladimir Vuksan, vuksan@veus.hr
  3.   v4.2, 11 June 1999
  4.  
  5.   This document attempts to answer basic questions on how to setup your
  6.   Linux box to serve as a DHCP server or a DHCP client.
  7.   ______________________________________________________________________
  8.  
  9.   Table of Contents
  10.  
  11.  
  12.   1. Introduction
  13.  
  14.      1.1 Standard Disclaimer
  15.      1.2 New Versions of this Document
  16.      1.3 Feedback
  17.      1.4 Contributors
  18.      1.5 Copyright Information
  19.  
  20.   2. DHCP protocol
  21.  
  22.   3. Client Setup
  23.  
  24.      3.1 Downloading Client Daemon
  25.      3.2 Slackware
  26.      3.3 RedHat 5.x and RedHat 6.x
  27.      3.4 RedHat 4.x and Caldera OpenLinux 1.1/1.2
  28.      3.5 Debian
  29.      3.6 LinuxPPC and MkLinux
  30.      3.7 Token Ring networks
  31.      3.8 Tying it all together
  32.      3.9 Various notes
  33.      3.10 Troubleshooting
  34.  
  35.   4. DHCP Server Setup
  36.  
  37.      4.1 DHCP server for UNIX
  38.      4.2 Network Configuration.
  39.      4.3 Options for DHCPd
  40.      4.4 Starting the server
  41.  
  42.  
  43.   ______________________________________________________________________
  44.  
  45.  
  46.  
  47.   1.  Introduction
  48.  
  49.  
  50.  
  51.  
  52.   1.1.  Standard Disclaimer
  53.  
  54.   No liability for the contents of this documents can be accepted.  Use
  55.   the concepts, examples and other content at your own risk.  As this is
  56.   a new edition of this document, there may be errors and inaccuracies,
  57.   that may of course be damaging to your system.  Proceed with caution,
  58.   and although this is highly unlikely, I don't take any responsibility
  59.   for that.
  60.  
  61.   Also bear in mind that this is NOT official information.  Much content
  62.   in this document are assumptions, which appear to work for people. Use
  63.   the information at your own risk.
  64.  
  65.  
  66.  
  67.   1.2.  New Versions of this Document
  68.  
  69.   New versions of this document will be periodically posted to
  70.   comp.os.linux.answers.  They will also be added to the various
  71.   anonymous FTP sites who archive such information, including:
  72.  
  73.   ftp://metalab.unc.edu/pub/Linux/docs/HOWTO
  74.  
  75.   In addition, you should generally be able to find this document on the
  76.   Linux Documentation Project page via:
  77.  
  78.   http://metalab.unc.edu/LDP/
  79.  
  80.  
  81.  
  82.   Chinese version of the HOWTO can be found at:
  83.  
  84.  
  85.  
  86.   http://www.linux.org.tw/CLDP/mini/DHCP.html
  87.  
  88.  
  89.  
  90.   Permission is hereby granted to all individuals who want to translate
  91.   the document into their own language. I would only ask that you
  92.   provide a link back to this document.
  93.  
  94.  
  95.  
  96.   1.3.  Feedback
  97.  
  98.   Feedback is most certaintly welcome for this document.  Without your
  99.   submissions and input, this document wouldn't exist. So, please post
  100.   your additions, comments and criticisms to vuksan@veus.hr.
  101.  
  102.  
  103.  
  104.   1.4.  Contributors
  105.  
  106.   This document has been modified from the original version by Paul
  107.   Makeev.
  108.  
  109.   The following people have contributed to this mini-HOWTO.
  110.  
  111.   ╖  Heiko Schlittermann
  112.  
  113.   ╖  Jonathan Smith
  114.  
  115.   ╖  Dan Khabaza
  116.  
  117.   ╖  Hal Sadofsky
  118.  
  119.   ╖  Henrik Stoerner
  120.  
  121.   ╖  Paul Rossington
  122.  
  123.  
  124.  
  125.   1.5.  Copyright Information
  126.  
  127.   This document is copyrighted (c)1998 Vladimir Vuksan and distributed
  128.   under the following terms:
  129.  
  130.  
  131.  
  132.  
  133.   ╖  Linux HOWTO documents may be reproduced and distributed in whole or
  134.      in part, in any medium physical or electronic, as long as this
  135.      copyright notice is retained on all copies. Commercial
  136.      redistribution is allowed and encouraged; however, the author would
  137.      like to be notified of any such distributions.
  138.  
  139.   ╖  All translations, derivative works, or aggregate works
  140.      incorporating any Linux HOWTO documents must be covered under this
  141.      copyright notice.  That is, you may not produce a derivative work
  142.      from a HOWTO and impose additional restrictions on its
  143.      distribution. Exceptions to these rules may be granted under
  144.      certain conditions; please contact the Linux HOWTO coordinator at
  145.      the address given below.
  146.  
  147.   ╖  If you have questions, please contact the Linux HOWTO coordinator
  148.      at
  149.  
  150.      linux-howto@metalab.unc.edu
  151.  
  152.  
  153.  
  154.  
  155.   2.  DHCP protocol
  156.  
  157.  
  158.   DHCP is Dynamic Host Configuration Protocol. It is used to control
  159.   vital networking parameters of hosts (running clients) with the help
  160.   of a server. DHCP is backward compatible with BOOTP. For more
  161.   information see RFC 2131 (old RFC 1531) and other. (See Internet
  162.   Resources section at the end of the document). You can also read DHCP
  163.   FAQ (http://web.syr.edu/ jmwobus/comfaqs/dhcp.faq.html).
  164.  
  165.  
  166.   This mini-HOWTO covers both the DHCP _SERVER_ daemon as well as DHCP
  167.   _CLIENT_ daemon. Most people need the client daemon which is used by
  168.   workstations to obtain network information from a remote server. The
  169.   server daemon is used by system administrators to distribute network
  170.   information to clients so if you are just a regular user you need the
  171.   _CLIENT_ daemon.
  172.  
  173.  
  174.   3.  Client Setup
  175.  
  176.   3.1.  Downloading Client Daemon
  177.  
  178.  
  179.   2.0.x kernels
  180.  
  181.  
  182.   No matter what distribution you are using you will need to download
  183.   the DHCP client daemon for Linux. The package you need to download is
  184.   called dhcpcd and the current version is 0.70. You can read the
  185.   description of the package here.
  186.   (ftp://metalab.unc.edu/pub/Linux/system/network/daemons/dhcpcd-0.70.lsm)
  187.  
  188.  
  189.  
  190.   2.2.x kernels
  191.  
  192.  
  193.  
  194.   Due to changes in ipv4 network package in 2.1.x and 2.2.x kernels
  195.   (e.g. way it sets the  defaults for several fields) dhcpcd doesn't
  196.   work properly. Unless you are using RedHat 6.x (which comes with
  197.   dhcpcd 1.3.x and 2.2.x kernel) you will need to download an
  198.   alternative version of dhcpcd (1.3.x)  which is a modified version
  199.   that has been written by Sergei Viznyuk  sergei@phystech.com in order
  200.   to avoid mentioned problems. You can download it at:
  201.  
  202.  
  203.  
  204.  
  205.   ╖  ftp://phystech.dyn.ml.org/pub/
  206.  
  207.   ╖  http://www.cps.msu.edu/~dunham/out/dhcpcd-1.3.6.tar.gz
  208.  
  209.  
  210.  
  211.   Then follow the instructions. They should be the same.
  212.  
  213.  
  214.   3.2.  Slackware
  215.  
  216.  
  217.   You can download the latest copy of the DHCPcd from any Metalab mirror
  218.   or following:
  219.  
  220.  
  221.   ╖
  222.  
  223.   ╖
  224.  
  225.   ╖   (Primary site in Japan)
  226.  
  227.  
  228.  
  229.   Download the latest version of dhcpcd.tar.gz
  230.  
  231.  
  232.   ╖  Unpack it
  233.  
  234.  
  235.  
  236.      tar -zxvf dhcpcd-0.70.tar.gz
  237.  
  238.  
  239.   ╖  cd into the directory and make dhcpcd
  240.  
  241.  
  242.      cd dhcpcd-0.70
  243.  
  244.      make
  245.  
  246.  
  247.   ╖  Install it (you have to run the following command as root)
  248.  
  249.  
  250.      make install
  251.  
  252.  
  253.   This will create the directory /etc/dhcpc where DHCPcd will store the
  254.   DHCP information and dhcpcd file will be copied into /usr/sbin.
  255.  
  256.   In order to make the system initialize using DHCP during boot type:
  257.  
  258.   cd /etc/rc.d
  259.  
  260.   mv rc.inet1 rc.inet1.OLD
  261.  
  262.  
  263.   This will move the old network initialization script into
  264.   rc.inet1.OLD.  You now need to create the new rc.inet1 script.
  265.   Following code is all you need:
  266.  
  267.  
  268.   ______________________________________________________________________
  269.   #!/bin/sh
  270.   #
  271.   # rc.inet1      This shell script boots up the base INET system.
  272.  
  273.   HOSTNAME=`cat /etc/HOSTNAME` #This is probably not necessary but I
  274.                                #will leave it in anyways
  275.  
  276.   # Attach the loopback device.
  277.   /sbin/ifconfig lo 127.0.0.1
  278.   /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
  279.  
  280.   # IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to configure the
  281.   # eth0 interface. If you're only using loopback or SLIP, don't include the
  282.   # rest of the lines in this file.
  283.  
  284.   /usr/sbin/dhcpcd
  285.   ______________________________________________________________________
  286.  
  287.  
  288.  
  289.   Save it and reboot your computer.
  290.  
  291.  
  292.  
  293.   When you are finished go the ``last step''
  294.  
  295.  
  296.   3.3.  RedHat 5.x and RedHat 6.x
  297.  
  298.  
  299.   DHCPcd configuration under RedHat 5.0+ is really easy. All you need to
  300.   do is start the Control Panel by typing
  301.  
  302.  
  303.  
  304.   control-panel
  305.  
  306.  
  307.  
  308.  
  309.   ╖  Select "Network Configuration"
  310.  
  311.   ╖  Click on Interfaces
  312.  
  313.   ╖  Click Add
  314.  
  315.   ╖  Select Ethernet
  316.  
  317.   ╖  In the Edit Ethernet/Bus Interface select "Activate interface at
  318.      boot time" as well as select DHCP as Interface configuration
  319.      protocol
  320.  
  321.  
  322.  
  323.   When you are finished go the ``last step''
  324.  
  325.  
  326.  
  327.   3.4.  RedHat 4.x and Caldera OpenLinux 1.1/1.2
  328.  
  329.  
  330.  
  331.   DHCPcd is included in the standard RedHat distribution as an RPM and
  332.   you can find it on your distribution's CD-ROM in RPMS directory or you
  333.   can download it from:
  334.  
  335.  
  336.  
  337.  
  338.  
  339.   and install it with
  340.  
  341.   rpm -i dhcpcd-0.6-2.i386.rpm
  342.  
  343.  
  344.  
  345.   Alternatively you can compile your own version by following the steps
  346.   outlined in the Slackware.
  347.  
  348.  
  349.  
  350.   This information was provided to me by nothing nothing@cc.gatech.edu
  351.  
  352.  
  353.   ______________________________________________________________________
  354.   Removed my static ip and name from /etc/resolv.conf. However, I
  355.   did leave in the search line and my two nameserver lines (for some reason my
  356.   dhcpcd never creates a /etc/dhcpc/resolv.conf, so I have to use a static
  357.   /etc/resolv.conf).
  358.  
  359.   In /etc/sysconfig/network I removed the HOSTNAME and GATEWAY
  360.   entries. I left the other entries as is
  361.   (NETWORKING, DOMAINNAME, GATEWAYDEV).
  362.  
  363.   In /etc/sysconfig/network-scripts/ifcfg-eth0 I removed the IPADDR,
  364.   NETMASK, NETWORK, and BROADCAST entries. I left DEVICE and ONBOOT as is.
  365.   I changed the BOOTPROTO line to BOOTPROTO=dhcp.
  366.  
  367.   Save the file. Reboot your computer.
  368.   ______________________________________________________________________
  369.  
  370.  
  371.  
  372.   When you are finished go the ``last step''
  373.  
  374.  
  375.  
  376.   3.5.  Debian
  377.  
  378.  
  379.   There is a deb package of DHCPcd at
  380.  
  381.  
  382.  
  383.  
  384.  
  385.   or you can follow the Slackware installation instructions.  To unpack
  386.   the deb package type
  387.  
  388.   dpkg -i /where/ever/your/debian/packages/are/dhcpd*deb
  389.  
  390.  
  391.  
  392.   It appears that there isn't a need for any DHCPcd configuration
  393.   because:
  394.  
  395.   From: Heiko Schlittermann (heiko@os.inf.tu-dresden.de)
  396.  
  397.   The dhcpcd package installs it's startup script as usual for debian
  398.   packages in /etc/init.d/<package_name>, here as /etc/init.d/dhcpcd,
  399.   and links this to the various /etc/rc?.d/ directories.
  400.  
  401.  
  402.  
  403.   The contents of the /etc/rc?.d/ dirs is then executed at boot time.
  404.  
  405.  
  406.  
  407.   If you don't reboot after installing you should consider starting the
  408.   daemon manually:
  409.  
  410.  
  411.   /etc/init.d/dhcpcd start
  412.  
  413.  
  414.   When you are finished go the ``last step''
  415.  
  416.  
  417.   3.6.  LinuxPPC and MkLinux
  418.  
  419.  
  420.   Following section has been written by R. Shapiro
  421.  
  422.  
  423.  
  424.   Versions 0.65 and 0.70 of Yoichi Hariguchi's dhcpcd should work
  425.   properly in MkLinux and in linuxppc kernel 2.1.24, with the following
  426.   caveats:
  427.  
  428.  
  429.  
  430.   * If you want, or need, to build the executable from sources, note
  431.   that the ppc linux compilers assume that 'char' is 'unsigned char'
  432.   while the Hariguchi sources assume 'char' is 'signed char'. To build
  433.   from sources you must edit the Makefile so that CFLAGS includes the
  434.   option "-fsigned-char".
  435.  
  436.  
  437.  
  438.   * The current stable release of linuxppc [aka linux-pmac] is 2.1.24
  439.   and requires the
  440.  
  441.   2.1 patch (http://www.cro.net/ vuksan/dhcppatch).  Both the DR2.1 and
  442.   DR3.0 releases of MkLinux use a 2.0 kernel (2.0.33) and do not require
  443.   this patch, although it's harmless to apply it. Note that the dhcpcd
  444.   rpm on the linuxppc cd-rom does not include the 2.1 patch and
  445.   therefore will not work with the linux on that cd! It will work with
  446.   MkLinux however.
  447.  
  448.  
  449.   * In linuxppc 2.1.24, you'll see a router warning shortly after dhcpcd
  450.   starts up.  You can ignore this.
  451.  
  452.  
  453.  
  454.   * The Hariguchi dhcpcd takes awhile, about 30 seconds, to make its
  455.   initial connection to the server and to set up routing.  In linuxppc
  456.   2.1.24, the warning mentioned above is an indication that the routing
  457.   is ready.
  458.  
  459.  
  460.  
  461.   For later linuxppc kernels, no version of the Hariguchi dhcpcd will
  462.   work: you  must  use Sergei Viznyuk's version instead (current release
  463.   is 1.3.9: see above for url).  Unfortunately the Viznyuk dhcpcd is
  464.   written for glibc 2, which linuxppc 2.1.1xx isn't.  As a result,
  465.   compiling it is a bit tricky - contact me for details.  Once compiled,
  466.   however, it works fine on late kernels (and not at all in MkLinux or
  467.   linuxppc 2.1.24).
  468.  
  469.  
  470.  
  471.   As far as Viznyuk's version of dhcpcd is concerned I have a Viznyuk
  472.   dhcpcd (v1.3.7) executable that works in recent linuxppc kernels:
  473.   2.1.102, 103, 115, and 119 have been tested.  It's possible to build
  474.   this from sources, but I don't know the details.  The Viznyuk dhcpcd
  475.   doesn't work in 2.1.24, but in that kernel the patched Hariguchi
  476.   dhcpcd works.  The Hariguchi dhcpcd can be built easily from sources.
  477.  
  478.  
  479.  
  480.   Short summary:
  481.  
  482.  
  483.  
  484.  
  485.   ______________________________________________________________________
  486.   MkLinux:  Hariguchi: yes; Viznyuk, no
  487.   2.1.24:   Hariguchi: yes if patched (easy to build); Viznyuk: no
  488.   2.1.102+: Hariguchi: no; Viznyuk: yes (tricky to build)
  489.   ______________________________________________________________________
  490.  
  491.  
  492.  
  493.  
  494.  
  495.   Note that the Viznyuk dhcpcd writes into /etc/resolv.conf directly
  496.   (after renaming the existing one), so there's no need to copy or link
  497.   it from /etc/dhcpc.  Also note that it's typically installed into
  498.   /sbin, not /usr/sbin, and that the command lines options are slightly
  499.   different from the Hariguchi version. These differences may require
  500.   small changes to ifup, if you're starting dhcpcd that way.
  501.  
  502.  
  503.  
  504.  
  505.   If you want a precompiled dhcpcd for linuxppc, send mail to
  506.  
  507.  
  508.  
  509.   reshapiro@mediaone.net.
  510.  
  511.   I've also made binary RPMs available in
  512.  
  513.  
  514.  
  515.  
  516.   Don't use dhcpcd-1.3.8-2.ppc.rpm in that directory, it's broken.  The
  517.   reliable versions here are dhcpcd-0.70-0.ppc.rpm (for linuxppc
  518.   2.1.24), and dhcpcd-1.3.8-3.ppc.rpm (linuxppc 2.1.102 and up). An rpm
  519.   for 1.3.9 should show up shortly.  I also have a modified 1.3.9 which
  520.   includes the -c command-file option, as in 0.65 and 0.70 (the standard
  521.   Viznyuk dhcpcd doesn't include this.)
  522.  
  523.  
  524.   3.7.  Token Ring networks
  525.  
  526.  
  527.   If you are trying to run dhcpcd on the Token Ring Network it will not
  528.   work.  This is the solution provided to me by Henrik Stoerner
  529.   (henrik_stoerner@olicom.dk)
  530.  
  531.  
  532.  
  533.   The problem is that dhcpcd only knows about Ethernet cards. If it
  534.   finds a Token-Ring card, it refuses to do anything with it and reports
  535.   "interface is not ethernet".
  536.  
  537.  
  538.  
  539.   The solution is to apply a simple patch to the dhcpcd sources. I have
  540.   put up a small web page with the patch, RedHat RPM-files and a
  541.   precompiled binary at
  542.  
  543.  
  544.  
  545.   The patch has been sent to the dhcpcd maintainer, so hopefully it will
  546.   be included in a future release of dhcpcd.
  547.  
  548.  
  549.   3.8.  Tying it all together
  550.  
  551.  
  552.   After your machine reboots your network interface should be
  553.   configured.  Type:
  554.  
  555.   ifconfig
  556.  
  557.   You should get something like this
  558.  
  559.  
  560.   ______________________________________________________________________
  561.   lo        Link encap:Local Loopback
  562.             inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
  563.             UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
  564.             RX packets:302 errors:0 dropped:0 overruns:0 frame:0
  565.             TX packets:302 errors:0 dropped:0 overruns:0 carrier:0 coll:0
  566.  
  567.   eth0      Link encap:Ethernet  HWaddr 00:20:AF:EE:05:45
  568.             inet addr:24.128.53.102  Bcast:24.128.53.255  Mask:255.255.254.0
  569.             ^^^^^^^^^^^^^^^^^^^^^^^
  570.             UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
  571.             RX packets:24783 errors:1 dropped:1 overruns:0 frame:1
  572.             TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0 coll:96
  573.             Interrupt:10 Base address:0x300
  574.   ______________________________________________________________________
  575.  
  576.  
  577.  
  578.  
  579.  
  580.   If you have some normal number under inet. addr you are set. If you
  581.   see 0.0.0.0 don't despair, it is a temporary setting before dhcpcd
  582.   acquires the IP address. If even after few minutes you are seeing
  583.   0.0.0.0 please check out  ``troubleshooting''.  DHCPcd is a daemon and
  584.   will stay running as long as you have your machine on. Every three
  585.   hours it will contact the DHCP server and try to renew the IP address
  586.   lease. It will log all the messages in the syslog (on Slackware
  587.   /var/adm/syslog, RedHat/OpenLinux /var/log/syslog).
  588.  
  589.   One final thing. You need to specify your nameservers. There are two
  590.   ways to do it, you can either ask your provider to provide you with
  591.   the addresses of your name server and then put those in the
  592.   /etc/resolv.conf or DHCPcd will obtain the list from the DHCP server
  593.   and will build a resolv.conf in /etc/dhcpc.  I decided to use DHCPcds
  594.   resolv.conf by doing the following:
  595.   Back up your old /etc/resolv.conf
  596.  
  597.   mv /etc/resolv.conf /etc/resolv.conf.OLD
  598.  
  599.   If directory /etc/dhcpc doesn't exist create it
  600.  
  601.   mkdir /etc/dhcpc
  602.  
  603.   Make a link from /etc/dhcpc/resolv.conf to /etc/resolv.conf
  604.  
  605.   ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf
  606.  
  607.  
  608.   If that doesn't work try this (fix suggested by nothing@cc.gatech.edu
  609.   with a little amendment by Henrik Stoerner)
  610.  
  611.  
  612.  
  613.  
  614.   This last step I had to perform only because my dhcpcd doesn't create
  615.   an /etc/dhcpc/resolv.conf.  In /etc/sysconfig/network-scripts/ifup I
  616.   made the following changes (which are a very poor hack, but they work
  617.   for me):
  618.  
  619.  
  620.  
  621.  
  622.  
  623.   ______________________________________________________________________
  624.   elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
  625.       echo -n "Using DHCP for ${DEVICE}... "
  626.       /sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE}
  627.       echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh
  628.  
  629.       if [ -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
  630.           ^^^^
  631.           echo "failed."
  632.           exit 1
  633.   ______________________________________________________________________
  634.  
  635.  
  636.  
  637.   I changed to:
  638.  
  639.  
  640.   ______________________________________________________________________
  641.   elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
  642.       echo -n "Using DHCP for ${DEVICE}... "
  643.       /sbin/dhcpcd
  644.       echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh
  645.  
  646.       if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
  647.           ^^^^^^
  648.          echo "failed."
  649.          exit 1
  650.   ______________________________________________________________________
  651.  
  652.  
  653.  
  654.  
  655.  
  656.   Notice the ! (bang) in if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ];
  657.  
  658.  
  659.  
  660.  
  661.   Now sit back and enjoy :-).
  662.  
  663.   3.9.  Various notes
  664.  
  665.  
  666.   Following step(s) are not necessary but might be useful to some people
  667.  
  668.   a)  If you need network connectivity only occasionally you can start
  669.   dhcpcd from the command line (you have to be root to do this) with:
  670.  
  671.  
  672.   /usr/sbin/dhcpcd
  673.  
  674.   When you need to down (turn off) the network type
  675.  
  676.   /usr/sbin/dhcpcd -k
  677.  
  678.  
  679.  
  680.   3.10.  Troubleshooting
  681.  
  682.  
  683.   If you have followed the steps outlined above and you are unable to
  684.   access the network there are several possible explanations:
  685.  
  686.  
  687.  
  688.   I. Your network card is not configured properly.
  689.  
  690.  
  691.   During the boot up process your Linux will probe your network card and
  692.   should say something along these lines:
  693.  
  694.  
  695.   ______________________________________________________________________
  696.   eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
  697.   3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
  698.   ______________________________________________________________________
  699.  
  700.  
  701.  
  702.   If a message like this doesn't appear your ethernet card might not be
  703.   recognized by your Linux system. If you have a generic ethernet card
  704.   (a NE2000 clone) you should have received a disk with DOS utilities
  705.   that you can use to set up the card. Try playing with IRQs until Linux
  706.   recognizes your card (IRQ 9,10,12 are usually good).
  707.  
  708.  
  709.  
  710.   II. Your DHCP server supports RFC 1541/My DHCP server is Windows NT
  711.  
  712.  
  713.   Try running dhcpcd by typing
  714.  
  715.   dhcpcd -r
  716.  
  717.   Use ifconfig to check if your network interface is configured (wait
  718.   few seconds for the configuration process, initally it will say
  719.   Inet.addr=0.0.0.0)
  720.  
  721.   If this solves your problem add the "-r" flag to the boot up scripts
  722.   ie. instead of /sbin/dhcpcd you will have /sbin/dhcpcd -r
  723.  
  724.  
  725.  
  726.  
  727.   For example under RedHat edit script /etc/sysconfig/network-
  728.   scripts/ifup and change the following
  729.  
  730.  
  731.   ______________________________________________________________________
  732.           IFNAME=$[ {DEVICE} \
  733.           "/sbin/dhcpcd -r -c /etc/"- etc etc.
  734.   ______________________________________________________________________
  735.  
  736.  
  737.  
  738.  
  739.  
  740.   III. During bootup I get error message "Using DHCP for eth0 ...
  741.   failed" but my system works fine.
  742.  
  743.  
  744.  
  745.   You are most likely using RedHat and you haven't followed instructions
  746.   carefully :-). You are missing the ! (bang) in one of the if
  747.   statements.  Jump ``here'' and check how to fix it.
  748.  
  749.  
  750.  
  751.   IV. My network works for few minutes and then stops responding
  752.  
  753.  
  754.  
  755.   There are some reports of gated (gateway daemon) screwing up routing
  756.   on Linux boxes which results in problem described above. Check if
  757.   gated is running
  758.  
  759.  
  760.  
  761.   ps -auxww | grep gate
  762.  
  763.  
  764.  
  765.   If it is try removing it with RedHat's RPM manager or removing the
  766.   entry in /etc/rc.d/
  767.  
  768.  
  769.  
  770.   V. My ethernet card is recognized during boot up but I still get "NO
  771.   DHCPOFFER" message in my logs. I also happen to have a PCMCIA ethernet
  772.   card.
  773.  
  774.  
  775.  
  776.   You need to make sure that you have the 10BaseT port ("phone" plug) on
  777.   your network card activated. Best way to verify it is to check what
  778.   kind of connector your card is configured for during bootup e.g.
  779.  
  780.  
  781.   ______________________________________________________________________
  782.   eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
  783.                               ^^^^^^^^^^^^
  784.   3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
  785.   ______________________________________________________________________
  786.  
  787.  
  788.  
  789.  
  790.  
  791.   I have received reports of laptop users having this kind of problems
  792.   due to the PCMCIA utilities (specifically ifport) that would set the
  793.   connector type to 10Base2 (thinnet). You have to make sure you use
  794.   10BaseT for your connection. If you are not reconfigure the card and
  795.   restart the computer.
  796.  
  797.  
  798.  
  799.   VI. My DHCP client broadcasts requests but no one answers (Contributed
  800.   by Peter Amstutz)
  801.  
  802.  
  803.  
  804.   On some systems, you need to include some hostname for your machine as
  805.   part of the request.  With dhcpcd, do this with 'dhcpcd -h foohost'
  806.   Probably the hostname wanted will be your account username on the
  807.   network.
  808.  
  809.  
  810.  
  811.   VII. I have followed all the steps but still my machine is not able to
  812.   connect
  813.  
  814.  
  815.  
  816.   The cable modem will usually memorize the ethernet address of your
  817.   network card so if you connect a new computer or switch network cards
  818.   you will somehow have to "teach" your cable modem to recognize the new
  819.   computer/card. Usually you can turn of the modem and bring it back up
  820.   while computer is on or you will have to call tech support and tell
  821.   them that you have changed a network card in the computer.
  822.  
  823.  
  824.  
  825.   You have firewall rules (ipfwadm rules) that disallow port 67/68
  826.   traffic used by DHCP to distribute configuration info. Check your
  827.   firewall rules carefully.
  828.  
  829.  
  830.  
  831.   VIII. I have MediaOne Express service and I still can't connect.
  832.  
  833.  
  834.  
  835.   It appears that MediaOne has been using adding some things to DHCP
  836.   that shouldn't be there. Supposedly this is not a problem anymore but
  837.   if you experience outages check for these things. If you are (un)lucky
  838.   to have Windows NT on your machine if you go into Event Viewer you
  839.   will see a warning like this.
  840.  
  841.  
  842.   DHCP received an unknown option 067 of length 005. The raw option data
  843.   is given  below.
  844.  
  845.   0000: 62 61 73 69 63            basic
  846.  
  847.  
  848.   If this is the problem go to
  849.  
  850.   and either download a binary or get the source for the change.
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.   4.  DHCP Server Setup
  860.  
  861.   4.1.  DHCP server for UNIX
  862.  
  863.   There are several DHCP servers available for U*X-like OSes, both
  864.   commercial and free. One of the more popular free DHCP servers is Paul
  865.   Vixie/ISC DHCPd. Currently the latest version is 2.0 (suggested for
  866.   most users) but 3.0 is in beta testing.  You can get them from
  867.  
  868.  
  869.  
  870.  
  871.   RedHat distribution (version 5.2) includes a binary RPM with DHCP
  872.   server.  The RPM is called dhcp-2.0b1pl6-2.platform.rpm. To install it
  873.   simply type
  874.  
  875.  
  876.  
  877.   rpm -i dhcp-2.0b1pl6-2.i386.rpm
  878.  
  879.  
  880.  
  881.   You can skip following section if you used this procedure.
  882.  
  883.  
  884.   After you download it you need to unpack it. After you do cd into the
  885.   distribution directory and type:
  886.  
  887.   ./configure
  888.  
  889.   It will take some time to configure the settings. After it is done
  890.   type:
  891.  
  892.   make
  893.  
  894.   and
  895.  
  896.   make install
  897.  
  898.  
  899.  
  900.  
  901.   4.2.  Network Configuration.
  902.  
  903.  
  904.   When done with installation type ifconfig -a. You should see something
  905.   like this:
  906.  
  907.  
  908.  
  909.  
  910.   ______________________________________________________________________
  911.   eth0      Link encap:10Mbps Ethernet  HWaddr 00:C0:4F:D3:C4:62
  912.             inet addr:183.217.19.43  Bcast:183.217.19.255  Mask:255.255.255.0
  913.             UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  914.             RX packets:2875542 errors:0 dropped:0 overruns:0
  915.             TX packets:218647 errors:0 dropped:0 overruns:0
  916.             Interrupt:11 Base address:0x210
  917.   ______________________________________________________________________
  918.  
  919.  
  920.  
  921.  
  922.  
  923.   If it doesn't say MULTICAST you should reconfigure your kernel and add
  924.   multicast support. On most systems you will not need to do this.
  925.   Next step is to add route for 255.255.255.255. Quoted from DHCPd
  926.   README:
  927.  
  928.  
  929.  
  930.   "In order for dhcpd to work correctly with picky DHCP clients (e.g.,
  931.   Windows 95), it must be able to send packets with an IP destination
  932.   address of 255.255.255.255.  Unfortunately, Linux insists on changing
  933.   255.255.255.255 into the local subnet broadcast address (here, that's
  934.   192.5.5.223).  This results in a DHCP protocol violation, and while
  935.   many DHCP clients don't notice the problem, some (e.g., all Microsoft
  936.   DHCP clients) do.  Clients that have this problem will appear not to
  937.   see DHCPOFFER messages from the server."
  938.  
  939.  
  940.  
  941.   Type:
  942.  
  943.   route add -host 255.255.255.255 dev eth0
  944.  
  945.   If you get a message
  946.  
  947.   "255.255.255.255: Unknown host"
  948.  
  949.   You should try adding the following entry to your /etc/hosts file:
  950.  
  951.   255.255.255.255 all-ones
  952.  
  953.   Then, try:
  954.  
  955.   route add -host all-ones dev eth0
  956.  
  957.   or
  958.  
  959.   route add 255.255.255.0 dev eth0
  960.  
  961.   eth0 is of course the name of the network device you are using.  If it
  962.   differs change appropriately.
  963.  
  964.  
  965.  
  966.  
  967.   4.3.  Options for DHCPd
  968.  
  969.  
  970.   Now you need to configure DHCPd. In order to do this you will have to
  971.   create or edit /etc/dhcpd.conf.
  972.  
  973.  
  974.  
  975.   Most commonly what you want to do is assign IP addresses randomly.
  976.   This can be done with settings as follows
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.   ______________________________________________________________________
  992.   default-lease-time 600;
  993.   max-lease-time 7200;
  994.   option subnet-mask 255.255.255.0;
  995.   option broadcast-address 192.168.1.255;
  996.   option routers 192.168.1.254;
  997.   option domain-name-servers 192.168.1.1, 192.168.1.2;
  998.   option domain-name "mydomain.org";
  999.  
  1000.   subnet 192.168.1.0 netmask 255.255.255.0 {
  1001.      range 192.168.1.10 192.168.1.100;
  1002.      range 192.168.1.150 192.168.1.200;
  1003.   }
  1004.   ______________________________________________________________________
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.   This will result in DHCP server giving a client an IP address from the
  1011.   range 192.168.1.10-192.168.1.100 or 192.168.1.150-192.168.1.200. It
  1012.   will lease an IP address for 600 seconds if the client doesn't ask for
  1013.   specific time frame. Otherwise the maximum (allowed) lease will be
  1014.   7200 seconds. The server will also "advise" the client that it should
  1015.   use 255.255.255.0 as its subnet mask,  192.168.1.255 as its broadcast
  1016.   address, 192.168.1.254 as the router/gateway and 192.168.1.1 and
  1017.   192.168.1.2 as its DNS servers.
  1018.  
  1019.  
  1020.  
  1021.   You can also assign specific IP addresses based on clients ethernet
  1022.   address e.g.
  1023.  
  1024.  
  1025.   ______________________________________________________________________
  1026.   host haagen {
  1027.      hardware ethernet 08:00:2b:4c:59:23;
  1028.      fixed-address 192.168.1.222;
  1029.   }
  1030.   ______________________________________________________________________
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.   This will assign IP address 192.168.1.222 to a client with ethernet
  1037.   address 08:00:2b:4c:59:23.
  1038.  
  1039.  
  1040.  
  1041.   You can also mix and match e.g. you can have certain clients getting
  1042.   "static" IP addresses (e.g. servers) and others being alloted dynamic
  1043.   IPs (e.g. mobile users with laptops). There are a number of other
  1044.   options e.g. wins server addresses, time server etc., if you need any
  1045.   of those options please read the dhcpd.conf man page.
  1046.  
  1047.  
  1048.  
  1049.  
  1050.   4.4.  Starting the server
  1051.  
  1052.  
  1053.   There is only one thing to do before starting the server. In most
  1054.   cases DHCP installation doesn't create a dhcp.leases files. This file
  1055.   is used by DHCPd to store information about current leases. It is in
  1056.   the plain text form so you can view it during the operation of DHCPd.
  1057.   To create dhcp.leases type
  1058.  
  1059.   touch /etc/dhcp.leases
  1060.  
  1061.   on the command line. This will create an empty file (file size = 0).
  1062.   You do not need to make any changes to it it should be empty.  If you
  1063.   get a message saying that file exists simply ignore it and go to the
  1064.   next step.
  1065.  
  1066.  
  1067.   You can now invoke the DHCP server. Simply type (or include in the
  1068.   bootup scripts)
  1069.  
  1070.   /usr/sbin/dhcpd
  1071.  
  1072.   If you want to verify that everything is working fine you should first
  1073.   turn on the debugging mode and put the server in foreground. You can
  1074.   do this by typing
  1075.  
  1076.   /usr/sbin/dhcpd -d -f
  1077.  
  1078.   Then boot up one of your clients and check out the console of your
  1079.   server.  You will see a number of debugging messages coming up.
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.