Home » Переадресация портов через Linux-шлюз с помощью iptables
Переадресация портов через Linux-шлюз с помощью iptables

Переадресация портов через Linux-шлюз с помощью iptables

В этой статье поговорим о том, как настроить переадресацию портов через Linux-шлюз с помощью iptables. Если у тебя есть сервер, который выполняет роль шлюза между двумя сетями (например, между интернетом и локалкой), и нужно пробросить порт на внутренний сервер — ты попал по адресу. Разберёмся, как это работает, зачем вообще нужна переадресация портов, и как быстро всё настроить, чтобы не тратить время на бессмысленное копание в мануалах. Будет и теория, и практика, и даже немного гиковских лайфхаков.

Как работает переадресация портов через iptables?

Переадресация портов (port forwarding, port redirection, DNAT) — это когда трафик, приходящий на определённый порт одного сервера (обычно шлюза), автоматически пересылается на другой IP и/или порт внутри сети. Типичный кейс: у тебя есть веб-сервер в локалке, а наружу торчит только шлюз. Хочешь, чтобы запросы на порт 80 шлюза попадали на порт 8080 твоего внутреннего сервера? Вот тут и нужен iptables.

iptables — это такой швейцарский нож для управления сетевыми пакетами в Linux. Он позволяет не только фильтровать трафик, но и изменять его направление (NAT). Для переадресации портов используется таблица nat и цепочка PREROUTING (иногда POSTROUTING и OUTPUT).

  • PREROUTING — изменение адреса назначения пакета до маршрутизации.
  • POSTROUTING — изменение адреса источника после маршрутизации (например, SNAT/MASQUERADE).
  • DNAT — Destination NAT, изменение адреса назначения пакета.

Всё это позволяет сделать так, чтобы, например, любой запрос на your-gateway-ip:2222 попадал на 192.168.1.100:22 (SSH на внутренний сервер).

Зачем это нужно и где применяется?

  • Доступ к внутренним сервисам из интернета (веб, SSH, RDP, FTP и т.д.).
  • Проброс портов для VPN, игровых серверов, VoIP и прочих гиковских штук.
  • Организация DMZ (демилитаризованной зоны) для публичных сервисов.
  • Экономия на публичных IP: один внешний адрес — много внутренних сервисов.
  • Тестирование и разработка: проброс портов для контейнеров, виртуалок, CI/CD.

В общем, если у тебя есть сервер-шлюз (или VPS, или выделенный сервер), и ты хочешь сделать его точкой входа для разных сервисов — без port forwarding не обойтись.

Как быстро и просто всё настроить?

Всё, что тебе нужно — root-доступ к Linux-шлюзу и установленный iptables (почти всегда есть по умолчанию). Дальше — дело техники.

  1. Включи IP-форвардинг (разреши маршрутизацию пакетов).
  2. Добавь правило DNAT для нужного порта.
  3. Добавь SNAT/MASQUERADE, чтобы обратный трафик шёл через шлюз.
  4. Проверь, что всё работает, и сохрани правила.

Пошаговая инструкция с примерами

Допустим, у тебя есть шлюз с двумя интерфейсами:

  • eth0 — внешний (интернет), IP: 203.0.113.2
  • eth1 — внутренний (LAN), IP: 192.168.1.1

Внутренний сервер: 192.168.1.100, на нём работает SSH (порт 22).

Задача: пробросить порт 2222 на шлюзе наружу, чтобы он попадал на 22 порт внутреннего сервера.


# 1. Включаем IP-форвардинг
echo 1 > /proc/sys/net/ipv4/ip_forward

# Чтобы включить навсегда — добавь в /etc/sysctl.conf:
# net.ipv4.ip_forward = 1

# 2. Пробрасываем порт 2222 на внутренний сервер
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.100:22

# 3. Разрешаем маршрутизацию обратно (SNAT/MASQUERADE)
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# 4. Открываем порт на фаерволе (если есть фильтрация)
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT

# 5. Сохраняем правила (для Debian/Ubuntu)
iptables-save > /etc/iptables/rules.v4

# Для CentOS/RHEL:
service iptables save

Теперь любой, кто подключается к 203.0.113.2:2222, попадает на 192.168.1.100:22. Можно использовать для любого сервиса: веб, почта, игры, что угодно.

Практические советы и схемы

  • Пробрасывай только нужные порты, не делай “дыр” во всю локалку.
  • Используй нестандартные внешние порты для повышения безопасности (например, 2222 вместо 22 для SSH).
  • Следи за логами iptables: journalctl -u netfilter-persistent или dmesg | grep iptables.
  • Если используешь firewalld или nftables — не смешивай с iptables, могут быть конфликты.
  • Для сложных схем используй скрипты автоматизации (bash, ansible, salt).

