В сегодняшней статье настроим DHCP на Ubuntu Server 20.04 на раздачу как IP адресов версии 4, так и IP адресов версии 6.

DHCP — сетевой протокол, позволяющий сетевым устройствам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. Если сказать ещё проще, то это программное обеспечения для автоматической настройки вашей сети.

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

Начальная конфигурация:

Ubuntu Server 20.04
Настроенный DNS сервер.
Одна сетевая карта для выхода в интернет.
Вторая сетевая карта для локальной сети.

Установка DHCP сервера

Для установки нашего dhcp сервера воспользуемся пакетом isc-dhcp-server входящий в официальный репозиторий Ubuntu. Подключаемся к нашему серверу по ssh или же просто на сервере набираем следующие команды:

sudo apt update && sudo apt dist-upgrade -y && sudo apt install isc-dhcp-server
  • Данными командами мы обновили наш сервер и установили пакет DHCP сервера.

На этом установка закончена, приступаем к настройке.

Назначаем статический IP адрес локальному интерфейсу

Для работы нашего DHCP сервера одному из интерфейсов – локальному, необходимо назначить статический IP адрес. Для этого нам необходимо отредактировать файл утилиты netplan. Как это сделать я описывал ТУТ.

Настройка DHCP IP4 и IP6 на Linux

Настройка IP4 DHCP сервера

Для начала настроим наш DHCP сервер на раздачу протокола версии 4. Для этого необходимо сконфигурировать файл dhcpd.conf.

Открываем конфигурационный файл:

sudo nano /etc/dhcp/dhcpd.conf

Отредактируем его в соответствии с моим листингом:

ddns-update-style none; 
authoritative; 
log-facility local7; 
subnet 10.5.5.0 netmask 255.255.255.0 {
  range 10.5.5.100 10.5.5.200;
  option domain-name-servers 10.5.5.1;
  option domain-name "lan";
  option subnet-mask 255.255.255.0;
  option routers 10.5.5.1;
  option broadcast-address 10.5.5.255;
  default-lease-time 600;
  max-lease-time 3600;  
#   host my_PC { 
#   hardware ethernet ab:22:0b:4d:11:1d; 
#   fixed-address 10.5.5.2;
#   }
} 
  • subnet — блок в котором описывается наша сеть (пул IP адресов и маска сети).
  • range — диапазон IP адресов выдаваемых клиенту.
  • option domain-name-servers — тут прописываем ip адрес сервера dns (можно например от google).
  • option domain-name — название домена вашей сети. В моем случае «lan».
  • option subnet-mask — маска сети. Что такое маска и как её выбрать можно посмотреть в Википедии.
  • option routers — ip адрес роутера. У нас это наша же машина.
  • option broadcast-address — широковещательный адрес в сети, обычно это последний адрес сети «255».
  • default-lease-time — время аренды адреса у сервера.
  • max-lease-time — максимальное время аренды адреса у сервера.
  • host — в данном блоке описывается настройки для выделенных IP адресов сетевого оборудования в сети. Сетевым оборудованием могут выступать как принтеры, сканеры, ip-телефоны так и различные девайсы (телевизоры планшеты, умные интернет вещи и т.д.), для которых необходимо зафиксировать определенный IP адрес.
  • hardware ethernet — MAC адрес сетевой карты для которой фиксируется IP адрес.
  • fixed-address — фиксированный IP адрес.

Так же если вы хотите, чтобы DHCP сервер обрабатывал запросы только с определенной сетевой карты, необходимо произвести ещё одну манипуляцию с конфигом isc-dhcp-server’а. Сперва узнаем название наших интерфейсов:

ifconfig
  • необходимо установить пакет net-tools.

или

ip addr

