Настройка DHCP в Linux

Создан:11.02.2009
Модиф: 30.10.2015
Иванов Аркадий

 

DHCP - Dynamic Host Configuration Protocol, протокол динамической конфигурации хостов. Используется для облегчения жизни сисадминов больших организаций. Суть облегчения жизни в настройке клиентских машин состоит в следующем:

 

Рабочая станция сети не требует никакой изначальной конфигурации (статического IP-адреса, шлюза, DNS). При старте она, работая как DHCP-клиент, запрашивает в сети у DHCP-сервера эти параметры, получает их и настраивает свою конфигурацию.

 

Этот режим в настройке TCP/IP Windows для конкретного сетевого интерфейса называется:
"Получить IP-адрес автоматически" и "Получить адрес DNS автоматически".

 

В Linux для варианта настройки сети etcnet в файле "options" для конкретного сетевого интерфейса должна быть запись:
BOOTPROTO=dhcp

 

В Ubuntu в /etc/network/interfaces:

iface eth0 inet dhcp

 

На стороне сервера

Вся сетевая конфигурация хостов сети сводится к редактированию одного файла на сервере DHCP. Любые самые глобальные изменения IP-номеров, шлюзов, DNS не приведут к тому, что сисадмину надо будет перенастраивать каждый компьютер сети.

 

Далее в документе названия пакетов, каталогов и файлов соответствуют принятым в Ubuntu 14.04

 

Должен быть установлен пакет isc-dhcp-server.

Следует открыть UDP-порты 67 и 68.

Редактируется файл /etc/dhcp/dhcpd.conf. Вот его пример для сети, где IP адреса выдаются только статически в соответствии с MAC-адресами:

 

 

ddns-update-style none;
option routers 192.168.101.1;
option subnet-mask 255.255.255.0;

option domain-name "int.xxx.ru";
option domain-name-servers 192.168.101.3;

default-lease-time 216000;
max-lease-time 216000;

subnet 192.168.101.0 netmask 255.255.255.0 {
}

group {

    host vasya {
         hardware ethernet 00:14:85:88:FC:F1;
         fixed-address 192.168.101.12;
    }
    host masha {
         hardware ethernet 00:14:85:88:FC:F2;
         fixed-address 192.168.101.13;
    } 
}

Строка "ddns-update-style none", говорит, что никаких динамических изменений DNS не производится.

 

Здесь приведена конфигурация для сети 192.168.101,

указан роутер (192.168.101.1),

указано доменное имя для хостов (int.xxx.ru),

указан DNS-сервер (192.168.101.3),

время по умолчанию, на которое выдается адрес, в секундах (default-lease-time=216000 сек = 60суток),

максимальное время, на которое выдаётся адрес (тоже 60 суток), если клиент запросит большее время,

хосты "vasya" и "masha", будут получать свой IP по MAC-адресу.

 

Если хосты в сети не выключаются в течение большего интервала, следует увепичить параметры,

связанные со временем.

 

Если в сети вы согласны иметь десяток компьютеров, динамически получающие свои адреса из

нужного диапазона , в конфиг сети добавляется строка:

 

subnet 192.168.101.0 netmask 255.255.255.0 {

           ...

      range 192.168.101.201 192.168.101.210;

           ...

}

 

В любую subnet или group можно указать свои собственные опции domain-name, routers.

В конфигурации обязательно должны быть указаны сети, которые обслуживаются интерфейсами

машины, на которой запущен DHCP-сервер.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Дальше я укажу немного более сложную конфигурацию:

  • На сервере у меня много интерфейсов и они обслуживают многие подсети.
  • Подсеть 192.168.98 должна маршрутизироваться через 192.168.98.1 и машины, которые не прописаны
    статически, могут получить из неё динамические номера от 1 до 10.
  • Машины из сети 192.168.2 прописаны своими MAC-адресами и маршрутизируются через 192.168.2.1
  • Остальные сети я обязан указать в конфигурации, поскольку иначе dhcpd работать не хочет.

 

shared-network all {
     option routers 192.168.2.1;
     subnet 192.168.98.0 netmask 255.255.255.0 {
           option routers 192.168.98.1;
           range 192.168.98.1 192.168.98.10;
     }
     subnet 192.168.0.0 netmask 255.255.0.0 {
     }
     subnet 172.16.0.0 netmask 255.255.0.0 {
     }
     subnet 10.0.0.0 netmask 255.0.0.0 {
     }
}

group {
    option routers 192.168.2.1;
    option subnet-mask 255.255.255.0;
    option domain-name "xxx.ru";
    option domain-name-servers 192.168.2.2,192.168.2.3;
    host vasily.xxx.ru {
       hardware ethernet 00:14:85:88:FC:F5;
       fixed-address vasily.xxx.ru;
   }
   host arc-vm.xxx.ru {
       hardware ethernet 00:00:11:27:11:50;
       fixed-address 192.168.2.10;
   }
}