통신을 도와주는 네트워크 주요 기술

NAT (Network Address Translation,NAPT,PAT)

  • IP 주소를 다른 IP주소로 변환해 라우팅을 원할히 해주는 기술
  • 사설 IP주소를 공인 IP로 전환하는 경우에 NAT를 가장 자주 사용함

NAT 필요성

  • IPv4 주소 고갈 문제 : 외부에는 공인 IP로 보이지만 내부에는 사설 IP체계를 사용

  • 보안 강화 : 사내 사설 IP 주소 체계를 숨길 수 있다.

  • IP 주소 체계가 같은 두 개의 네트워크간 통신을 가능하게 해준다. 사내 IP가 겹치는 경우 , IP대역이 같은 네트워크와 통신이 가능함 (Double Nat 기술)

  • 불필요한 설정 변경을 줄일 수 있다.

KISA를 통해 인터넷 독립기관으로 직접 등록하고 소유한 IP주소를 직접 운영하는게 아니라면 통신사업자나 IDC 쪽에서 IP를 할당받아 사용하게 되고 , IP주소가 중간에 변경될 수 있다.
NAT 기술을 사용하면 내부 사설 IP체계를 유지하면서 공인 IP만 독립적으로 변경할 수 있다.

NAT 동작 방식

  1. NAT 내부 사용자는 웹 서버에 접근하기 위해 사용자의 IP주소와 포트번호를 3,4계층 헤더에 넣어 패킷을 보낸다.

  2. NAT 역할을 수행하는 장비에서 사용자가 보낸 패킷을 받아, NAT 정책에 따라 공인 IP주소로 변경한다.
    NAT 장비에서 변경 전후의 IP주소는 NAT 테이블에 저장된다.

  3. 웹 서버는 NAT가 변경한 공인 IP주소로 응답을 보낸다.

  4. NAT 장비는 NAT 테이블을 보고 사용자의 원래 IP주소로 변경하여 사용자에게 패킷을 전달한다.

PAT 동작 방식

  1. NAT 동작 방식과 동일하나 , 다수의 사용자가 동일한 공인 IP 주소로 변환되야 하므로 출발지의 IP주소뿐 아니라 Port 번호도 변경하여 NAT 테이블에 저장한다.
  2. 웹서버가 변경된 공인 IP주소와 변경된 Port번호로 응답한다.
  3. NAT 장비는 NAT 테이블을 보고 사용자의 원래 IP주소와 Port 번호로 패킷을 재작성하여 사용자에게 패킷을 전달한다.
  • PAT는 다수의 IP가 있는 출발지에서 목적지로 갈때 IP주소,포트번호로 사용자를 식별할 수 있는 NAT 테이블이 생성되고, 응답에 대해 NAT 테이블이 원래 사용자를 식별한다.
  • 반대로 PAT IP가 목적지일때에는 해당 IP가 어느 IP에 binding되고 있는지 확인할 수 있는 NAT 테이블이 없으므로 사용할 수 없다.

SNAT 와 DNAT

  • NAT 를 사용해 네트워크 주소를 변환할 때 어떤 IP 주소를 변환하는지에 따라 SNAT, DNAT 2가지로 구분된다.
  • SNAT,DNAT의 기준은 NAT가 수행되기전 패킷이 출발하는 시작지점이다.
  1. SNAT(Source NAT)

    • 출발지 주소를 변경하는 NAT
    • 사설에서 공인으로 통신할때 자주 쓰인다. 공인에서는 사설 IP 주소 체계를 모르고, 먼저 통신할수도 없으므로 보안상 유리
  2. DNAT(Destination NAT)

    • 목적지 주소를 변경하는 NAT
    • 로드 밸런서에서 사용자가 목적지 가상 IP 주소로 요청을 보내면 로드 밸런서에서 실제 서버의 IP주소로 목적지 주소를 변경한다.
    • 대외망과 네트워크 구성시에 사용

동적 NAT와 정적 NAT

  • 정적 NAT
    • 출발지와 목적지의 IP를 미리 매핑해 고정해놓은 NAT
    • 1:1매핑임으로, 서비스의 방향성을 고려할 필요가 없다.
  • 동적 NAT
    • 출발지나 목적지를 사전에 정해지지 않고 NAT를 수행할 때 동적으로 IP 변경
    • 출발지나 목적지 중 한 곳이 다수의 IP로 구성되고, 이 중 어떤 IP로 매핑될지 NAT테이블을 만들어 관리
    • NAT 테이블은 설정시간 동안 유지되고, 일정시간 동안 통신이 없으면 사라짐

