뒤쪽에열려는 모든 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
)