Estou tentando bloquear todo o tráfego de saída do iptables para a interface do docker docker0. Mas gostaria de abrir o acesso para alguns domínios:
Como eu posso fazer isso?
Eu tentei isso:
iptables -I OUTPUT -o docker0 -j DROP
iptables -I DOCKER -i docker0 -p udp --dport 53 -j ACCEPT
iptables -I DOCKER -i docker0 -p tcp -d mydomain.com --dport 80 -j ACCEPT
iptables -I DOCKER -i docker0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Isto é impossível.
iptables
controlar o Netfilter, que é um filtro de pacotes IP (um firewall) que atua no nível OSI 3 e 4. Os nomes de domínio DNS são coisa de nível superior (e um tanto ortogonal) do que isso.Você pode controlar o acesso a alguns endereços IP (L3) e portas TCP/UDP (L4) com o Netfilter.
Se você deseja controlar o acesso a sites, você tem as seguintes opções:
iptables
está fazendo isso sozinho quando você lhe dá um nome de domínio; o que ele configura dentro do Netfilter é o endereço IP resolvido para esse nome. Quando o proprietário desse domínio decidir alterar o endereço IP, sua regra não será mais aplicada. Se houver mais de um site hospedado nesse servidor que tenha esse endereço IP (ou seja, há uma hospedagem virtual que hospeda vários nomes), você os permitirá ou desabilitará totalmente. Isto é o que você parece estar fazendo agora;