개발하는 프로 국밥러
article thumbnail

IT 엔지니어를 위한 네트워크 입문

고재성, 이상훈님의 책을 보며 정리한 내용입니다.

문제가 될 시 해당글 삭제하겠습니다.


NAT(Network Address Translation)
/PAT(Port Address Translation)

  • NAT : 네트워크 주소(IP) 를 변환하는 기술 1:1
  • PAT : 네트워크 주소(IP) 를 변환하는 기술 다:1
  • 통신사에서 LTE / 5G 로 연결된 스마트폰은 통신사 장비 어디에선가 NAT 을 수행해 외부와 통신하게 된다.
  • NAT 은 기본적으로 1:1 변환이 기본이지만, IP 고갈 문제를 해결하기 위해서 다:1 변환을 사용하기도 한다.(PAT)
  • PAT 의 공식 명칭은 NAPT(Network Address Port Translation) 이다.

NAT/PAT의 용도와 필요성

  1. IPv4 주소 고갈 문제의 솔루션으로 NAT가 사용된다.
    • IP 주소 요구 극복을 위한 단, 중, 장기 대책
      • 단기 : 서브네팅(서브넷 마스크)
      • 중기 : NAT
        → 사설IP 체계
        → 가장 많은 기여..
        → 외부에 공개해야 하는 서비스에 대해서 공인 IP 사용,
        → 외부에 공개할 필요가 없는 서비스에 대해서 사설 IP 사용 (LAN)
      • 장기 : IPv6 주소 체계 전환
  2. 보안을 강화하는 데 NAT 기술을 사용한다.
    • IP(공인) 주소는 네트워크에서 유일하고, 이 정보가 식별자로 사용되어 외부와 통신한다.
    • 외부와 통신할 때 내부 IP를 다른 IP로 변환해 통신한다면 외부에 사내 IP 주소를 숨길 수 있다.
    • NAT 은 주소 변환 후 역변환이 정상적으로 이루어져야만 통신이 가능하다.
      → 이 성질을 통해서 복잡한 룰 설정 없이 방향성을 통제할 수 있다.
  3. IP 주소가 같은 두 개의 네트워크 간 통신을 가능하게 해준다.
    • 공인 IP 는 유일해야 하지만, 사설 IP 는 네트워크 별로 존재할 수 있다.
      → 사설 IP 를 이용해 다른 회사와 직접 연결해야 하거나, 회사 간 합병으로 서로 통신해야 한다면 사설 IP 주소가 충돌할 수 있다.
    • 이 때, 출발지와 도착지를 한꺼번에 변환하는 ‘Double NAT’ 기술을 사용한다.
  4. 공인 IP 변경 시, 불필요한 설정 변경을 줄일 수 있다.
    • 인터넷 독립 기관으로 직접 등록하고 소유한 IP 를 직접 운영하는 것이 아니라면, 할당 받아서 사용하게 된다.
    • 이 IP 는 임시로 빌려서 사용하는 것이므로, 회선 사업자를 변경하거나 할당 받는 회사를 변경하면 그동안 사용하던 IP 를 사용할 수 없다.
    • NAT/PAT 을 사용해서 내부 네트워크를 구성하고 있다면 위 상황 발생시, NAT/PAT 을 수행하는 장비의 설정만 변경하면 내부 네트워크 설정을 변경할 필요가 없다.
    ⇒ 유연한 인프라 스트럭쳐 구성의 기본이 된다. (상속을 통한 객체지향 설계 방식을 생각하자..)

NAT 동작 방식

