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).
Такое решение может требоваться если в контейнерах работают разные сервисы с трафик нужно переправлять с разных портов на публичном адресе.
Чтобы изменения сохранились требуется создавать скрипт, который будет подгружать их после перезагрузки. В Debian / Ubuntu достаточно установить из репозитория пакет iptables-persistent, который будет выполнять эту задачу
apt-get install iptables-persistent
В процессе установки будет предложено сохранить все правила для IPv4. Ответить нужно положительно.
Проверить актуальные правила можно выполнив iptables-save
iptables-save
Читайте подробнее про LXC.