мета-данные страницы
Настройка NAT (iptables)
Сеть и маршрутизация
Введение в NetworkManager Настройка статического IP NAT и iptables Маршрутизация OSPF
Безопасность
Базовая настройка UFW SSH ключи и конфиги Fail2Ban
Главная / Сеть / NAT и iptables
Настройка NAT с использованием iptables
Данная статья описывает процесс настройки трансляции сетевых адресов (NAT) на базе iptables. Материал покрывает типовые сценарии маршрутизации в Linux-системах.
Примечание: Синтаксис актуален для Linux-систем, использующих классический пакет iptables.
Установка пакетов
Для начала работы необходимо убедиться, что утилита установлена в системе. Если iptables отсутствует, выполните установку из стандартных репозиториев:
# Обновление кэша и установка apt-get update && apt-get install -y iptables
Настройка MASQUERADE
В зависимости от конфигурации сети, необходимо добавить правило для замены IP-адресов всех входящих пакетов на IP-адрес внешнего интерфейса.
Для корректной работы маскарадинга необходимо указать исходящий интерфейс. Обязательно замените <имя_интерфейса> на ваш актуальный интерфейс (например, eth0 или wan0):
iptables -t nat -A POSTROUTING -j MASQUERADE -o <имя_интерфейса>
Сохранение и автозагрузка
По умолчанию правила iptables сбрасываются при перезагрузке. Чтобы сделать их постоянными, сохраните текущую конфигурацию:
iptables-save > /etc/sysconfig/iptables
Активируйте службу для автоматического восстановления правил при каждой загрузке ОС:
systemctl enable --now iptables
Настройка ядра (Forwarding)
Для корректной работы маршрутизатора необходимо разрешить пересылку входящих пакетов на уровне ядра Linux.
# Откройте конфигурационный файл vim /etc/net/sysctl.conf
Добавьте или раскомментируйте следующую строку:
net.ipv4.ip_forward = 1
(В редакторе vim: нажмите ESC, затем введите :wq и нажмите Enter для сохранения и выхода)
Применение изменений
Чтобы ядро и сетевые интерфейсы подхватили новые настройки, перезапустите сеть, чтобы применить новые правила:
systemctl restart network
Troubleshooting: При перезапуске сети удаленная сессия может «подвиснуть». В случае долгого ожидания выполнения команды используйте Ctrl+C для прерывания вывода.