DHCP server installation
Sources:
Contents
Requirement
A DHCP server can provided static or dynamic address.
However, the DHCP server's IP @ must always be static!!
Installation
apt-get install dhcp3-server
Configuration
The main configuration file is /etc/dhcp/dhcpd.conf
You can adjust the interface the server is listening on in /etc/dhcp/dhcp3-server
INTERFACES="eth0 eth1"
Random IP assignation
The following configuration will accept all clients and give them a random IP @.
# 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.100.255;
option routers 192.168.100.254;
option domain-name-servers 192.168.100.1, 192.168.100.2;
option domain-name "mydomain.lan";
option ntp-servers 192.168.100.254;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.10 192.168.100.100;
range 192.168.100.150 192.168.100.200;
}
You have to adjust:
- Network parameters - instead of 192.168.100.*
- DHCP range(s). In the given example there are 2 ranges from 10-100 and 150-200
Static IP @
This new configuration will ONLY accept known clients and give them a static IP @.
# 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.100.255;
option routers 192.168.100.254;
option domain-name-servers 192.168.100.1, 192.168.100.2;
option domain-name "mydomain.lan";
option ntp-servers 192.168.100.254;
deny unknown-clients;
subnet 192.168.100.0 netmask 255.255.255.0 {
host client1 {
hardware ethernet DD:GH:DF:E5:F7:D7;
fixed-address 192.168.100.20;
}
host client2 {
hardware ethernet 00:JJ:YU:38:AC:45;
fixed-address 192.168.100.21;
}
}
Note:
The deny unknown-clients; command is why only known clients are accepted.
For each client you have to adjust:
- MAC @
- Set a specific static IP @
Advanced configuration (name + netboot)
In the following scenario you will configure the server to accept only specific clients, use static IP @ and set names.
This configuration also allow NetBoot using PXE technology.
#### General options ####
## Network settings
# DHCP server name
server-name "dns.myDomain.lan";
# Authoritative server
authoritative;
# Subnet-mask
option subnet-mask 255.255.255.0;
## Domain settings
# name
option domain-name "myDomain.lan";
# DNS IP @ (replace it by your IP server, Google DNS or your ISP DNS)
option domain-name-servers XXX.XXX.XXX.XXX;
# DNS update system (disable)
ddns-update-style none;
## IP lease settings
default-lease-time 3600;
max-lease-time 7200;
## Security
# Do not allow unknown clients
deny unknown-clients;
# Use this to send dhcp log messages to a different log file
# you also have to hack syslog.conf to complete the redirection
log-facility local7;
### NetBoot PXE
# Enable network boot using TFTP
allow bootp;
allow booting;
## Available networks
# Your server can manage many network. Just add new subnet{} instruction
# Main LAN
subnet 192.168.100.0 netmask 255.255.255.0 {
#### Overall settings
# You can override the default domain set earlier
option domain-name "myDomain.lan";
# Broadcast address
option broadcast-address 192.168.100.255;
# Default gateway
option routers 192.168.100.1;
#### DHCP range
# Hint: if the range has only 1 address, and this is a bail (fixed address), then the range won't be used!
range 192.168.100.5 192.168.100.5;
#### NETBOOT settings
# PXE file to serve.
# >> elilo.efi => for ia64 clients;
# >> pxelinux.0 => for x86
# These files should be at the root of your TFTP server
# Note: The file name can be add in the "host" section too. Then, the "host" will override the current setting
filename "pxelinux.0";
# set the server that serve this NETBOOT file
next-server 192.168.100.2;
# Ensure that the new client (the one boot) is not stealing someone else IP @
ping-check = 1;
}
#### Managed host and fixed IP @
# FTP server
host ftp {
hardware ethernet 00:0f:75:af:eb:44;
fixed-address 192.168.100.2;
### NetBoot PXE settings
# dedicated file for the current machine:
#filename "debian-installer/ia64/elilo.efi";
# Set the TFTP server
# next-server 192.168.100.2;
}
# WEB server
host web {
hardware ethernet 00:02:0d:31:d1:cc;
fixed-address 192.168.100.3;
}
# EMAIL server
host mail {
hardware ethernet 00:02:55:d2:d1:cc;
fixed-address 192.168.100.4;
}
# LAPTOP workstation
host laptop {
hardware ethernet 00:0e:af:31:d1:cc;
fixed-address 192.168.100.5;
}