-
15. 네트워크 기술네트워크 2022. 9. 18. 19:14
NAT / PAT
통신 또는 보안을 위해 네트워크의 주소(IP)를 변환하는 기술입니다..
예를 들어 집과 어떤 웹 사이트간 통신이 이루어질 경우 여러 번의 주소 변환이 일어납니다.
요청
PC or Mobile -> 공유기 (사설 IP -> 공인 IP)
공유기 -> 웹 서버 (통신 요청)
웹 서버 -> 내부 DB (공인 IP -> 사설 IP)응답
내부 DB -> 웹 서버 (사설 IP -> 공인 IP)
웹 서버 -> 공유기 (웹 페이지 응답)
공유기 -> PC or Mobile (공인 IP -> 사설 IP)사설 IP는 내부적으로 기기를 구분하기 위해 사용되기 때문에 외부 통신을 위해 사용할 수 없습니다.
그래서 공인 IP로 변환하여 통신하게 됩니다.
IP 주소를 변환하는 방식은 대표적으로 NAT와 PAT가 있습니다.
NAT(Network Address Translation)
IP 주소를 변환하는 방식입니다.
클라이언트 기기 NAT 장비 웹 서버 출발지 IP/포트 목적지 IP/포트 1.1.1.1:2000
↓
2.2.2.2:2000출발지 IP/포트 목적지 IP/포트 1.1.1.1:2000 9.9.9.9:80 2.2.2.2:2000 9.9.9.9:80 클라이언트 -> 웹 서버의 패킷에 자신의 IP/포트와 목적지 IP/포트 정보를 담아 보내면
NAT 장비는 이를 공인 IP로 변환하여 웹 서버에 넘겨주게 됩니다.
PAT(PortAddress Translation)
IP 주소와 포트번호를 변환하는 방식입니다.
클라이언트 기기 NAT 장비 웹 서버 출발지 IP/포트 목적지 IP/포트 1.1.1.1:2000
↓
2.2.2.2:3000출발지 IP/포트 목적지 IP/포트 1.1.1.1:2000 9.9.9.9:80 2.2.2.2:3000 9.9.9.9:80 NAT 장비가 사설 IP 주소를 공인 IP 주소로 변환하고, 포트 번호도 변환하여 웹 서버에 넘겨줍니다.
이 방식은 NAT와 달리 클라이언트를 포트 번호로도 구분할 수 있습니다.
예를 들어 회사 네트워크에 PC가 매우 많을 경우
사설 IP만으로는 모든 PC에 주소를 할당할 수 없습니다.
그래서 A 부서에게 192.168.1.0 주소를 할당하고,
그 안의 직원 PC들은 포트 번호로 구분하게 됩니다.
정적 / 동적 NAT
NAT 장비도 테이블을 만들어 사용 중인 IP와 NAT IP를 매핑해 놓습니다.
이때 이것을 미리 매핑해 놓는지, 통신을 시도할 때 매핑하는지에 따라
정적 NAT, 동적 NAT로 구분됩니다.
정적 NAT 동적 NAT NAT 설정 1:1 1:N, N:1, N:M NAT 테이블 사전 생성 NAT 수행 시 생성 NAT 테이블 타임 아웃 없음 동작 NAT 수행 정보 별도 필요 없음 실시간으로만 확인하거나
로그 사용 요동적 NAT는 정적 NAT와 달리 일정 시간 동안 통신이 없으면
NAT 정보를 폐기합니다.
그러므로 동적 NAT는 서비스 흐름을 고려하여 설정해야 합니다.
DNS(Domain Name System)
실제 통신이 이루어지기 위해서는 클라이언트가 상대의 IP 주소를 알아야 합니다.
하지만 인터넷에는 수많은 웹 페이지들이 있으며, 이들의 IP 주소를 전부 외울 수는 없는 일입니다.
그래서 도메인 주소를 사용하고, 이를 IP 주소로 변환하는 작업이 요구됩니다.
예를 들면, http://www.naver.com라는 도메인 주소는
DNS를 통해 http://223.130.195.200 와 같은 IP 주소로 변환됩니다.
도메인
도메인 주소는 역트리 구조로 이루어져 있어 최상위 레벨부터 하위 레벨순으로 읽힙니다.
각 계층을 "." 으로 구분하며, 맨 뒤가 최상위 레벨, 맨 앞이 하위 레벨이 됩니다.
com - Top-Level Domain
naver - Second-Level Domain
www - Third-Level DomainTLD(Top-Level Domain)
최상위 도메인은 6가지 유형으로 구분됩니다.
- gTLD(Generic TLD) : 특별한 제한 없이 일반적으로 사용되는 도메인
'.com', '.edu', '.gov', ... - ccTLD(Country Code TLD) : 국가 도메인
'.kr', '.eu', '.us', ... - sTLD(Sponsored TLD) : 특정 목적을 위한 스폰서를 두고 있는 도메인
'.aero', '.asia', '.edu', ... - Infrastructure : 운용상 중요한 인프라 식별자 공간을 지원하기 위한 도메인
'.arpa' - grTLD(Generic-Restricted TLD) : 특정 기준을 충족하는 사람이나 단체가 사용할 수 있는 도메인
'.biz', '.name', '.pro' - tTLD(Test TLD) : IDN 개발 프로세스에서 테스트 목적으로 사용하는 도메인
'.test'
DNS 동작 방식
- 우리가 "naver.com"을 입력하면 먼저 캐시에 매핑된 IP 주소가 있는지 확인합니다.
없다면 사용자 호스트에 설정된 DNS 서버에 도메인 주소를 질의하게 됩니다. - DNS 서버는 질의를 받고, 서버 캐시에 매핑된 IP 주소가 있는지 확인합니다.
없다면 루트 DNS에 질의하여 TLD를 관리하는 DNS 서버를 응답받습니다. - DNS 서버는 TLD 네임 서버에 질의하여 "naver.com"에 대한 정보를 가진 네임 서버("nheos.com")를 응답받습니다.
- DNS 서버는 "nheos.com"에 질의하여 "223.130.195.200" 를 응답받습니다.
- DNS 서버는 "223.130.195.200"를 캐시에 저장하고,
클라이언트에 "223.130.195.200"를 응답합니다. - 클라이언트는 "223.130.195.200" 에 통신을 요청합니다.
GSLB(Global Server/Service Load Balancing)
"naver.com"는 223.130.195.200 뿐만 아닌
223.130.195.95 처럼 여러 개의 IP 주소로도 접근이 가능합니다.
하지만 223.130.195.95에 장애가 생겼을 경우
DNS는 이를 감지하지 못하고 장애가 생긴 주소를 응답할 수 있습니다.
GSLB는 헬스 체크를 시행하여 로드밸런서처럼 정상적인 경로로 통신을 이어줍니다.
GSLB 동작 방식
DNS의 동작 방식에 GSLB가 추가된 형태입니다.
- DNS의 1 ~ 3 까지 동일합니다.
- DNS 서버는 GSLB에 "223.130.195.95"를 질의합니다.
- GSLB는 "223.130.195.95"를 헬스 체크하여 장애가 있다면 다른 IP(223.130.195.200)를 응답합니다.
- DNS 서버는 클라이언트에게 "223.130.195.200" 를 응답합니다.
DHCP(Dynamic Host Configuration Protocol)
IP를 동적으로 할당하는 프로토콜입니다.
수동으로 직접 네트워크 정보를 설정하는 것을 "정적 할당"이라고 하며,
자동으로 설정하는 것을 "동적 할당"이라고 합니다.
네트워크 정보를 정적 할당할 경우,
사용자가 정보를 입력하면서 실수가 발생하거나,
IP 개수가 한정되어 있어 모든 IP를 사용할 경우 일일이 해제, 재할당 해주어야 합니다.
그래서 웬만한 상황에서는 동적 할당을 사용하며,
IP 동적 할당에 사용되는 프로토콜이 DHCP입니다.
DHCP 동작 방식
IP 주소 할당
- DHCP Discover :
클라이언트가 DHCP 서버를 찾기 위해 DHCP Discover 메시지를 브로드캐스팅합니다. - DHCP Offer :
DHCP 서버는 클라이언트에 할당할 IP 주소 및 네트워크 정보를 클라이언트로 전송합니다. - DHCP Request :
클라이언트는 IP 주소와 네트워크 정보를 사용 요청 메시지를 브로드캐스팅합니다. - DHCP Acknowledgement :
DHCP 서버는 해당 IP를 어떤 클라이언트가 언제부터 사용하기 시작했는지 정보를 기록하고,
클라이언트에 네트워크 정보를 전달합니다.
※ 네트워크 정보 - IP, 서브넷, 게이트웨이, DNS, 임대 기간 등
주소 임대 기간 연장
- DHCP Request :
이제는 클라이언트와 DHCP 서버가 서로 알고 있으므로
임대 기간 연장 요청 메시지를 유니캐스팅합니다. - DHCP Ack :
임대 기간을 갱신한 네트워크 정보를 클라이언트에게 유니캐스팅합니다.
주소 반납
- DHCP Release :
반납 요청 메시지를 유니캐스팅합니다.
참고
https://ja-gamma.tistory.com/entry/DHCP%EA%B0%9C%EB%85%90%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC
- gTLD(Generic TLD) : 특별한 제한 없이 일반적으로 사용되는 도메인