DNS

  • control protocol 에 속하며 , 도메인 주소를 IP주소로 변환하는 역할을 수행한다.
  • IP 주소 대신 도메인 주소를 이용하면 하나의 IP 주소를 이용해 여러 개의 웹 서비스를 운영할 수 있다.
  • 서비스 중인 IP 주소가 변경되더라도 도메인 주소는 그대로 유지됨.

DNS 구조와 명명 규칙

  • 도메인은 계층구조로 구성되어 있다. (Top-Level 도메인 / Second-Level 도메인 / Third Level 도메인 )
  • DNS 서버는 도메인에 대한 IP주소나 캐쉬한 IP주소가 없는 경우, 최상위 루트부터 하위 레벨로 단계적으로 찾아간다.

Root Domain

  • 도메인을 구성하는 최상위 영역
  • 전 세계 13개가 존재하며 , DNS 서버 설치시 루트 DNS의 IP주소를 기록한 힌트 파일을 가지고 있어 별도의 설정 필요없음

Top-Level Domain(TLD)

  • 6가지 유형으로 나뉜다.
  1. Generic(gTLD) : ex) com,edu,gov,int,mil,net,org
  2. country-code(ccTLD) : 국가 최상위 도메인으로 2글자 사용. ex) kr
  3. sponsored(sTLD) : 특정 목적을 위한 스폰서를 두고 있는 최상위 도메인. ex) .asia
  4. infrastructure : 인프라 식별자 공간을 지원하기 위해 전용으로 사용되는 최상위 도메인
  5. generic-restricted(grTLD) : 특정 기준을 충족하는 단체가 사용할 수 있는 최상위 도메인
  6. test(tTLD) : 개발 프로세스에서 테스트 목적용으로 사용하는 최상위 도메인

DNS 동작 방식

  • hosts 파일 : 로컬에서 도메인과 도메인에 매핑된 IP주소를 관리하는 파일 (정적 DNS 캐시 )
  1. client는 DNS서버에게 요청 전 항상 로컬에 hosts파일 정보를 포함한 DNS 캐시 정보를 조회
  2. 로컬 DNS 캐시 정보에 없다면 DNS서버에게 질의
  3. DNS서버는 매핑되는 IP주소가 없다면 최상위 루트 DNS 서버에게 질의
  4. 루트 DNS서버는 TLD DNS 서버의 주소를 응답하고 DNS서버는 매핑된 IP주소를 가진 하위 DNS서버에게 반복적으로 쿼리
  5. DNS 서버는 IP주소를 응답받고, 사용자 호스트에게 응답
  6. 사용자는 응답받은 IP주소로 접속
  • 재귀적 쿼리 : client가 DNS서버에게 질의했던 방식을 서버가 최종 결괏값을 반환하는 서버 중심 쿼리
  • 반복적 쿼리 : 최종값을 얻을떄까지 client가 반복해서 질의한 방식으로 여기서 client는 DNS서버가 된다.

마스터와 슬레이브

  • DNS 서버는 도메인에 대한 Zone 파일을 직접 관리하는지 여부로 마스터와 슬레이브 서버로 구분 가능

    • 마스터 서버 : 도메인에 대한 Zone 파일을 생성
    • 슬레이브 서버 : 마스터 서버의 Zone 파일을 영역 전송(Zone Transfer)과정을 통해 주기적으로 복제해온다.
  • 이중화에서 사용되는 Active-Active 또는 Active-Standby 형태로 구성하지 않는다. 마스터 서버가 문제가 생기면 슬레이브 서버가 영역 전송을 통해 도메인 주소를 복제해올 수 없기 때문이다. -> 마스터 서버 복구 또는 슬레이브 서버가 마스터 서버가 되는 방안이 있다.

(HA 을 위한 Active-Active 구조 : 두 노드 모두 활성화 / Active-Standby 구조 : 두 노두 중 하나만 서비스 제공, 하나는 대기 )

