Обновить linux/bind9.md

Signed-off-by: Reisber <admin@reisber.space>
This commit is contained in:
2026-05-05 23:26:21 +00:00
parent d8f4e22084
commit db02b37a81

View File

@@ -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
```