NAT

  1. 사용자가 웹 서버에 접근하기 위해 출발지를 IP 10.10.10.10 으로, 목적지 IP, 서비스포트를 20.20.20.20:80 으로 패킷을 전송한다. (출발지 서비스 포트는 임의의 포트로 할당된다)
  2. NAT 역할을 하는 장비에서는 사용자 패킷을 수신 후, NAT 정책에 따라서 외부 네트워크와 통신이 가능한 공인 IP 인 11.11.11.11 로 IP 주소를 변경한다. (NAT 장비에서 변경 전후의 IP 주소는 NAT 테이블에 저장한다)
  3. NAT 장비에서는 출발지 주소를 11.11.11.11 로 변경해 목적지 웹 서버로 전송한다.
  4. 패킷을 수신한 웹 서버는 사용자에게 응답을 보낸다. 응답이므로 수신한 내용과 반대로 출발지는 20.20.20.20:80이 되고 목적지는 NAT 장비에 의해 변환된 공인 IP 11.11.11.11 로 전송한다.
  5. 웹 서버로부터 응답 패킷을 수신한 NAT 장비는 자신의 NAT 테이블에서 목적지 IP 에 대해서 원래 패킷을 발생시킨 출발지 IP 주소가 10.10.10.10 인 것을 확인한다.
  6. NAT 변환 테이블에서 확인된 원래 패킷 출발지 IP(10.10.10.10)로 변경해 사용자에게 전송하면 사용자는 최종적으로 패킷을 수신한다. ⇒ 만약 NAT 이 정상적으로 이루어지지 않아 클라이언트가 수신하는 패킷의 IP 혹은 포트가 잘못 설정되면 부적절한 패킷으로 인지하고 폐기한다… (3계층 특징)

PAT 동작 방식

PAT

  1. 사용자가 웹 서버에 접근하기 위해 출발지를 IP 10.10.10.10 으로, 목적지 IP, 서비스포트를 20.20.20.20:80 으로 패킷을 전송한다. (출발지 서비스 포트는 임의의 포트로 할당된다)
  2. NAT 역할을 하는 장비에서는 사용자 패킷을 수신 후, NAT 정책에 따라서 외부 네트워크와 통신이 가능한 공인 IP 인 11.11.11.11 로 IP 주소를 변경한다. 다만, 출발지가 있는 다수의 사용자가 동일한 공인 IP로 변경되어야 하기 때문에, 패킷의 주소 변경 시 출발지 IP 뿐만 아니라 출발지의 서비스 포트 번호도 변경해야 한다. (NAT 장비에서 변경 전후의 IP 주소와 포트 포트 번호는 NAT 테이블에 저장한다)
  3. NAT 장비에서 변경된 출발지 IP 주소와 포트 번호로 패킷을 재작성해 웹 서버로 다시 전송한다.
  4. 패킷을 수신한 웹 서버는 사용자에게 응답을 보낸다. 응답이므로 수신한 내용과 반대로 출발지는 20.20.20.20:80이 되고 목적지는 NAT 장비에 의해 변환된 공인 IP 11.11.11.11 로 전송한다.
  5. 웹 서버로부터 응답 패킷을 수신한 NAT 장비는 NAT 테이블을 확인해 웹 서버로부터 받은 패킷의 목적지 IP 주소인 11.11.11.11이 원래 10.10.10.10 이며 서비스포트 3000 이 2000인 것을 확인한다.
  6. NAT 변환 테이블에서 확인된 원래 패킷 출발지 IP(10.10.10.10)로 변경해 사용자에게 전송하면 사용자는 최종적으로 패킷을 수신한다.
    PAT 방식은 결국엔 NAT 테이블에 IP 뿐 아니라 포트 번호까지 저장해, 하나의 IP 만으로 사용자를 구분할 수 있다. → 포트가 모두 사용 중이거나, 재사용 할 수 없을 때는 PAT이 정상적으로 동작하지 않는다.
    → 따라서 사용자가 매우 많을 때는 PAT 에서 사용하는 공인 IP 주소를 IP 하나가 아닌 풀로 구성해야 한다.
    → PAT 에서는 PAT IP 가 목적지일 때, 해당 IP가 어느 IP에 바인딩 되는지 확인할 수 있는 NAT 테이블이 없으므로 사용할 수 없다. (
    PAT 는 SNAT 에 대해서만 적용되고, DNAT 에 대해서는 적용되지 않는다)

