Обновить linux/isc-dhcp.md
This commit is contained in:
106
linux/isc-dhcp.md
Normal file
106
linux/isc-dhcp.md
Normal file
@@ -0,0 +1,106 @@
|
||||
## Настройка 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
|
||||
```
|
||||
Reference in New Issue
Block a user