DNS 주요 레코드

  1. A(IPv4) 레코드
  • 기본 레코드로 도메인 주소를 IP주소로 변환하는 레코드. 사용자가 DNS에 질의한 도메인 주소를 A레코드 값에 기록된 IP주소로 응답한다.
  • 동일한 IP를 여러개의 도메인 주소로 매핑하도록 또는 여러개의 IP주소를 하나의 도메인 주소로 매핑하도록 설정 가능
  • 동일한 IP를 여러개의 도메인 주소로 각각 A레코드 값으로 기록한 경우에는 HTTP 헤더의 HOST 필드에 도메인 명을 적어, 웹 서버를 구분해서 서비스 할 수 있음
  1. AAAA(IPv6) 레코드
  • IPv6 주소 체계에서 사용되는 레코드
  1. CNAME(Canonical Name) 레코드
  • 별칭이름을 도메인주소로 변환하는 레코드. CNAME 레코드에 대한 질의시, 별칭이 CNAME 레코드를 보고 도메인 주소로 변경되고, 내부적으로 IP주소로 변환해 응답한다. (ex) www )

  • CNAME을 사용함으로 개별적으로 도메인 별칭에 대한 IP 주소를 각각의 A 레코드로 변환할 필요없이, 하나의 A레코드만 매핑해놓고 여러개의 별칭 사용가능

  1. SOA(Start Of Authority) 레코드
  • 도메인 영역에 대한 권한을 나타내는 레코드로 도메인 영역 선언 시 필수 값임.
  • 현재 DNS서버가 해당 도메인 영역에 대한 관리 주체임으로 다른 DNS서버에게 질의하지 않고, 직접 응답하겠다는 의미
  1. NS(Name Server) 레코드
  • 도메인에 대한 권한이 있는 DNS 서버 정보를 설정하는 레코드
  • 하위 도메인에 대한 권한을 다른 DNS 서버로 위임하는 역할로도 많이 사용된다.
  1. MX(Mail eXchange) 레코드
  • 해당 도메인을 메일 주소로 갖는 메일 서버를 설정하는 레코드
  • 메일 서버에서 메일 전송 시 MX 레코드를 참조해 동작한다.
  • 우선순위 설정이 가능해 순차적으로 높은 우선순위부터 메일을 보내게 된다.
  1. PTR(Pointer) 레코드
  • A 레코드와 정반대, IP에 대한 도메인 주소를 응답받기 위한 레코드
  • A 레코드와 다르게 하나의 IP주소에 대해서 하나의 도메인 주소만 가질 수 있다
  • 화이트 도메인 구성용
  1. TXT(TeXT) 레코드
  • 도메인에 대한 설명을 입력하는 레코드

DNS에서 알아두면 좋은 내용

  1. 도메인 위임 (DNS Delegation)
  • 도메인은 도메인에 대한 정보를 관리하는 DNS 서버를 지정하지만 모든 레코드를 해당 DNS 서버에서 관리하지 않고, 일부 영역은 다른 곳에서 관리하도록 위임하는 방식
  • CDN , GSLB 가 대표적인 예이다.
  1. TTL (Time To Live)
  • DNS 서버에 질의해 응답받은 결괏값을 캐시에서 유지하는 시간
  1. 화이트 도메인
  • 정상적인 도메인을 인증 및 관리하는 제도
  • SPF(Sender Policy FrameWork) 레코드를 통해 메일 서버 정보를 공개하면 수신 측 메일 서버에서는 해당 도메인을 통해 발송된 메일이 실제 메일 서버에 등록된 정보와 일치하는 지 확인 가능
  • 불일치하다면 스팸 처리

GSLB (Global Server/Service Load Balancing , 인텔리전스 DNS )

  • DNS 로드 밸런싱 : 동일한 레코드 (도메인)으로 여러개의 IP 주소를 등록해서 도메인 질의에 따라 응답받는 IP주소를 나누어 로드 밸런싱
  • DNS 로드 밸런싱 방식은 서버 IP주소를 응답은 해주지만 해당 서버가 정상 작동 여부중인지는 확인해주지 않음.
  • GSLB는 DNS 와 동일하게 도메인 질의에 대해서 서버 IP 주소를 응답하기 전에 해당 서버가 정상인지 헬스 체크 수행. 만약 해당 서버가 작동중이지 않다면, 정상 작동중인 서버의 IP주소를 응답

