Настройка UFW для перенаправления трафика
Чтобы организовать ufw проброс портов, потребуется внести изменения в конфигурационные файлы этого межсетевого экрана. Механизм позволяет направлять входящие пакеты на другие адреса внутри локальной сети или на иные интерфейсы системы.
Основные шаги включают:
- Включение маршрутизации в ядре (параметр
net.ipv4.ip_forward=1). - Добавление правил перенаправления через
before.rules. - Перезапуск службы для применения настроек.
Включение маршрутизации и форвардинга пакетов
Прежде чем пакеты начнут транслироваться между интерфейсами, системе нужно разрешить эту операцию. Без соответствующей настройки узел будет просто отбрасывать трафик, не предназначенный ему напрямую.
- Проверьте текущее состояние параметра net.ipv4.ip_forward. Команда
sysctl net.ipv4.ip_forwardпокажет значение 0 (выключено) или 1 (активно). - Для временной активации (до перезагрузки) выполните:
sysctl -w net.ipv4.ip_forward=1. - Чтобы закрепить настройку навсегда, отредактируйте файл
/etc/sysctl.confили создайте отдельный конфиг в/etc/sysctl.d/. Добавьте туда строкуnet.ipv4.ip_forward = 1, затем примените изменения черезsysctl -p.
Аналогичную операцию стоит проделать для IPv6, если он используется: параметр net.ipv6.conf.all.forwarding.
Добавление правил для проброса через ufw
Чтобы разрешить передачу трафика к определённому порту, модифицируйте конфигурацию встроенного файрвола. Процедура сводится к активации нужного правила в командной строке. Рассмотрим типовые сценарии:
- Открыть доступ извне:
sudo ufw allow 8080/tcp - Разрешить трафик для конкретного приложения:
sudo ufw allow 'Apache Full' - Указать направление (входящий/исходящий):
sudo ufw allow in 22/tcp
После внесения изменений обязательно перезагрузите межсетевой экран командой sudo ufw reload. Проверить результат можно через sudo ufw status numbered — в выводе отобразятся все активные записи.
Проброс портов через iptables в Ubuntu
Для перенаправления трафика к локальным службам в системе часто применяется утилита iptables. Она позволяет настроить трансляцию адресов и управлять пакетами. Рассмотрим, как выполняется проброс портов ubuntu с помощью этой технологии.
Базовая команда для перенаправления
Основная конструкция выглядит так:
- Включите маршрутизацию:
sysctl -w net.ipv4.ip_forward=1. - Добавьте правило в цепочку PREROUTING:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
Здесь внешний порт 8080 направляется на внутренний адрес 192.168.1.100:80.
Сохранение настроек после перезагрузки
Чтобы правила не сбрасывались, используйте пакет iptables-persistent:
| Действие | Команда |
|---|---|
| Установка | sudo apt install iptables-persistent |
| Сохранение | sudo netfilter-persistent save |
Это гарантирует, что перенаправление портов через iptables останется активным даже после отключения питания.
Правила DNAT для входящих соединений
DNAT (Destination NAT) меняет адрес назначения у пакета, пришедшего извне. Настройка выполняется в цепочке PREROUTING таблицы nat. Типичная ситуация — перенаправление трафика с порта роутера на внутренний IP сервера.
- Обязательно указывай интерфейс (например, eth0), иначе правило может сработать некорректно.
- Проверяй, что на целевом устройстве открыт соответствующий порт в локальном файрволе (ufw или iptables).
| Параметр | Пример значения |
|---|---|
| Протокол | tcp |
| Внешний порт | 8080 |
| Внутренний IP | 192.168.1.100 |
После добавления правила не забудь сохранить конфигурацию через iptables-save, иначе после перезагрузки оно исчезнет.
Правила SNAT для обратного трафика
При настройке трансляции адресов для ответных пакетов применяется механизм SNAT. Он подменяет исходный IP обратного пакета на адрес шлюза. Без этого правила клиент из внешней сети не получит ответ от сервера, так как пакет уйдёт напрямую, минуя маршрутизатор. В iptables это реализуется так:
- Для интерфейса
eth0(внешний) —MASQUERADE. - Для статического IP —
SNAT --to-source.
Без SNAT обратный трафик «заблудится» в сети.
Проверка работоспособности проброса
После настройки необходимо удостовериться, что внешние запросы достигают целевого приложения. Первым делом проверьте, открыт ли порт снаружи — для этого подойдут специализированные онлайн-утилиты (например, portchecker.co). Если сервис сообщает, что соединение установлено, конфигурация корректна. В противном случае стоит перепроверить цепочки правил в брандмауэре. Для внутреннего тестирования используйте утилиту telnet или nc (netcat) с локального хоста и из соседней подсети.
Тестирование с помощью netcat и curl
После настройки перенаправления трафика необходимо проверить, работает ли оно. Для этого пригодятся две утилиты — netcat и curl. Первая (nc) позволяет проверить доступность порта изнутри системы, вторая — протестировать HTTP(S)-ответ снаружи.
- Локальная проверка: выполните
nc -zv localhost 8080. Если порт открыт, утилита сообщит об успешном соединении. - Внешняя проверка: на удалённом устройстве (или через мобильную сеть) отправьте запрос
curl -v http://ваш_IP:8080. Ответ сервера подтвердит, что маршрутизация настроена корректно.
Просмотр активных правил ufw
Проверить, какие именно предписания сейчас задействованы в межсетевом экране, можно одной командой. Это полезно, если вы настраивали перенаправление трафика и хотите убедиться, что всё корректно. Вывод покажет статус утилиты и перечень разрешённых подключений.
sudo ufw status verbose— отобразит полную информацию с детализацией.sudo ufw status numbered— перечислит правила с нумерацией для удобного удаления.
Если экран неактивен, система сообщит: Status: inactive. В такой ситуации сначала включите его через sudo ufw enable, а затем повторно запросите список.
Автоматизация правил после перезагрузки
Настроив перенаправление трафика, важно убедиться, что конфигурация не сбросится после выключения питания. Для этого применяются специальные утилиты или скрипты, загружающиеся при старте системы.
- Самый надёжный способ — внести инструкции в файл
/etc/rc.local. - Либо создать systemd-сервис, который будет запускать команды iptables в автоматическом режиме.
Такой подход гарантирует, что после каждой загрузки ОС сетевые каналы останутся открытыми без ручного вмешательства.
Сохранение правил iptables через iptables-persistent
После настройки фильтрации пакетов вручную все внесённые изменения исчезают после перезагрузки системы. Чтобы этого избежать, применяется пакет iptables-persistent. Он фиксирует текущую конфигурацию и восстанавливает её при старте.
- Установка:
sudo apt install iptables-persistent - Во время инсталляции система предложит сохранить действующие настройки для IPv4 и IPv6.
Если нужно обновить сохранённый набор после правок, выполните:
sudo netfilter-persistent save
sudo netfilter-persistent reload
Файлы правил хранятся в /etc/iptables/ (для IPv4 — rules.v4, для IPv6 — rules.v6). Их можно редактировать напрямую, но удобнее пользоваться утилитой iptables-save. Такой подход гарантирует, что после перезагрузки сервера механизм проброса продолжит работать корректно без ручного вмешательства.
Создание скрипта автозагрузки для ufw
Чтобы настройки межсетевого экрана восстанавливались после перезагрузки системы, удобно использовать пользовательский bash-сценарий. Его помещают в автозагрузку через systemd или init.d. Ниже приведён простой пример такого файла.
- Создайте скрипт
/etc/init.d/ufw-custom-rulesс правами на выполнение. - Внутри пропишите команды
ufw allowдля нужных портов. - Добавьте его в автозагрузку через
update-rc.dили systemd-юнит.













