iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

Проброс и перенаправление портов в iptables

Проброс трафика за NAT или проброс трафика на другой сервер

Чаще всего проброс трафика используется, если мы находимся в локальной сети и от внешнего мира отделены шлюзом. Для того, чтобы открыть доступ для локальных служб (ssh, web, ftp), нам необходимо пробросить порты. Поскольку в качестве шлюза мы будем использовать сервер на Linux, то осуществлять данные действия будем с помощью iptables.

Определимся с переменными, которые будут использоваться в статье:

Проброс портов

Рассмотрим пример

Если входящий пакет пришёл извне на шлюз (1.2.3.4), но предназначен веб-серверу (порт 80), то адрес назначения подменяется на локальный адрес 192.168.1.50. И впоследствии маршрутизатор передаст пакет в локальную сеть.

Дальше принимается решение о маршрутизации. В результате пакет пойдёт по цепочке FORWARD таблицы filter, поэтому в неё надо добавить разрешающее правило. Оно может выглядеть, например, так:

Рассмотрим пример

Пропустить пакет, который пришёл на внешний интерфейс, уходит с внутреннего интерфейса и предназначен веб-серверу (192.168.1.50:80) локальной сети.

Есть два способа избежать данной ситуации.

Рассмотрим пример

Если пакет предназначен веб-серверу, то обратный адрес клиента заменяется на внутренний адрес шлюза.
Этим мы гарантируем, что ответный пакет пойдёт через шлюз.

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

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

Рассмотрим пример

Теперь для удобства запилим скрипт, чтобы не прописывать правила каждый раз вручную.

rules.sh

Теперь, чтобы обеспечить доступ извне к локальному FTP по адресу 192.168.1.52, достаточно набрать в консоли от имени супер-пользователя:

Перенаправление портов

Перенаправление портов нужно в том случае, если мы хотим «замаскировать» внутреннюю службу, обеспечив к ней доступ извне не по стандартному, а совсем по другому порту.

Набор правил для iptables будет отличаться несущественно, поэтому приведу сразу пример итогового скрипта для ленивых.

Источник

Iptables: немного о действии REDIRECT, его ограничениях и области применения

iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

Данная заметка повествует о действии REDIRECT в iptables, его ограничениях и области применения.

Iptables и REDIRECT

Действие REDIRECT предназначено для перенаправления пакетов с одного набора портов на другой внутри одной системы, не выходя за пределы хоста.

Работает REDIRECT только в цепочках PREROUTING и OUTPUT таблицы nat. Таким образом, область применения сводится только к перенаправлению с одного порта на другой. Чаще всего это используется для прозрачного прокси, когда клиент из локальной сети коннектится на 80 порт, а шлюз редиректит пакеты на локальный порт прокси:

Допустим, надо сменить порт приложения только перенаправлением при помощи iptables, не трогая настроек демона. Пусть новый порт будет 5555, а порт приложения 22. Таким образом, надо сделать редирект с порта 5555 на 22.

REDIRECT и удаленный клиент

Первый шаг очевиден и будет таким же, что и в примере выше:

Однако, правило будет работать только для внешних клиентов и только при открытом порте приложения.

REDIRECT и локальный клиент

Предыдущее правило для самого хоста с iptables не сработает, т.к. пакеты с localhost не попадают в таблицу nat. Чтобы кейс сработал на локальной машине — надо добавить редирект в цепочку OUTPUT таблицы nat:

Теперь локальный клиент тоже может подключиться по 5555 порту.

REDIRECT и закрытый порт

Смысл кейса в том, чтобы использовать левый порт, а порт приложения держать закрытым, но если выполнить DROP правило в INPUT цепочке по 22 порту, то 5555 тоже перестанет отвечать. Собственно, хитрость в том, чтобы открыть порт приложения в INPUT цепочке, а дропать его в mangle:

Полный набор правил

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

Источник

Iptables и правильное перенаправление на 80 порт?

Даже работает. Но получается если зайти на 8000 порт то так же открывается ресурс. Можно ли это как то убрать?

iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

@vvpoloskin: без данного правила не будет работать, так как после цепочки (а не правила) PREROUTING пакет идет в цепочку INPUT (в нашем случае, так как пакет не транзитный), и как раз там он дропнется по политике по умолчанию. REDIRECT работает на L4, подменяя dport. После него правило уже не продолжает двигаться по таблице nat, а идет далее. В сути, это разновидность DNAT. Причем, кстати говоря, в таблицу nat попадает только первый пакет соединения, далее они будут проходить мимо данной таблицы.

Вы путаете правила/цепочки/таблицы в netfilter.

Тут фича в том, что после REDIRECT пакет не проходит цепочку PREROUTING далее или еще раз. Поэтому можно сделать так: маркировать пакет в PREROUTING и дропать в INPUT маркированные пакеты.

Существующее у вас правило

убирать нельзя, т.к. пакет далее идет в цепочку INPUT, где дропнется (политика по умолчанию у вас DROP) без этого правила. Однако дропать маркированные пакеты нужно до него, иначе оно пропустит их (поэтому в правиле выше флаг «-I», что, возможно, вы захотите изменить, расставив правила по порядку).

iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

Добрый день!
Теперь вернемся к нашим попугаям.
Терзания и тесты показали что надо оставить а что убрать, в итоге у меня вот сей чудо:

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

