Назад | Перейти на главную страницу

Параметр Docker iptables = false, похоже, не имеет желаемого поведения

Доброе утро всем. Я использую сервер Ubuntu 14.04 и Docker 1.8.1, а UFW - мой интерфейс для управления iptables.

Мне нужно запустить приложение в контейнер. Мне нужно следующее поведение:

Затем я сделал следующее в UFW, чтобы подключить докеры к внешнему миру:

Я также добавил следующие строки в /etc/ufw/before.rules для включения функций NAT:

# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic from private network through eth0, the Internet iface on master.
-A POSTROUTING -s 172.17.42.1/16 -o eth0 -j MASQUERADE

# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT

где 172.17.42.1/16 это диапазон ip docker iface.

После перезагрузки я запустил sudo iptables -t nat -L -n, что дает мне:

[....]
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0 

Тогда, поскольку мой DEFAULT_OUTPUT_POLICY установлен на DROP, и я хотел проверить, iptables=false вариант действительно работает, я запускал:

docker run -it ubuntu:14.04 bash
root@56997560933c:/# apt-get update

но .. контейнер может загружать обновления, даже если порты 80 / tcp и 53 не открыты извне на хост-машине ..

Я знаю, интересно ... что я сделал не так? что еще мне нужно сделать, чтобы избежать подключения контейнера докеров к внешнему миру через порт, который я не позволили в моих iptables (используя UFW)?

СПАСИБО.

Примечание для полноты: В моих iptables нет следов DOCKER ни в одной цепочке. Также при загрузке обновлений, если я запускаю netstat , вне ssh УСТАНОВЛЕННЫХ соединений нет ... это еще более странно ...

сообщил из этот вопрос другого пользователя, размещенного в stackoverflow. Думаю, это правильное место.