OS-Level Preparation for Kubernetes - FireWall

방화벽

sudo ufw disable platform이 안정적으로 운영되기 위해서는 방화벽의 방해를 받으면 안됨

ufw          (ububtu 방화벽)

iptables     (동시에 건드림)

kube-proxy   (k8s)

ufw를 끄고, iptables를 k8s한테 통째로 맡김

sudo ufw disable
Firewall stopped and disabled on system startup
sudo ufw status
Status: inactive

ufw는 기본적으로 FORWARD를 차단

다른 node의 Pod끼리 통신하려면 node가 라우터 역할로 패킷을 통과시켜야함

그래서 net.ipv4.ip_forward=1을 켜서 node를 router로 만들었음

그런데 ufw가 FORWARD를 기본 DROP으로 막아버리면 ip_forward를 1로 켜놔도 ufw가 그 패킷을 통과 직전에 버림

또한, iptables는 위에서부터 순서대로 규칙을 읽는데 ufw가 위쪽에 기본적으로 다 막는 규칙을 박아두면 kube-proxy가 아무리 정교한 DNAT 규칙을 적어놔도 패킷이 거기까지 도달하기 전에 ufw 규칙에 걸려서 DROP됨

따라서, ‘iptables를 k8s한테 통째로 맡긴다’ 라는 의미는 ‘이 node의 iptables를 관리하는 주체를 kube-proxy로 통일한다’ 라는 의미

iptables vs netfilter vs ufs

netfilter: 리눅스 커널 안에서 패킷의 IN/OUT/FORWARD를 결정하는 패킷 처리 엔진

iptables: netfilter를 제어하는 명령어

ufw(uncomplicated firewall): 복잡한 iptables의 규칙을 직접 다루지 않고 쉽게 만들어 주는 도구