Положительные и отрицательные кейсы

Кейс Плюсы Минусы Рекомендации
Проброс SSH на нестандартный порт Снижение числа брутфорс-атак, простая настройка Потребуется явно указывать порт при подключении Используй fail2ban и ключи SSH для доп. защиты
Проброс веб-сервера (HTTP/HTTPS) Доступ к сайту из интернета, можно использовать один IP для нескольких сайтов (через разные порты) SSL-сертификаты сложнее настраивать, если несколько сайтов на одном IP Используй reverse proxy (nginx, haproxy) для SNI и SSL
Проброс игровых серверов Можно запускать несколько серверов на одной машине Игроки должны знать нестандартные порты Документируй порты и делай мониторинг доступности
Проброс RDP/VNC Удалённый доступ к рабочим столам Уязвимость к атакам, если не ограничить доступ Ограничивай по IP, используй VPN или SSH-туннели

Альтернативные решения и утилиты

  • nftables — современная замена iptables, синтаксис проще, но пока не везде по умолчанию. Официальный сайт
  • firewalld — динамический фаервол для CentOS/Fedora, работает поверх iptables/nftables. Официальный сайт
  • ufw — упрощённый интерфейс для iptables на Ubuntu/Debian. Документация
  • shorewall — мощный генератор правил для iptables, подходит для сложных сетей. Официальный сайт
  • iptables-persistent — утилита для сохранения и автоматической загрузки правил iptables на Debian/Ubuntu.

Статистика и сравнение с другими решениями

Решение Производительность Гибкость Простота Совместимость
iptables Высокая Максимальная Средняя Любой Linux
nftables Очень высокая Очень высокая Средняя Современные дистрибутивы
firewalld Высокая Высокая Высокая CentOS/Fedora
ufw Средняя Ограниченная Очень высокая Ubuntu/Debian

Интересный факт: iptables — это не программа, а интерфейс к ядру Linux (netfilter). Он существует с 2000 года и до сих пор используется на миллионах серверов. nftables — его наследник, но iptables пока вне конкуренции по количеству туториалов и готовых решений.

Нестандартные способы использования

  • Проброс портов для Docker-контейнеров без использования встроенного NAT Docker (более гибко и безопасно).
  • Динамическая переадресация портов через скрипты (например, временно открыть порт для CI/CD или тестирования).
  • Автоматизация через ansible/salt: генерация и деплой правил на десятки серверов за минуту.
  • Проброс портов для honeypot-ловушек (например, перенаправить трафик на фейковый SSH для анализа атак).
  • Организация “серого” NAT для обхода ограничений провайдера (только для тестов и в рамках закона!).

Автоматизация и новые возможности

iptables отлично дружит с bash-скриптами, systemd-юнитами, ansible и другими инструментами автоматизации. Можно:

  • Динамически открывать/закрывать порты по расписанию (cron, systemd timers).
  • Генерировать правила на лету в зависимости от нагрузки или событий (например, fail2ban).
  • Интегрировать с мониторингом (zabbix, prometheus) для алертов по попыткам доступа.
  • Использовать в CI/CD для тестирования сервисов в изолированных сетях.

Выводы и рекомендации

Переадресация портов через iptables — это must-have навык для любого, кто работает с Linux-серверами, VPS или выделенными машинами. Это быстро, гибко, надёжно и абсолютно бесплатно. Неважно, строишь ли ты домашний сервер, корпоративную сеть или облачную инфраструктуру — port forwarding через iptables решает кучу задач: от простого проброса SSH до сложных схем с балансировкой и DMZ.

  • Используй iptables для простых и надёжных схем проброса портов.
  • Для сложных сценариев — смотри в сторону nftables, firewalld, shorewall.
  • Не забывай про безопасность: ограничивай доступ, логируй события, автоматизируй рутину.
  • Экспериментируй с автоматизацией — iptables отлично скриптуется и интегрируется с DevOps-инструментами.

Если тебе нужен VPS для экспериментов — закажи здесь. Для серьёзных задач — выделенный сервер с root-доступом и полной свободой действий.

Официальная документация по iptables: https://netfilter.org/projects/iptables/
nftables: https://wiki.nftables.org/
firewalld: https://firewalld.org/

Пробрасывай порты с умом, автоматизируй всё, что можно, и пусть твои сервисы будут доступны только тем, кому нужно!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked