사용중인 포트 확인하고 중지하는 두가지 방법



    윈도우로 서버 구축하는 내용에 대해서 적다보니 항상 많이 질문하는 내용중에 하나가 80포트를 사용할 수 없다. 또는 21포트가 안된다 등등의 질문을 많이 받았습니다. 이런 부류의 질문은 처음 윈도우를 클린 설치하고 바로 웹서버로 세팅하는 경우에는 대부분 문제가 없지만, 기존에 쓰던 컴퓨터에서 웹서버인 IIS 기능을 활성화 하면서 일부 문제가 되는 경우입니다.


    몇가지 이유가 있지만, ISP(인터넷 제공업체)에서 해당 포트를 막는 경우에는 서버 설정에서 나타나지 않습니다. 예를 들어, 인터넷 업체에서 80포트를 막아버렸다고 하면, 윈도우 서버(리눅스도 마찬가지)에서 80포트를 웹서버로 잡아도 서버에서는 아무런 에러가 보이지 않기 때문에 쉽게 확인할 수 없습니다. 만약, 서버내에서 설정했는 때는 별달리 에러가 없었는데, 실제로 외부에서 접속하는 경우 접속할 수 없다면, 포트 개방을 확인하여야 합니다.


    외부에서 포트가 개방되었는지 확인하는 사이트에서 포트가 개방되었는지 닫혀있는지 확인해보시면 됩니다.

    참고로, ISP에서 열어놓았어도, OS자체에서 방화벽 설정에 해당 포트를 오픈하지 않으면 그 포트를 사용할 수 없습니다. 뭐, 물론 일반적으로 웹서버를 설치하거나 특정 포트를 사용하는 프로그램을 설치하는 경우 거의 자동으로 방화벽을 개방하니 문제될 부분은 없지만요.


    아래의 글을 참고하면, 외부에서 해당 포트가 개방이 되었는지 확인할 수 있습니다.



    근데 이번글에서 다루고자 하는 경우는 IIS를 이용해서 새로운 웹 사이트와 FTP 사이트 등을 구축했을 때, 같은 포트를 사용하는 프로그램이나 어떤 원인으로 포트를 사용할 수 없는 경우에 쓰면 좋은 방법입니다.




    가령 예를 들면 위에 상황처럼 한 서버 내에서 같은 포트를 여러 프로그램에서 사용해야 할 때 해당되는 상황입니다. (엄밀히 이야기 하지면, 위의 경우와는 무관합니다.)


    이번 글은 두가지 방법으로 다룰 예정입니다.

    먼저, 명령프롬프트에서 CUI 방식으로 netstat 명령어를 이용합니다.

    두번째는 리소스 모니터를 통해서 GUI 방식으로 확인합니다.


    읽어보시고 둘 중에 더 편한 방법을 선택하면 되겠습니다.




    Netstat 명령어 이용하기


    명령 프롬프트에서 netstat이라는 명령어를 이용해서 개방중인 포트 또는 사용중인 포트를 확인할 수 있습니다. 한마디로 CUI 방식으로 터미널에서 포트를 확인할 수 있는데, 만약 해당 프로세스의 작동 중지를 하려면 추가적인 과정이 필요 합니다. 명령 프롬프트 상태에서 쉽게 프로세스를 제거하기는 힘들기 때문에 약간 다른 과정을 거쳐야 합니다.

    즉, 포트 확인 따로 프로세스 중이 따로 해야 합니다.


    사용중인 포트를 확인하는데 사용할 명령어는 netstat이라는 명령어입니다. netstat /?을 입력하면 자세한 명령어 사용법이 나옵니다.




    명령어에 대한 인수들이 있지만, 현재 사용할 명령어는 -a, -n, -o 입니다.


    그래서 다음과 같이 입력하면 됩니다.

    netstat -ano

    -a : 모든 포트를 표시해줍니다.

    -n : IP주소:포트 형태로 보여줍니다. (예 - 192.168.0.22:1234)

    -o : PID (프로세스 ID)를 표시해줍니다. (해당 프로그램 중지시에 사용)



    아래 처럼 그냥 입력하면 됩니다.





    그러면 등록되어 있는 포트에 대하여 모든 포트와 PID 가 나옵니다. 여기서는 예로 80포트 사용중인 프로그램을 확인해보도록 하겠습니다. 아래의 화면과 같이 0.0.0.0:80 (= localhost:80)을 사용중인 PID는 4 입니다.

    PID는 프로세스 ID로 현재 구동중인 프로세스의 번호입니다. 물론 할당되어 있는 모든 포트를 표시해 달라고 했기 때문에 지금은 실행중이지 않은 포트도 여기에 나타납니다.



    근데 문제는 PID로만 표시가 되어있고, 실제로는 어떤 프로그램들이 사용하고 있는지 확인을 할 수 없습니다. 이제 해당하는 포트에 어떤 프로그램이 할당되어 있나 확인해보도록 하겠습니다. 확인뿐만 아니라, 원하지 않는 프로그램이 포트에 할당되어 있다면 그 프로세스를 끝내기도하고, 영구적으로 할당하지 않으려면 프로그램 삭제를 통해서 해당 포트 확보가 가능합니다.




    프로세스 끝내기


    PID를 확인하거나, 그에 대한 프로세스를 끝내려면 작업관리자를 통해 관리가 가능합니다. 하단에 작업표시줄 (시작메뉴가 있는 상태표시줄) 에서 오른쪽 버튼을 눌러 작업 관리자를 실행시킵니다.





    그럼 아래 화면 같이 작업 관리자 화면이 나오게 되는데 그 중에서 세부정보 탭으로 이동합니다.






    그리고 나열되는 목록들을 PID 순으로 정리를 하기 위새서면 다음과 같은 화면이 나옵니다.





    애초부터 찾고자 했던 PID 4는 System에서 사용 중이었습니다. IIS의 경우에는 이렇게 System으로 표시 되더군요. IIS에서 할당중이라는 것을 확인 할 수 있었습니다.



    만약, 해당 프로세스를 종료하고 싶다면 작업끝내기 버튼을 통해서 프로세스를 종료할 수 있습니다.




    근데, 이 방법은 조금 번거롭긴 하지요. 왜냐하면 명령프롬프트를 통해 먼저 사용중인 포트를 확인해야 하고 또 작업관리자를 열어서 프로세스를 종료해야 하니깐요.

    한마디로 확인따로 관리따로의 비효율적인 일을 하고 있습니다. 하지만, 한번에 이 두가지 과정을 모두 처리할 수 있는 방법이 있어서 소개하고자 합니다. 게다가 GUI 방식으로요.





    리소스 모니터 이용하기


    리소스 모니터를 이용하면 더욱더 간편하게 관리를 할 수 있습니다. 포트를 확인하고 프로세스를 종료하는 과정을 무려 GUI방식으로 관리를 할 수 있습니다.

    시작 > 제어판 > 시스템 및 보안 항목으로 이동합니다. 그리고 관리도구 메뉴를 선택합니다.






    관리메뉴 도구 중에서 리소스 모니터를 선택합니다. 

    이렇게 일일이 찾기 귀찮은 분들은 실행(윈도우키 + R) 에서 resmon 을 입력해도 됩니다.



    이 리소스 모니터를 실행하는 방법은 이 방법외에도 작업관리자에서 성능탭으로 이동하여 리소스모니터 열기를 클릭해도 됩니다.



    이제 이 리소스 모니터에서 네트워크 탭으로 이동합니다. 그러면 네트워크 활동이 있는 프로세스를 표시하고 있습니다. 아래의 경우에는 PID 4번 IIS(System)에서 사용하고 있는 것을 확인할 수 있습니다. 근데 이것만으로는 할당된 포트를 바로 확인할 수 없습니다. 때문에 가장 아래 항목인 수신 대기 포트 항목을 펼쳐줍니다.





    수신대기포트 항목을 펼치면 사용중인 포트와 함께 할당된 IP주소 그리고, PID가 모두 나오게 됩니다. 이 방법을 통해서면 netstat과 같은 명령어를 숙지하지 않아도 충분히 찾을 수 있다고 생각됩니다.



    이 수신 대기 포트에서 사용중인 포트를 사용가능하고, 혹시나 현재 사용중인데 이 프로세스를 중지하고 싶으면 네트워크 활동이 있는 프로세스 항목으로 이동해서 마우스 오른쪽 버튼을 눌러 프로세스 끝내기를 하면 됩니다.





    이 글을 쓰게 된 계기가 자주 포트가 겹치거나 해서 IIS를 제대로 실행할 수 없거나, FTP 접속시에 에러가 발생하는 경우가 생길 수 있는데, 사용중인 포트를 확인하여 미연에 방지할 수 있습니다. 서버와 관련하여 무언가 에러가 났을 때, 클린 설치후 서버를 구축한게 아니라면 반드시 사용중인 포트를 한번 확인해 보시기 바랍니다.






    저작자 표시 비영리 변경 금지
    신고
    Posted by Study For Us clamp2x
    • 희망
      2015.08.07 23:38 신고

      우와 이 글보고 80포트 사용자를 알아냇어요 감사합니다+_+

    • 희망
      2015.08.07 23:43 신고

      헉..끝내기 할려고 하는데 엑세스가 거부가되었다고 창이 뜨네요 이건 어떻게 해결 가능한지 알려주시묜 감사해요ㅜㅜ 운영체제는 윈10이고요 이번에 업글행사에 업그레이드 했어요 apmsetup 설치할려고 하는데 80포트 때문에 설치오류나서요

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.08.07 23:44 신고

        관리자 권한이 없어서 그러는 겁니다. 윈도우10 사용중인데 벌써 80포트를 사용하고 계시나요? 80포트 사용 프로그램은 어떤건가요?

    • 희망
      2015.08.07 23:47 신고

      올리신 캡처사진내용처럼 System에서 똑같이 사용중인데요 관리자권한이라면 어떻게 관리자권한으로 끝내기 하나요?

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.08.07 23:49 신고

        관리자 계정을 활성화 한 후 관리자계정으로 로그온 한뒤 프로그램을 종료하면 됩니다.
        http://studyforus.tistory.com/7 이글을 참고해보세요~

        저처럼 시스템에서 사용중이라면 IIS 웹서버를 사용하시나요? IIS를 사용한다면 APM을 설치안해도 충분할텐데요. 제 블로그 내용이 IIS에 대해서 다루는 블로그입니다.

    • 희망
      2015.08.07 23:52 신고

      80포트를 사용중인지 몰랐어요 아이피타임공유기쓰고 있는데 몇일사이에 엘지유플러스TV 셋텁박스가 문제인지 끈기고 모자이크 현상이 일어나서 tv시청이 힘들었는데 인터넷검색하다 iptv와 공유기를 연결하면 좋다고 하길래 공유기를 셋텁박스옆에 두고 랜선을 요러쿵저러쿵 연결하니깐 모자이크현상이 없어져서 좋은데 이때 80포트에 문제가 있었는지 모르겠네요

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.08.07 23:54 신고

        그거랑 80포트랑은 관련이 없습니다. 일단 IIS(인터넷 정보 서비스)를 설치한 적이 있는지 확인해보세요~

    • 희망
      2015.08.08 00:25 신고

      관리자로 접속하고 댓글남겨요 인터넷정보서비스는 설치한적없는데 작업관리자 자세히 보니깐 프로세서에 말씀하신 인터넷 정보 서비스가(2)가 덩그러니 있네요 이게 어떻게 설치가 되었는지.. 별도 IIS 프로그램으로 설치한적은 없는데 모르겠어요 문제 없겠죠?암튼 많은 도움이 되었네요 감사합니다 굿밤 보내세용+_+

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.08.08 00:26 신고

        윈도우에서 웹서버를 구축한다면 APM보다 편리할겁니다.
        제 블로그 글들을 천천히 읽어보시고 웹서버 구축해보세요~^^

    • 희망
      2015.08.08 00:48 신고

      ㅠㅠ 관리자로 접속해도 리소스모니터에 system 프로세서 종료가 안되네요 무엇이 문제일까요? 명령을 실행하던중 다음 오류가 발생하였습니다 엑서스가 거부되었다고 나오네요 http://i.imgur.com/aNiL04e.gif 윈도우7에서는 이런문제가 없었는데..윈10은 ㅜㅜ

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.08.08 00:51 신고

        IIS가 설치되어있다면 그런 방법으로 종료는 힘들 것 같고, 프로그램 추가제거를 통해 IIS를 제거 하면 됩니다.
        http://studyforus.tistory.com/8 이글 확인하시고 체크해제하세요.^^

    • 희망
      2015.08.08 01:05 신고

      오 이제 설치가능+_+ 정말 감사합니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2015.08.08 01:07 신고

        근데 APM 설치가 목적이라면 아파치 서버에 익숙하지 않은 경우에는, 다시한번 말씀드리지만 IIS가 훨씬 편리합니다.^^

        여든 도움이 되어서 다행입니다.^^


    • 2016.03.22 13:53

      비밀댓글입니다

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2016.03.22 14:07 신고

        yougetsignal.com에서 IP를 체크한 것과 현재 쓰는 컴퓨터에서 잡힌 IP주소는 서로 다를 수도 있습니다.
        그 이유는 중간에 공유기나 라우터가 개입되어 있는 상황이면 완전 외부에서 판단을 할 때는 공인 IP를 보여주지만, 공유기내에서 사설 IP를 따로 뿌려주므로 실제 컴퓨터 사용시에는 다른 IP를 사용합니다.
        그렇게 되면 외부에서 포트를 열고, 내부에서 방화벽을 해제하든 아무 상관이 없게되지요.
        일단, 중간에 공유기가 끼어있는지 확인을 해보세요.
        외부에서 직접 인터넷 라인을 받는 선을 확인해보시고 거기에 직접 서버를 연결해야 합니다. 정황상 중간에 인터넷 공유기가 끼어있는 상황 같습니다.
        공유기의 DMZ 기능을 이용하거나 중간에 공유기를 빼는 방법으로 이 상황을 해결할 수 있어보입니다.
        그리고 인터넷 속도는 포트의 열림과 닫힘과는 전혀 상관이 없습니다.^^
        일단 해결해보시고 안되면 다시 댓글 달아주세요.^^

    • Favicon of http://jys923.tistory.com BlogIcon 너부리이놈
      2016.05.26 17:34 신고

      여기서 리스닝이면 열려있는거 맞죠?

      http://www.yougetsignal.com/tools/open-ports/ 여기서는 닫쳤다고 나오네요

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2016.05.26 19:04 신고

        원인이 다양한데, 외부에서 포트포워딩이 안된경우라면 방화벽이 열려있어도 외부에서 접속이 불가능 합니다.

        구조를 보자면,

        yougetsignal -> 네임서버를 통해 서버 IP 연결 -> 공유기 (또는 공인 IP)의 해당 포트가 열려있는지 확인 -> 열려 있다면 해당 서버에 방화 벽이 열려 있는지 확인

        하는 절차 입니다. 마지막 과정은 리슨으로 정상적으로 포트가 열렸다고 하더라도, 그 이전 과정에서 문제가 있을 듯합니다.
        일단, 공유기 사용하신다면 포트포워딩이나 twinip가 설정되어 있는지 확인부탁드립니다.^^

    • Favicon of http://jys923.tistory.com BlogIcon 너부리이놈
      2016.05.26 22:48 신고

      잘안되네요

      공유기 없이 모뎀에 직결된 컴퓨터입니다.

      방화벽에서 인바운드 규칙으로 포트를 추가해도 포트가 열리질않네요

      netstat -ano해도 제가 열은 포트가 보이질않습니다.

      어렵네요.

      확인해봐야할데라도 알려주시면 근도움이 될것같습니다.

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2016.05.26 23:01 신고

        그럼 인터넷 공급 업체(ISP)가 어디인가요? 포트에 따라서 ISP에서 직접 막았을 수도 있습니다. 연결하려는 포트와 ISP는 어디인가요?^^

    • dong
      2016.10.06 00:34 신고

      안녕하세요 올려주신 글보고 많은 도움을 받고 있는 1인입니다ㅎㅎ
      한가지 질문이 있어서 올리게 되었습니다. 외부망에서 내부의 웹을 사용하기위해서 포트포워딩을 할려고 하는데요
      알려주신데로 you get signal에 들어가서 포트가 막혀있는지를 확인하였습니다. 확인결과 주요 포트뿐만 아니라 거의 대부분의 포트가(실제로 open 되어있는것은 아직 못찾았습니다,) closed 되어있다고 나왔습니다.
      그래서 ISP에 연락을 해야하는것으로 생각을 하고 있었습니다. 하지만 위에 써주신데로 도스창에 netstat -ano입력하니 여러 포트에서 사용중이라고 나왔습니다. 이포트들을 yougetsignal에 입력하니 closed 되어있다고 나오네요.....
      서로 같은 포트가 아닌건가요??
      감사합니다!! 항상 많은 도움을 받고 있습니다.

      • Favicon of http://studyforus.tistory.com BlogIcon Study For Us clamp2x
        2016.10.06 23:09 신고

        내부에서 열려있는 포트라도 실제로 사용되고 있지 않는 포트를 검색하면 열려있지 않다고 나오는 경우도 있습니다.

        일단, 방화벽이 정상적으로 개방되었는지 확인해보시고, 해당 포트를 사용하고 있는 프로그램이 있는지 생각해보세요.^^


    • 2017.01.12 09:45

      비밀댓글입니다

    • Favicon of http://kimkoonho91.tistory.com BlogIcon 김군호
      2017.04.26 19:56 신고

      감사합니다.

티스토리 툴바