У меня вывод следующий, у вас может быть другой, но суть от этого не меняется:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.5.5.1  netmask 255.255.255.0  broadcast 10.5.5.255
        inet6 fe80::3445:5dff:fec7:c68c  prefixlen 64  scopeid 0x20<link>
        ether 36:45:5d:c7:c6:8c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 4c:ed:fb:da:8b:c9  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Локальная петля (Loopback))
        RX packets 112  bytes 15791 (15.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 112  bytes 15791 (15.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

У меня интерфейс eth0 смотрит в локальную сеть.

Настроим наш dhcp сервер на прослушивания только этого интерфейса. Открываем следующий файл для редактирования:

sudo nano /etc/default/isc-dhcp-server

В конце находим похожую строчку, снимаем с нее комментарий (#) и дописываем название нашего интерфейса:

INTERFACESv4="eth0"
  • eth0 — имя нашего интерфейса

После данной манипуляции наш DHCP сервер будет принимать и отправлять запросы только от интерфейса eth0.

Настройка forwarding пакетов IPv4

Для прохождения пакетов из интернета в нашу локальную сеть необходимо настроить forwarding (пересылку) пакетов через наш сервер. Для этого произведем корректировку конфигурационного файла утилиты sysctl.

sudo nano /etc/sysctl.conf

Снимите комментарий со следующей строки:

net.ipv4.ip_forward=1

Выходим с сохранением и применим сделанные изменения:

sudo sysctl -p

Настройка NAT IPv4

Для того чтобы пакеты попадали из интернета нам в локальную сеть мало лишь настроить forwarding , необходимо еще включить NAT. Для этого воспользуемся утилитой iptables.

sudo iptables -t nat -A POSTROUTING -o eth1 -s 10.5.5.0/24 -j MASQUERADE

Перезагружаем сервис:

sudo systemctl restart isc-dhcp-server.service

Все на этом настройка DHCP сервера для протокола IPv4 закончена. Теперь при подключении какого-либо устройства к вашему серверу данный девай получит настройки в автоматическом режиме.

Настройка IPv6 DHCP сервера

Давайте теперь настроим наш DHCP сервер на раздачу протокола IPv6. Для этого необходимо сконфигурировать файл dhcpd6.conf.

Открываем конфигурационный файл:

sudo nano /etc/dhcp/dhcpd6.conf

Отредактируем его в соответствии с моим листингом:

# Enable RFC 5007 support (same than for DHCPv4) 
allow leasequery;
default-lease-time 2592000;
preferred-lifetime 604800;
option dhcp-renewal-time 3600;
option dhcp-rebinding-time 7200;
allow leasequery;
option dhcp6.name-servers fe00:a:b:100::1;
option dhcp6.domain-search "lan";
option dhcp6.info-refresh-time 21600;
subnet6 fe00:a:b:100::/64 {
        range6 fe00:a:b:100::10 fe00:a:b:100::30;
        range6 fe00:a:b:100::/64 temporary;
        option dhcp6.name-servers fe00:a:b:100::1;
        option dhcp6.domain-search "lan";
}
  • subnet6 — блок в котором описывается наша сеть (пул IP адресов и маска сети).
  • range6 — диапазон IP адресов выдаваемых клиенту.
  • option dhcp6.name-servers — тут прописываем ip адрес сервера dns (можно например от google).
  • option dhcp6.domain-search — название домена вашей сети. В моем случае «lan».
  • option routers — ip адрес роутера. У нас это наша же машина.
  • default-lease-time — максимальное время аренды адреса у сервера.
  • preferred-lifetime — время аренды адреса.
  • option dhcp-rebinding-time — время T2 повторного запроса
  • option dhcp-renewal-time — время T1 продления.

Как видите все очень похоже на настройку IPv4.

Также, как и с IPv4, настроим для IPv6 прослушивания только определенного интерфейса. Открываем файл для редактирования.

sudo nano /etc/default/isc-dhcp-server

В конце находим похожую строчку, снимаем с нее комментарий (#) и дописываем название нашего интерфейса:

INTERFACESv6="eth0"
  • eth0 — имя нашего интерфейса.

Настройка forwarding пакетов IPv6

Для прохождения пакетов из интернета в нашу локальную сеть необходимо настроить forwarding (пересылку) пакетов через наш сервер. Для этого произведем корректировку конфигурационного файла утилиты sysctl.

sudo nano /etc/sysctl.conf

Снимите комментарий со следующей строки:

net.ipv6.conf.all.forwarding=1

Выходим с сохранением и применим сделанные изменения:

sudo sysctl -p

Настройка NAT IPv6

Как и с IPv4 для IPv6 также включаем NAT. Для этого воспользуемся утилитой ip6tables.

sudo ip6tables -t nat -A POSTROUTING -o eth1 -s fe00:a:b:100::/64 -j MASQUERADE

Перезагружаем сервис:

sudo systemctl restart isc-dhcp-server6.service

Установка radvd

Если посмотреть статус DHCP сервера, то мы увидим что наш isc-dhcp-server запустился, только вот настройки шлюза наши клиенты автоматом не получат. А это значит, что все команды такие как: ping, nslookup и т.д. будут завершатся неудачей. Для токо чтобы клиенты получили шлюз автоматом, нам необходимо установить и настроить ещё одну утилиту под названием radvd.

sudo apt install radvd

Настройка radvd

Создадим файл настроек для утилиты radvd.

sudo nano /etc/radvd.conf

заполним его в соответствии с моим листингом:

interface eth0
{
   AdvSendAdvert on;
   prefix fe00:a:b:100::/64 {
          AdvOnLink on;
          AdvAutonomous on;
   };
};
  • interface — сетевой интерфейс, смотрящий в вашу локальную сеть, 
  • prefix — это ваша сеть IPv6.

Перезагружаем сервис radvd

/etc/init.d/radvd restart

Все на этом настройка DHCP сервера для протокола IPv6 закончена. Теперь при подключении какого-либо устройства к вашему серверу данный девай получит настройки в автоматическом режиме.

[endtxt]

. . . .

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

0 0 голоса
Рейтинг статьи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять