diff --git a/linux/bind9.md b/linux/bind9.md index a1829c5..3a3476c 100644 --- a/linux/bind9.md +++ b/linux/bind9.md @@ -1,101 +1,106 @@ -## Установка DHCP&DNS сервера на базе BIND9 & isc-dhcp -### Для начала выполним установку необходимых пакетов -``` +## Настройка DHCP-сервера и NAT-шлюза на базе isc-dhcp-server + +Этот гайд поможет настроить раздачу IP-адресов в локальной сети и организовать доступ в интернет для клиентов через шлюз (Debian/Ubuntu). + +### 1. Установка необходимых пакетов +Для работы нам понадобится сам DHCP-сервер и инструменты управления трафиком: +```bash apt update -apt install isc-dhcp-server bind9 bind9utils +apt install isc-dhcp-server iptables ``` -Далее выполняем -``` -rndc-confgen -``` -И далее, берём верхушку этого файла (всё, что без комментариев) и пихаем в файл /etc/bind/rndc.conf -После этого необходимо поменять права, что-бы файл мог редактировать только рут и пользователь bind -``` -chmod 660 /etc/bind/rndc.conf -chown root:bind /etc/bind/rndc.conf -``` -Так-же перейдём в директорию dhcp и скопируем туда наш ключ, после чего поменяем ему права и даже переименуем -``` -cd /etc/dhcp -cp /etc/bind/rndc.conf /etc/dhcp/ -mv rndc.conf rndc.key -chown root:root rndc.key -cnmod 640 rndc.key -``` -И очень важно `nano rndc.key` -И там убираем всё кроме блока `key` -Далее приступим к работе над DHCP сервером -Сделаем копию исходного конфигурационного файла -``` -mv /etc/dhcp/dhcpd.conf{,.ORIG} -``` -Далее создадим файл пустышку и будем работать с ним -``` -nano /etc/dhcp/dhcpd.conf -``` -Туда вписываем необходимую нам конфигруацию -Пример: -``` -authoritative; -default-lease-time 600; -max-lease-time 10000; -log-facility local7; - -ddns-domainname "reisber.god."; -ddns-rev-domainname "in-addr.arpa."; -ddns-update-style interim; -ignore client-updates; -update-static-leases on; -use-host-decl-names on; - - -option domain-name "reisber.god"; - -include "/etc/dhcp/rndc.key"; -update-optimization off; -update-conflict-detection off; - - - - -zone reisber.god. { - primary 172.16.100.1; - key rndc-key; -} - - -zone 100.16.172.in-addr.arpa. { - primary 172.16.100.1; - key rndc-key; -} - -subnet 172.16.100.0 netmask 255.255.255.0 { - range 172.16.100.2 172.16.100.200; - option subnet-mask 255.255.255.0; - option routers 172.16.100.254; - option domain-name-servers 172.16.100.1; - - host gateway { - hardware ethernet 00:11:22:33:44:55; - fixed-address 172.16.100.254; - } -} -``` -После этого идём в `/etc/default/isc-dhcp-server` -И там вписываем интерфейс на котором у нас будет работать DHCP -У нас, в целом, уже работает DHCP сервер и клиенты без проблем получают IP-шники -Нужно только настроить статический IP интерфейсу `nano /etc/network/interfaces` -и там просто: +### 2. Настройка сетевых интерфейсов +Прежде всего, назначим статический IP-адрес интерфейсу, который смотрит в локальную сеть. +Отредактируйте файл `/etc/network/interfaces`: +```bash +nano /etc/network/interfaces ``` +Добавьте конфигурацию для вашего локального интерфейса (например, `enp4s0`): +```text auto enp4s0 iface enp4s0 inet static address 172.16.100.1 netmask 255.255.255.0 ``` +Примените настройки, перезагрузив сеть или подняв интерфейс вручную: `ifup enp4s0`. -Далее настроим bind9 - +### 3. Конфигурация DHCP-сервера +Сделаем резервную копию оригинального конфига и создадим чистый файл: +```bash +mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ORIG +nano /etc/dhcp/dhcpd.conf ``` -nano /etc/bind/named.conf +Вставьте следующую конфигурацию: +```text +authoritative; +default-lease-time 600; +max-lease-time 10000; +log-facility local7; + +# Параметры сети для клиентов +subnet 172.16.100.0 netmask 255.255.255.0 { + range 172.16.100.2 172.16.100.200; + option subnet-mask 255.255.255.0; + option routers 172.16.100.1; # IP этого сервера + option domain-name-servers 8.8.8.8, 8.8.4.4; # Внешние DNS (Google) + + # Пример резервации IP по MAC-адресу + host special-device { + hardware ethernet 00:11:22:33:44:55; + fixed-address 172.16.100.250; + } +} +``` + +### 4. Выбор интерфейса для прослушивания +Укажите DHCP-серверу, на каком интерфейсе ожидать запросы. +Отредактируйте `/etc/default/isc-dhcp-server`: +```bash +nano /etc/default/isc-dhcp-server +``` +Найдите строку и впишите ваш локальный интерфейс: +```text +INTERFACESv4="enp4s0" +``` + +### 5. Настройка маршрутизации (NAT) +Чтобы клиенты могли выходить в интернет через этот сервер, нужно включить пересылку пакетов в ядре и настроить NAT в iptables. + +**Включаем IP Forwarding:** +```bash +sysctl -w net.ipv4.ip_forward=1 +# Чтобы настройка сохранилась после перезагрузки: +echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf +``` + +**Настраиваем NAT (Маскарад):** +Укажите ваш **внешний** интерфейс (который смотрит в интернет, например `enp3s0`): +```bash +iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE +``` + +### 6. Запуск и проверка +Перезапустите DHCP-сервер для применения всех настроек: +```bash +systemctl restart isc-dhcp-server +systemctl status isc-dhcp-server +``` + +Теперь клиенты в локальной сети будут получать IP-адреса и выходить в интернет через ваш шлюз. + + + +## Дополнение: Сохранение правил NAT (iptables-persistent) +По умолчанию правила `iptables` сбрасываются после перезагрузки. Чтобы NAT работал всегда, используйте утилиту `iptables-persistent`: + +1. Установите пакет: +```bash +apt install iptables-persistent +``` +*(Во время установки выберите **Yes**, чтобы сохранить текущие правила v4).* + +2. Если вы изменили правила позже, обновите сохраненный конфиг вручную: +```bash +iptables-save > /etc/iptables/rules.v4 +``` \ No newline at end of file