Lecture | Home Server

SURI·2021년 9월 5일
0

개발에 대한 A to Z 

목록 보기
9/10

🎈 수업소개


전화기에 전화번호가 필요하듯, 인터넷 위에 있는 컴퓨터가 통신을 위해서는 ip주소가 필요하다. 그에 따른 IPv4 통신 규칙을 만들었고, 42억개의 주소를 표현할 수 있었다. 하지만! web, smartphone, cloud computing, IOT 등으로 인터넷에 연결되는 컴퓨터의 숫자가 기하급수적으로 증가하기 시작한다.
42억개의 IP주소가 동이 나고 있고, 새로운 IPv6가 등장한다. 앞으로 1,000년 후까지도 너뜬하게 사용할 수 있는 규약이다. 하지만 아직까지는 기존의 주소체계를 아껴써야 한다. 그 노력중에 하나가 공유기다. 하나의 아이피를 여러개의 컴퓨터가 나눠쓸 수 있다. 공유기에 연결된 컴퓨터를 웹서버로 사용해보자.

👩‍🏫


1. 공유기(라우터)

ip adrress

인터넷을 사용하기 위해서는 이 주소를 가지고 있어야 한다. 그래야 다른 컴퓨터와 통신을 할 수 있다. 요청과 응답을 할 수 있다.

통신사와 하나의 회선을 계약하고 공유기를 사용한다. 혼자 떨어져 있는 구멍에 WAN(광역네트워크), 같이 붙어 있는 구멍들에 LAN(지역네트워크)이라고 적혀있을 것이다. 통신사와 계약한 회선은 WAN에 꽂혀있을 것이다. 통신사로 발급받은 IP주소는 공유기에게 부여된다. 각각의 장치는 LAN에 뚫려있는 구멍들에 연결이 된다. 스마트폰 같은 무선 기기는 안테나를 통해 연결된다.

공유기를 중심으로 지역네트워크가 생성된다. 동시에 공유기는 전세계 가장 거대한 네트워크인 인터넷(광역 네트워크)에 소속되어 있다. 공유기는 WAN와 LAN 두 개의 네트워크 사이에 있는 교환원 같은 기계다.

각각의 장치들이 공유기에 연결되는 순간 ip주소를 부여받는다. 공유기 또한 내부 네트워크의 소속으로 ip주소를 부여받는다. 내부 네트워크 안에서의 라우터의 ip주소를 Gateway address 혹은 Router address라고 부른다. 지역 네트워크 안에서의 장치들이 부여 받은 ip 주소는 private IP address라고 부른다. WAN 네트워크 안에서 공유기로 접속할 때의 ip주소는 public IP address라고 부른다. 대표번호와 내선번호의 관계라고 생각하면 된다.

IPv4 주소 체계는 42억개가 있는데, 그림에 표 안에 있는 숫자들은 사설 ip로 쓰기로 약속을 해 놓은 거다.

2. NAT

NAT(Network Address Translation)이라는 기술 덕분에 사설(private) ip를 쓰고 있는 장치가 외부의 인터넷에 접속할 수 있게 된다. 그 과정을 살펴보자.

나는 192.168.0.4 사설 ip 주소를 가지고 있고, 위키피디아에 접속하고 싶은 상황이다.

  1. Gateway address를 가진 머신, 즉 공유기에게 신호를 보낸다. 공유기는 내부 네트워크 안에서 해결할 수 있는 요청이 아님을 파악한다. 이 때, 2가지의 일을 한다.
  • 이 요청이 192.168.0.4 컴퓨터의 요청이이라는 것을 기록한다.
  • 사설 ip주소는 외부에서는 접속을 하지 못하므로, 응답을 받을 수 없다. 이 때, NAT가 요청하는 데이터의 내용을 변경한다. ip 주소를 변경하는 거다. private -> public으로 변경하고 위키피디아에 요청을 보낸다.
  1. 위키피디아가 요청한 작업을 처리하고 응답할 때, public으로 응답한다. 공유기는 기억해둔 것을 통해 데이터를 요청한 곳으로 보내준다.

위의 상황은 클라이언트일 때의 상황이다. 그렇다면 사설 아이피를 홈서버로 사용하기 위해서는 어떻게 해야할까? 같은 네트워크에 있지 않은 사용자가 장치에 어떻게 접속할 수 있게 할까?

3. IP 주소 알아내기

우리 컴퓨터의 ip주소를 확인하는 방법과 지역네트워크의 입구/교환원에 해당하는 라우터의 Gateway address를 알아내는 방법을 알아보자. 그리고 마지막으로 결과적으로 우리의 네트워크가 외부에서는 어떤 ip address로 보여지는가, public ip address를 확인하는 방법도 알아보자. 운영체제별로 방법은 조금씩 달라진다. 우선, 제어판을 통해 네트워크 및 공유센터에 들어간다.

  • Ipv4 Address : (해당 머신의) private address
  • Default Gateway : gateway address

라우터 주소를 통해 관리자에 접속하면,

  • 라우터의 동작방법을 세팅을 할 수 있게 된다.
  • WAN 상에서 라우터의 아이피가 어떻게 되는가? 우리의 네트워크가 결과적으로 갖는 public IP address가 무엇인지 확인해본다. 이건 구글링을 통해서 what is my ip address?로 검색해도 알아낼 수 있다.
  • 로컬 네트워크에 접속된 모든 디바이스들은 모두 공통된 public address를 가지고 있다는 걸 확인해볼 수 있다.

4. port

하나의 컴퓨터에 게임/채팅/미디어 등 다양한 형태의 서버들이 설치되어 있을 수 있다. 특정 컴퓨터에 접속해서 여러 서버들을 식별하기 위해서 port 번호를 사용할 수 있다. URl 형식을 보면 통신규약: IP/도메인네임 :port port 번호가 들어간다는 걸 알 수 있다. 웹에서 80은 생략되는 것 같다.

