Я хочу ограничить доступ к портам контейнера докеров только с указанных IP-адресов.
Я установил правила iptables с помощью ipset.
Я показал порт 8888. Запросы с порта 8888 перенаправляются на простой веб-сервер докеров.
Я определил ipset с IP-адресами из белого списка.
ipset create testfilter iphash
ipset add testfilter 192.168.52.65
Затем я создал правила iptables. Новая сеть с названием testfilter
, FORWARD
Править с портом 8888
должен перейти к testfilter
. Первое правило от testfilter
цепочка должна соответствовать IP из белого списка ipset. Второе правило от testfilter
цепочка должна прерывать связь, когда IP не совпадает с белым списком.
iptables -N testfilter
iptables -I FORWARD -p tcp --dport 8888 -j testfilter
iptables -A testfilter -m set --match-set test_ips src -j RETURN
iptables -A testfilter -j DROP
Но порт 8888
по-прежнему доступен с любого IP. Я тоже пытаюсь использовать INPUT
правило вместо FORWARD
правило, также удалить --dport
param из правила и положить -m state --state NEW
param вместо этого. Есть идеи, как это исправить?
Вы можете получить доступ к своему порту 8888, потому что ваш контейнер докеров работает на локальном хосте, и FORWARD не блокирует его. Используйте параметр -i, чтобы указать интерфейс lo.