웹어플리케이션(Tomcat)/트러블슈팅

Basic 트러블슈팅 가이드 - 외부에서 웹서버 접속이 안되는 경우 단계별 체크 포인트

너l모 2024. 1. 14. 21:21
반응형

※ 업무하면서 습득한 내용들을 정리해 놓은 포스팅입니다 :P 추가로 궁금하신 점은 댓글로 남겨주시고 필요한 자료 있으면 요청주세요! 잘못된 내용이 있으면 고쳐주시면 감사하겠습니다. 자료 퍼가실 때는 출처 남겨주세요!


 ο 목차

     


    ※ 코드 보는 방법 참고

    ㅇ 달러 기호($)가 있는 경우 -> 리눅스 터미널에서 CLI 명령어 입력

    ㅇ "=#" 기호가 있는 경우 -> psql 쉘에서 명령어 입력

    ㅇ 꺽쇠가 하나 있는 경우(>) -> 윈도우 명령 프롬프트(cmd)에서 명령어 입력

    ㅇ 꺽쇠가 세개 있는 경우(>>>) -> python 쉘에서 명령어 입력


     

    안녕하세요, 네모입니다 :)

     

    최근 이직을 하면서 웹서버 쪽 작업을 다룰 일이 많아져서

    웹서버 관련 'XX'가 안되는 경우에 대한 트러블슈팅 가이드를 정리해보려고 합니다. 

     

    첫 번째로 다뤄볼 내용은 외부에서 내가 만든 웹서버로 접속이 안 되는 경우 단계별 체크 리스트 입니다

     

    도대체 왜 안 되는 것이며, 대체 어떤 것부터 확인해야 하는 걸까요?ㅎㅎ

    아래 트러블슈팅 가이드에 따라 천천히 체크 포인트를 짚어보며 문제를 풀어봐요!

     

    1. 체크 포인트 개요

    일반적으로 외부에서 사용자가 웹서버에 접근하려면 아래와 같은 체크 포인트들을 확인하고 정상 여부를 확인해야 합니다. 체크 방향은 로컬 웹서버 -> 외부 환경 순서로 확인하는게 좋습니다.  

    1) 서비스 포트 번호 및 활성화 여부 - 데몬 정상 동작 여부

    (1) 서비스 포트 활성화 확인 명령어

    (윈도우 서버) 

    > netstat -ano |findstr 서비스포트

     

    (리눅스 서버)

    $ sudo netstat -ano |grep 서비스포트

     

    - 결과창에서 서비스 포트로 LISTEN 중인지 확인

     

    (2) 서비스 중인 데몬 로그를 확인하여 오류 없이 정상 동작중인지 확인

    ※ 별도의 설정을 하지 않았다면 각 웹서버 $HOME 디렉터리의 log, logs 디렉터리에 데몬 로그가 저장됨

     

    2) 서버 방화벽 확인

    윈도우든 리눅스든 outbound 방화벽 정책은 기본적으로 허용되어 있으나, inbound 방화벽 정책은 기본적으로 차단하고 필요한 경우 화이트리스트로 허용해주는 정책을 가지고 있습니다.

    ※ outbound 정책 : 웹서버 -> 외부 인터넷 방향 요청

        inbound 정책 : 외부 인터넷 -> 웹서버 방향 요청

     

    서버 방화벽에서 서비스 포트 접근 허용 작업을 해주지 않았다면 inbound 정책으로 해당 서비스 포트 허용 정책을 추가해줍니다.

     

    3) 네트워크 방화벽 확인(방화벽이 있는 경우)

    서버와 외부 인터넷 사이에 방화벽이 존재하는 경우 방화벽에서 inbound 정책으로 웹서버 IP와 서비스 포트에 대해 허용 정책을 추가해주어야 합니다.

     

    방화벽 정책이 추가되어 있더라도 접속이 안 되는 경우 네트워크 쪽 방화벽 로그에서 해당 접속이 허용 되었는지 더블체크를 하여 확인해줍니다. 

     

    방화벽 정책도 은근 복잡하고 사람이 손으로 추가하는 것이기 때문에 휴먼 에러가 발생할 확률이 있습니다. 그래서 말씀드렸듯이 로그를 통해 좀 더 확실히 체크포인트를 짚고 넘어가는 것이 좋습니다(from. 찐경험)

     

    4) 공인 IP 확인

    외부 사용자가 해당 웹서버에 접속하기 위해서는 공인 IP가 필요합니다.

    웹서버가 사설 IP를 사용하는 경우 NAT를 통해 공인 IP로 변환 해주어야 외부에 있는 사용자가 웹서버에 접근할 수 있습니다.

     

    ※ 사설 IP 대역 

    (IPv4)
    10.0.0.0 ~ 10.255.255.255(10.0.0.0/8)
    172.16.0.0 ~ 172.31.255.255(172.16.0.0/12)
    192.168.0.0 ~ 192.168.255.255(192.168.0.0/16)
    (IPv6)
    fc00::/7

     

    웹서버에 공인 IP가 부여되어 있는지 확인하고 부여되어 있지 않다면 공인 IP를 부여해주세요. 

     

    5) 도메인 IP 매핑 확인

    도메인을 사용하여 웹서버에 접속하기 위해서는 도메인을 등록하는 작업이 필요합니다.

    (만약 도메인을 사용하지 않고 IP로 직접 접속하는 경우라면 이 부분은 넘어가셔도 좋습니다.)

     

    도메인을 통해서 웹서버 서비스를 제공하는 경우 해당 도메인이 등록되어 있는지 확인하고, 등록 과정이 누락되었으면 도메인을 등록해주세요. 

    ※ 도메인 등록 서비스 제공 사이트 : 카페24, 가비아, 후이즈 등

     

    도메인 등록시 공인 IP로 등록해야 하며 혹시 이 부분이 사설 IP로 매핑되어 있지는 않은지 더블체크 해줍니다.

     

    6) 목적지 IP 및 포트로 통신 확인

    (1) 사용자의 인터넷 환경이 정상인지 확인

    - 다른 사이트는 접속이 잘 되는지, 네트워크 정보가 바르게 입력되어 있는지 등을 확인

     

    (2) 목적지 IP 혹은 도메인으로 서비스 포트 통신이 되는지 확인

    (윈도우서버)

    powershell을 열고 아래 명령어 입력

    > telnet 도메인[혹은 IP] 포트

    - 정상적으로 접근되는 경우 접속창으로 진입하게 됨(서비스 포트 정상)

    - Ctrl + ] 입력하여 접속창 빠져나오기

     

    (리눅스 서버)

    터미널에서 아래 명령어 입력

    $ telnet 도메인[혹은 IP] 포트

    - 정상적으로 접근되는 경우 접속창으로 진입하게 됨(서비스 포트 정상)

    - Ctrl + ] 입력하여 접속창 빠져나오기

     

    사용자 단에서 telnet 테스트를 했는데 통신이 안 되는 경우 1) ~ 5) 과정 중 누락된 부분이 있는지 다시 한번 확인 해주시면 됩니다. 

     

    만약 사용자 단에서 telnet 테스트를 했는데 정상적으로 접속창으로 진입이 되는 경우 2) ~5) 번 과정은 문제가 없는 것이라 볼 수 있기 때문에 웹서버 데몬 쪽에 집중해서 오류가 있는지 확인하고 트러블슈팅을 해주시면 됩니다 :)

     

    작업을 하다보면 시야가 좁아지기 때문에 차분히 단계적으로 트러블슈팅을 하기가 쉽지 않습니다. 

     

    알려드린대로 찬찬히 체크포인트를 짚어가다보면 의외의 포인트에서 문제 해결의 실마리가 있을지도 몰라요 ㅎㅎ

    오늘도 도움 되셨길 바라며 다음에 좀 더 좋은 포스팅으로 찾아올게요

     

     

    봐주셔서 감사합니다:)


    ※ 좋아요와 구독은 큰 힘이 됩니다. 감사합니다. 

    반응형