iptables PREROUTING

iptables — утилита из пакета iproute2, позволяющая управлять трафиком в Linux системах. Рассмотрим iptables PREROUTING и частую задачу по передресации входящего трафика на приватный IP адрес.

 

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.