-
Notifications
You must be signed in to change notification settings - Fork 0
IP Port forwarding, tunneling, Set domain
네트워크 플로우
-
서버-클라이언트 모델
- 서버: 서비스 제공자
- 클라이언트: 서비스 요청자
- 양방향 통신으로 서비스 제공
-
로컬 네트워크 구성
- 공유기를 통한 무선 네트워크 구성
- 여러 기기의 인터넷 공유
- 내부 네트워크 보안 관리
- iPTime 공유기를 활용한 저비용 서버 운영 가능
- 서비스 중단이 적어 안정성이 우수함
- 직접 관리가 가능하여 즉각적인 대응 가능
| 구분 | 공인 IP | 사설 IP |
|---|---|---|
| 예시 | 222.109.62.42 | 192.168.0.4 |
| 특징 | 전 세계에서 유일함 | 공유기 내에서만 유일 |
| 할당 주체 | ISP에서 할당 | 공유기에서 할당 |
| 접근성 | 외부에서 접근 가능 | 내부에서만 접근 가능 |
| 비용 | 유료 | 무료 |
| 변경 가능성 | 유동적으로 변경됨 | 고정 설정 가능 |
-
대표번호 시스템
- 공인 IP = 회사 대표번호
- 사설 IP = 내선번호
- 중계자(공유기) = 전화교환원
-
작동 방식
- 외부인이 대표번호로 전화
- 교환원이 해당 부서 내선번호로 연결
- 내부 직원들은 내선번호로 직접 통화
- IP 주소 = 전화번호
- 도메인 이름 = 연락처에 저장된 이름
- DNS = 전화번호부 시스템
- 예시: google.com을 입력하면 자동으로 IP 주소로 변환
ping 날려보기
구글 ip로 접속
- 클라이언트의 요청 과정
- 사용자: 도메인 이름으로 접속 시도
- DNS: IP 주소 검색 및 변환
- 서버: 해당 IP로 연결 및 응답
- whatismyipaddress.com으로 현재 IP 확인 가능
- IPv4는 버전4를 의미하는 주소 체계
- DHCP를 통한 자동 IP 할당 시스템
- 외부에서 내부 네트워크의 특정 서비스로 접근 가능하게 하는 기술
- 공유기에서 특정 포트를 내부 IP로 연결
- 예시: 웹서버 운영 시 80포트를 내부 서버로 연결
- 공개된 네트워크를 통해 가상의 사설 통로 구성
- 데이터를 캡슐화하여 안전하게 전송
- VPN이 대표적인 터널링 기술
- 변동하는 IP 주소를 고정된 도메인에 자동으로 매핑
- 유동 IP 환경에서도 안정적인 서버 운영 가능
- 정기적으로 IP 변경 사항을 DNS 서버에 업데이트
본 실습은 iptime에 LAN을 통해 접속해서 라즈베리파이 주소를 포트 포워딩하는 과정을 담았습니다.
또한 공유기에 접속한 라즈베리파이의 IP 주소를 터널링하고, 도메인을 설정해서 외부에서 접근 가능하도록 환경설정합니다.
- ngrok으로 터널링 및 로컬과 도메인을 연결시킬 수 있다.
- https://ngrok.com/에 접속하여 사용자 계정을 만듭니다.
- 로그인 한 후 Authtoken이 생성됬는지 확인
- 윈도우에서 ngrok 설치
관리자 권한으로 프롬프트 실행
choco install ngrok
ngrok config add-authtoken {token_value}
- 위 명령어로 윈도우 환경에서 ngrok을 설정한다.
- 라즈베리파이에서 ngrok 설치
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을 설정한다.
http://192.168.0.1/을 통해 iptime 설정에 접속할 수 있음
- DDNS 설정
DDNS 설정을 통해 192.168.0.1을 입력하지 않고 사용자가 지정한 이름으로 iptime 설정 접속 가능함.
- LAN을 iptime과 라즈베리파이에 연결함!
- 라즈베리파이가 192.168.0.2로 포트 번호가 할당된 상황
-
- raspberrypi 포트 포워딩 규칙을 지정
- 외부 포트로 라즈베리파이에 접근 가능함.
터널링은 LAN 연결 없이 핫스팟 와이파이로도 작동함!
ngrok http 1880
localhost:1880 주소를 터널링하여 https://764b-14-51-95-82.ngrok-free.app/로 접근 가능
(정보를 확인하려면 클릭하세요!)
ngrok http 80
80 포트에 해당하는 페이지가 없어서 접속불가함. 대신 자주 사용하던 node-red 포트인 1880으로 접속해봄 결과는 여기
도메인 네임 : crab-evolving-dragon.ngrok-free.app
- 도메인 네임이 생성됨! 이걸 활용해서 도메인을 활용한 터널링을 진행해보겠다.
ngrok으로 터널 설정
ngrok config edit
터널 설정 실행하기
ngrok start sun_tunnel
crab-evolving-dragon.ngrok-free.app 으로 접속 가능해짐.
- node-red 포트 포워딩 규칙을 지정
- 같은 와이파이 연결 없이, 외부 포트에서 ip 주소로 모바일 접속
접속 주소: http://192.168.0.2:1880
라즈베리파이가 실행중일때, 로컬 환경이 아닌 외부에서 내 서버로 접속할수 있는 주소는 위에 세 종류이다.
그중 특이한게 764b-14-51-95-82인데 내가 지정하지 않은 ngrok이 지정해준 도메인이다... 궁금해서 알아보니
764b: ngrok이 무작위로 생성한 고유 식별자, 14-51-95-82: 내 라즈베리파이의 공인 IP 주소를 하이픈(-)으로 구분한 형태 라고한다.
공인 ip를 보고서에 남기는게 보안에 문제가 될지는 잘 모르겠다. 인공지능은 ip 노출보다 보안 설정이 더 중요하다고 답변해줬다.
참고자료