네트워크 트러블슈팅 · 소켓과 포트 · 퀴즈
퀴즈: 소켓과 포트
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
파드 안에서 `curl localhost:8080` 은 성공하는데 파드 IP 로는 refused 입니다. 원인은?
- NetworkPolicy 가 막고 있다
- 프로세스가 127.0.0.1 에만 바인딩돼 있다
- Service 의 targetPort 가 틀렸다
- CNI 플러그인 장애
LISTEN 소켓의 `Recv-Q` 가 계속 `Send-Q` 근처를 맴돌고 `ListenOverflows` 가 증가합니다. 진단은?
- 애플리케이션이 accept 를 충분히 빨리 하지 못해 완료 큐가 넘치고 있다
- 구간 대역폭이 모자라 패킷이 지연되고 있다
- 경로 MTU 불일치로 큰 패킷이 버려지고 있다
- 이름 해석 지연으로 연결 수립이 늦어지고 있다
`CLOSE_WAIT` 소켓이 계속 쌓입니다. 책임 소재는?
- 상대가 FIN 을 보내지 않았다
- 내 애플리케이션이 close() 를 호출하지 않고 있다
- 커널 타이머 설정이 잘못됐다
- TIME_WAIT 재사용이 꺼져 있다
`/proc/net/tcp` 에서 상태 컬럼 값 `0A` 는?
- LISTEN
- ESTABLISHED
- TIME_WAIT
- CLOSE_WAIT
`nc -zv host 8080` 이 4밀리초 만에 refused 를 돌려줬습니다. 이 시간이 알려 주는 것은?
- DNS 가 캐시에서 응답했다
- 로컬에서 즉시 실패해 패킷이 나가지 않았다
- TCP fast open 이 동작했다
- 왕복이 실제로 일어났다 — 경로상의 관문을 이미 통과했다는 증거
쿠버네티스에서 Service IP 로 붙자마자 refused 가 납니다. 가장 먼저 볼 것은?
- 노드의 kube-proxy 로그에 오류가 있는지 본다
- 노드에 만들어진 iptables 규칙을 덤프해 본다
- CoreDNS 파드 상태와 질의 응답을 먼저 확인한다
- 해당 Service 의 Endpoints — 비어 있으면 셀렉터 불일치나 readiness 실패다