Есть стандартная схема, 1 внешний адрес, пара контейнеров; в контейнеры проброшены порты через DNAT, наружу доступ сделан через SNAT. Все настройки делал по вики. Проблема в том что не получается зайти изнутри контейнера через внешний адрес на порт, который проброшен внутрь этого контейнера. Если порт проброшен на другой контейнер, то заходит без проблем.
Часть правил:
VE0
-t nat -A PREROUTING -d 88.88.88.88/32 -p tcp -m multiport --dports 80,20,21,53,45510,8080 -j DNAT --to-destination 192.168.10.1
-t nat -A POSTROUTING -o eth0 -j SNAT --to-source 88.88.88.88
VE101 это 192.168.10.1
Вот если из VE101 сделать такую команду, то получу таймаут
$ telnet 88.88.88.88 80
А с другого контейнера будет работать.
Пробовал делать трейс пакетов, на разобраться с ним не смог. Заметил только что пакет при выходе из VE0 после mangle:POSTROUTING не попадает в net:POSTROUTING и SNAT на него не срабатывает. Потом этот пакет попадает в VE101, но стопорится на nat:PREROUTING, хотя на нем полиси стоит ALLOW.
http://pastebin.com/bcnzSX9h