Tenho uma política de rede global que se parece com isso (registrar qualquer pacote que não esteja na porta 30000 e permitir apenas o tráfego para a porta 30000 na interface ens4):
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: internal-rules
spec:
selector: interface == 'ens4'
applyOnForward: true
types:
- Ingress
- Egress
ingress:
- action: Log
protocol: TCP
destination:
notPorts:
- 30000:32767
- action: Allow
protocol: TCP
destination:
ports:
- 30000:32767
egress:
- action: Allow
então aplico isso a uma interface com um hostendpoint como este.
apiVersion: projectcalico.org/v3
kind: HostEndpoint
metadata:
name: node1-internal-if
labels:
interface: ens4
spec:
interfaceName: ens4
node: testmdm2503nic-node1
Tenho regras diferentes para as 3 interfaces diferentes que tenho na minha configuração. Em geral, funciona para filtrar meu tráfego, mas vejo pacotes sendo descartados de forma inesperada. Por exemplo, o seguinte pacote é descartado. Observe que a interface IN está em branco; eu teria pensado que ela não deveria ser filtrada por uma das minhas regras de hostendpoint. A porta 30000 é uma das portas que listei como aberta no ens4, mas não tenho certeza de qual interface esse tráfego está chegando.
Ter 11 Mar 18:02:39 2025 : INFO | kickRegressionSuite: 11 Mar 16:43:04 testmdm2503nic-k8sc-node1-2 kernel: calico-packet: IN= OUT=cali6f00f63eeec SRC=1.2.3.4 DST=1.2.8.4 LEN=60 TOS=0x00 PREC=0x00 TTL=62 ID=9941 DF PROTO=TCP SPT=58082 DPT=30000 WINDOW=64240 RES=0x00 SYN URGP=0 MARK=0x69a04000
Quando um pacote é descartado conforme o esperado, normalmente o log teria o nome da interface listado no campo IN:
20 de fevereiro 10:30:50 loriek8s-k8sc-node2-3 kernel: calico-packet: IN=ens3 OUT= MAC=fa:: SRC=1.1.7.9 DST=1.1.7.2 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=53798 DF PROTO=TCP SPT=33728 DPT=10250 WINDOW=29200 RES=0x00 SYN URGP=0
alguma ideia do que posso estar fazendo errado ou talvez o registro de pacotes descartados não esteja como eu esperava.