## Настройка 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 ```