Введение
Профессиональная настройка 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.