iptables 우선순위

iptables 우선순위

뒤쪽에열려는 모든 kubernetes 리소스를 배포합니다 port 443. 내 화이트리스트 테이블에 추가했지만 여전히 꺼져 있습니다. 포트 80에서도 같은 일이 일어났습니다. 모든 테이블 새로 고침, 모든 kubernetes 리소스 삭제 및 처음부터 방화벽 설정(화이트리스트 포함 port 80)앞으로드디어 쿠버네티스 배포가 다시 port 80시작되었습니다.

이제 모든 것을 다시 하는 것보다 왜 열 수 없는지 이해하고 싶습니다 port 443. 나는 KUBE-FIREWALL기본적으로 모든 것을 차단하는 테이블(아래 참조)이 있다는 것을 발견했습니다 .

내 주요 질문은 다음과 같습니다.

KUBE-FIREWALL 규칙이 내 테이블 TCP보다 우선순위가 더 높나요? 그렇다면 우선순위를 어떻게 변경할 수 있나요?


입력하다

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

칼리 입력

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-방화벽

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

전송 제어 프로토콜

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

답변1

편집 2

아무것도 수신 대기하지 않기 때문에 포트가 닫혀 있습니다. :)

편집 1

목록 순서가 중요하지만 KUBE-FIREWALL은 표시된 패키지만 제거합니다. mark match 0x8000/0x8000규칙 끝에 있는 것을 놓쳤습니다 . 그러므로 그것은~해야 한다일하다. 내 생각엔 cali 규칙 중 하나(또는 failure2ban?)가 포트 443을 선언하는 것 같습니다. 전체 iptables 출력 없이는 알 수 있는 방법이 없습니다.

---원래 답변은 다음과 같습니다---

예, TCP는 목록에서 낮기 때문에 우선순위가 낮습니다. KUBE-FIREWALL 체인은 TCP 체인보다 먼저 평가될 뿐만 아니라 나머지 트래픽을 모두 삭제하는 규칙으로 끝납니다. 따라서 TCP 규칙은 평가되지 않습니다.

다음 명령을 사용하여 KUBE-FIREWALL 체인 위에 TCP 체인 진입점을 삽입하거나, 다음 명령을 사용하여 iptables -I INPUT ...특정 라인 번호(라인 2 위에 삽입) 위에 삽입 할 수 있습니다. iptables -I INPUT 2 ...iptables 명령에 --line-numbers를 추가하면 줄 번호를 볼 수 있습니다. ( iptables -nvL --line-numbers)

관련 정보