Iptables и проброс портов: как настроить port forwarding в Linux

    Команда Simple-Server
    03.06.2026
    13 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Что такое проброс портов?

    Проброс портов (port forwarding) — это перенаправление сетевого трафика с одного порта на другой либо с помощью маршрутизатора (то есть на уровне железа), либо через брандмауэр (то есть на уровне ПО).

    Благодаря пробросу портов устройства в локальной сети становятся доступны из глобальной сети. Без проброса внешние запросы не смогут дойти до внутренних устройств.

    Самые очевидные сценарии, в которых нужен проброс портов:

    • Подключение к домашнему серверу (игровому, камер видеонаблюдения, хранилища данных).

    • Хостинг игровых серверов или веб-сайтов на домашнем ПК.

    • Доступ к удаленному рабочему столу.

    • Удаленное управление устройствами.

    Подключение к домашнему серверу (игровому, камер видеонаблюдения, хранилища данных).

    Хостинг игровых серверов или веб-сайтов на домашнем ПК.

    Доступ к удаленному рабочему столу.

    Удаленное управление устройствами.

    Например, если сервер внутри локальной сети работает на порту 8080, проброс позволяет обращаться к нему из глобальной сети через порт 80.

    • На компьютере с IP-адресом 192.168.1.100 (его называют серым, т.к. он внутренний) запущен веб-сервер, прослушивающий 8080 порт на наличие пользовательских запросов.

    • Компьютер находится в локальной сети Wi-Fi-роутера с IP-адресом 203.0.113.10 (его называют белым, т.к. он внешний), который прослушивает 80 порт на наличие пользовательских запросов.

    • Все запросы из глобальной сети, поступающие на Wi-Fi-роутер, пробрасываются с порта 80 (с внешнего 203.0.113.10) на порт 8080 (на внутренний 192.168.1.100).

    На компьютере с IP-адресом 192.168.1.100 (его называют серым, т.к. он внутренний) запущен веб-сервер, прослушивающий 8080 порт на наличие пользовательских запросов.

    Компьютер находится в локальной сети Wi-Fi-роутера с IP-адресом 203.0.113.10 (его называют белым, т.к. он внешний), который прослушивает 80 порт на наличие пользовательских запросов.

    Все запросы из глобальной сети, поступающие на Wi-Fi-роутер, пробрасываются с порта 80 (с внешнего 203.0.113.10) на порт 8080 (на внутренний 192.168.1.100).

    Таким образом реализуется перенаправление входящего трафика из глобальной сети в локальную.

    Как работает проброс портов в Linux?

    В операционных системах Linux есть специальный инструментарий для обработки входящего и исходящего трафика, представляющий собой своего рода конвейер фильтрации и модификации пакетов данных.

    В основе механизма проброса портов лежит технология NAT, которая конфигурируется системной утилитой iptables.

    NAT (Network Address Translation) — это технология, позволяющая преобразовывать внешние запросы из глобальной сети во внутренние запросы в локальной сети и наоборот.

    Технически NAT подменяет IP-адреса и порты в пакетах данных. Однако важно понимать, что NAT — это не какая-то программная утилита, а своего рода подход или концепция.

    В зависимости от направления, NAT можно разделить на два типа:

    • SNAT (Source NAT). Подмена IP-адреса в исходящих пакетах.

    • DNAT (Destination NAT). Подмена IP-адреса во входящих пакетах.

    SNAT (Source NAT). Подмена IP-адреса в исходящих пакетах.

    DNAT (Destination NAT). Подмена IP-адреса во входящих пакетах.

    Несмотря на то, что NAT защищает локальную сеть от внешнего доступа, он также требует проброса портов для всех входящих соединений.**
    **

    Что такое Iptables и как он работает?

    Iptables — это специальная утилита в операционных системах Linux, предназначенная для настройки NAT (и не только его) путем редактирования соответствующих таблиц с цепочками правил, модифицирующих трафик.

    Во-первых, в iptables есть 5 цепочек правил, обрабатывающих пакеты различных типов и состояний:

    • INPUT. Входящие пакеты.

    • FORWARD. Пересылаемые пакеты.

    • OUTPUT. Исходящие пакеты.

    • PREROUTING. Пакеты перед маршрутизацией.

    • POSTROUTING. Пакетов после маршрутизации.

    FORWARD. Пересылаемые пакеты.

    OUTPUT. Исходящие пакеты.

    PREROUTING. Пакеты перед маршрутизацией.

    POSTROUTING. Пакетов после маршрутизации.

    Во-вторых, в iptables есть 5 таблиц, в каждой из которых используются строго определенные цепочки правил:

    • filter. Разрешает или запрещает пакеты. Цепочки: INPUT, FORWARD, OUTPUT.

    • nat. Изменяет IP-адреса и порты, указанные в пакетах. Цепочки: OUTPUT, PREROUTING, POSTROUTING.

    • mangle. Изменяет заголовки, указанные в пакетах. Цепочки: INPUT, FORWARD, OUTPUT, PREROUTING, POSTROUTING.

    • raw. Разрешает или запрещает соединения. Цепочки: OUTPUT, PREROUTING.

    • security. Применяет дополнительные политики безопасности. Цепочки: INPUT, FORWARD, OUTPUT.

    filter. Разрешает или запрещает пакеты. Цепочки: INPUT, FORWARD, OUTPUT.

    nat. Изменяет IP-адреса и порты, указанные в пакетах. Цепочки: OUTPUT, PREROUTING, POSTROUTING.

    mangle. Изменяет заголовки, указанные в пакетах. Цепочки: INPUT, FORWARD, OUTPUT, PREROUTING, POSTROUTING.

    raw. Разрешает или запрещает соединения. Цепочки: OUTPUT, PREROUTING.

    security. Применяет дополнительные политики безопасности. Цепочки: INPUT, FORWARD, OUTPUT.

    Цепочки правил можно рассматривать как своего рода хуки (hooks) в конвейере обработки пакетов. Именно с помощью них утилита iptables реализует проброс портов в операционных системах Linux.**
    **

    Принцип работы port forwarding

    Так называемый port forwarding в iptables лучше всего рассмотреть на примере типичного алгоритма обработки трафика.

    Существует три возможных направления пакетов — для каждого свой порядок обработки:

    • Входящие (INPUT). Отправляются в локальную систему.

    • Исходящие (OUTPUT). Отправляются из локальной системы.

    • Маршрутизируемые (FORWARD). Пересылаются через систему.

    Входящие (INPUT). Отправляются в локальную систему.

    Исходящие (OUTPUT). Отправляются из локальной системы.

    Маршрутизируемые (FORWARD). Пересылаются через систему.

    Входящие пакеты обрабатываются так:

    • raw (PREROUTING). Фильтрация соединения.

    • mangle (PREROUTING). Модификация пакета.

    • nat (PREROUTING). Изменение адреса назначения.

    • Если пакет для текущий системы, то обработка продолжается в INPUT. Если нет — обработка переходит в FORWARD.

    • mangle (INPUT). Финальная модификация пакета.

    • filter (INPUT). Фильтрация пакета.

    • security (INPUT). Установка меток безопасности.

    raw (PREROUTING). Фильтрация соединения.

    mangle (PREROUTING). Модификация пакета.

    nat (PREROUTING). Изменение адреса назначения.

    Если пакет для текущий системы, то обработка продолжается в INPUT. Если нет — обработка переходит в FORWARD.

    mangle (INPUT). Финальная модификация пакета.

    filter (INPUT). Фильтрация пакета.

    security (INPUT). Установка меток безопасности.

    Исходящие пакеты обрабатываются так:

    • raw (OUTPUT). Фильтрация соединения.

    • mangle (OUTPUT). Модификация пакета.

    • nat (OUTPUT). Изменение адреса назначения.

    • filter (OUTPUT). Финальная фильтрация пакета.

    • security (OUTPUT). Применение меток безопасности.

    • mangle (POSTROUTING). Финальная модификация пакета.

    • nat (POSTROUTING). Изменение исходящего адреса.

    raw (OUTPUT). Фильтрация соединения.

    mangle (OUTPUT). Модификация пакета.

    nat (OUTPUT). Изменение адреса назначения.

    filter (OUTPUT). Финальная фильтрация пакета.

    security (OUTPUT). Применение меток безопасности.

    mangle (POSTROUTING). Финальная модификация пакета.

    nat (POSTROUTING). Изменение исходящего адреса.

    Маршрутизируемые пакеты обрабатываются так:

    • raw (PREROUTING). Фильтрация соединения.

    • mangle (PREROUTING). Модификация пакета.

    • nat (PREROUTING). Изменение адреса назначения.

    • Принимается решение о пересылке.

    • mangle (FORWARD). Модификация пакета.

    • filter (FORWARD). Фильтрация пакета.

    • security (FORWARD). Установка меток безопасности.

    • mangle (POSTROUTING). Финальная модификация пакета.

    • nat (POSTROUTING). Изменение исходящего адреса.

    raw (PREROUTING). Фильтрация соединения.

    mangle (PREROUTING). Модификация пакета.

    nat (PREROUTING). Изменение адреса назначения.

    Принимается решение о пересылке.

    mangle (FORWARD). Модификация пакета.

    filter (FORWARD). Фильтрация пакета.

    security (FORWARD). Установка меток безопасности.

    mangle (POSTROUTING). Финальная модификация пакета.

    nat (POSTROUTING). Изменение исходящего адреса.

    Таким образом общий порядок выполнения таблиц следующий:

    • raw

    • mangle

    • nat

    • filter

    • security**
      **

    Чаще всего необходимы следующие типы проброса портов:

    • Локальный проброс. Перенаправляет трафик в пределах одной машины. Например, приложение на локальном сервере отправляет запрос на определенный порт.

    • Проброс между интерфейсами. Перенаправляет трафик между разными сетевыми интерфейсами. Например, пакет из глобальной сети приходит на один интерфейс, а локальной хост перенаправляет его на другой.

    • Проброс для удаленных хостов. Перенаправляет трафик с удаленного сервера на локальный хост. Например, запрос от удаленного сервера перенаправляется на локальный.

    Локальный проброс. Перенаправляет трафик в пределах одной машины. Например, приложение на локальном сервере отправляет запрос на определенный порт.

    Проброс между интерфейсами. Перенаправляет трафик между разными сетевыми интерфейсами. Например, пакет из глобальной сети приходит на один интерфейс, а локальной хост перенаправляет его на другой.

    Проброс для удаленных хостов. Перенаправляет трафик с удаленного сервера на локальный хост. Например, запрос от удаленного сервера перенаправляется на локальный.

    Каждый тип проброса выполняется с помощью соответствующего набора правил в таблицах iptables.**
    **

    Использование команды Iptables

    В большинстве дистрибутивов Linux утилита iptables уже установлена. В этом можно убедиться, запросив ее версию:

    Если iptables нет в системе, тогда ее необходимо установить вручную. Сначала обновляем список доступных пакетов:

    А потом выполняем установку:

    sudo apt install iptables -y

    По умолчанию в Linux используется брандмауэр ufw, который автоматически конфигурирует iptables. Чтобы избежать возможных конфликтов, его службу сперва необходимо остановить:

    sudo systemctl disable ufw

    Базовая схема команды iptables выглядит следующим образом:

    iptables [ТАБЛИЦА] [КОМАНДА] [ЦЕПОЧКА] [НОМЕР] [УСЛОВИЕ] [ДЕЙСТВИЕ]

    При этом в каждой конкретной команде указываются лишь некоторые из упомянутых позиций:

    • ТАБЛИЦА. Название одной из пяти таблиц, в которую добавляется правило.

    • КОМАНДА. Манипуляция, которую необходимо проделать над конкретным правилом или цепочкой.

    • ЦЕПОЧКА. Название цепочки, над которой необходимо выполнить манипуляцию.

    • НОМЕР. Номер правила, над которым необходимо выполнить манипуляцию.

    • УСЛОВИЕ. Условие, при котором будет выполняться указанное правило.

    • ДЕЙСТВИЕ. Преобразование, которое будет выполняться над конкретным пакетом.**
      **

    ТАБЛИЦА. Название одной из пяти таблиц, в которую добавляется правило.

    КОМАНДА. Манипуляция, которую необходимо проделать над конкретным правилом или цепочкой.

    ЦЕПОЧКА. Название цепочки, над которой необходимо выполнить манипуляцию.

    НОМЕР. Номер правила, над которым необходимо выполнить манипуляцию.

    УСЛОВИЕ. Условие, при котором будет выполняться указанное правило.

    ДЕЙСТВИЕ. Преобразование, которое будет выполняться над конкретным пакетом.**
    **

    С помощью флага -t выбирается конкретная таблица, внутри которой будут выполняться различные манипуляции.

    Если не указывать флаг -t, то будет автоматически выбрана таблица по умолчанию — filter. Последняя же таблица security используется в очень редких случаях.**
    **

    Манипуляции над правилами

    С правилами внутри каждой цепочки можно выполнять различные манипуляции.

    Флаг -A добавляет правило в конец указанной цепочки:

    iptables -A INPUT -s 192.168.123.132 -j DROP

    В данном случае добавленное правило запрещает входящие соединения с указанного IP-адреса.

    Флаг -D удаляет правило под указанным номером:

    Флаг -I вставляет правило в определенную часть указанной цепочки:

    iptables -I INPUT 5 -s 192.168.123.132 -j DROP

    В данном случае вставленное правило запрещает входящие соединения с указанного IP-адреса.

    Флаг -R заменяет правило под указанным правилом:

    iptables -R INPUT 5 -s 192.168.123.132 -j ACCEPT

    В данном случае ранее вставленное запрещающее правило заменяется на разрешающее.

    Флаг -F удаляет все правила в указанной цепочке:

    Манипуляции над цепочками

    С цепочками тоже можно выполнять разнообразные манипуляции.

    Флаг -N создает цепочку с указанным именем:

    Флаг -X удаляет указанную цепочку:

    Флаг -E переименовывает указанную цепочку:

    iptables -E SOMENAME NEWNAME

    Флаг -P определяет правила по умолчанию для указанной цепочки:

    Обратите внимание, что выполнение этой команды для цепочки INPUT блокирует все входящие подключения к серверу.

    Флаг -Z обнуляет статистику указанной цепочки.

    Для каждого правила можно задать условие его выполнения.

    Флаг -p указывает протоколы соединения:

    iptables -A INPUT -p tcp -j ACCEPT

    Протоколы можно указывать либо выборочно (TCP, UDP, ICMP) либо все сразу (ALL). В данном случае добавленное правило разрешает входящие соединения с по протоколу TCP.

    Флаг -s указывает адреса источника входящего трафика:

    iptables -A INPUT -s 192.168.123.132 -j DROP

    Флаг -d указывает адреса назначения исходящего трафика:

    iptables -A OUTPUT -d 192.168.123.132 -j DROP

    Флаг -i указывает сетевые адаптеры исходящего трафика:

    iptables -A INPUT -i eth2 -j DROP

    В данном случае добавленное правило запрещает входящие соединения через Ethernet-интерфейс.

    Флаг -o указывает сетевые адаптеры входящего трафика:

    iptables -A OUTPUT -o eth3 -j ACCEPT

    Флаг --dport указывает порты исходящего трафика (только для -p, равному TCP или UDP):

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT

    Флаг --sport указывает порты входящего трафика (только для -p, равному TCP или UDP):

    iptables -A INPUT -p tcp --sport 1023 -j DROP

    Любое условие можно инвертировать с помощью восклицательного знака (!):

    iptables -A INPUT ! -s 192.168.123.132 -j DROP

    В данном случае добавленное правило запрещает все входящие соединения не с указанного IP-адреса.

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

    • ACCEPT. Разрешить пакет.

    • DROP. Запретить пакет.

    • REJECT. Отбросить пакет, отправив ответ серверу.

    • LOG. Записать информацию о пакете в системный лог.

    • ULOG или NFLOG. Отправить информацию о пакете в пользовательское пространство.

    • RETURN. Завершить обработку в текущей цепочке.

    REJECT. Отбросить пакет, отправив ответ серверу.

    LOG. Записать информацию о пакете в системный лог.

    ULOG или NFLOG. Отправить информацию о пакете в пользовательское пространство.

    RETURN. Завершить обработку в текущей цепочке.

    • DNAT. Изменить адрес назначения пакета.

    • SNAT. Изменить адрес источника пакета.

    • MASQUERADE. Заменить адрес источника без указания интерфейса.

    • REDIRECT. Перенаправит трафик на локальную машину.

    • RETURN. Завершить обработку в текущей цепочке.

    • MARK. Установить метку для пакета.

    • TTL. Изменить TTL (Time-To-Live) пакета.

    • TOS. Изменить TOS (Type-of-Service) пакета.

    • DSCP. Изменить DSCP (Differentiated Services Code Point) пакета.

    • CLASSIFY. Применить классификацию пакета.

    • RETURN. Завершить обработку в текущей цепочке.

    • NOTRAC. Отключить отслеживание соединения.

    • RETURN. Завершить обработку в текущей цепочке.

    • SECMARK. Установить метку безопасности.

    • RETURN. Завершить обработку в текущей цепочке.

    Настройка проброса портов через Iptables

    Разобравшись с механизмом работы проброса портов и устройством команды iptables, можно перейти к практическим примерам.

    Проброс порта на локальной машине

    Иногда необходимо перенаправить локальные запросы с одного порта на другой:

    sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80

    В данном случае в таблицу nat добавляется правило для цепочки OUTPUT, которое при условии наличия порта назначения 8080 подменяет адрес назначения на локальный хост с портом 80.

    Теперь любые серверы, запущенные на локальном хосте (например, через Python или NodeJS) на 80 порту, будут доступны через веб-браузер по 8080 порту.

    Удалить созданное правило можно следующим образом:

    sudo iptables -t nat -D PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80

    Проброс порта между интерфейсами

    Например, необходимо пробросить порт 8080 с интерфейсом eth0 на порт 80 с интерфейсом eth1.

    Для начала настраивается перенаправление трафика:

    sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.0.0.100:80

    После этого необходимо разрешить пересылку пакетов:

    sudo iptables -A FORWARD -p tcp -d 10.0.0.100 --dport 80 -j ACCEPT

    Проброс порта для удаленного хоста

    Пакеты, пришедшие на порт локального устройства, можно перенаправлять на сервер удаленного устройства.

    Для этого, во-первых, необходимо разрешить пересылку пакетов в настройках системы:

    echo 1 > /proc/sys/net/ipv4/ip_forward

    Во-вторых, необходимо добавить правило проброса порта:

    sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

    В-третьих, нужно разрешить перенаправленным пакетам отправляться наружу:

    sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j MASQUERADE

    В этом случае проброс порта работает в несколько этапов:

    • PREROUTING. Трафик с порта 8080 перенаправляется по адресу 192.168.1.100:80.

    PREROUTING. Трафик с порта 8080 перенаправляется по адресу 192.168.1.100:80.

    • POSTROUTING. Подменяется адрес отправителя так, чтобы ответ от удаленного сервера корректно возвращался обратно.

    POSTROUTING. Подменяется адрес отправителя так, чтобы ответ от удаленного сервера корректно возвращался обратно.

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

    Надо сказать, что iptables — не единственный инструмент управления трафиком. Есть несколько популярных альтернатив.

    nftables — это более современный инструмент для управления трафиком в Linux. В отличие от iptables, в нем нет предопределенных таблиц, а синтаксис более понятный и лаконичный.

    В дополнение к этой, утилита использует одну команду nft для управления всеми видами трафика: IPv4, IPv6, ARP и Ethernet. В iptables для этого есть дополнительные команды: ip6tables, arptables, ebtables.

    firewalld — это более сложный инструмент управления трафиком в Linux, которые построен на концепции областей (zones) и служб (services). Благодаря этому сетевым ресурсам можно назначать разные уровни безопасности.

    Конфигурация firewalld более широкая и гибкая. Например, вместо того, чтобы вручную прописывать правила для каждого порта, можно указывать конкретные службы.

    Помимо этого firewalld предоставляет более интерактивный интерфейс командной строки, с помощью которого можно управлять трафиком в режиме реального времени.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны