O objetivo é permitir que apenas redes específicas acessem serviços / portas do contêiner do Docker em execução no meu servidor.
Tentei adicionar as regras ACCEPT na cadeia de filtros INPUT. Isso não ajudou, as redes, mesmo sem a regra ACCEPT, ainda conseguiam acessar o serviço / porta do docker.
Tentei adicionar as regras ACCEPT e DROP na cadeia FORWARD, isso funciona. Mas isso tem muitas desvantagens como: a. Regras sendo excluídas ou reposicionadas no reinício do docker b. As regras podem se tornar inválidas, se os contêineres do Docker forem reimplementados e obter IPs diferentes no tempo de execução
O plano é BLOCO-los antes mesmo de chegar à cadeia FORWARD.
Então, adicionamos uma nova cadeia na tabela NAT, que redireciona para a cadeia DOCKER se o tráfego for da rede permitida, se for de outras redes, adicionou DNAT a um IP BLOCKHOLE. Em PREROUTING, a primeira regra é pular para essa corrente. Isso parece estar funcionando.
DNAT tcp - 0.0.0.0/0 0.0.0.0/0 tcp dpt: 1234 para: 0.0.0.1
Mas, em vez de redirecioná-lo para um BLOCKHOLE, podemos de alguma forma REJEITAR este tráfego para que o cliente saiba que não é permitido e, portanto, recusado.