포트번호에는 0번부터 65535번까지 숫자가 매겨져 있다. http는 웹페이지를 주고 받을 때 사용하는 통신규약이다. 웹은 http 프로토콜을 이용하는 통신시스템이다. 80번은 웹이 사용하도록 정해져 있다. 0 - 1023 포트는 이렇게 Well-known port라고 미리 예약된 포트이다. 내가 만든 서버가 well-known port에 들어간다는 것은 대단한 일이다.

컴퓨터에 웹서버를 설치하면 80번에 연결되도록 약속되어 있다. 연결된다는 의미로 리스닝한다는 표현을 한다. 만약 컴퓨터에 서버를 하나 더 설치하게 되면, (아무데나 설치해도 관계는 없지만) 관습적으로 8000 혹은 8080포트에 설치하게 된다.

5. port-forwarding

내가 설치한 서버에 접속하게 하기 위해서 public ip 주소를 알려주는데, 거기에 접속했을 때 내 사설 아이피를 어떻게 찾아 접속할 수 있을까? port 번호를 이용한다.

공유기에 port-forwarding 설정을 하면 된다. 라우터가 안내자 역할을 한다.

public ip address : 8081로 접속했을 때, private ip address : 80으로 넘겨주는(접속한 것과 동일한) 라우터 설정을 했다. 로컬 네트워크에 없는 컴퓨터에서도 public ip address : port를 통해서 접속을 할 수 있게 된다. 하지만 ip주소를 외부에 유출하는 것은 보안에 문제가 있을 수 있기 때문에 감안해야 한다.

만약 포트 번호도 없이 그냥 접속할 수 있게 하고 싶다면? http는 default port가 80이므로 외부포트를 80으로 설정하면 된다.

라우터로 들어온 포트번호가 무엇이냐에 따라서 내부 네트워크에 있는 특정 머신의 특정 포트로 포워딩을 할 수 있다.

공용네트워크에 대한 방화벽 설정을 해지하니까, 연결이 되었다. 이제 public ip address를 통해서 나와 다른 네트워크에 있는 사용자도 private ip address에 접속할 수 있게 되었다.

6. Dynamic vs Static

ISP(Internet Service Provider, 통신사)와 계약을 맺어서 인터넷을 연결하면 ip주소가 생긴다. 집집마다 ip주소를 주게 되면 턱없이 부족하기 때문에, 유동 ip주소를 사용한다. 속된 말로 돌려막기를 한다. 가령, 오랫동안 인터넷을 사용하지 않게 되면 ip주소를 회수한다. 그리고 다음에 새로운 ip를 주게 된다. 결국, ip가 계속 바뀌게 된다. 이런 방식으로, 거대한 가입자수를 관리한다.

하지만 유동 ip 주소의 경우, 컴퓨터에 웹서버를 설치할 때 문제가 생긴다. 외부에 공개한 주소가 바뀌면, 엉뚱한 주소로 들어오게 된다. 통신사에 금액을 더 주면 고정된 ip주소를 받을 수도 있다.

7. DHCP

7.1. DHCP(Dynamic Host Configuration Protocol)

원래는 ip주소를 직접 설정을 해줘야 하는데, 수동으로 설정하려고 했더니 서브넷 마스크, DNS 등 어떤 지식들이 필요하고 번거롭다는 걸 알 수 있었다. 현실에서는 인터넷에 연결되면 자동으로 ip주소가 세팅이 된다. 그 때 필요한 것이 DHCP Server고, 공유기에 내장되어 있다. 인터넷을 사용하는 기기에도 DHCP Client가 설치되어 있다. 우리가 사용하는 통신 부품에는 공장에서 기록된 고유한 식별자를 가지고 있다.

7.2. 자동 설정 메커니즘

  1. DHCP 클라이언트가 DHCP 서버가 네트워크 안에 있는지 찾는다.
  2. 자신의 맥 어드레스(고유식별자)를 알리고, ip주소가 필요하다고 한다.
  3. DHCP 서버가 응답을 한다.
  4. 사용가능한 ip주소를 주고, 임대시간을 알려준다.
  5. DHCP Client는 수동으로 채워야 했던 빈칸을 알아서 채운다.

이게 없었다면 일일이 ip주소를 직접 설정해주고 매우 번거로웠을 것 같다. 현대의 모바일 기기처럼 인터넷의 연결과 해지의 순환주기가 빠른 경우를 떠올리면 더욱 그렇다.

7.3. DHCP 설정

라우터 ip 주소에 접속해서 관리자 모드에서 DHCP 설정을 볼 수 있었다. ip 대여 시간 부분이 재밌었다. ip주소를 재할당 받으면서 인터넷이 끊기거나 하는 문제는 없을까? 내 컴퓨터의 경우 3600sec로 되어 있었는데, 인터넷 끊김이 있었던 적은 없었다. 네트워크 안에 컴퓨터가 몇 대 없으면 임대기간을 길게 잡는 게 효율적이고, 많은 경우 대여 시간을 짧게 잡아서 빠르게 순환되게 하는 것이 나을 것이다.

DHCP 설정에서도 직접 ip주소를 줄 수 있는데, 그건 고정(static) ip address가 된다.

💡 마무리


인터넷 관련해서 더 나아갈 수 있는 키워드들

  • Network Attached Storage - Dropbox, Google Drive, Web hard
  • Domain name - Domain은 고정, ip는 변동. 국제기구에 연간 비용 지불
  • https - 보안에 취약한 http 보완
  • web hosting, server hosting, cloud computing
profile
Every step to become a better version of me 🚶‍♂️ 블로그 이사중

0개의 댓글