GSLB 동작 방식

  1. client가 특정 사이트에 접속하기 위해 도메인명으로 DNS에 질의
  2. Local DNS는 해당 도메인명을 관리하는 DNS 서버를 찾기 위해 상위 계층의 DNS 서버(root)부터 순차적으로 반복질의
  3. 찾은 DNS 서버는 GSLB로 도메인 위임을 하였음으로, GSLB 서버가 DNS 서버라고 Local DNS 서버에게 응답
  4. GSLB는 해당 도메인에 등록된 IP 주솟값중에 현재 설정된 분산 방식에 따라 헬스 체크 후에 IP주솟값을 응답해준다.
  5. GLSB에게 IP주솟값을 응답받은 Local DNS는 client에게 해당 IP주소를 응답한다.
  • 정리하면 GSLB 서버와 DNS 서버의 차이점은 다음과 같다.
  1. GSLB에서는 서비스에 대한 정상 작동 여부(헬스 체크) 수행하는 반면, DNS는 그냥 응답한다.
  2. GSLB에서는 사전에 지정된 분산 방법을 이용해 부하분산을 수행하는 반면, DNS는 Round Robin 방식으로 응답한다.

GSLB 구성 방식

GLSB를 사용한 도메인 설정 방법은 다음과 같다

  1. 도메인을 관리하는 DNS서버로 GSLB서버로 사용하는 방법
  • 도메인에 대한 모든 레코드를 GSLB에서 관리하기 때문에 도메인 레코드 중 헬스 체크 기능이 불필요한 경우에도 헬스 체크가 수행되며 GSLB서버에 부하를 주게 된다.
  1. 도메인을 관리하는 DNS 서버를 두고 , 특정 레코드만 GLSB서버로 처리를 이관하는 방법
  • 별칭(CNAME 레코드) 또는 위임(NS 레코드)를 통해 특정 레코드만 GLSB 서버로 위임할 수 있다.

별칭을 이용해 GLSB에게 질의하는 방식

  • 별칭을 이용한 방식은 실제 도메인과 다른 별도의 도메인 레코드를 GLSB 서버에 등록한다.

  • 도메인을 관리하는 DNS서버에 질의를 하게 되면 , Local DNS는 CNAME값을 응답받고, CNAME값을 관리하는 DNS서버를 찾기 위해 root DNS서버부터 순차적으로 질의하고 찾은 GSLB에게 질의한다.

  • CDN 처럼 외부 사업자가 GSLB를 운영하는 경우, GSLB를 사용해야 하는 도메인이 계층적이지 않으면서 많을때 사용

위임을 통해 GSLB에게 질의하는 방식

  • DNS서버에서 NS 레코드로 FQDN(Fully Qualifed Domain Name)에 대한 값으로 GLSB서버를 등록하면, Local DNS 서버는 해당 GSLB 서버로 재질의한다.

  • 하나의 FQDN을 위임 처리하면 해당 FQDN의 하위 도메인은 별도의 위임처리 없이 이미 상위 계층에서 위임 처리되므로 GSLB로 다수의 FQDN을 일괄적으로 위임처리할 수 있다.

  • DNS와 같은 도메인으로 GSLB를 운영하면서 계층적인 FQDN을 관리할 때 사용

GSLB 분산 방식

  • GSLB를 이용해 서비스를 분산하는 방식으로 Round Robin , 최소 접속 (Least Connection) , 해싱 방식등을 제공한다.
  • 각 GSLB에서 지원되는 분산 방식은 GSLB 장비를 생산하는 벤더와 모델에 따라 다르지만 대부분 다음과 같은 헬스 체크 모니터링 요소(Local DNS와 GSLB서버간을 기준으로)를 지원하고 있다.
  1. 서비스 응답 시간(RTT) / 지연 (Latency)
  2. IP 지리 정보

IP 지리 정보는 서비스 제공이 가능한 각 사이트의 IP주소에 대해 가까운 사이트로 서비스를 분산처리하기 위함이다.

  • GSLB 분산 방식의 기본적으로 추구하는 목표는 서비스가 가능한 사이트로 트래픽을 분산하되, 신속하게 서비스를 제공할 수 있는 사이트로 접속할 수 있도록 유도하는 것이다.

DHCP (Dynamic Host Configuration)

  • IP를 동적으로 할당해주는 프로토콜
  • BOOTP(Bootstrap Protocol) 기반
  • 서버와 클라이언트로 동작하며, 클라이언트의 서비스 포트는 68번 UDP, 서버의 서비스 포트는 67번 UDP을 사용함

DHCP 동작 방식

  • DHCP에서 IP 할당은 DHCP server가 가진 IP Pool에서 client에게 정해진 시간 동안 IP를 사용할 수 있도록 할당하는 것이므로, 임대(Lease)과정이라고 부른다.
  1. DHCP Discover

