IP에 대하여 (동적IP, IP관리 in AWS, DNS)

idle-danie·2023년 5월 15일
2

서론

AWS EC2 관련 스터디를 하던 중 IP에 대한 개념이 올바르게 정립되지 않은 것 같아 2학년 때 수강했던 컴퓨터 네트워크 전공책, 그리고 내가 알고 있는 개념을 정리하여 글을 적게 되었다. 일반적인(?) 상황에서 떠오르는 의문점을 해결하는 형식으로 글을 구성했다보니 IP에 대한 이해가 전무해도 흐름을 따라가다 보면 개념을 이해할 수 있을 것이다.

IP?

IP = Internet Protocol

인터넷에서 컴퓨터와 다른 장치가 통신할 때 사용되는 규약(프로토콜)이다. 또한 TCP/IP 프로토콜 스택에서 중요한 역할을 수행한다.

이해가 어렵다면 아래의 글을 통해 일단 IP를 인식하자.

네트워크 상에서 두 개의 컴퓨터끼리 통신을 한다고 가정한다면, 일단 그 둘을 식별하는 ID가 필요할 것이다. 그것이 바로 IP!

IP는 패킷 스위칭 네트워크에서 데이터를 전달하는 데 사용됩니다. 이때, IP는 송신자와 수신자 간의 주소를 지정하고 데이터를 작은 패킷으로 나누어서 전송한다. 이렇게 작게 분할된 패킷들은 최적의 경로로 전달되며, 도착지에서는 이를 재조합하여 완전한 데이터로 복원된다.

IPv4와 IPv6는 IP의 버전을 나타내며, 현재 대부분의 인터넷에서는 IPv4가 사용되고 있다. IPv4는 32비트 주소 체계를 사용하며, 이는 대략 42억개의 주소를 지원한다. 그러나 인터넷이 확장됨에 따라 IPv4 주소의 부족 문제가 발생하게 되어, 더 많은 주소를 지원하는 IPv6로의 전환도 이루어지고 있다.

직관적으로 본인이 이용하고 있는 네트워크에 대한 컴퓨터가 할당받은 IP를 보고 싶다면 명령 프롬프트에서 ipconfig를 실행하면 된다. (기본적인 설정에서도 확인가능)

Windows

ipconfig

mac OS

ip addr show

IP는 항상 하나로 고정?

IP는 고정IP와 동적IP의 두가지 형태로 존재한다.

본인이 장치에 대한 권한이 있거나 서버의 관리자라면 선택할 수 있다.

고정IP는 말 그대로 관리자가 수동으로 컴퓨터나 장치에 IP를 부여하는 방식이다.

쉽게 말하면 우리가 어떠한 서비스에 회원가입할 때 하나의 고정 ID를 생성하는 것과 같다. 그렇기에 장치가 off되더라도 이전에 설정했던 IP는 유지된다. 이러한 특성으로 보통 서버나 네트워크 장비에 이용한다.

동적IP는 DHCP서버가 IP주소를 컴퓨터나 장치에 자동으로 부여하는 방식이다.

쉽게 말하면 우리가 가입한 어떠한 서비스의 ID가 1주일에 한번씩 바뀐다는 것이다. (물론 자동으로 로그인이 될 것이다^^)

이처럼 네트워크 상에 연결될 때마다 DHCP서버에서 IP주소를 자동으로 할당하고 보통 스마트폰이나 개인용 컴퓨터에서 이용한다.

‘어떤 방식이 좋다!’ 와 같은 이해 방식 보다 어떤 네트워크에 연결되느냐, 본인의 장치가 어떤 목적과 특성을 가지고 있느냐에 초점을 맞추고 그에 따른 방식을 선택하는 것이 맞는 이해인듯 하다.

그렇다면 같은 네트워크를 써도 IP는 다르겠네?

그럴 확률이 높다.

물론 같은 네트워크에 연결된 장치들, 쉽게 말하면 가정용 Wifi 네트워크를 공유하고 있는 스마트폰, 테블릿이 고정IP 형식으로 동일한 IP주소를 할당받을 수 있다. 하지만 IP주소 충돌 (IP conflict)이슈가 발생한다.

통신 과정에서 IP주소가 같다면 충돌이 발생하고 서로의 패킷을 인식하지 못하는 이슈가 일어나기 때문에 DHCP서버에서 주소를 할당하는 동적IP방식을 채택하거나, 서로 다른 고정IP를 부여하는 방식으로 문제를 해결해야 한다.

정확히 IP를 부여하는 주체가 무엇이야?

무엇(DHCP 서버)일 수도 있고 누구(네트워크 관리자)일 수도 있다.

하지만 아마 이러한 질문이 나온다면 동적IP에 대한 물음일 것이라고 예상한다.

일반적으로 네트워크 장치에서 (Wifi라우터나 스위치)에서 부여한다. 주체를 정확히 하자면 앞서 언급한 DHCP(Dynamic Host Configuration Protocol) 서버이다.

DHCP 서버는 일련의 IP 주소 대역을 관리하며, 네트워크에 연결된 장치들이 DHCP 서버로부터 IP 주소를 요청하면, DHCP 서버는 이에 대해 유효한 IP 주소를 할당한다. 일반적으로 DHCP 서버는 할당된 IP 주소의 유효 기간(TTL, Time To Live)을 지정하여 일정 시간이 지나면 해당 IP 주소를 해제하고 다른 장치들에게 할당할 수 있도록 한다.

