이제 이 명령을 사용하여 포트가 어떤 프로세스에서 사용되고 있는지 확인합니다.
lsof -i:443
그러나 출력 결과는 나를 혼란스럽게 합니다.
[root@k8smasterone ~]# lsof -i:443
lsof: no pwd entry for UID 65532
lsof: no pwd entry for UID 1001
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
lsof: no pwd entry for UID 65532
traefik 13731 65532 10u IPv4 10157368 0t0 TCP k8smasterone:35756->k8smasterone:https (ESTABLISHED)
lsof: no pwd entry for UID 1001
operator 24351 1001 6u IPv4 515576 0t0 TCP k8smasterone:49222->k8smasterone:https (ESTABLISHED)
calico-ty 25072 polkitd 7u IPv4 523993 0t0 TCP k8smasterone:49648->k8smasterone:https (ESTABLISHED)
wget 25509 root 4u IPv4 9941865 0t0 TCP iZuf62lgwih3vksz3640gnZ:46538->cdn-185-199-110-154.github.com:https (ESTABLISHED)
포트 443이 여러 프로세스에서 사용된다는 뜻인가요? 이 올바른지? 왜 이런 일이 발생합니까?
답변1
아니요, 이는 프로세스 13731, 24351 및 25072가 모두 이 호스트의 포트 443에 연결되어 있음을 의미합니다. 한 번에 하나의 연결만 처리할 수 있는 웹 서버는 그다지 좋은 서버가 아니죠?
또한 프로세스 25509는 github.com의 포트 443에 연결됩니다.
이 lsof
명령은 설정된 네트워크 연결을 다음과 같이 표시합니다.
<local hostname/IP>:<local port> -> <remote hostname/IP>:<remote port>
따라서 필드에 지정된 포트만 <local port>
실제로 해당 줄에 나열된 프로세스에 속합니다. 이는 각각 35756, 49222 및 49648로 임의의 높은 번호가 매겨진 포트입니다. 이는 이것이 나가는 연결일 가능성이 가장 높다는 것을 나타냅니다.
화살표 오른쪽 부분은 연결의 "원격" 끝이 어디에 있는지 지정합니다. 즉, 다른 호스트의 서비스에 연결되거나 동일한 호스트의 포트에 연결될 수 있습니다.
화살표 방향은 연결 설정 방법과 아무 관련이 없습니다. 실제로 출력에는 멀티스레드를 나타내는 여러 PID가 있을 수 있는 lsof
HTTPS 서버 프로세스(아마도 또는 다른 서버 소프트웨어)와 관련된 줄도 포함되어야 합니다 httpd
. nginx
/ 다중 프로세스 HTTPS 서버 및 다음 영역 NAME
:
*:https (LISTEN)
(*
다양할 수도 있음) - 프로세스가 들어오는 연결을 수신하고 있음을 나타냅니다.k8smasterone:https->k8smasterone:35756 (ESTABLISHED)
- 프로세스 13731 연결의 서버 측k8smasterone:https->k8smasterone:49222 (ESTABLISHED)
- 프로세스 24351 연결의 서버 측k8smasterone:https->k8smasterone:49648 (ESTABLISHED)
- 프로세스 25072 연결의 서버 측
그러나 구성에 일부 DNAT, 로드 밸런싱 또는 클라우드 네트워킹 트릭이 포함된 경우 실제 HTTPS 서버는 다른 호스트에 있을 가능성이 높으므로 lsof
이 세 가지와 유사한 줄이저것호스트로 변경합니다.