SNAT와 DNAT

  • NAT 을 사용해 어떤 IP 주소를 변환하는 지(트래픽이 출발하는 시점)에 따라서 2가지로 구분할 수 있다.
    • SNAT(Source NAT) - 출발지 주소를 변경하는 NAT
    • DNAT(Destination NAT) - 도착지 주소를 변경하는 NAT
  • 트래픽이 출발하고 응답을 받을 때 SNAT 은 DNAT 으로 변경되는데, 이 때, SNAT 에서 사용된 NAT 테이블을 참고해 트래픽을 매핑해준다.
  • SNAT & DNAT 이 사용되는 경우
    • SNAT
      • SNAT 은 사설에서 공인으로 통신할 때 많이 사용한다.
        • 공인 IP 주소의 목적지에서 출발지로 다시 응답을 받으려면 출발지 IP 주소 경로가 필요한데, 공인 대역에서는 사설 대역을 알 수 없다.
        • 공인 IP 의 목적지로 서비스를 요청할 때는, 출발지에서 사설 IP를 공인 IP로 NAT해 서비스를 요청해야 한다.
      • 보안상 SNAT 을 사용할 때.
        • 회사에서 다른 대외사와 통신 시 내부 IP 주소를 숨기는 용도로 사용.
    • DNAT
      • 로드밸런서에서 많이 사용.
      • 사내가 아닌 대외망과 네트워크 구성 시 사용.
        • 대외망과 연동시 IP 가 중복될 수 있다.
        • 중복되지 않더라도, IP 주소가 제각각이기 때문에, 신규 대외사의 연동마다 라우팅을 개별적으로 설정해야 한다.
        • 이 경우 대외망 NAT 장비를 사용해, 대외사의 IP 를 특정 IP 대역으로 NAT 한다.

동적 NAT와 정적 NAT

  • 정적 NAT : 출발지와 목적지의 IP를 미리 매핑해 고정해 놓은 NAT
    • NAT 테이블 사전생성, NAT 테이블 타임아웃 없음
  • 동적 NAT : 출발지, 목적지 어디든, IP 를 미리 정해 놓지 않고, 동적으로 변경되는 NAT
    • 출발지, 목적지가 정해진 것이 아니라, 다수의 IP 풀에서 정해지므로 최소한 출발지나 목적지 중 한 곳이 다수의 IP 로 구성된 IP 풀이나 레인지로 설정되어 있다.
    • NAT 가 필요할 때 IP 풀에서 어떤 IP로 매핑될 것인지 판단해 NAT 을 수행하는 시점에 NAT 테이블을 만들어 관리한다.
    • NAT 테이블은 설정된 시간 동안 유지되고, 일정 시간 동안 통신이 없으면 사라진다.

DNS(Domain Name System)

수동 네트워크 설정(윈도우)

→ 도메인 주소를 IP 주소로 변환

  • 네트워크 프로토콜을 나누는 두 가지 기준
    • 데이터 프로토콜 : 실제 데이터를 실어 나른다.
    • 컨트롤 프로토콜 : 통신에 직접 관여하지는 않지만, 처음 통신 관계를 맺거나, 유지하는 역할 ex) ARP, ICMP, DNS, DHCP 등..

DNS 소개

  • DNS 동작
    1. 사용자가 도메인 주소를 사용하여 서비스를 요청하면,
    2. 네트워크 설정에서 입력한 DNS 로 해당 도메인에 대한 IP 주소 질의를 보낸다.
    3. 그 결과 값으로, 도메인 서비스 IP 주소를 받는다.
  • DNS 이점
    • IP 주소 대신, 도메인 주소를 사용하게 되면 하나의 IP 주소를 이용해 여러 개의 웹 서비스를 운영할 수 있고,
      ( DNS 를 통한 트래픽 분산처리가 가능하다 : GSLB )
    • 서비스 중인 IP 주소가 변경되어도, 도메인 주소를 그대로 유지해 서비스를 그대로 유지할 수도 있다.

DNS 구조와 명명 규칙

루트 도메인

  • 도메인을 구성하는 최상위 영역
    → 만약, DNS 서버에 해당 도메인의 정보가 없으면 루트 도메인을 관리하는 루트 DNS에 쿼리하기 된다.
  • 루트 DNS 는 전 세계에 13 개가 있고, DNS 서버를 설치하면 루트 DNS 의 IP 주소를 기록한 힌트 파일을 가지고 있어 루트 DNS 관련 정보를 별도로 설정할 필요가 없다.

