차단된 포트 443은 "nmap 127.0.0.1" 이후에 차단이 해제됩니다.

차단된 포트 443은 "nmap 127.0.0.1" 이후에 차단이 해제됩니다.

내 CI/CD Linux 시스템(Docker 컨테이너에서 16.04.4 LTS + Gitlab CI 실행)에서 매우 이상한 동작을 발견하고 문제에 대한 "디버그 경로"를 찾고 있습니다. 그리고 문제는 재부팅할 때마다 Gitlab CI의 컨테이너가 시작할 수 없다는 것입니다. 포트 443(사용 예정) 때문입니다. Netstat은 다음을 보여줍니다.

~$ netstat -ano | grep 443
tcp6       0      0 :::443                  :::*                    LISTEN      off (0.00/0/0)

나는 사용하려고 시도했고 fusertcpkill많은 솔루션을 찾았습니다. 그들 중 누구도 실제로 일하지 않았습니다. PID 1에서 항상 사용 중인 것 같습니다.

그러나 나는 다음을 실행하기로 결정했습니다 nmap 127.0.0.1.

~$ nmap 127.0.0.1

Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-18 09:31 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00015s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
443/tcp  open  https
5900/tcp open  vnc

Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds

그 후... 포트가 해제되었습니다. 이 명령을 두 번째 실행하면 다음이 표시됩니다.

~$ nmap 127.0.0.1

Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-18 09:31 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
5900/tcp open  vnc

Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

nmap바쁜 포트를 해제하는 것이 어떻게 가능합니까 ? 매번 작동합니다.

왜 이런 일이 발생하는지 매우 궁금하지만 디버깅을 "어디서" 시작해야 할지 모르겠습니다. 아니면 일반적인 문제인데 그에 대한 설명을 찾을 수 없나요?

답변1

Ubuntu 호스트의 시스템 로그를 확인하셨나요? journalctl이 목적으로 명령을 사용할 수 있습니다 . 내가 생각할 수 있는 한 가지 잠재적인 이유는소켓 활성화여기서 systemd(PID 1로 실행됨)는 포트에서 수신 대기하고 nmap과 같은 무언가가 포트에 연결을 시도할 때 프로세스를 시작합니다.

이 이론을 테스트하려면 예를 들어 재부팅하고 journalctl -f다음을 실행할 수 있습니다.에프로그를 따르고 다른 쉘에서 nmap을 다시 실행하십시오.

로그를 확인하는 것 외에도 실행 systemctl하거나 systemctl status어떤 서비스가 시작되었거나 실패했는지 알아낼 수도 있습니다.

마지막으로 종속성 누락으로 인해 부팅 프로세스 초기에 서비스가 시작되지 않았을 수도 있습니다. 예를 들어 서비스가 Docker에 의존하지만 이를 (암시적으로) 선언하지 않는 경우 부팅 시 서비스를 시작하려는 초기 시도는 실패할 수 있지만 Docker가 이미 시작되었으므로 수동 시작은 운 좋게 작동할 수 있습니다.

답변2

@Lekenstein님, 감사합니다! 귀하의 답변이 저를 해결책으로 이끌었습니다.

비슷한 문제가 있는 다른 사람에게 도움이 될 수 있으므로 내가 한 일은 다음과 같습니다.

~$ systemctl list-units --state=failed

이는 4개의 실패한 서비스(더 이상 사용되지 않는 일부 레거시 솔루션)가 있음을 보여줍니다.

그런 다음 루트로 다음을 수행합니다.

~# systemctl stop <a_failed_service_name> && systemctl disable <a_failed_service_name>

실패한 모든 장치에 대해 실행됩니다.

다시 시작한 후에는 포트 443이 사용 가능해집니다.

관련 정보