- 일반적인 anycast DNS구성은 BGP로 설정
- anycast DNS 구성을 이해하기 위해서는 네트워크 적인 부분을 이해가 필요
- anycast DNS 네트워크를 어떤 식으로 구성되며 어떤식으로 동작하는지 설명
1. 6곳 지사에서 모두 1곳의 동일 DNS로 사용
- 예를들에 서울, 인천, 대전, 광주, 대구, 부산 6곳에 지사를 두고 있으며 서울에 있는 1.1.1.5를 6곳 지사에서 모두 DNS로 사용한다고 예정
- 서울에 있는 1.1.1.5 DNS서버에 문제가 발생하거나 서울지사에서 정전작업 혹은 재해 등으로 인하여 DNS서버에 장애가 발생하거나, DNS 앞단 스위치에 장애가 발생하면 6곳 지사 모두 DNS서비스를 받지 못함
2. 6곳 지사에서 모두 1곳의 DNS로 사용할 때 발생하는 문제 해결 → DNS 이중화(새로운 IP 사용은 불가능)
- 6곳 지사에서 1곳의 동일 DNS로 요청하다보면 발생할 수 있는 문제점들을 해결하기 위하여 DNS 이중화 진행 → 부산에다가 새로운 DNS서버를 구축
- 이미 몇만명이 넘는 사용자들은 각자 PC에 1.1.1.5를 설정하였고 대부분의 서버에도 DNS가 1.1.1.5로 설정되었기 때문에 새로운 IP를 할당하고 공지한다는 것은 불가능
3. BGP라는 라우팅 프로토컬을 사용하면 1개의 IP를 서로 공유하는 것 가능
- 일반적으로 1개의 IP를 서로 공유한다는 것운 불가능 → 지역이 멀어져 있을 경우에 1개 IP를 공유하는 것은 더 불가능
- BGP라는 라우팅 프로토컬을 사용하면 1개의 IP를 서로 공유하는 것 가능
- anycast DNS를 구성하기 위해서는 반드시 BGP구성이 되어야 함
- 6개의 지사가 각각 BGP로 구성되어 있고 이 BGP정보(각자 가지고 있는 IP정보)를 주고받도록 설정되어야 함
4. 각각 BGP로 연결된 다른 자사에서도 1.1.1.5가 있는 BGP 네트워크를 알 수 있음
- 6개의 지사가 BGP로 구성되에 있고 서울과 부산에서 각각 1.1.1.5를 설정하면 BGP정보를 타고 서울과 부산은 각각 BGP로 연결된 다른 자사에게 - 1.1.1.5는 각자 자신에게 존재한다고 다른 지역에게 공유
- 인천, 광주, 대전, 대구는 1.1.1.5가 서울에도 존재하고 부산에도 존재함을 공유받게 되어 알게 됨
5. BGP를 통한 서로 다른 2곳에서 동일 IP DNS 서비스는 분산 서비스 가능(홉카운트가 가까운 DNS로 질의)
- 인천, 광주, 대전, 대구 지사는 서울, 부산으로부터 1.1.1.5에 대해 공유받음 → BGP라는 라우팅 프로토콜로 공유를 받아 1.1.1.5가 서울과 부산 두 곳에 존재한다는 여부를 알게 되었고 BGP 특성상 홉카운트가 가까운 쪽으로 찾아가게 됨
- 서로 다른 2곳에서 동일한 IP 1.1.1.5를 공유받았다 하더라도 거리가 가까운 쪽을 우선적으로 찾아감
- 인천과, 대전 사용자들은 BGP정책에 따라 서울이 가깝기 때문에 서울에 있는 1.1.1.5 DNS서버로 접속하게 되며, 광주, 대구 사용자들은 BGP정책에 따라 가까운 부산에 존재하는 DNS서버에서 DNS서비스를 받게 됨
- DNS 서비스는 서울과 부산 2곳에서 분산 서비스 가능
6. 1곳의 DNS 서비스에 장애가 발생하면, 다른 1곳 DNS에 서비스 질의(BGP 설정으론 DNS 장애 판단 불가)
- 부산의 DNS 서비스에 장애가 발생하면 기존에 부산에서 서비스받던 광주, 대전, 부산 사용자들은 다른 DNS서버인 서울에서 DNS 질의
일반적으로 BGP만 설정하게 되면 BGP는 해당 DNS 서비스가 장애 유무를 판단할 수 없음 - 1.1.1.5/32을 static으로만 BGP에 redistribute(재분배) 시킴
7. BGP 내부에 다이나믹한 라우팅 프로토컬 중 OSPF를 사용(장애 유무 판단)
- 장애 유무를 판단하기 위해서는 다이나믹한 라우팅 프로토컬을 BGP 내부에서 DNS서버와 부산 백본스위치 간에 연동시켜야 함
- 일반적으로 RIP, EIGRP, OSPF 등 다양한 다이나믹 라우팅 프로토컬이 있으나 가장 많이 사용되는 OSPF를 예로 사용
8. 각각의 지역끼리 BGP로 정보를 주고받으며 각 지역의 내부는 OSPF로 연동
- 각각의 지역끼리 BGP로 정보를 주고 받으며 각 지역의 내부는 OSPF로 연동된 상태 → BGP를 사용하는 대부분의 네트워크 망 구성
- 지역 내부에서는 OSPF가 동작하여 1.1.1.5를 지역 내에서도 접근할 수 있도록 설정
- 각 지역 내부에 존재하는 IP도 타 지역에서 접속할 수 있도록 타 지역끼리는 BGP로 설정
9. DNS 장애 발생 시 서로 다른 지역은 BGP로 전파하며, 지역의 내부는 OSPF로 연동하여 전파
- 부산에 있는 DNS서버에 장애가 발생하여 링크 등이 끊기거나 상단 스위치에 문제가 발생하게 되면 OSPF는 부산지역에 OSPF로 연결되어 있는 장비들에게 해당 IP의 공유를 중단하게 되며 BGP를 통하여 그 사실을 타 지역에게도 공유하게 됨
- 부산 DNS 장애로 인해 서울 DNS에 접속하기 위해, 전 지역에 서울 DNS 1.1.1.5가 공유
- 부산의 DNS서버에 장애가 발생하면, 부산에서 서비스받고 있는 지역은 BGP 공유에 의하여 다음 우선 지역인 서울의 1.1.1.5에서 DNS서비스를 받게 됨
10. 지역의 내부는 DNS서버를 L4스위치에 연결하여 OSFP 연동 전파, 서로 다른 지역은 BGP로 전파
- 일반적으로 Bind를 사용하는 일반적인 서버에서는 OSPF를 구동시키기가 힘들다. → Redistribute Connect로 연결된 모든 것을 OSPF에 등록할 수 있지만 그런 경우 링크가 끊기는 경우만을 체크하게 되며 Bind 데몬이 Down되는 등의 장애를 감지할 수 없음
- 몇몇 인포블럭스 같은 상용 박스형 DNS 서버들은 자체적으로 OSPF가 구동되도록 생성할 수 있음
- 일반적인 Sun, Linux 기반에 Bind DNS서버들은 상단에 OSPF를 구현할 수 있는 L4등의 SLB장비가 구현되며, Real DNS서버들은 1.1.1.6, 1.1.1.7 등을 가지고 있으며 실적적으로 서비스받는 IP 등은 L4에서 대표 IP인 VIP로 설정
- 부산지사 백본과 L4 스위치를 OSPF로 설정하게 되면 부산 백본 스위치는 1.1.1.5가 L4 스위치게 존재함을 알게 되며 BPG에 network 1.1.1.5/32로 다른 지역에게도 공유하게
참고 자료
'GTM과 DNS' 카테고리의 다른 글
Anycast DNS란 (0) | 2023.09.16 |
---|---|
DNS 보안 프로토콜 → DoH와 DoT (0) | 2023.09.16 |
HTTPS 암호화된 DNS 기능 지원 → TYPE65 (0) | 2023.09.16 |
cloudflare DNS와 google DNS의 cache flush (0) | 2023.09.16 |
Bind DNS recursion 설정 (0) | 2023.09.16 |