당연히 IP주소를 재할당하는 주기는 관리자가 설정할 수 있다.

또한, DHCP 서버는 일정한 규칙에 따라 IP 주소를 할당한다. 예를 들어, DHCP 서버에서는 할당 가능한 IP 주소 범위를 미리 설정하고, 클라이언트가 IP 주소를 요청할 때마다 사용 가능한 IP 주소 중 하나를 선택하여 할당한다. 이러한 알고리즘은 네트워크 관리자가 DHCP 서버를 구성할 때 설정할 수 있으며, 일반적으로 다양한 알고리즘이 지원된다.

동적IP 개념이 왜 나오게 된거야?

예상했겠지만 초기 인터넷 개발 환경에서는 동적IP개념이 없었지만 IP주소의 부족, 주소 관리의 효율성 등의 문제가 발생하여 나오게 된 개념이다.

이 밖에도 동적 IP방식을 사용하면 IP주소를 필요할 때만 할당하여 자원 효율성을 지킬 수 있고, 보안성, 비용 절감 등의 문제가 해결될 수 있다.

Problem: 서버에는 무조건 고정IP?

예전에는 서버를 구축한다고 하면 서버용 하드웨어를 직접 구매하여, 네트워크 카드를 설치하고 고정IP를 할당하곤 했다.

하지만 현재는 AWS 혹은 GCP에서 제공하는 클라우드 서비스를 이용하여 이러한 불필요한 문제를 해결할 수 있다.

어찌되었든 지금까지의 글을 이해했다면 당연히 서버는 고정IP 방식을 사용해야 한다. 서버가 꺼지던 관리자가 보수 작업을 하던, 클라이언트가 쉽게 다시 서버에 접속하기 위해서는 IP주소가 변하지 않아야 하기 때문이다.

AWS EC2 인스턴스에는 동적IP주소가 기본적으로 할당된다.

그렇다면 IP주소가 변경될 때마다 클라이언트들에게 변경된 IP주소를 알려줘야 하는 이슈가 발생하는데 이러한 문제를 어떻게 해결해야 할까?

Solution

  1. AWS Elastic IP를 기능을 사용하면 EC2 인스턴스에 고정IP주소를 할당할 수 있다.
    기본적으로 region당 5개까지 할당이 가능하고 추가로 필요하면 AWS 콘솔의 Support Center에서 Service limit increase를 진행해야 한다.
  1. DNS (Domain Name System), AWS Route 53: DNS를 이용하여 인스턴스의 IP주소와 도메인 이름을 매핑하는 방식이다. 전통적으로 계속 사용하는 방식 중 하나인데, 클라이언트는 도메인 이름 (예: 웹사이트 주소)를 통해 접속하고, DNS서버는 이에 매핑되는 IP주소를 반환해 주는 방식이다. 따라서 고정되지 않는 IP문제를 해결할 수 있고 AWS같은 경우 AWS Route53 서비스가 DNS기능을 제공한다.

  2. AWS ELB(Elastic Load Balancer): 다수의 인스턴스에 접속하는 클라이언트의 트래픽을 분산시킨다. 인스턴스의 IP주소가 변경되더라도 클라이언트는 ELB의 END-POINT에 접속하게 하며 문제를 해결한다.

서버의 관리자는 각각의 상황(비용, 인프라)에 맞게 방식을 채택해야 할 것이다.

DNS analysis in Wireshark

전공 수업 중 본인이 진행한 프로젝트 (Wireshark를 이용한 네트워크 분석) 자료이다. 당시 네이버 쇼핑 도메인을 이용하였다.
DNS의 표준 포트 번호는 53번이다.

본인의 IPv4 주소 → 168.126.63.1(server) ## DNS request 진행

168.126.63.1(server)→ 본인의 IPv4 주소 ## DNS response 진행

고찰

당연히 이러한 동적IP가 야기하는 문제점과 DNS와 같은 해결방식이 클라우드 서비스 때문에 발생한것이 아닌 것을 알고 있을 것이다.

어떻게 보면 클라우드 서비스가 새로운 인터넷의 개념을 재정의 하거나 창조한 것이 아닐 수는 있다. 쉽게 말해서 Amazon이나 Google이 우리가 개별적으로 구축해야 할 서버용 하드웨어를 대신 대용량으로 구매하여 엄청난 크기의 데이터 센터를 구축한 뒤 우리에게 인프라를 제공하는 것이기 때문이다.

하지만 우리는 클라우드 서비스 덕분에 서버 구축에 필요한 초기 비용을 절감하고, 유연하게 자원을 할당할 수 있고, 계속해서 개발되는 매우 많은 서비스를 통해 부가 가치를 창출할 수 있다는 점에서 클라우드 서버 구축 환경은 엄청난 혁신이라고 생각한다.

참고문헌

  1. 컴퓨터 네트워킹: 하향식 접근 (By James Kurose, Keith Ross)
  2. https://aws.amazon.com/ko/what-is/computer-networking/
  3. https://ko.wikipedia.org/wiki/인터넷_프로토콜
profile
wanna be idéal DE

0개의 댓글

관련 채용 정보