Ubuntu 18.04 Server vm에서 포트 30080을 열려고 하는데 혼란스러운 결과가 나타납니다.
iptables 출력
ubuntu@k8-master:~$ sudo iptables -v -x -n -L [sudo] 우분투 비밀번호: 체인 INPUT(정책 ACCEPT 289 패킷, 98798바이트) pkts 바이트 대상 prot 옵트아웃 소스 대상 3919 272820 KUBE-SERVICES all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 서비스 포털 */ 3919 272820 KUBE-EXTERNAL-SERVICES all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 외부에 표시되는 서비스 포털 */ 846424 164692436 KUBE-FIREWALL 모두 -- * * 0.0.0.0/0 0.0.0.0/0 체인 FORWARD(정책 DROP 0 패킷, 0바이트) pkts 바이트 대상 prot 옵트아웃 소스 대상 0 0 KUBE-FORWARD all -- * * 0.0.0.0/0 0.0.0.0/0 /* 쿠버네티스 전달 규칙 */ 0 0 KUBE-SERVICES all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 서비스 포털 */ 0 0 DOCKER-USER 모두 -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DOCKER-ISOLATION-STAGE-1 모두 -- * * 0.0.0.0/0 0.0.0.0/0 0 0 모두 수락 -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate 관련,설정됨 0 0 도커 모두 -- * docker0 0.0.0.0/0 0.0.0.0/0 0 0 모두 수락 -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0 0 0 모두 수락 -- docker0 docker0 0.0.0.0/0 0.0.0.0/0 0 0 모두 수락 -- * * 10.244.0.0/16 0.0.0.0/0 0 0 모두 수락 -- * * 0.0.0.0/0 10.244.0.0/16 체인 출력(정책 ACCEPT 281 패킷, 145464바이트) pkts 바이트 대상 prot 옵트아웃 소스 대상 6870 412563 KUBE-SERVICES all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 서비스 포털 */ 846213 192244364 KUBE-FIREWALL 모두 -- * * 0.0.0.0/0 0.0.0.0/0 체인 DOCKER (참고문헌 1개) pkts 바이트 대상 prot 옵트아웃 소스 대상 체인 DOCKER-ISOLATION-STAGE-1(참조 1개) pkts 바이트 대상 prot 옵트아웃 소스 대상 0 0 DOCKER-ISOLATION-STAGE-2 모두 -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0 0 0 모두 반환 -- * * 0.0.0.0/0 0.0.0.0/0 체인 DOCKER-ISOLATION-STAGE-2(참조 1개) pkts 바이트 대상 prot 옵트아웃 소스 대상 0 0 모두 삭제 -- * docker0 0.0.0.0/0 0.0.0.0/0 0 0 모두 반환 -- * * 0.0.0.0/0 0.0.0.0/0 체인 DOCKER-USER (참조 1개) pkts 바이트 대상 prot 옵트아웃 소스 대상 0 0 모두 반환 -- * * 0.0.0.0/0 0.0.0.0/0 체인 KUBE-EXTERNAL-SERVICES (참조 1개) pkts 바이트 대상 prot 옵트아웃 소스 대상 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 /* robots-shop/web:8080에는 엔드포인트가 없습니다. */ ADDRTYPE match dst-type LOCAL tcp dpt:30080 icmp-port-unreachable 거부 체인 KUBE-FIREWALL(참조 2개) pkts 바이트 대상 prot 옵트아웃 소스 대상 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 /* 표시된 패킷 삭제를 위한 kubernetes 방화벽 */ 표시 일치 0x8000/0x8000 체인 KUBE-FORWARD (참고문헌 1개) pkts 바이트 대상 prot 옵트아웃 소스 대상 0 0 모두 삭제 -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID 0 0 모두 수락 -- * * 0.0.0.0/0 0.0.0.0/0 /* 쿠버네티스 전달 규칙 */ 일치 표시 0x4000/0x4000 0 0 모두 수락 -- * * 10.0.0.0/16 0.0.0.0/0 /* kubernetes 전달 conntrack 포드 소스 규칙 */ ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- * * 0.0.0.0/0 10.0.0.0/16 /* kubernetes 전달 conntrack 포드 대상 규칙 */ ctstate RELATED,ESTABLISHED 체인 KUBE-SERVICES (참고문헌 3개) pkts 바이트 대상 prot 옵트아웃 소스 대상 0 0 REJECT tcp -- * * 0.0.0.0/0 10.96.93.102 /* robots-shop/cart:8080에는 엔드포인트가 없습니다. */ tcp dpt:8080 icmp-port-unreachable 거부 0 0 REJECT tcp -- * * 0.0.0.0/0 10.111.89.174 /* robots-shop/web:8080에는 엔드포인트가 없습니다. */ tcp dpt:8080 icmp-port-unreachable 거부
또한 ufw는 포트가 열린 것으로 표시합니다.
sudo ufw status
Status: active
To Action From
-- ------ ----
30080 ALLOW Anywhere
30080/tcp ALLOW Anywhere
Netstat는 또한 "수신" 모드의 포트를 표시합니다.
netstat -talpn | grep 30080
tcp6 0 0 :::30080 :::* LISTEN -
그래서 왜 nmap이 여전히 포트를 필터링된 것으로 표시하는지 잘 모르겠습니다.
nmap -Pn localhost -p 30080
PORT STATE SERVICE
30080/tcp filtered unknown
그리고 원격 컴퓨터에서 시도하면 nmap이 닫힌 것으로 표시됩니다.
PORT STATE SERVICE
30080/tcp closed unknown
여기서 어디로 가야할지 잘 모르겠습니다.
답변1
몇 가지 조사를 해본 결과 이것이 쿠버네티스 문제인 것 같습니다. kube-proxy가 다음 줄을 추가하는 것 같습니다:
/* robots-shop/web:8080에는 엔드포인트가 없습니다. */ ADDRTYPE match dst-type LOCAL tcp dpt:30080 Reject-with icmp-port-unreachable
그래서 이 주제를 닫고 kubernetes 섹션에서 다른 주제를 열겠습니다. 감사해요.