이 영역을 누르면 첫 페이지로 이동
Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

페이지 맨 위로 올라가기

Coding Groot

코딩 블로그

리눅스에서 호스팅 중인 서비스가 외부로부터 접속이 안 될 때 문제 확인 방법

  • 2022.11.04 01:07
  • DevOps, Infra/Network
글 작성자: Coding Groot

친구가 호스팅 한 주피터 노트북이 로컬에서는 접속이 되는데 인터넷 공인 IP로는 접속이 안 됐습니다.
친구를 도와주면서 제시한 절차를 한번 공유봅니닷.

내가 제시한 진단 방법은 다음과 같다.

1. tcpdump로 패킷이 들어오고 나가는지 확인한다

tcpdump를 실행한채로 외부에서 접속해본다.

어떤 포트로 패킷이 들어오고 나가는지 캡처하려면 sudo tcpdump port 포트 명령어로 실행한채로 기다리고 있으면 된다.
캡처한 파일을 내보내서 와이어샤크에서 확인할 수도 있다.

참고. 내 기억으로 tcpdump가 인바운드는 iptable보다 우선이고 아웃바운드는 아니였다 
 - https://serverfault.com/questions/233302/will-tcpdump-see-packets-that-are-being-dropped-by-iptables

CASE 1. 패킷이 들어오고 내 서버 밖으로 잘 나가면

서버 상에서 돌아가는 애플리케이션 탓일 가능성이 높다.
애플리케이션 설정을 확인해본다.

CASE 2. 패킷이 들어오는데 내 서버 밖으로 안 나가면

방화벽이나 서버 어플리케이션이 listen하지 않고 있는 것이다.

첫 번째로 방화벽에서 막혔는지 확인한다.

  • iptable 설정을 출력해서 해당 포트와 아이피가 allow 되어있는지 확인해본다.
  • (우분투 한정) ufw 확인
    • 원인인지 모르겠으면 일단 꺼보자

두 번째로 서버 어플리케이션 설정 확인한다.

간단한 웹서버를 띄워서 외부에서 접속되는 지 확인해보자.
ex. python으로 간단하게 띄울 수 있다. python3 -m http.server 포트

이게 접속이 된다면 애플리케이션 설정을 잘못한 것이다.

CASE 3. 패킷 자체가 아예 안 찍히면

컴퓨터로 패킷이 도달하지 못했다는 것이다.

99% NAT나 DNS같은 외부적인 문제이다.

tcpdump가 찍힐 때까지 공유기 포트포워딩이나 DNS 설정을 확인하고 수정해본다.

혹시나 유동IP를 쓰면 공인IP가 바뀌지 않았는지 확인한다.

2. 애플리케이션이 listen 중인지 확인해보자.

이런 명령어들로 확인해보자.

  • sudo fuser -vn tcp 포트
  • sudo netstat -tnlp

내가 띄운 포트로 아무것도 안 떠있다면 애플리케이션이 아예 listen하지 않고 있는 것이다.

애플리케이션 설정을 확인하거나 다시 실행해서 띄워본다.


암튼 이거면 대부분 문제 해결 가능하다고 생각했는데 해결이 안 돼서 슬펐다.

로컬에서는 잘 접속됐고 0.0.0.0/0 대상으로 잘 listen하고 있었다. 공인 아이피로 접속하면서 tcpdump로 패킷이 오는 것도 확인했다.

와이파이의 포트포워딩도 잘되어 있었고 공인 아이피도 맞았고 ufw도 껐었고 주피터 노트북 설정도 잘 되어 있었다.

간단히 웹 서버로 띄워서 외부에서 접속해서 잘 접속되나 테스트할 때 tcpdump로 패킷은 오는 것은 확인했다. 그런데 외부에 위치한 브라우저는 페이지를 못 가져왔다. iptable 문제인 것 같긴한데 정확한 원인은 못 찾았다.

원인이 뭘까용...? ㅠ

반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • TLS 1.3 with Wireshark

    TLS 1.3 with Wireshark

    2025.03.20
  • Email Protocol 비교 :: POP3, IMAP, SMTP

    Email Protocol 비교 :: POP3, IMAP, SMTP

    2020.03.21
  • DigitalOcean으로 네트워크 실습용 서버 만들기

    DigitalOcean으로 네트워크 실습용 서버 만들기

    2020.02.29
다른 글 더 둘러보기

정보

Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

  • Coding Groot의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 소개
  • 블로그 저작권

카테고리

  • 분류 전체보기 (184)
    • Git (23)
      • Git Tutorial (9)
      • Git Note (7)
      • Git Lecture (7)
    • Programming Language (1)
      • C (2)
      • C Sharp (5)
      • Java (4)
      • JavaScript (7)
      • Julia (5)
      • Python (4)
    • Programming (8)
      • Algorithm (2)
      • Compiler (5)
      • Data Structure (0)
      • Web (12)
      • NestJS (2)
    • DevOps, Infra (36)
      • Apple (6)
      • Cloud (15)
      • Database (1)
      • Network (4)
      • Linux (8)
    • Game Programming (11)
      • Unity Tutorial (5)
      • Unity Note (6)
    • Hardware Design (1)
      • Digital Circuit (1)
    • Note (49)
      • Coffee (2)
      • Retrospect (15)
      • Reading List (14)
    • Mathematics (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 회고
  • javascript
  • git
  • 한빛미디어
  • tutorial
  • Github
  • aws
  • 서평
  • 전체 보기…

정보

Coding Groot의 Coding Groot

Coding Groot

Coding Groot

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • GitHub
  • SlideShare
  • 유니티 2020 수업
  • TIL Blog
  • 모도코

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. Copyright © Coding Groot.

티스토리툴바