고재성, 이상훈님의 책을 보며 정리한 내용입니다.
문제가 될 시 해당글 삭제하겠습니다.
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의 용도와 필요성
- IPv4 주소 고갈 문제의 솔루션으로 NAT가 사용된다.
- IP 주소 요구 극복을 위한 단, 중, 장기 대책
- 단기 : 서브네팅(서브넷 마스크)
- 중기 : NAT
→ 사설IP 체계
→ 가장 많은 기여..
→ 외부에 공개해야 하는 서비스에 대해서 공인 IP 사용,
→ 외부에 공개할 필요가 없는 서비스에 대해서 사설 IP 사용 (LAN) - 장기 : IPv6 주소 체계 전환
- IP 주소 요구 극복을 위한 단, 중, 장기 대책
- 보안을 강화하는 데 NAT 기술을 사용한다.
- IP(공인) 주소는 네트워크에서 유일하고, 이 정보가 식별자로 사용되어 외부와 통신한다.
- 외부와 통신할 때 내부 IP를 다른 IP로 변환해 통신한다면 외부에 사내 IP 주소를 숨길 수 있다.
- NAT 은 주소 변환 후 역변환이 정상적으로 이루어져야만 통신이 가능하다.
→ 이 성질을 통해서 복잡한 룰 설정 없이 방향성을 통제할 수 있다.
- IP 주소가 같은 두 개의 네트워크 간 통신을 가능하게 해준다.
- 공인 IP 는 유일해야 하지만, 사설 IP 는 네트워크 별로 존재할 수 있다.
→ 사설 IP 를 이용해 다른 회사와 직접 연결해야 하거나, 회사 간 합병으로 서로 통신해야 한다면 사설 IP 주소가 충돌할 수 있다. - 이 때, 출발지와 도착지를 한꺼번에 변환하는 ‘Double NAT’ 기술을 사용한다.
- 공인 IP 는 유일해야 하지만, 사설 IP 는 네트워크 별로 존재할 수 있다.
- 공인 IP 변경 시, 불필요한 설정 변경을 줄일 수 있다.
- 인터넷 독립 기관으로 직접 등록하고 소유한 IP 를 직접 운영하는 것이 아니라면, 할당 받아서 사용하게 된다.
- 이 IP 는 임시로 빌려서 사용하는 것이므로, 회선 사업자를 변경하거나 할당 받는 회사를 변경하면 그동안 사용하던 IP 를 사용할 수 없다.
- NAT/PAT 을 사용해서 내부 네트워크를 구성하고 있다면 위 상황 발생시, NAT/PAT 을 수행하는 장비의 설정만 변경하면 내부 네트워크 설정을 변경할 필요가 없다.
NAT 동작 방식
- 사용자가 웹 서버에 접근하기 위해 출발지를 IP 10.10.10.10 으로, 목적지 IP, 서비스포트를 20.20.20.20:80 으로 패킷을 전송한다. (출발지 서비스 포트는 임의의 포트로 할당된다)
- NAT 역할을 하는 장비에서는 사용자 패킷을 수신 후, NAT 정책에 따라서 외부 네트워크와 통신이 가능한 공인 IP 인 11.11.11.11 로 IP 주소를 변경한다. (NAT 장비에서 변경 전후의 IP 주소는 NAT 테이블에 저장한다)
- NAT 장비에서는 출발지 주소를 11.11.11.11 로 변경해 목적지 웹 서버로 전송한다.
- 패킷을 수신한 웹 서버는 사용자에게 응답을 보낸다. 응답이므로 수신한 내용과 반대로 출발지는 20.20.20.20:80이 되고 목적지는 NAT 장비에 의해 변환된 공인 IP 11.11.11.11 로 전송한다.
- 웹 서버로부터 응답 패킷을 수신한 NAT 장비는 자신의 NAT 테이블에서 목적지 IP 에 대해서 원래 패킷을 발생시킨 출발지 IP 주소가 10.10.10.10 인 것을 확인한다.
- NAT 변환 테이블에서 확인된 원래 패킷 출발지 IP(10.10.10.10)로 변경해 사용자에게 전송하면 사용자는 최종적으로 패킷을 수신한다. ⇒ 만약 NAT 이 정상적으로 이루어지지 않아 클라이언트가 수신하는 패킷의 IP 혹은 포트가 잘못 설정되면 부적절한 패킷으로 인지하고 폐기한다… (3계층 특징)
PAT 동작 방식
- 사용자가 웹 서버에 접근하기 위해 출발지를 IP 10.10.10.10 으로, 목적지 IP, 서비스포트를 20.20.20.20:80 으로 패킷을 전송한다. (출발지 서비스 포트는 임의의 포트로 할당된다)
- NAT 역할을 하는 장비에서는 사용자 패킷을 수신 후, NAT 정책에 따라서 외부 네트워크와 통신이 가능한 공인 IP 인 11.11.11.11 로 IP 주소를 변경한다. 다만, 출발지가 있는 다수의 사용자가 동일한 공인 IP로 변경되어야 하기 때문에, 패킷의 주소 변경 시 출발지 IP 뿐만 아니라 출발지의 서비스 포트 번호도 변경해야 한다. (NAT 장비에서 변경 전후의 IP 주소와 포트 포트 번호는 NAT 테이블에 저장한다)
- NAT 장비에서 변경된 출발지 IP 주소와 포트 번호로 패킷을 재작성해 웹 서버로 다시 전송한다.
- 패킷을 수신한 웹 서버는 사용자에게 응답을 보낸다. 응답이므로 수신한 내용과 반대로 출발지는 20.20.20.20:80이 되고 목적지는 NAT 장비에 의해 변환된 공인 IP 11.11.11.11 로 전송한다.
- 웹 서버로부터 응답 패킷을 수신한 NAT 장비는 NAT 테이블을 확인해 웹 서버로부터 받은 패킷의 목적지 IP 주소인 11.11.11.11이 원래 10.10.10.10 이며 서비스포트 3000 이 2000인 것을 확인한다.
- 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 주소를 숨기는 용도로 사용.
- SNAT 은 사설에서 공인으로 통신할 때 많이 사용한다.
- DNAT
- 로드밸런서에서 많이 사용.
- 사내가 아닌 대외망과 네트워크 구성 시 사용.
- 대외망과 연동시 IP 가 중복될 수 있다.
- 중복되지 않더라도, IP 주소가 제각각이기 때문에, 신규 대외사의 연동마다 라우팅을 개별적으로 설정해야 한다.
- 이 경우 대외망 NAT 장비를 사용해, 대외사의 IP 를 특정 IP 대역으로 NAT 한다.
- SNAT
동적 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 동작
- 사용자가 도메인 주소를 사용하여 서비스를 요청하면,
- 네트워크 설정에서 입력한 DNS 로 해당 도메인에 대한 IP 주소 질의를 보낸다.
- 그 결과 값으로, 도메인 서비스 IP 주소를 받는다.
- DNS 이점
- IP 주소 대신, 도메인 주소를 사용하게 되면 하나의 IP 주소를 이용해 여러 개의 웹 서비스를 운영할 수 있고,
( DNS 를 통한 트래픽 분산처리가 가능하다 : GSLB ) - 서비스 중인 IP 주소가 변경되어도, 도메인 주소를 그대로 유지해 서비스를 그대로 유지할 수도 있다.
- IP 주소 대신, 도메인 주소를 사용하게 되면 하나의 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)
- 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 서버 없이 로컬에서 도메인과 IP 주소를 직접 설정해 사용할 수 있다.
- DNS 시스템 관점
- 전 세계 도메인 정보는 상당히 방대하기 때문에 하나의 DNS 서버에서 모든 도메인을 관리할 수 없다.
→ 때문에 DNS 서버는 분산 된 데이터베이스로 서로 도와주도록 설계되어 있다. - 클라이언트에서 처음 질의를 받은 DNS 가 중심이 되어 책임지고, 루트 DNS부터 상위 DNS에 차근차근 쿼리를 보내 결과값을 알아낸 후 최종 결과값 만 클라이언트에 응답한다.
- 전 세계 도메인 정보는 상당히 방대하기 때문에 하나의 DNS 서버에서 모든 도메인을 관리할 수 없다.
GSLB(Global Server/Service Load Balabcing)
- DNS 서비스 만으로 도메인에 따라 응답 받는 IP 주소를 나누는 DNS 로드밸런싱도 있지만,
- DNS 서버에서는 각 도메인에 대한 서비스 체크(헬스체크)가 이루어지지 않기 때문에, 서비스 가용성 향상 방법으로는 부적합하다.
- GSLB은 이런 DNS 서비스 체크의 문제점을 해결해 도메인을 이용한 로드밸런싱을 가능하게 해준다.
→ 도메인 질의에 대한 응답 (IP 주소 응답)
→ 등록된 도메인 서비스의 상태 체크
GSLB 동작 방식
- GSLB 는 앞의 예제처럼 일반 DNS 를 사용하는 것과 거의 동일하게 동작한다.
- 다만, GSLB 에서 서비스 IP 정보에 대한 헬스 체크와 사전에 지정한 다양한 분산 방법을 이용한 부하 분산이 일반 DNS 와 큰 차이점이라고 볼 수 있다.
GSLB 구성 방식
- 도메인 자체를 GSLB 로 사용
- 도메인에 대한 모든 레코드를 GSLB 에서 설정한다.
- 도메인 구입 시 도메인에 대한 권한을 갖는 네임 서버를 지정하는데, 이 네임 서버가 도메인을 관리한다.
- 도메인 자체를 GSLB 로 사용하는 것은 네임 서버를 GSLB로 설정하고 도메인에 대한 모든 레코드를 등록해 처리하는 방식이다.
→ GSLB 자체가 도메인 네임 서버 역할을 하는 경우 - 이 경우, 모든 레코드에 대한 질의가 GSLB 를 통해서 이루어지기 때문에, 부하가 늘게 된다.
- 도메인 내의 특정 레코드만 GSLB 를 사용
GSLB 분산 방식
- GSLB 를 사용하면 다음과 같은 목적을 이룰 수 있다.
- 서비스 제공의 가능 여부를 체크해 서비스 분산
- 지리적으로 멀리 떨어진 다른 데이터 센터에 트래픽 분산
- 지역적으로 가까운 서비스에 접속해 더 빠른 서비스 제공이 가능하도록 분산
DHCP(Dynamic Host Configuration Protocol)
- DHCP 를 사용하면 사용자가 직접 입력해야 하는 IP 주소, 서브넷 마스크, 게이트웨이, DNS 정보를 자동으로 할당 받아서 사용할 수 있다.
→회사컴 셋팅할 때 정적 할당을 사용했기 때문에 DHCP 를 사용한 것이라 볼 수 없다.
- 별도의 IP 설정 작업이 필요 없어 사용자와 관리자 모두 편리하게 네트워크에 접속할 수 있고, 사용하지 않는 IP 정보는 회수 되어 사용하는 경우에만 재 할당되어 한정된 IP 주소를 가진 환경에서, 유용하게 사용할 수 있다.
DHCP 프로토콜
→ 우리 공유기에 내장되어 있다.
- BOOTP(Bootstrap Protocol) 라는 프로토콜을 기반으로 만들어졌다.
- DHCP 는 유사하게 동작하지만 BOOTP 에서 지원되지 않는 몇 가지 기능이 추가된 확장된 프로토콜이다.
DHCP 동작 방식
- 호스트가 DHCP 서버로 IP를 할당 받는 과정은 다음 4단계로 이루어진다.
- DHCP Discover
- DHCP 클라이언트는 DHCP 서버를 찾기 위해 DHCP Discover 메시지를 브로드캐스트한다.
- 출발지 - 0.0.0.0:68 / 도착지 - 255.255.255.255:68
- DHCP Offer
- DHCP Discover 를 수신한 DHCP 서버는 클라이언트에 할당할 IP 주소, 서브넷, 게이트웨이, DNS 정보, Lease Time 등 정보를 포함한 DHCP 메시지를 클라이언트로 전송
- DHCP Request
- DHCP 서버로부터 제안 받은 정보를 사용하기 위해서, IP 주소와 DHCP 서버 정보를 포함한 DHCP 요청 메시지를 브로드캐스트로 전송한다.
- DHCP Offer 정보를 통해 받은 서버 IP 를 설정해 유니캐스트를 할 수도 있지만, DHCP 서버 여러 대가 동작하는 환경을 위해서! 브로드 캐스트로 전송한다.
- DHCP Acknowledgement(ACK)
- DHCP 클라이언트로부터 IP 주소를 사용하겠다는 요청을 받으면 DHCP 서버에 해당 IP 를 어떤 클라이언트가 언제부터 사용하기 시작 했는지 정보를 기록하고 DHCP Request 메시지를 정상적으로 수신했다는 응답을 전송한다.
- DHCP Discover
- 위 과정의 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 에서 IP 를 할당 받은 후 임대 시간의 50% 가 지나게 되면 DHCP 갱신 과정을 수행한다.
DHCP 릴레이
- DHCP 클라이언트와 DHCP 서버 사이에 전송되는 패킷은 모두 브로드캐스트이다.
- 브로드캐스트는 동일 네트워크에서만 전송되므로, DHCP 를 사용하려면 각 네트워크마다 DHCP 서버가 있어야 한다.
- 하지만 여러 네트워크를 가진 환경에서도 DHCP 릴레이 에이전트 기능을 사용하면 DHCP 서버 한 대로 여러 네트워크 대역에서 IP 풀을 관리할 수 있다.
'CS > 네트워크' 카테고리의 다른 글
[IT 엔지니어를 위한 네트워크 입문] Chapter11. 이중화 기술 (0) | 2023.01.10 |
---|---|
[IT 엔지니어를 위한 네트워크 입문] Chapter9. 보안 (1) | 2023.01.10 |
[IT 엔지니어를 위한 네트워크 입문] Chapter6. 로드 밸런서 / 방화벽 : 4계층 장비(세션 장) (0) | 2023.01.10 |
[IT 엔지니어를 위한 네트워크 입문] Chapter5. 라우터 / L3 스위치 : 3계층 장비 (0) | 2023.01.10 |
[IT 엔지니어를 위한 네트워크 입문] Chapter4. 스위치 : 2계층 장비 (0) | 2023.01.10 |