106 lines
4.5 KiB
Markdown
106 lines
4.5 KiB
Markdown
## Настройка DHCP-сервера и NAT-шлюза на базе isc-dhcp-server
|
||
|
||
Этот гайд поможет настроить раздачу IP-адресов в локальной сети и организовать доступ в интернет для клиентов через шлюз (Debian/Ubuntu).
|
||
|
||
### 1. Установка необходимых пакетов
|
||
Для работы нам понадобится сам DHCP-сервер и инструменты управления трафиком:
|
||
```bash
|
||
apt update
|
||
apt install isc-dhcp-server iptables
|
||
```
|
||
|
||
### 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`.
|
||
|
||
### 3. Конфигурация DHCP-сервера
|
||
Сделаем резервную копию оригинального конфига и создадим чистый файл:
|
||
```bash
|
||
mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ORIG
|
||
nano /etc/dhcp/dhcpd.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
|
||
``` |