이 포스트에서는 포트포워딩이 무엇인지에 대해 알아보고 실습을 진행한다.
먼저 IP주소에 대해 알아보자.
1. IPv4(IP : Internet Protocol)
- 컴퓨터는 각각 운영체제가 다르다. 프로그램은 각각 구현언어가 다르다.
이렇게 다른 각각이 네트워크상에서 서로 통신하기 위해서는 프로토콜 이라는 통신규약이 필요하다.
- IPv4는 패킷 교환 네트워크 상에서 데이터를 교환하기 위한 Network Layer(OSI 3계층)프로토콜이다.
주로 전송계층의 TCP프로토콜과 함께 TCP/IP라고 부른다.
- 호스트(컴퓨터)에서 호스트까지의 통신을 책임지는 역할을 한다.
쉽게말해 보내는 사람이 편지에 주소를 적고 받는 사람이 편지의 주소를 보고 재대로 온 것인지 확인하는 역할이다.
- 데이터가 정확하게 전달될 것을 보장하지 않고, 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다.
데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장한다.
- IPv4의 주소체계는 3자리씩 4부분 총 12자리수로 구성된다. 각 부분은 0~255(2^8)까지 수로 표현된다.
- IPv4 주소는 32비트로 구성되어 있으며, 현재 인터넷 사용자의 증가로 인해 주소가 모두 소진되었다.
2011년 2월 4일부터 모든 IPv4 주소가 소진되어 할당이 중지되었다.(128비트 주소체계 IPv6가 보편화 되고 있다.)
2. 공인IP / 사설IP / 공유기
2-1) 공인IP - ISP(Internet Service Provider, SKT나 KT같은 통신사들)에서 제공하는 전 세계에서 유일한 IP주소.
2-2) 공유기
원래는 각 호스트마다 ISP에서 IP를 할당하여 인터넷을 사용하였다.
그런데 ISP에서는 추가 IP마다 돈을 내도록 강요하기 때문에, IP를 하나만 사용해서 여러 대 컴퓨터가 인터넷을 할 수 없을까라는 고민 끝에,
라우터의 NAT 기능과 게이트웨이, 허브 및 네트워크 관리 도구, DHCP를 통합하여 나온 물건이 인터넷 공유기이다.
라우터의 NAT(Network Address Translation) - 사설IP를 공인IP로 바꿔준다.
DHCP(Dynamic Host Configuration Protocol) - 공인IP를 각각 호스트에게 적절한(겹치지 않게) 사설IP를 부여한다.
허브 - 네트워크를 분리한다(사설IP를 사용할 수 있게).
2-3) 사설IP -
Class A : 10.0.0.0 ~ 10.255.255.255
Class B : 172.16.0.0 ~ 172.31.255.255
Class C : 192.168.0.0 ~ 192.168.255.255
대역의 IP주소를 말한다. IP주소의 부족으로 인해 만들어졌다.
공유기의 NAT으로 구현된다.
공유기가 만든 네트워크에서 공유기가 할당해준다. 그래서 네트워크마다 똑같은 주소가 있을 수 있다.
3. 포트 / 포트포워딩
3-1) 포트
한대의 컴퓨터에서는 여러 서버를 운영할 수 있다. 웹서버를 운영하고, 데이터베이스 서버를 운영하면서 게임서버를 운영할 수 도 있겠다. 또 이런 각각의 서버들이 여러개씩 있을 수 있다.
하지만 컴퓨터에 부여된 IP주소는 하나이다.
그렇다면 이런 각각의 서비스에 접속하려면 하나의 IP주소로 어떻게 접근해야할까.
포트(port)란 해당 컴퓨터(IP주소)의 어느 서버에 접속할지를 정해주는 기능을 한다. 위의 문제를 해결하는 방법이다.
쉽게말해 문의 역할을 한다. 택배가오면 우리집의 1번문을 열어주고 피자가오면 2번문을 열어주는 개념이다.
여기서 문 - 포트, 1번2번 - 포트번호, 택배피자 - 각각 다른 요청 이라 할 수 있다.
주요 포트번호
- ftp - 20,21
- ssh - 22
- 텔넷 - 23
- smtp - 25
- http - 80
- https - 443
- mysql - 3306
- redis - 6379
3-2) 포트포워딩
위에서 설명한 바와 같이, 공유기에서는 사설ip를 받아 사용하게 된다.
하지만 공유기에는 여러대의 호스트, 예를들면 컴퓨터나 스마트폰, 들이 연결 되어 있을 것이다.
컴퓨터 1, 컴퓨터 2, 컴퓨터 3, 컴퓨터 4가 하나의 공유기에 연결되어 있다고 치자.
그리고 컴퓨터 1에서 http(80번)서비스를 제공하고있다.
외부에서 이 네트워크로 접근하기 위해서는 공인IP로 접근할 것이다.
하지만 컴퓨터 1,2,3,4 각각 80번포트는 있을 것이며, 어떤 컴퓨터의 80번 포트로 들어가야 할까?
이를 설정해주는 것이 포트포워딩이다.
공유기설정에서는 외부에서 특정 포트로 요청이 들어오면 특정 호스트의 포트로 들어가게 설정 할 수 있다.
지금부터 이것을 실습을 통해 알아보자.
4. 포트포워딩 실습
4-0) 준비물
- 공유기와 그 네트워크
- 서비스하는 호스트 컴퓨터
- 외부에서 접속하기 위한 기기(ex) 스마트폰)
- 공유기설정에 접속하기 위한 계정
- 공유기별 설정페이지 & 초기아이디, 암호
https://studyforus.tistory.com/127
나는 bitnami WAMP를 사용하여 Apache Web Server을 running시켰다.
4-1) 내 서비스호스트가 접속한 네트워크의 공인IP 주소 알아내기
네이버에 '내 IP주소 확인'을 검색하면 바로 나온다.
네이버는 우리 네트워크를 외부에서 바라보기 때문에 외부ip주소를 보여준다.
4-2) 공유기 설정 접속
나는 ipTIME을 이용하였으며 공유기설정주소는 192.168.0.1이었다.
아이디와 암호를 입력하고 로그인하자.
4-3) 관리도구로 들어가서 [고급설정] - [네트워크 관리] - [내부네트워크 정보] 탭으로 들어가서 내 서비스호스트가 연결되어 있는지 확인한다.
4-4) [고급설정] - [NAT/라우터 관리] - [포트포워드 설정]에서 포트포워딩 설정을 해준다.
정의된 리스트 - 서비스호스트가 구동하고 있는 서비스는 웹서비스이므로 HTTP
내부 IP주소 - 서비스호스트의 내부IP 주소
외부포트 - 외부에서 접속할 포트번호
내부포트 - HTTP서비스이므로 80번 포트
한마디로 공인IP의 외부포트번호로 접속한 포트는 사설IP의 내부포트번호로 포트포워딩 시킨다는 말이다.
4-5) 외부 호스트로 접속을 시도한다.
나는 위 단계에서 7777로 접속을 시도하겠다고 선언했기에 핸드폰으로
공인IP:7777로 접속을 시도한다.
정상적으로 서비스호스트로 접속하고 있음을 알 수 있다.
'서버 > 서버' 카테고리의 다른 글
Query string vs Path Variable (0) | 2020.08.13 |
---|---|
HTTP (0) | 2020.08.13 |
API (0) | 2020.08.13 |
Web Server와 DB를 분리하는 이유 (0) | 2020.08.05 |
데몬이란 ? (0) | 2020.08.04 |