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 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
|
||||
```
|
||||
Reference in New Issue
Block a user