-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
2월 3주차 회고
- Loading branch information
Showing
9 changed files
with
368 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
# 7. 통신을 도와주는 네트워크 주요 기술 | ||
|
||
- 종단 장비에서 패킷이 시작되어 중간 네트워크 장비에서 이 패킷을 처리하는 과정 외에도 IP 네트워크에는 통신을 도와주고 사용자를 편리하게 해주는 다양한 서비스와 프로토콜이 있음 | ||
- 사용자가 IP 설정을 하지 않더라도 IP 주소를 자동으로 할당해주는 DHCP(Dynamic Host Configuration Protocol), 사용자가 복잡한 목적지 IP를 기억하지 않고 쉬운 도메인 이름을 사용하도록 도메인 이름과 IP 주소를 매핑해주는 DNS(Domain Name Service), 사용자가 가장 가까운 지역의 데이터 센터에 접속해 신속한 서비스를 받게 해주는 GSLB(Global Service Load Balancing), 하나의 IP를 사용해 여러 단말 장비를 포함하는 네트워크를 손쉽게 구축하도록 도와주는 NAT | ||
|
||
## 7.1 NAT/PAT | ||
|
||
- 라우터나 L3 스위치와 같은 L3 장비에서도 쓰이고 특히 방화벽과 로드 밸런서와 같이 세션을 다루는 L4 이상의 장비에서는 매우 빈번히 사용되는 기술 | ||
- NAT는 이름 그대로 네트워크 주소를 변환하는 기술 | ||
- NAT는 기본적으로 하나의 네트워크 주소에 다른 하나의 네트워크 주소로 변환하는 1:1 변환이 기본이지만 IP 주소가 고갈되는 문제를 해결하기 위해 1:1 변환이 아닌 여러개의 IP를 하나의 IP로 변환하기도 함 | ||
- 여러 개의 IP를 하나의 IP로 변환하는 기술도 NAT 기술 중 하나이고 NAT로 통칭하여 불리기도 하지만 실제 공식 용어는 NAPT(Network Address Port Translation)임 | ||
- "NAT는 IP 주소를 다른 IP 주소로 변환해 라우팅을 원할히 해주는 기술"이라고 인터넷 표준 문서에서 정의 | ||
- 사설 IP에서 공인 IP로 전환하는 것뿐만 아니라 공인 IP에서 사설 IP로 주소를 전환할 수 있고 사설 IP에서 또 다른 사설 IP나 공인 IP에서 또 다른 공인 IP로의 전환도 NAT로 정의될 수 있음 | ||
- 개념을 좀 더 확장하면 IPv4 주소를 IPv6 주소로 변환하거나 그 반대로 IP 주소를 변환하는 기술인 AFT(Address Family Translation)도 NAT 기술의 일종 | ||
|
||
### 7.1.1 NAT/PAT의 용도와 필요성 | ||
|
||
- 첫째, IPv4 주소 고갈문제의 솔루션으로 NAT가 사용 | ||
- 둘째, 보안을 강화하는 데 NAT 기술을 사용 | ||
- 외부와 통신할 때 내부 IP를 다른 IP로 변환해 통신하면 외부에 사내 IP 주소 체계를 숨길 수 있음 | ||
- NAT는 주소 변환 후 역변환이 정상적으로 수행되어야만 통신이 가능 | ||
- 이 성질을 이용해 복잡한 룰 설정 없이 방향성을 통제 | ||
- 내부 네트워크에서 외부 네트워크로 나가는 방향 통신은 허용하지만 외부에서 시작해 내부로 들어오는 통신은 바어 | ||
- 셋째, IP 주소 체계가 같은 두 개의 네트워크 간 통신을 가능하게 함 | ||
- IP 네트워크에서 서로 통신하려면 식별 가능한 유일한 IP 주소가 있어야 함 | ||
- 공인 IP는 인터넷에서 유일한 주소로 IP 주소가 중복되면 안 되지만 사설 IP는 외부와 통신할 때 공인 IP로 변환되어 통신하므로 서로 다른 회사에서 중복해 사용할 수 있음 | ||
- 넷째, 불필요한 설정 변경을 줄일 수 있음 | ||
- KISA를 통해 인터넷 독립기관으로 직접 등록하고 소유한 IP 주소를 직접 운영하는 경우가 아니라면 통신사업자나 IDC 쪽에서 IP를 할당받아 사용 | ||
- 이 IP들은 자신이 소유한 것이 아니라 임시로 빌려 사용하는 것이므로 회선 사업자를 바꾸거나 IDC를 이전하면 그동한 빌려 써왔던 공인 IP를 더 이상 사용할 수 없고 신규 사업자가 빌려주는 IP로 변경해야 함 | ||
- 만약 사용자가 NAT/PAT를 이용해 내부 네트워크를 구성하고 있었다면 서버와 PC의 IP 주소 변경 없이 회선과 IDC 사업자 이전이 가능 | ||
|
||
### 7.1.4 SNAT와 DNAT | ||
|
||
- NAT를 사용해 네트워크 주소를 변환할 때 어떤 IP 주소를 변환하는지에 따라 두가지로 구분 | ||
- SNAT(Source NAT) - 출발지 주소를 변경하는 NAT | ||
- DNAT(Destination NAT) - 도착지 주소를 변경하는 NAT | ||
- SNAT와 DNAT는 트래픽이 출발하는 시작 지점을 기준으로 구분 | ||
- SNAT와 DNAT의 기준은 NAT가 수행되기 이전의 트래픽이 출발하는 시작 지점 | ||
- 즉, 요청 시 SNAT를 해 목적지로 전송하면 해당 트래픽에 대한 응답을 받을 때는 출발지와 목적지가 반대가 되므로 DNAT가 되는데 이떄 트래픽을 요청하는 시작 지점만 고려해 SNAT 설정을 함 | ||
- NAT 장비를 처음 통과할 때 NAT 테이블이 생성되므로 응답 패킷이 NAT 장비에 들어오면 별도의 NAT 설정이 없더라고 NAT 테이블을 사용해 반대로 패킷을 변환해줄 수 있음 | ||
- 이 과정을 역 NAT라고 하며 NAT가 정상적으로 수행되려면 역 NAT과정이 함께 수행되어야 함 | ||
- SNAT | ||
- SNAT는 사설에서 공인으로 통신할 때 많이 사용 | ||
- 공인 IP의 목적지로 서비스를 요청할 때 출발지에서는 사설 IP를 별도의 공인 IP로 NAT해 서비스를 요청 | ||
- 다른 경우는 보안상 SNAT을 사용할 때 | ||
- 회사에서 다른 대외사와 통신 시 내부 IP 주소가 아니라 별도의 다른 IP로 전환해 전송함으로써 대외에 내부의 실제 IP 주소를 숨길 수 있음 | ||
- 로드 밸런서의 구성에 따라 SNAT를 사용하기도 함 | ||
- 출발지와 목적지 서버가 동일한 대역일때는 로드 밸런서 구성에 따라 트래픽이 로드 밸런서를 거치지 않고 응답할 수 있어 SNAT를 통해 응답 트래픽이 로드 밸런서를 거치게 할 수 있음 | ||
- DNAT | ||
- DNAT는 로드 밸런서에서 많이 사용 | ||
- 사용자는 서비스 요청을 위해 로드 밸런서에 설정된 서비스 VIP(Virtual IP)로 서비스를 요청하고 로드 밸런서에서는 서비스 VIP를 로드 밸런싱될 서버의 실제 IP로 DNAT해 내보냄 | ||
- 사내가 아닌 대외망과의 네트워크 구성에도 DNAT를 사용 | ||
- 사내가 아닌 대외망과의 연동에서는 IP가 중복될 수 있음 | ||
- IP가 중복되지 않더라고 IP 주소가 제각각이므로 신규 대외사와의 연동마다 라우팅을 개별적으로 설정 | ||
- 이 경우, 대외망에 NAT 장비를 이용해 대외사의 IP를 특정 IP 대역으로 NAT함 | ||
|
||
### 7.1.5 동적 NAT와 정적 NAT | ||
|
||
- 출발지와 목적지의 IP를 미리 매핑해 고정해놓은 NAT를 정적 NAT라고 함 | ||
- 반대로 출발지나 목적지 어느 경우든 사전에 정해지지 않고 NAT를 수행할 때 IP를 동적으로 변경하는 것을 동적 NAT라고 함 | ||
- 동적 NAT는 출발지와 목적지가 모두 정의된 것이 아니라 다수의 IP 풀에서 정해지므로 최소한 출발지나 목적지 중 한 곳이 다수의 IP로 구성된 IP 풀이나 레인지(Range)로 설정되어 있음 | ||
- NAT가 필요할 때 IP 풀에서 어떤 IP로 매핑될 것인지 판단해 NAT를 수행하는 시점에 NAT 테이블을 만들어 관리 | ||
- NAT 테이블은 설정된 시간 동안 유지되고 일정 시간 동안 통신이 없으면 다시 사라지므로(NAT 테이블 타임아웃) 동적 NAT의 설정은 서비스 흐름을 고려해 적용해야 함 | ||
- 정적 NAT는 출발지와 목적지 매핑 관계가 특정 IP로 사전에 정의된 것이므로 1:1 NAT라고 부르기도 함 | ||
- 실제 IP 매핑도 A라는 IP와 B라는 IP가 항상 고정되어 매핑된 상태이므로 서비스 방향에 따라 고려할 필요가 없음 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
# 7.2 DNS | ||
|
||
- 네트워크 프로토콜은 크게 두 가지로 나눌 수 있음 | ||
- 실제로 데이터를 실어나르는 데이터 프로토콜과 이 데이터 프로토콜이 잘 동작하도록 도와주는 컨트롤 프로토콜 | ||
- 컨트롤 프로토콜은 통신에 직접 관여하지 않지만 처음 통신 관계를 맺거나 유지하는 데 큰 역할을 함 | ||
- TCP/IP 프로토콜 체계를 유지하기 위한 주요 컨트롤 프로토콜에는 ARP, ICMP, DNS가 있음 | ||
- 이중 DNS는 도메인 주소를 IP 주소로 변환하는 역할을 함 | ||
- MSA(Micro Service Architecture) 기반의 서비스 설계가 많아지면서 다수의 API를 이용하다보니 사용자의 호출뿐만 아니라 서비스 간 API 호출이나 인터페이스가 많아져 DNS의 역할이 더 중요해짐 | ||
|
||
### 7.2.1 DNS 소개 | ||
|
||
- 사용자가 웹 브라우저에 naver.com을 입력하면 DNS 서버에 naver.com의 주소가 무엇인지 질의하고 DNS 서버는 naver.com의 IP 주소가 202.179.177.21이라고 사용자에게 알려줌 | ||
- 사용자는 DNS로 응답받은 202.179.177.21이라는 주소가 IP 주소를 이용해 실제 naver.com에 접속하게 됨 | ||
|
||
### 7.2.2 DNS 구조와 명명 규칙 | ||
|
||
- 도메인은 계층 구조여서 수많은 인터넷 주소 중 원하는 주소를 효율적으로 찾아갈 수 있음 | ||
- 역트리 구조로 최상위 루트부터 Top-Level 도메인, Second-Level 도메인, Third-Level 도메인과 같이 하위 레벨로 원하는 주소를 단계적으로 찾아감 | ||
- 우리가 도메인 주소를 사용할 때는 각 계층의 경계를 "."으로 표시하고 뒤에서 앞으로 해석함 | ||
|
||
#### 7.2.2.1 Root Domain | ||
|
||
- 도메인을 구성하는 최상위 영역 | ||
- 루트 DNS는 전 세계에 13개가 있고 DNS 서버를 설치하면 루트 DNS의 IP 주소를 기록한 힌트 파일을 가지고 있어 루트 DNS 관련 정보를 별도로 설정할 필요가 없음 | ||
|
||
#### 7.2.2.2 Top-Level Domain(TLD) | ||
|
||
- 최상위 도메인인 TLD는 IANA(Internet Assigned Numbers Authority)에서 구분한 6가지 유형으로 구분 | ||
- Generic TLD(gTLD) | ||
- gTLD는 특별한 제한없이 일반적으로 사용되는 최상위 도메인이며 세 글자 이상으로 구성 | ||
- 초기 7개의 gTLD(.com, .edu, .gov, .int, .mil, .net, .org)로 시작했으며 필요에 의해 새로운 gTLD가 지속적으로 만들어지고 있음 | ||
- Country Code TLD(ccTLD) | ||
- ccTLD는 국가 최상위 도메인으로 ISO 3166 표준에 의해 규정된 두 글자의 국가 코드를 사용 | ||
- 우리나라는 'kr'을 사용 | ||
- Sponsored(sTLD) | ||
- sTLD는 특정 목적을 위한 스폰서를 두고 있는 최상위 도메인 | ||
- 스폰서는 특정 민족공동체, 전문가 집단, 지리적 위치 등이 속할 수 있음 | ||
- sTLD의 종류에는 '.aero', '.asia', '.edu', '.museum'등이 있음 | ||
- Infrastructure | ||
- 운용상 중요한 인프라 식별자 공간을 지원하기 위해 전용으로 사용되는 최상위 도메인 | ||
- Infrastructure에 속하는 TLD는 '.arpa' | ||
- Generic-restricted(grTLD) | ||
- grTLD는 특정 기준을 충족하는 사람이나 단체가 사용할 수 있는 최상위 도메인 | ||
- grTLD의 종류네는 '.biz', '.name', '.pro'가 있음 | ||
- Test(tTLD) | ||
- tTLD는 IDN(Internationalized Domain Names) 개발 프로세스에서 테스트 목적으로 사용하는 최상위 도메인 | ||
- tTLD의 종류에는 '.test'가 있음 | ||
|
||
### 7.2.3 DNS 동작 방식 | ||
|
||
- 도메인을 IP 주소로 변환하려면 DNS 서버에 도메인 쿼리하는 과정을 거쳐야 함 | ||
- 하지만 DNS 서버 없이 로컬에 도메인과 IP 주소를 직접 설정해 사용할 수도 있음 | ||
- 로컬에서 도메인과 IP 주소를 관리하는 파일을 hosts 파일이라고 함 | ||
- hosts 파일에 도메인과 IP 주소를 설정해두면 해당 도메인 리스트는 항상 DNS 캐시에 저장됨 | ||
- 도메인을 쿼리하면 DNS 서버에 쿼리를 하기 전 로컬에 있는 DNS 캐시 정보를 먼저 확인 (캐시를 통한 성능 향상) | ||
- 이런 DNS 캐시 정보에는 기존 DNS 조회를 통해 확인한 동적 DNS 캐시와 함께 hosts 파일에 저장되어 있는 정적 DNS 캐시가 함께 저장되어 있음 | ||
- DNS 캐시 정보에 필요한 도메인 정보가 없으면 DNS 서버로 쿼리를 수행하고 DNS 서버로부터 응답을 받으면 그 결과를 캐시에 먼저 저장 | ||
- 전에 쿼리를 한 번 수행한 DNS 정보는 캐시부터 조회하므로 DNS 서버에 별도로 쿼리하지 않고 캐시 정보를 사용 | ||
- 전 세계 도메인 정보를 DNS 서버 하나에 저장할 수는 없음 | ||
- 데이터 자체도 방대하지만 인터넷에 엄청나게 많은 사용자가 등록하고 삭제하는 도메인 리스트를 실시간으로 업데이트할 수 없기 때문 | ||
- 그래서 DNS는 분산된 데이터베이스로 서로 도와주도록 설계되었는데 자신이 가진 도메인 정보가 아니면 다른 DNS에 질의해 결과를 받을 수 있음 | ||
- DNS 기능을 서버에 올리면 DNS 서버는 기본적으로 루트 DNS 관련 정보를 가지고 있음 | ||
- 클라이언트의 쿼리가 자신에게 없는 정보라면 루트 DNS에 쿼리하고 루트 DNS에서는 쿼리한 도메인의 TLD 값을 확인해 해당 TLD 값을 관리하는 DNS가 어디인지 응답 | ||
- 클라이언트에서 처음 질의를 받은 DNS가 중심이 되어 책임지고 루트 DNS부터 상위 DNS에 차근차근 쿼리를 보내 결과값을 알아낸 후 최종 결과값만 클라이언트에 응답 | ||
- 클라이언트는 한 번의 쿼리를 보내지만 이 요청을 받은 DNS 서버는 여러 단계로 쿼리를 상위 DNS 서버에 보내 정보를 획득 | ||
- 호스트가 DNS 서버에 질의했던 방식을 재귀적 쿼리(Recursive Query)라고 하고 DNS 서버가 루트 NS와 TLS NS, zigspace NS에 질의한 방식을 반복적 쿼리(Iterative Query)라고 함 | ||
|
||
> 재귀적 쿼리와 반복적 쿼리 | ||
- 재귀적 쿼리는 쿼리를 보낸 클라이언트에 서버가 최종 결괏갑을 반환하는 서버 중심 쿼리 | ||
- 반복적 쿼리는 최종값을 받을 때까지 클라이언트에서 쿼리를 계속 진행하는 방식 | ||
|
||
### 7.2.4 마스터와 슬레이브 | ||
|
||
- DNS 서버는 마스터 서버와 슬레이브 서버로 나눌 수 있음 | ||
- 마스터 서버가 우선순위가 더 높지 않고 두 서버 모두 도메인 쿼리에 응답 | ||
- 마스터와 슬레이브는 도메인에 대한 존 파일을 직접 관리하는지 여부로 구분 | ||
- 마스터 서버는 존 파일을 직접 생성해 도메인 관련 정보를 관리하고 슬레이브 서버는 마스터에 만들어진 존 파일을 복제 | ||
- 이 과정을 '영역 전송(Zone Transfer)'이라고 함 | ||
- DNS 마스터 서버와 슬레이브 서버는 이중화에서 일반적으로 사용하는 액티브-스탠바이나 액티브-액티브 형태로 구성하지 않음 | ||
- 보통 이중화 방식은 액티브 장비의 문제가 발생하더라도 또 다른 액티브나 스탠바이 장비가 그대로 서비스 | ||
- 반면 DNS 서버는 마스터 서버에 문제가 발생하고 일정 시간이 지나면 슬레이브 서버도 도메인에 대한 질의에 정상적으로 응답할 수 없음 | ||
- 이 시간을 만료시간이라고 함 | ||
- 만료 시간 안에 슬레이브 서버가 마스터 서버에서 존 정보를 받아오지 못하면 슬레이브의 존 정보는 사용할 수 없게 됨 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.