Некоторые службы, которые мы запускаем на наших серверах с помощью Docker, пытаются подключиться к частным IP-адресам (10.0.0.0/8, 192.0.0.0/16, 172.16.0.0/12, 100.64.0.0/10).
Такое поведение является нормальным, но наш поставщик серверов обнаруживает этот трафик и отправляет нам предупреждения.
Мы хотели бы остановить только исходящий трафик, а не входящий с iptables.
Это наша текущая установка:
-A OUTPUT -d 192.168.0.0/16 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -d 100.64.0.0/10 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -d 172.16.0.0/12 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -d 10.0.0.0/8 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
Однако это не работает, потому что Docker создает следующие правила:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER-ISOLATION all -- anywhere anywhere
DOCKER all -- anywhere anywhere
Для услуг:
Chain DOCKER (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:1234
ACCEPT tcp -- anywhere 172.17.0.4 tcp dpt:1234
Окончательно:
Chain DOCKER-ISOLATION (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Любая обратная связь приветствуется.
--iptables=false
в качестве флага при его запуске. - person johnharris85   schedule 12.12.2016