Top_Level Domain(TLD)

  • TLD 는 다음 6가지 유형으로 구분할 수 있다.
  • Generic TLD(gTLD)
    • 특별한 제한 없이 사용되는, 일반적인 최상위 도메인
    • com : 일반 기업체
    • edu : 4년제 이상 교육기관
    • gov : 미국 연방정부기관
    • int : 국제기구, 기관
    • mil : 미국 연방군사기관
    • net : 네트워크 관련 기관
    • org : 비영리기관
  • County Code TLD(ccTLD)
    • 국가 최상위 도메인
    • 우리나라는 gTLD 를 두글자로 줄여 사용하지만, 호주나 대만처럼 그대로 사용하는 경우도 있다.
    • ex) com.tw - 대만 ex) co.kr - 우리나라
  • Sponsores(sTLD)
    • 특정 목적을 위한 스폰서를 두고 있는 최상위 도메인
    • ex) .aero .asia .edu .museum
  • Infrastructure
    • 운용상 중요한 인프라 식별자 공간을 지원하기 위해 전용으로 사용되는 최상위 도메인
    • ex) .arpa
  • Generic-resticted(grTLD)
    • 특정 기준을 충족할 수 있는 사람이나 단체가 사용할 수 있는 최상위 도메인
    • ex) .biz .name. pro
  • Test(tTLD)
    • 말 그대로 테스트 목적의 최상위 도메인
    • ex) .test

DNS 동작 방식

  • 클라이언트 관점
    • DNS 서버 없이 로컬에서 도메인과 IP 주소를 직접 설정해 사용할 수 있다.
      → .hosts 파일에 도메인과 IP 주소를 설정해주면 해당 도메인 리스트는 항상 DNS 캐시에 저장된다.
    • 서비스 요청 시 DNS 캐시를 먼저 조회하고, 정보가 없을 시 DNS 서버로 쿼리를 수행한다.
  • DNS 시스템 관점
    • 전 세계 도메인 정보는 상당히 방대하기 때문에 하나의 DNS 서버에서 모든 도메인을 관리할 수 없다.
      → 때문에 DNS 서버는 분산 된 데이터베이스로 서로 도와주도록 설계되어 있다.
    • 클라이언트에서 처음 질의를 받은 DNS 가 중심이 되어 책임지고, 루트 DNS부터 상위 DNS에 차근차근 쿼리를 보내 결과값을 알아낸 후 최종 결과값 만 클라이언트에 응답한다.

GSLB(Global Server/Service Load Balabcing)

GSLB

  • DNS 서비스 만으로 도메인에 따라 응답 받는 IP 주소를 나누는 DNS 로드밸런싱도 있지만,
  • DNS 서버에서는 각 도메인에 대한 서비스 체크(헬스체크)가 이루어지지 않기 때문에, 서비스 가용성 향상 방법으로는 부적합하다.
  • GSLB은 이런 DNS 서비스 체크의 문제점을 해결해 도메인을 이용한 로드밸런싱을 가능하게 해준다.
    → 도메인 질의에 대한 응답 (IP 주소 응답)
    → 등록된 도메인 서비스의 상태 체크

GSLB 동작 방식

  • GSLB 는 앞의 예제처럼 일반 DNS 를 사용하는 것과 거의 동일하게 동작한다.
  • 다만, GSLB 에서 서비스 IP 정보에 대한 헬스 체크와 사전에 지정한 다양한 분산 방법을 이용한 부하 분산이 일반 DNS 와 큰 차이점이라고 볼 수 있다.

GSLB 구성 방식

  1. 도메인 자체를 GSLB 로 사용
    • 도메인에 대한 모든 레코드를 GSLB 에서 설정한다.
    • 도메인 구입 시 도메인에 대한 권한을 갖는 네임 서버를 지정하는데, 이 네임 서버가 도메인을 관리한다.
    • 도메인 자체를 GSLB 로 사용하는 것은 네임 서버를 GSLB로 설정하고 도메인에 대한 모든 레코드를 등록해 처리하는 방식이다.
      → GSLB 자체가 도메인 네임 서버 역할을 하는 경우
    • 이 경우, 모든 레코드에 대한 질의가 GSLB 를 통해서 이루어지기 때문에, 부하가 늘게 된다.
  2. 도메인 내의 특정 레코드만 GSLB 를 사용

GSLB 분산 방식

  • GSLB 를 사용하면 다음과 같은 목적을 이룰 수 있다.
    1. 서비스 제공의 가능 여부를 체크해 서비스 분산
    2. 지리적으로 멀리 떨어진 다른 데이터 센터에 트래픽 분산
    3. 지역적으로 가까운 서비스에 접속해 더 빠른 서비스 제공이 가능하도록 분산

