Depois de implantar todos os recursos do kubernetes, quero abrir arquivos port 443
. Eu o adicionei à minha tabela de lista de permissões, mas ela ainda está fechada. O mesmo já aconteceu comigo para a porta 80. Depois de liberar todas as tabelas, excluir todos os recursos do kubernetes e configurar o firewall do zero (incluindo whitelisted port 80
) antes de implantar o kubernetes novamente port 80
, finalmente foi aberto.
Agora prefiro entender porque não consigo abrir port 443
ao invés de fazer tudo isso de novo. Descobri que existe a tabela KUBE-FIREWALL
(veja abaixo), que bloqueia tudo por padrão.
E esta é a minha principal dúvida:
As regras do KUBE-FIREWALL tem prioridade maior que minha tabela TCP? E se, como posso alterar a prioridade?
ENTRADA
Chain INPUT (policy DROP)
target prot opt source destination
cali-INPUT all -- anywhere anywhere /* cali:Cz_u1IQiXIMmKD4c */
f2b-sshd tcp -- anywhere anywhere multiport dports ssh
KUBE-EXTERNAL-SERVICES all -- anywhere anywhere ctstate NEW /* kubernetes externally-visible service portals */
KUBE-FIREWALL all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere ctstate INVALID
ACCEPT icmp -- anywhere anywhere icmp echo-request ctstate NEW
UDP udp -- anywhere anywhere ctstate NEW
TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
REJECT tcp -- anywhere anywhere reject-with tcp-reset
REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable
cal-INPUT
Chain cali-INPUT (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere /* cali:msRIDfJRWnYwzW4g */ mark match 0x10000/0x10000
cali-wl-to-host all -- anywhere anywhere [goto] /* cali:y4fKWmWkTnYGshVX */
MARK all -- anywhere anywhere /* cali:JnMb-hdLugWL4jEZ */ MARK and 0xfff0ffff
cali-from-host-endpoint all -- anywhere anywhere /* cali:NPKZwKxJ-5imzORj */
ACCEPT all -- anywhere anywhere /* cali:aes7S4xZI-7Jyw63 */ /* Host endpoint policy accepted packet. */ mark match 0x10000/0x10000
KUBE-FIREWALL
Chain cali-INPUT (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere /* cali:msRIDfJRWnYwzW4g */ mark match 0x10000/0x10000
cali-wl-to-host all -- anywhere anywhere [goto] /* cali:y4fKWmWkTnYGshVX */
MARK all -- anywhere anywhere /* cali:JnMb-hdLugWL4jEZ */ MARK and 0xfff0ffff
cali-from-host-endpoint all -- anywhere anywhere /* cali:NPKZwKxJ-5imzORj */
ACCEPT all -- anywhere anywhere /* cali:aes7S4xZI-7Jyw63 */ /* Host endpoint policy accepted packet. */ mark match 0x10000/0x10000
claus@vmd33301:~$ sudo iptables -L KUBE-FIREWALL
Chain KUBE-FIREWALL (2 references)
target prot opt source destination
DROP all -- anywhere anywhere /* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000
TCP
Chain TCP (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
Editar 2
A porta estava fechada porque nada estava ouvindo :)
Editar 1
A ordem da lista é importante, mas o KUBE-FIREWALL apenas descarta os pacotes marcados. Eu perdi o
mark match 0x8000/0x8000
no final da regra. Portanto, deve funcionar. Meu palpite é que uma das regras do cali (ou fail2ban?) reivindica a porta 443. Não há como saber sem a saída completa do iptables.--- Resposta original abaixo ---
Sim, o TCP tem uma prioridade mais baixa porque está mais abaixo na lista. A cadeia KUBE-FIREWALL não é apenas avaliada antes da cadeia TCP, mas também termina em uma regra que elimina todo o tráfego restante. Sua regra TCP, portanto, nunca é avaliada.
Você pode inserir seu ponto de entrada da cadeia TCP acima da cadeia KUBE-FIREWALL usando
iptables -I INPUT ...
ou inseri-lo acima de um número de linha específico usandoiptables -I INPUT 2 ...
(para inserir acima da linha 2). Você pode ver os números de linha adicionando --line-numbers ao seu comando iptables. (iptables -nvL --line-numbers
)