<!-- retain these comments for translator revision tracking -->
<!-- $Id$ -->

  <sect2 id="dhcpd">
   <title>Setting up a DHCP server</title>
<para>

One free software DHCP server is ISC <command>dhcpd</command>.
For &debian-gnu;, the <classname>isc-dhcp-server</classname> package is
recommended.  Here is a sample configuration file for it (see
<filename>/etc/dhcp/dhcpd.conf</filename>):

<informalexample><screen>
option domain-name "example.com";
option domain-name-servers ns1.example.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "servername";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host clientname {
  filename "/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}
</screen></informalexample>

</para><para>

In this example, there is one server
<replaceable>servername</replaceable> which performs all of the work
of DHCP server, TFTP server, and network gateway.  You will almost
certainly need to change the domain-name options, as well as the
server name and client hardware address.  The
<replaceable>filename</replaceable> option should be the name of the
file which will be retrieved via TFTP.

</para><para>

After you have edited the <command>dhcpd</command> configuration file,
restart it with <userinput>/etc/init.d/isc-dhcp-server restart</userinput>.

</para>

   <sect3 arch="x86">
   <title>Enabling PXE Booting in the DHCP configuration</title>
<para>
Here is another example for a <filename>dhcp.conf</filename> using the
Pre-boot Execution Environment (PXE) method of TFTP.

<informalexample><screen>
option domain-name "example.com";

default-lease-time 600;
max-lease-time 7200;

allow booting;
allow bootp;

# The next paragraph needs to be modified to fit your case
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option broadcast-address 192.168.1.255;
# the gateway address which can be different
# (access to the internet for instance)
  option routers 192.168.1.1;
# indicate the dns you want to use
  option domain-name-servers 192.168.1.3;
}

group {
  next-server 192.168.1.3;
  host tftpclient {
# tftp client hardware address
  hardware ethernet  00:10:DC:27:6C:15;
  filename "pxelinux.0";
 }
}
</screen></informalexample>

Note that for PXE booting, the client filename <filename>pxelinux.0</filename>
is a boot loader, not a kernel image (see <xref linkend="tftp-images"/>
below).

<para>
If your machine uses UEFI to boot, you will have to specify a boot loader
appropriate for UEFI machines, for example

<informalexample><screen>
group {
  next-server 192.168.1.3;
  host tftpclient {
# tftp client hardware address
  hardware ethernet  00:10:DC:27:6C:15;
  filename "debian-installer/amd64/bootnetx64.efi";
 }
}
</screen></informalexample>
</para>

</para>
   </sect3>
  </sect2>
