183
linux/bind9.md
183
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 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 сервером
|
### 2. Настройка сетевых интерфейсов
|
||||||
Сделаем копию исходного конфигурационного файла
|
Прежде всего, назначим статический IP-адрес интерфейсу, который смотрит в локальную сеть.
|
||||||
```
|
Отредактируйте файл `/etc/network/interfaces`:
|
||||||
mv /etc/dhcp/dhcpd.conf{,.ORIG}
|
```bash
|
||||||
```
|
nano /etc/network/interfaces
|
||||||
Далее создадим файл пустышку и будем работать с ним
|
|
||||||
```
|
|
||||||
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`
|
|
||||||
и там просто:
|
|
||||||
```
|
```
|
||||||
|
Добавьте конфигурацию для вашего локального интерфейса (например, `enp4s0`):
|
||||||
|
```text
|
||||||
auto enp4s0
|
auto enp4s0
|
||||||
iface enp4s0 inet static
|
iface enp4s0 inet static
|
||||||
address 172.16.100.1
|
address 172.16.100.1
|
||||||
netmask 255.255.255.0
|
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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user