도커로 구축한 랩에서 혼자 실습하며 배우는 네트워크 프로토콜 입문 #3-2

자손킴 @jasonkim@hackers.pub

라우팅

인터넷이란 서로 다른 네트워크가 서로 연결되어 있는 것이다. 그렇기 때문에 목적지 IP 패킷이 목적지 주소에 도달하기 위해서는 여러 네트워크를 거쳐가야 하는게 일반적이다. 목적지를 가기 위해서는 현재 장비에서 바로 다음에 어떤 네트워크의 어떤 장비로 보내고 다음 장비는 다시 또 다음 장비를 찾는다. 이 작업을 목적지에 도달 할 때 까지 반복한다.

이렇게 IP 패킷의 전달처를 전환하는 기능을 라우팅이라고 부른다.

라우팅 테이블

IP 패킷을 목적지에 보내기 위해서 다음에 어떤 장비로 보내야 할지 관리하는 테이블이다. 목적지 IP 주소, 넥스트 홉, 인터페이스, 우선순위등의 정보가 기록된다.

라우터뿐만 아니라 L3 계층에서 길찾기를 해야하는 장비는 규모의 차이가 있을 뿐 모두 라우팅 테이블을 가지고 있다.

라우팅 동작

L3 챕터이기 때문에 IP 패킷을 내부 네트워크가 아닌 외부 네트워크로 보내는 상황을 가정한다.

  1. 패킷을 전송하는 클라이언트는 넥스트 홉을 결정하기 위해 우선 라우팅 테이블에서 목적지 주소가 속한 네트워크가 어디인지 확인한다.
  2. 목적지 IP 주소에 대한 넥스트 홉이 라우팅 테이블에 있다면 그것을 사용하고, 기본 경로 주소(0.0.0.0/0)에 속하는 외부 네트워크라면 넥스트 홉을 기본 게이트웨이로 지정한다.
  3. ARP 테이블을 참고하여 넥스트 홉의 MAC 주소를 확인한다.
  4. 자신의 MAC 주소와 넥스트 홉의 MAC 주소를 사용하여 이더넷으로 캡슐화 하여 케이블로 전송한다.
  5. 넥스트 홉이 목적지가 될 때 까지 이더넷 프레임을 받아서 1번 부터의 과정을 반복한다.

라우팅 방식

라우팅 동작을 제어하는 핵심은 라우팅 테이블이다. 라우팅 테이블을 만드는 방법은 정적 라우팅과 동작 라우팅, 크게 두가지로 나뉜다. 동적 라우팅은 다시 조직 내부, 조직 간, 거리 벡트, 링크 상태, 경로 벡터등의 다양 방식으로 나눌 수 있따.

정적 라우팅

수동으로 라우팅 항목을 만드는 방법이다. 목적지 네트워크와 넥스트 홉을 라우터 테이블에 직접 기록한다. 동작이 간단하고 이해하기 쉽기 때문에 소규모 네트워크 항목에 적합하다.

동적 라우팅

인접한 라우터끼리 경로 정보를 교환하여 자동으로 라우팅 엔트리를 생성하는 방식이다. 경로 정보를 교환하기 위한 프로토콜을 라우팅 프로토콜 이라고 한다.

이 책에서는 OSPF 라우팅 프로토콜을 사용하여 실습한다.

재분배(Redistribution)

정적 라우팅과 동적 라우팅은 호환되지 않는다. 동적 라우팅의 경우에도 서로 다른 프로토콜을 사용하고 있다면 호환되지 않을 수 있다. 이렇게 호환되지 않는 서로 다른 방식의 라우팅 테이블을 읽을 수 있도록 변환하는 과정을 재분배라고 부른다.

NAT(Network Address Translation)

하나의 공인 IP 주소를 여러 장비가 공유하여 인터넷에 접속 할 수 있게 해주는 기술이다. 달리 말하면 같은 네트워크에 있는 서로 다른 장비에 부여된 사설 IP 주소를 공인 IP 주소로 변환시키는 것이라고도 할 수 있다.

NAT는 변환 전의 IP주소, 포트와 변환 후의 IP주소, 포트를 NAT 테이블에 기록하고 관린한다.

넓은 의미에서 NAT는 IP주소를 변환하는 기술 전반을 의미한다. 좁은 의미의 NAT에는 정적 NAT와 NAPT(Network Address Port Translation)이 있다. 이 책에서는 좁은 의미의 NAT에 대해서 다룬다.

정적 NAT(Static NAT)

내부 IP 주소 하나를 외부 IP 주소 하나에 매핑하여 관리한다. 그렇기 때문에 1:1 NAT 라고도 한다. 이 항목을 가지고 패킷이 외부에서 내부로 들어올때는 목적지 IP 주소를 외부 IP 주소에서 내부 IP 주소로 변환한다. 내부에서 외부로 나갈때는 반대로 발신자 IP 주소를 내부 IP 주소에서 외부 IP 주소로 변환한다.

NAPT(Network Address Port Translation)

현대의 NAT는 대부분 NAPT를 사용한다. NAPT는 내부와 외부의 IP 주소뿐만 아니라 포트 번호까지 N:1로 묶어서 변환한다. IP 마스커레이딩, PAT(Port Address Translation)이라 부르기도 한다. 또한 이 항목을 동적으로 추가, 삭제한다.

NAT는 IP주소를 변환하기 때문에 L3의 동작이긴 하나, NAPT는 L4 프로토콜 정보인 발신자 포트 번호까지 같이 변환에 사용한다. 이렇게 발신자 IP 주소 뿐만 아니라 발신자 포트 번호까지 같이 변환에 사용하기 때문에 N:1 변환을 할 수 있다.

NAPT를 사용하면 여러 사설 IP 주소를 하나의 공인 IP 주소로 사용 할 수 있기 때문에 공인 IP 주소를 절약하는데 도움이 된다.

0

No comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/019a4a6b-68c6-7f43-8f15-ce3adddf19fd on your instance and reply to it.