DHCP(Dynamic Host Configuration Protocol)

DHCP 확인

  • DHCP 를 사용하면 사용자가 직접 입력해야 하는 IP 주소, 서브넷 마스크, 게이트웨이, DNS 정보를 자동으로 할당 받아서 사용할 수 있다.
    회사컴 셋팅할 때 정적 할당을 사용했기 때문에 DHCP 를 사용한 것이라 볼 수 없다.
  • 별도의 IP 설정 작업이 필요 없어 사용자와 관리자 모두 편리하게 네트워크에 접속할 수 있고, 사용하지 않는 IP 정보는 회수 되어 사용하는 경우에만 재 할당되어 한정된 IP 주소를 가진 환경에서, 유용하게 사용할 수 있다.

DHCP 프로토콜
→ 우리 공유기에 내장되어 있다.

  • BOOTP(Bootstrap Protocol) 라는 프로토콜을 기반으로 만들어졌다.
  • DHCP 는 유사하게 동작하지만 BOOTP 에서 지원되지 않는 몇 가지 기능이 추가된 확장된 프로토콜이다.

DHCP 동작 방식

  • 호스트가 DHCP 서버로 IP를 할당 받는 과정은 다음 4단계로 이루어진다.
    1. DHCP Discover
      • DHCP 클라이언트는 DHCP 서버를 찾기 위해 DHCP Discover 메시지를 브로드캐스트한다.
      • 출발지 - 0.0.0.0:68 / 도착지 - 255.255.255.255:68
    2. DHCP Offer
      • DHCP Discover 를 수신한 DHCP 서버는 클라이언트에 할당할 IP 주소, 서브넷, 게이트웨이, DNS 정보, Lease Time 등 정보를 포함한 DHCP 메시지를 클라이언트로 전송
    3. DHCP Request
      • DHCP 서버로부터 제안 받은 정보를 사용하기 위해서, IP 주소와 DHCP 서버 정보를 포함한 DHCP 요청 메시지를 브로드캐스트로 전송한다.
      • DHCP Offer 정보를 통해 받은 서버 IP 를 설정해 유니캐스트를 할 수도 있지만, DHCP 서버 여러 대가 동작하는 환경을 위해서! 브로드 캐스트로 전송한다.
    4. DHCP Acknowledgement(ACK)
      • DHCP 클라이언트로부터 IP 주소를 사용하겠다는 요청을 받으면 DHCP 서버에 해당 IP 를 어떤 클라이언트가 언제부터 사용하기 시작 했는지 정보를 기록하고 DHCP Request 메시지를 정상적으로 수신했다는 응답을 전송한다.
  • 위 과정의 IP 할당은 DHCP IP Pool 에서 클라이언트에 정해진 시간 동안만 IP를 사용할 수 있도록 할당하는 것이므로, 임대(Lease) 과정 이라고 한다.
    → 임대 시간이 만료되면 IP 를 IP Pool 로 회수한다.
    → 회수 되면 DHCP Discover 과정부터 다시 시작해야 한다.
    (현재 IP를 사용 중이라면, 갱신 과정을 거치게 된다)
  • DHCP 갱신 과정은 다음과 같다.
    • DHCP 에서 IP 를 할당 받은 후 임대 시간의 50% 가 지나게 되면 DHCP 갱신 과정을 수행한다.
      (그 다음은 75% 경과 시, 그 다음은 재 할당을 받게 된다)
    • DHCP Discover && DHCP Offer 과정을 생략하고, DHCP Request && DHCP ACK 과정을 수행한다.

DHCP 릴레이

DHCP 릴레이

  • DHCP 클라이언트와 DHCP 서버 사이에 전송되는 패킷은 모두 브로드캐스트이다.
  • 브로드캐스트는 동일 네트워크에서만 전송되므로, DHCP 를 사용하려면 각 네트워크마다 DHCP 서버가 있어야 한다.
  • 하지만 여러 네트워크를 가진 환경에서도 DHCP 릴레이 에이전트 기능을 사용하면 DHCP 서버 한 대로 여러 네트워크 대역에서 IP 풀을 관리할 수 있다.
profile

개발하는 프로 국밥러

@gugbab2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!