client가 server를 찾기위해 DHCP Discover 메시지를 broadcast로 전송. 이떄 client는 IP가 아직 없으므로 Zero IP 주소(0.0.0.0) 으로 설정됨.

  1. DHCP Offer

server가 client에게 할당해줄 IP주소,서브넷,게이트웨이,DNS 정보,IP주소 임대 시간(Lease Time)등의 네트워크 정보를 포함한 DHCP 메시지를 client에게 전송하여 IP 주소 사용을 client에게 제안한다.

  1. DHCP Request

server로부터 제안받은 IP 주소,DHCP 서버 정보를 포함한 DHCP 요청 메시지를 broadcast로 전송하여, server에게 제안받은 IP주소를 사용할것을 알림

  • DHCP offer 메시지에 DHCP 서버 주소 정보가 포함되므로, unicast로 전송을 해도 되나 굳이 네트워크 트래픽을 늘리는 broadcast로 전송하는 이유는 DHCP server가 여러대가 동작하는 환경에서는 client가 DHCP offer 메세지를 동시에 여러 개를 받고, 그 중 하나의 Offer 메시지에 대해서만 Request 메세지를 전송한다.
  1. DHCP Acknowledgement

DHCP client로부터 IP주소를 사용하겠다는 DHCP 요청 메시지를 받으면 server에서 해당 IP를 언제부터 사용시작했는지에 대한 정보를 기록하고, DHCP 요청 메시지에 대해 응답을 전송

  • 정해진 IP 임대시간이 만료되면 client에게 할당된 IP를 다시 IP pool로 회수한다.
  • 임대 시간이 만료된 경우에는 DHCP Discover부터 시작해 다시 IP를 임대하지만, 임대 시간의 50% , 75% 가 지나면 DHCP 갱신과정이 시작된다.
  • 갱신과정에서는 DHCP Discover, DHCP Offer과정이 생략되고 바로 DHCP Request 단계부터 unicast 로 수행한다.
  • DHCP Starvation 공격 : 악의적으로 DHCP 서버에서 가용한 IP주소를 가짜로 할당받아, 실제 client가 DHCP discover 메시지를 보내도, IP주소를 할당받지 못하게 막는 공격 방식

DHCP 릴레이

  • DHCP client와 서버간에는 모두 broadcast로 패킷을 전송하는데, broadcast는 동일 네트워크에 모든 단말에 패킷을 전송하므로, DHCP 를 사용하려면 각 네트워크마다 DHCP server가 존재해야 한다.

  • 여러 네트워크를 가진 환경에서도 DHCP Relay Agent 기능을 사용하면 DHCP 서버 하나로 여러 네트워크의 IP pool을 관리할 수 있다.

  • DHCP Relay agent가 broadcast로 전달되는 패킷을 받아서 다른 네트워크에 위치한 DHCP server를 목적지로 unicast 방식으로 변환해주는 역할을 수행한다.

  1. DHCP Discover (Client -> Relay Agent -> DHCP server 흐름)

DHCP client가 DHCP 서버를 찾기위해 broadcast로 동일네트워크의 모든 단말에 패킷을 전송하면 , DHCP Relay Agent는 Discover 패킷을 받아 출발지와 목적지를 각각 relay agent의 IP주소와 DHCP server IP주소로 변경한다.

이떄 DHCP Discover 메시지의 relay agent IP 항목에는 DHCP client가 속하는 네트워크 인터페이스의 IP주소이다.

  1. DHCP Offer(DHCP server -> Relay Agent -> Client 흐름)

DHCP Discover를 수신한 서버는 네트워크 정보를 포함한 DHCP Offer 메시지를 DHCP Relay Agent 로 unicast 방식으로 전송하면, DHCP Relay Agent는 이를 broadcast 방식으로 변경해 client가 속한 네트워크의 모든 단말에 전송한다.
(*DHCP server Identifier 필드는 DHCP 서버에서 DHCP relay agent 로 변경된다고 한다.)

  1. DHCP Request, DHCP Ack

1,2번과 동일하게 DHCP relay agent가 client로부터 broadcast로 받은 메시지를 unicast로 서버에게 , server로부터 unicast로 받은 메시지를 broadcast로 client에게 전송한다.

  • DHCP Relay agent가 동작하려면 broadcast를 위해 DHCP client와 같은 L2네트워크에 존재해야 하며, DHCP server에게 unicast로 메시지를 전달하기 위해 DHCP 서버의 IP주소가 등록되어 있어야 한다.

Comments