안녕하세요.
궁금한점이 생겨서 질문드립니다.
클라이언트가 LTE 스마트폰에서
URL을 입력할경우 DNS에 요청을 하고, Root Name Server부터
차례로 Name Resolution을 한 뒤에 스마트폰으로 공인 IP를 날리는 그 과정에서,
동일하게 DNS에 요청을 하는 과정에서 전혀 다른 대역대의 IP 주소로 접근하는 상황이 발생하더라구요.
여기서 DNS는 캐싱하고 있는 데이터가 있을텐데, 캐싱하고 있는 값은 이전에 접근했던 IP 주소를 가지고 캐싱을 하고있는데,
이 상황에서 스마트폰 단말기의 IP 주소가 아닌 DNS에 접근하기 전의 IP 주소를 가지고 캐싱된 값을 넘겨주던데,
캐싱값이 아닌 처음부터 Name resolution을 하는것을 보면 전혀다른 ISP를 타고 DNS로 접근을 하는것 같은데요.
내부적으로 Name resolution을 하는 절차를 확실하게 잘 모르겠습니다.
IP 앵커가 단말기의 IP를 계속적으로 확인해주지만, 데이터들이 날아가는 과정의 라우팅이 조금 잘못되고 있는것은 아닌지...
이런 일이 발생하는게 정상인건지, 아니면 통신사마다 특성이 있는건지 궁금합니다.
이렇게 전혀 다른 ISP를 타고 넘어간다면, 보통 캐싱된 IP 주소들이 의미가 없어지는 거니까요.
해당 케이스는 특정 통신사의 경우에만 국한된거라서요.
혹시 알고계신분 있으시면 답변좀 부탁 드릴께요^. ^
(네트워크쪽은 알고 있는게 많이 없어서 이해가 가능하실런지... 죄송합니다...ㅠㅠ)
근데 아예 A 클래스부터 다른 대역대로 들어가는 경우가 발생하는 상황입니다...ㅠ
예를들면 naver.com을 쳤을때 (100.100.100.1 부터 10까지의 공인아이피가 naver.com) 이라고 볼때
DNS에 1번 아이피를 캐싱하고 있을때, 접근하는 세션이 같은 세션이면 계속 1번으로 접근하도록
캐싱된 1번 아이피를 보내줘야 하는데, DNS에 전혀다른 대역대의 IP로 접근하니 새로 들어오는 세션인줄 알고
다른 공인아이피를 넘겨주는 형태입니다. 제 설명이 조금 이상한가요...
1. 국내 이동통신사업자 3사 모두 P-GW 바로 뒷단에 대용량 NAT 장비(LSN 혹은 CGN이라 부름)가 위치해 있습니다. 따라서 P-GW는 LTE 단말로 Private IP 주소를 할당해 주고, LTE 단말이 인터넷(DNS 서버 포함)에 접근시에 LTE 단말에서 P-GW 까지는 패킷의 Source IP 주소가 P-GW가 할당한 Private IP 주소이지만, NAT 장비를 지나면서 Public IP 주소로 변경됩니다.
2. NAT 장비는 TCP이든 UDP(DNS의 경우)이든 NAT Session 정보를 관리하고 있어 LTE 단말이 지속적으로 데이터 통신 중에는 해당 LTE 단말에 부여된 Public IP(Source IP) 주소가 변경되지 않습니다. 다만 일정 시간동안 데이터를 사용하지 않으면 NAT 장비에 해당 Session이 지워지게 되어, 그 이후에 LTE 단말이 보낸 패킷의 Public IP 주소는 변경될 수 있습니다.
3. 제가 알고 있기로 Local DNS 서버는 DNS Request를 보낸 단말의 IP 주소를 기반으로 DNS 데이터를 캐싱하지 않습니다. (혹시 틀렸으면 말씀주세요 ^^) 예를 들어, 어떤 Local DNS 서버를 통해 www.netmanias.com에 대해 DNS Query를 한다고 했을때, Loca DNS 서버는 상위 DNS 서버로 부터 "www.netmanias.com의 IP 주소는 112.220.75.18이고 TTL은 1시간"를 수신 후, {www.netmanias.com의 IP 주소는 112.220.75.18} 정보를 TTL(1시간) 동안 캐싱합니다. 이 때 단말의 IP 주소까지 캐싱하지는 않습니다. 이후 어떤 단말이든 www.netmanias.com에 대해 DNS Query를 하면 Local DNS 서버는 112.220.75.18을 응답으로 주게 됩니다.
4. 앞서 TTL에 대해 말씀을 드렸는데요. 단말 역시 TTL 값 동안은 DNS 정보를 캐싱합니다. 따라서 특정 단말이 최초로 www.netmanias.com에 접속 요청을 하면 그때 Local DNS 서버를 통해 112.220.75.18 정보를 받아 오고 TTL이 1시간이라면 그 시간 동안 단말은 www.netmanias.com에 접속시 DNS 요청을 하지 않습니다.
5. 통상적으로 DNS 서버가 전달해 주는 TTL 값은 꽤 큽니다. 근데... 해당 서버가 Akamai, CDNetworks와 같은 Global CDN 서버스를 사용하고 있는 경우에는 얘기가 달라집니다. Akamai의 경우 DNS TTL 값을 20초로 줍니다. 즉, 20초가 지나면 단말이든 Local DNS 서버이든 간에 다시 DNS 요청을 하게 되고, 그 시점에 단말에게 가장 좋은(가깝고 빠른) 캐싱 서버(에지 서버)를 선택하여 해당 서버의 IP 주소를 Local DNS 서버를 거쳐 단말로 전달해 줍니다.
현재 시스코(www.cisco.com)가 Akamai CDN 서비스를 사용하고 있으며 "ping www.cisco.com" 직후 "ipconfig /displaydns"를 해 보시면 www.cisco.com에 대한 TTL 값이 20초임을 확인하실 수 있습니다.
6. 결론: LTE 단말이 보낸 DNS Query 메시지의 Source IP 주소(Public IP 주소)는 바뀔 수 있습니다. 하지만 이 값이 바뀐다고 Local DNS 서버가 다른 IP 주소 값을 주는 것은 아닙니다. 아마도 시험 하신 서버가 Global CDN 서비스를 사용하고 있어 CDN 로직(DNS 기반의 Request Routing)에 의해 IP 주소가 변경되지 않나 싶습니다. 정확한 시험을 위해 CDN 서비스를 사용하고 있지 않은 www.netmanias.com으로 해보심이 어떨런지요.