Настройка NAT и DHCP в домашней сети на Linux

Настройка NAT и DHCP в домашней сети на Linux

Введение

Профессиональная настройка NAT, DHCP в Linux позволяет создать надежную и гибкую домашнюю сеть без покупки коммерческого оборудования. В основе решения лежат два ключевых сервиса: DHCP-сервер для автоматической выдачи IP-адресов и NAT-сервер для маршрутизации трафика между локальной сетью и интернетом. Рассмотрим практический подход на базе Debian/Ubuntu с упором на стабильность и безопасность.

Подготовка системы и сетевых интерфейсов

Для работы потребуется два сетевых интерфейса: eth0 (WAN) для подключения к провайдеру и eth1 (LAN) для внутренней сети. Назначьте статические адреса, например, 192.168.1.1/24 для LAN. Сначала активируем переадресацию пакетов на уровне ядра, чтобы система могла пересылать пакеты между сетями.

sudo sysctl -w net.ipv4.ip_forward=1
# Сохраняем настройку в /etc/sysctl.d/99-ipforward.conf
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-ipforward.conf

Раздача адресов: настройка DHCP

В отличие от проприетарных решений, Linux предлагает несколько вариантов. Для десктопных дистрибутивов оптимально использовать isc-dhcp-server, а для embedded-систем часто применяют udhcpd из BusyBox. Ниже приведен базовый конфиг для isc-dhcp-server.

sudo apt install isc-dhcp-server
# /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name-servers 8.8.8.8, 1.1.1.1;
  default-lease-time 600;
  max-lease-time 7200;
}

Запускаем службу и привязываем её к LAN-интерфейсу в /etc/default/isc-dhcp-server (INTERFACESv4=»eth1″). Не забудьте перезапустить сервис после правок конфигурации.

Маршрутизация и NAT

Теперь настроим NAT-сервер через iptables. Правило masquerade автоматически подставит IP WAN-интерфейса в исходящие пакеты, скрывая внутреннюю топологию от внешнего мира.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Для сохранения правил после перезагрузки используйте iptables-persistent или мигрируйте на nftables. Включите защиту от IP-spoofing, добавив net.ipv4.conf.all.rp_filter=1 в sysctl.

Сравнение подходов

Компонент isc-dhcp-server udhcpd dnsmasq
Назначение Стандартный сервер Встроенный в BusyBox Легковесный шлюз
Потребление RAM ~15-20 МБ ~2 МБ ~5 МБ
Сложность настройки Средняя Низкая Низкая
Поддержка DHCPv6 Да Нет Да

Итоги

Самостоятельная настройка NAT, DHCP в Linux дает полный контроль над сетью, безопасность и отсутствие вендор-локов. Правильно подобранный DHCP-сервер и NAT-сервер обеспечивают стабильную работу домашней сети даже на старом железе. Регулярно обновляйте правила брандмауэра и мониторьте логи /var/log/syslog для оперативного выявления сбоев.

Вопрос-ответ (FAQ)

Как проверить, работает ли переадресация пакетов?

Выполните cat /proc/sys/net/ipv4/ip_forward. Значение 1 означает активацию. Также проверьте доступность шлюза из LAN-хоста командой ping 8.8.8.8.

Что делать, если клиенты не получают IP-адреса?

Убедитесь, что служба DHCP запущена и привязана к правильному интерфейсу. Проверьте брандмауэр: порт UDP 67 должен быть открыт для входящих запросов на LAN-адаптере.

Можно ли использовать Netplan вместо interfaces?

Да, в современных Ubuntu Netplan управляет конфигурацией через YAML. Однако для настройки DHCP и NAT на уровне ядра и iptables это не влияет, так как сервисы работают поверх сетевого стека.

Comments are closed.