Источник

Проброс портов iptables в Linux

С увеличением количества компьютеров, необходимое количество IP адресов увеличивалось и диапазона IPv4 начало не хватать. Тогда была разработана технология NAT, которая позволяет нескольким компьютерам объединяться в локальную сеть и быть доступными из внешней сети по IP адресу маршрутизатора.

Когда пакет приходит на маршрутизатор, выполняется выяснение какому устройству он был адресован и замена ip адресата на нужный. Кроме переопределения IP получателя и отправителя, NAT может изменять порты. Это называется проброс портов и может быть полезно если вы создали частную сеть, но все же хотите пропускать некоторые виды трафика. Всем этим можно управлять с помощью iptables. В этой статье мы рассмотрим как выполняется проброс портов iptables в Linux.

Как работает NAT?

Чтобы иметь возможность общаться с другими компьютерами в сети компьютер должен иметь уникальный ip адрес. Но поскольку количество адресов уменьшалось нужно было придумать технологию, которая позволяла бы давать один адрес нескольким машинам. И была придумана технология NAT или Network Address Translation.

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

Недостаток в том, что инициировать подключение извне нельзя, потому что маршрутизатор просто еще не знает к кому обращаются. Тут на помощь приходит проброс портов. Мы можем сказать роутеру: при поступлении пакетов на порт 80 перенаправлять их на порт 80 компьютера 192.168.1.2. Теперь адрес отправителя и порт будет заменяться на указанный нами и пакет будет передан туда, куда нужно. Если на маршрутизаторе установлен Linux, то все это можно настроить с помощью iptables.

Проброс портов в iptables

Первое что нужно сделать, это включить переадресацию трафика на уровне ядра, если это еще не сделано. Для этого выполните:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

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

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

Настройка прохождения пакетов

Сначала мы рассмотрим как разрешить прохождение пакетов через маршрутизатор. Для этого в брандмауэре есть цепочка FORWARD. По умолчанию для всех пакетов применяется правило DROP, которое означает что все нужно отбросить. Сначала разрешим инициализацию новых соединений, проходящих от eth0 до eth1. Они имеют тип contrack и представлены пакетом SYN:

Действие ACCEPT означает, что мы разрешаем это соединение. Но это правило разрешает только первый пакет, а нам нужно пропускать любой следующий трафик в обоих направлениях для этого порта (80). поэтому добавим правила для ESTABLIHED и RLEATED:

Это еще не проброс портов, мы только разрешили определенному трафику, а именно на порт 80, проходить через маршрутизатор на другие машины локальной сети. Теперь настроим правила, которые будут отвечать за перенаправление трафика.

Модификация пакетов в iptables

Правила DNAT настраиваются в цепочке PREROUTING, в таблице NAT. Эта операция изменяет адрес назначения пакета чтобы он достиг нужной нам цели, когда проходит между сетями. Клиенты будут отправлять пакеты нашему маршрутизатору, и им не нужно знать топологию внутренней сети. Пакет автоматически будет приходить нашему веб-серверу (192.168.1.2).

С помощью этого правила мы перенаправляем все пакеты, пришедшие на порт 80, к 192.168.1.2 опять же на порт 80:

Но это только половина работы. Пакет будет иметь исходный адрес клиента, а значит будет пытаться отправить ответ ему. Так как клиент ожидает получить ответ от маршрутизатора, то нормального TCP соединения не получиться. Чтобы решить эту проблему нужно модифицировать адрес источника и заменить его на адрес маршрутизатора 192.168.1.1. Тогда ответ придет маршрутизатору, а тот уже от своего имени передаст его в сеть.

iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

Если вы хотите перенаправить трафик на порт 8080, то нужно указать его после ip адреса:

Также может понадобиться выполнить проброс диапазона портов iptables, для этого просто укажите диапазон, например, 1000:2000:

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

Сохранение настроек iptables

Теперь, когда все настроено, нужно сохранить этот набор правил, чтобы он загружался автоматически при каждом старте. Для этого выполните:

sudo service iptables-persistent save

Готово. Теперь проброс портов iptables ubuntu будет работать так, как нужно.

Выводы

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

На завершение, видео о том, что такое NAT:

Источник

Linux iptables NAT проброс портов | Конфигурация перенаправления портов Masquerade

Конфигурация для SendOS Fedora Redhat Suse Ubuntu

Если у вас две сетевые карты eth0, eth1

Masquerading

1) Чтобы включить nat для eth0 для всех пользователей локальной сети

Если вы используете службу iptables, используйте следующий метод

Чтобы сохранить изменения выполните:

Это позволит работать Маскарадингу в системе.

Теперь вы можете настроить eth0 как шлюз для локальной сети.

Если вы не используете сервис iptables

Измените файл /etc/rc.local и добавьте в него следующие строки:

2) Как включить nat для eth0 для указанного пользователя сети

Перенаправление портов

1) Чтобы перенаправить внешний 80-портовый трафик на порт 3128

2) Перенаправить внешний трафик порта rdp на любой локальный системный rdp-порт.

Исходя из вашего требования, вы можете изменить порт и ip

iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Смотреть картинку iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Картинка про iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080. Фото iptables t nat a prerouting p tcp destination port 80 j redirect to port 8080

Anything in here will be replaced on browsers that support the canvas element

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *