2016-11-04 20 views
0

Google은 하나 이상의 IP 주소를 가지고 있음을 알고 있습니다. 우리가 웹 사이트 https://toolbox.googleapps.com/apps/dig/#A/[email protected]을 사용하면 Google의 IP 주소가 둘 이상이됩니다. 나는 다음과 같은 명령을 실행하면dig 명령이 google.com의 IP 주소 하나만 반환하는 이유는 무엇입니까?

다음 시나리오는 다릅니다

[email protected]:~/codes/java/net$ dig google.com 

; <<>> DiG 9.10.3-P4-Ubuntu <<>> google.com 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11777 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 

;; OPT PSEUDOSECTION: 
; EDNS: version: 0, flags:; udp: 4000 
;; QUESTION SECTION: 
;google.com.   IN A 

;; ANSWER SECTION: 
google.com.  269 IN A 216.58.220.46 

;; Query time: 0 msec 
;; SERVER: 10.100.171.1#53(10.100.171.1) 
;; WHEN: Fri Nov 04 16:18:07 IST 2016 
;; MSG SIZE rcvd: 55 

[email protected]:~/codes/java/net$ 

하나 개의 IP 주소는 웹 사이트 이상에 의해 반환 된 것과 동일하지 않은 돌아왔다. 이 IP 주소는 때때로 변경됩니다.

하지만 amazon.com에 대한 발굴 명령을 실행하는 경우 :

[email protected]:~/codes/java/net$ dig amazon.com 

; <<>> DiG 9.10.3-P4-Ubuntu <<>> amazon.com 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55090 
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1 

;; OPT PSEUDOSECTION: 
; EDNS: version: 0, flags:; udp: 4000 
;; QUESTION SECTION: 
;amazon.com.   IN A 

;; ANSWER SECTION: 
amazon.com.  34 IN A 54.239.26.128 
amazon.com.  34 IN A 54.239.17.7 
amazon.com.  34 IN A 54.239.25.192 
amazon.com.  34 IN A 54.239.25.208 
amazon.com.  34 IN A 54.239.25.200 
amazon.com.  34 IN A 54.239.17.6 

;; Query time: 74 msec 
;; SERVER: 127.0.1.1#53(127.0.1.1) 
;; WHEN: Fri Nov 04 16:23:17 IST 2016 
;; MSG SIZE rcvd: 135 

[email protected]:~/codes/java/net$ 

이 6 개 IP 주소는 amazon.com에 대한 변경하지 않습니다. 그리고 웹 사이트 https://toolbox.googleapps.com/apps/dig/#A/[email protected]도 같은 6 개의 IP 주소를 반환합니다.

내가 의심 할 여지가 google.com에 대한 DNS 조회가 amazon.com과 어떻게 다른가요? 왜 Google이 아마존과 같은 레코드가 아닌 하나의 레코드로만 표시됩니까?

+2

DNS를 보기 두 개의 서로 다른 도메인에 대한 여전히, [GeoDNS] (https://en.wikipedia.org/wiki/BIND#GeoDNS)와 [애니 캐스트] (https://en.wikipedia.org/wiki/Anycast#Domain_Name_System)는 아마도 당신이 찾고있는 것일 것입니다 :) –

+0

나는 그들의 도구 상자에 대해 몰랐다. 굉장히 유용하다! – o9000

답변

1

google에 두 개 이상의 IP 주소가 있음을 알고 있습니다.

True. 그러나 이것이 고객이 둘 이상을 알아야한다는 것을 의미하지는 않습니다.

과거에 서비스가로드 균형 조정을 수행하기 위해 DNS 쿼리에 여러 IP 주소로 응답하는 것이 일반적이었습니다. 응답은 종종 무작위 화됩니다. 즉, 클라이언트가 모두 동일한 방식으로 작동하는 많은 서버 주소 풀에서 몇 개의 주소 중 임의의 하위 집합을 가져옵니다.

DNS 기반로드 균형 조정은 항상 해킹되었습니다. 캐싱으로 인해 문제가 발생합니다. ISP의 DNS 확인자가 응답을 캐시하는 경우 많은 수의 사용자가 이러한 몇 개의 IP 주소에 모두 연결되어로드 균형 조정의 효율성을 떨어 뜨립니다. 이 문제를 해결하려면 레코드의 TTL을 낮추어 항목이 일정 기간 캐시에 남아 있는지 확인한 다음 새 쿼리를 수행해야합니다. 예를 들어, 게시 한 dig 출력의 amazon.com A 레코드의 경우 TTL이 34 초로 설정됩니다.

이 방법은 효과가 없습니다. TTL을 줄이면 작은 HTTP 요청에 대한 대기 시간이 증가합니다. 또한 DNS로드 균형 조정의 결과는 서버가로드를 균일하게 처리하지 않는다는 점에서 예측할 수 없습니다.

그러나 네트워크 수준에서 작동하는로드 균형 조정기 (역방향 NAT 상자로 생각하면 하나의 IP는 인터넷을 마주보고 많은 수의 서버에 트래픽을 멀티플렉싱 함)를 많이 처리 할 수있는 부하 분산 장치가있는 경우 연결 시간이 길며 좋은 가동 시간을 갖기 때문에 DNS 수준에서로드 균형 조정을 수행 할 필요가 없습니다.

그래서 아마존의 데이터로드 밸런싱은 DNS로드 밸런싱을 사용하지 않을 것입니다.

다른 질문은 도구 상자에서 8.8.8.8을 쿼리하면 여러 주소를 얻는 반면 컴퓨터에서 쿼리하는 동안 하나만 얻는 것입니다.

먼저 도구 상자에서 쿼리 할 때 컴퓨터가 아닌 DNS 쿼리를 보내는 웹 서버라는 사실을 이해해야합니다.

DNS 서버가 다른 클라이언트에 동일한 응답을 반환하지 않아도됩니다.실제로 클라이언트의 지리적 위치에 따라 다른 응답을 반환하는 것이 일반적입니다. 예를 들어 유럽의 사용자가 google.com을 쿼리하면 미국이 아닌 유럽의 데이터 센터에 대한 IP 주소가 부여됩니다. 이 경우

나는 DNS의 위치 정보가 일부 고객을 위해, 그리고 다른 사람을 위해 사용된다 생각합니다. 쿼리가 전송되는 네트워크의 크기와 네트워크 부하 분산 장치의 용량과 관련이있을 수 있습니다. 예를 들어 부하 분산 장치가 1,000,000 개의 동시 연결을 처리 할 수 ​​있고 쿼리를 보내는 네트워크에 100,000 개의 IP가있는 경우 DNS 부하 분산을 수행 할 필요가 없습니다. 그러나 네트워크가 크면 (예를 들어 도구 상자를 실행하는 데이터 센터의 크기에서는 네트워크 부하 분산 장치가 DNS 부하 분산을 처리하지 못할 수 있으므로 DNS 부하 분산이 설정되고 풀에서 여러 개의 임의 IP 주소를 가져옵니다.)

.. "네트워크"나는 모두가 같은 DNS 리졸버를 사용하는 기계의 집합을 의미

여러 개의 IP 주소를 반환하는 또 다른 이유는 DNS 기반 장애 조치를 할 수있는 시스템 중 하나가 작동하지 않을 때,로 :

주 클라이언트가 다른 하나에 연결을 시도합니다. 그러나 일부 응용 프로그램은 모든 IP 주소를 저장하지 않기 때문에 (나는 대부분의 브라우저가 할 생각하지만) 즉, 장애 복구를하는 좋은 방법이 아니다 다시, DNS 캐시가 방해.