iptables PREROUTING и проксирование iptables


iptables prerouting позволяет добавлять правила перенаправления с одного адреса и порта на другой адрес и порт средствами системного фильтра.

Пользователь при этом не замечает перенаправления и работает с теми адресом и портом, на которые обратился.

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



Пример настройки iptables PREROUTING


Выполним настройку переадресации трафика с внешнего IP адреса на внутренний.

Внешний выделенный IP адрес сервера 123.123.123.123/32.

На машине поднят LXC контейнер на приватном IP адресе, который не маршрутизируется в сети общего пользования.



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



Цели можно добиться добавив правило в цепочку PREROUTING iptables.

iptables -t nat -I PREROUTING -i eth0 -p TCP -d 123.123.123.123/32 --dport 80 -j DNAT --to-destination 10.160.152.184:80



Здесь указываются приватный и публичный IP адрес, а также порты. Директивой --dport задается внешний порт.

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

Помимо этих основных директив в качестве условий существуют сетевой  интерфейс (eth0) и протокол(TCP).



iptables PREROUTING


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



Автоматическое добавление правил после перезагрузки


Чтобы изменения сохранились требуется создавать скрипт, который будет подгружать их после перезагрузки. В Debian / Ubuntu достаточно установить из репозитория пакет iptables-persistent, который будет выполнять эту задачу

apt-get install iptables-persistent



В процессе установки будет предложено сохранить все правила для IPv4. Ответить нужно положительно.


Проверить актуальные правила можно выполнив iptables-save

iptables-save



Читайте подробнее про LXC, а также про настройку iptables firewall.

Сказать спасибо