Skip to content

IP Port forwarding, tunneling, Set domain

김선영 edited this page Nov 11, 2024 · 50 revisions

보고서 구성


네트워크 시스템

map

네트워크 플로우

0. 네트워크 통신 구조

  1. 서버-클라이언트 모델

    • 서버: 서비스 제공자
    • 클라이언트: 서비스 요청자
    • 양방향 통신으로 서비스 제공
  2. 로컬 네트워크 구성

    • 공유기를 통한 무선 네트워크 구성
    • 여러 기기의 인터넷 공유
    • 내부 네트워크 보안 관리

1. 홈 서버 운영의 이점

  • iPTime 공유기를 활용한 저비용 서버 운영 가능
  • 서비스 중단이 적어 안정성이 우수함
  • 직접 관리가 가능하여 즉각적인 대응 가능

2. IP 주소 체계 이해

2.1 IP 주소 비교

1
구분 공인 IP 사설 IP
예시 222.109.62.42 192.168.0.4
특징 전 세계에서 유일함 공유기 내에서만 유일
할당 주체 ISP에서 할당 공유기에서 할당
접근성 외부에서 접근 가능 내부에서만 접근 가능
비용 유료 무료
변경 가능성 유동적으로 변경됨 고정 설정 가능

2.2 실생활 비유: 회사 전화시스템

  1. 대표번호 시스템

    • 공인 IP = 회사 대표번호
    • 사설 IP = 내선번호
    • 중계자(공유기) = 전화교환원
  2. 작동 방식

    • 외부인이 대표번호로 전화
    • 교환원이 해당 부서 내선번호로 연결
    • 내부 직원들은 내선번호로 직접 통화

3. 도메인 네임 시스템

3.1 전화번호부 비유

  • IP 주소 = 전화번호
  • 도메인 이름 = 연락처에 저장된 이름
  • DNS = 전화번호부 시스템
  • 예시: google.com을 입력하면 자동으로 IP 주소로 변환
3

ping 날려보기

3

구글 ip로 접속

3.2 실제 작동 방식

  1. 클라이언트의 요청 과정
    • 사용자: 도메인 이름으로 접속 시도
    • DNS: IP 주소 검색 및 변환
    • 서버: 해당 IP로 연결 및 응답

4. IP 주소 확인 및 관리

  • whatismyipaddress.com으로 현재 IP 확인 가능
image
  • IPv4는 버전4를 의미하는 주소 체계
  • DHCP를 통한 자동 IP 할당 시스템

5. 고급 네트워크 기술

5.1 포트포워딩 (Port Forwarding)

31
  • 외부에서 내부 네트워크의 특정 서비스로 접근 가능하게 하는 기술
  • 공유기에서 특정 포트를 내부 IP로 연결
  • 예시: 웹서버 운영 시 80포트를 내부 서버로 연결

5.2 터널링 (Tunneling)

  • 공개된 네트워크를 통해 가상의 사설 통로 구성
  • 데이터를 캡슐화하여 안전하게 전송
  • VPN이 대표적인 터널링 기술

5.3 DDNS (Dynamic DNS)

  • 변동하는 IP 주소를 고정된 도메인에 자동으로 매핑
  • 유동 IP 환경에서도 안정적인 서버 운영 가능
  • 정기적으로 IP 변경 사항을 DNS 서버에 업데이트

네트워크 주소 실습

세부 목차 📑


1. 개요 📝

본 실습은 iptime에 LAN을 통해 접속해서 라즈베리파이 주소를 포트 포워딩하는 과정을 담았습니다.

또한 공유기에 접속한 라즈베리파이의 IP 주소를 터널링하고, 도메인을 설정해서 외부에서 접근 가능하도록 환경설정합니다.

2. ngrok 구성 🛠️

  • ngrok으로 터널링 및 로컬과 도메인을 연결시킬 수 있다.
  1. https://ngrok.com/에 접속하여 사용자 계정을 만듭니다.
  • 로그인 한 후 Authtoken이 생성됬는지 확인
  1. 윈도우에서 ngrok 설치

관리자 권한으로 프롬프트 실행

choco install ngrok
ngrok config add-authtoken {token_value}
  • 위 명령어로 윈도우 환경에서 ngrok을 설정한다.
  1. 라즈베리파이에서 ngrok 설치
19

wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-arm64.tgz
tar xvzf ngrok-v3-stable-linux-arm64.tgz
sudo mv ngrok /usr/local/bin
ngrok config add-authtoken {token_value}
  • 위 명령어로 라즈베리파이 os 환경에서 ngrok을 설정한다.

3. iptime 구성 🔧

http://192.168.0.1/을 통해 iptime 설정에 접속할 수 있음

  • DDNS 설정
11

DDNS 설정을 통해 192.168.0.1을 입력하지 않고 사용자가 지정한 이름으로 iptime 설정 접속 가능함.

Fixed Error

(정보를 확인하려면 클릭하세요!)
6
  • 위와 같은 오류가 떴을때 해결법:
8
  • iptime 펌웨어 업그레이드를 하면 해결된다.

라즈베리파이

19
  • LAN을 iptime과 라즈베리파이에 연결함!
32
  • 라즈베리파이가 192.168.0.2로 포트 번호가 할당된 상황

포트 포워딩

23
    1. raspberrypi 포트 포워딩 규칙을 지정
    • 외부 포트로 라즈베리파이에 접근 가능함.

결과

21 22

터널링

터널링은 LAN 연결 없이 핫스팟 와이파이로도 작동함!

ngrok http 1880
20

localhost:1880 주소를 터널링하여 https://764b-14-51-95-82.ngrok-free.app/로 접근 가능

27

Fixed Error

(정보를 확인하려면 클릭하세요!)
ngrok http 80
17

80 포트에 해당하는 페이지가 없어서 접속불가함. 대신 자주 사용하던 node-red 포트인 1880으로 접속해봄 결과는 여기

4. 도메인 생성 ✨

30

도메인 네임 : crab-evolving-dragon.ngrok-free.app

  • 도메인 네임이 생성됨! 이걸 활용해서 도메인을 활용한 터널링을 진행해보겠다.

ngrok으로 터널 설정

ngrok config edit
27

터널 설정 실행하기

ngrok start sun_tunnel
26

crab-evolving-dragon.ngrok-free.app 으로 접속 가능해짐.


5. 모바일 접속 📱

23
  • node-red 포트 포워딩 규칙을 지정

포트포워딩 모바일 접속 결과

26
  • 같은 와이파이 연결 없이, 외부 포트에서 ip 주소로 모바일 접속

접속 주소: http://192.168.0.2:1880


임시 도메인 터널링 모바일 접속 결과

26

접속 주소: https://764b-14-51-95-82.ngrok-free.app/


도메인 터널링 모바일 접속 결과

26

접속 주소: http://crab-evolving-dragon.ngrok-free.app

6. 결론 🎯

라즈베리파이가 실행중일때, 로컬 환경이 아닌 외부에서 내 서버로 접속할수 있는 주소는 위에 세 종류이다.

그중 특이한게 764b-14-51-95-82인데 내가 지정하지 않은 ngrok이 지정해준 도메인이다... 궁금해서 알아보니

764b: ngrok이 무작위로 생성한 고유 식별자, 14-51-95-82: 내 라즈베리파이의 공인 IP 주소를 하이픈(-)으로 구분한 형태 라고한다.

공인 ip를 보고서에 남기는게 보안에 문제가 될지는 잘 모르겠다. 인공지능은 ip 노출보다 보안 설정이 더 중요하다고 답변해줬다.


참고자료

Clone this wiki locally