도메인 네임 시스템(DNS)
유저가 도메인명(www.example.com)등을 요청하면 해당 도메인에 해당하는 IP(192.0.2.44)를 제공해준다 (전화번호부와 같다)
도메인 네임 시스템의 흐름
1.사용자가 웹 브라우저를 열어 주소 표시줄에 www.example.com을 입력하고 Enter 키를 누릅니다.
2.www.example.com에 대한 요청은 일반적으로 케이블 인터넷 공급업체, DSL 광대역 공급업체 또는 기업 네트워크 같은 인터넷 서비스 제공업체(ISP)가 관리하는 DNS 해석기로 라우팅됩니다. (인터넷 제공업체 KT( ISP )등에서 제공하는 DNS를 여기서 DNS resolver보면 좋다)
3.ISP의 DNS 해석기는 www.example.com에 대한 요청을 DNS 루트 이름 서버에 전달합니다. (DNS 루트 이름 서버는 전 세계에 13개가 있고 이를 600여개의 사본을 만들어서 사용)
4.ISP의 DNS 해석기는 www.example.com에 대한 요청을 이번에는 .com 도메인의 TLD 이름 서버 중 하나에 다시 전달합니다. .com 도메인의 이름 서버는 example.com 도메인과 연관된 4개의 Amazon Route 53 이름 서버의 이름을 사용하여 요청에 응답합니다.
5.ISP의 DNS 해석기는 Amazon Route 53 이름 서버 하나를 선택해 www.example.com에 대한 요청을 해당 이름 서버에 전달합니다.
6.Amazon Route 53 이름 서버는 example.com 호스팅 영역에서 www.example.com 레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고 이 IP 주소를 DNS 해석기로 반환합니다.
7.ISP의 DNS 해석기가 마침내 사용자에게 필요한 IP 주소를 확보하게 됩니다. 해석기는 이 값을 웹 브라우저로 반환합니다. 또한, DNS 해석기는 다음에 누군가가 example.com을 탐색할 때 좀 더 빠르게 응답할 수 있도록 사용자가 지정하는 일정 기간 example.com의 IP 주소를 캐싱(저장)합니다. 자세한 내용은 Time to Live(TTL)를 참조하세요.
8.웹 브라우저는 DNS 해석기로부터 얻은 IP 주소로 www.example.com에 대한 요청을 전송합니다. 여기가 콘텐츠가 있는 곳으로, 예를 들어 웹 사이트 엔드포인트로 구성된 Amazon S3 버킷 또는 Amazon EC2 인스턴스에서 실행되는 웹 서버입니다.
9.192.0.2.44에 있는 웹 서버 또는 그 밖의 리소스는 www.example.com의 웹 페이지를 웹 브라우저로 반환하고, 웹 브라우저는 이 페이지를 표시합니다.
위의 내용을 내 나름대로 한번더 요약하면
1.브라우저에 내 사이트를 url (www.wallydev.com)입력한다
2.ISP(인터넷회사:소프트뱅크)에서 www.wallydev.com에 대한 ip주소가 캐싱(저장)되어있는지 확인한다
3.캐싱된 정보가 있다면 해당 ip를 사용자에게 보낸다
4.만약 캐싱된 데이터가 없다면 루트 네임 서버로 www.wallydev.com를 아는지 물어본다
5.루트 네임서버에서 .com만 식별후 해당 .com이라는 TLD(탑레벨도메인)을 관리하는곳에서 찾으라고 ISP에 지시한다
6.ISP에서 .com을 취급하는 도메인 네임 서버에 알고있냐고 물어본다
7.도메인 네임서버는 www.wallydev.com는 route53의 호스팅 영역에 있다고 알려준다
8.ISP는 해당 정보를가지고 route53의 호스팅영역에 물어본다
9.route53의 호스팅영역에서 www.wallydev.com의 정보를 가지고 있고 A레코드등에 저장된 IP주소를 반환한다
10.ISP는 해당 IP주소를 유저한테 반환후 해당 정보를 캐싱(저장)해둔다
11.다음에 요청이 왔을때 ISP는 캐싱된 데이터를 제공한다 (TTL동안)
도메인주소에서 찾는 과정은 아래와 같이 주소의 뒤에서 부터 찾는다
- 첫번째 인터넷회사의 도메인 서버에서 요청받은 주소를 찾고 없다면
- 루트네임서버에서 COM을 먼저 찾고 그다음에
- TLD네임서버에서 도메인명.COM을 찾고 그 다음에
- 호스팅영역에서 서브도메인명.도메인명.COM까지 찾는다
도메인의 레코드에 대해서
A 레코드: 도메인 주소와 IP 주소를 매핑합니다. 도메인을 IP로 변환하여 트래픽을 라우팅합니다.
가장 중요한 레코드이다. 도메인주소(wallydev.com)을 IP주소/EC2인스턴스의 도메인이름과 맵핑한다.
CNAME 레코드: 도메인 주소를 다른 도메인 주소로 매핑시킵니다. 도메인의 별명을 설정하거나 서브도메인을 연결하는 데 사용됩니다.
다른 도메인으로 전달 또한 AWS의 로드밸런서로 전달가능 (예를들어 값안에 ELB의 도메인명을 입력시 해당 로드밸런서로 이동)
AAAA 레코드: A 레코드의 IPv6 버전으로 IPv6 주소를 매핑합니다.
NS 레코드: 도메인의 네임 서버 정보를 지정하여 DNS 쿼리를 위임합니다.(NS:네임서버 레코드)
호스팅영역과 등록한 도메인을 맵핑하기 위해 사용된다 (상세한 내용은 아래의 "AWS의 LightSail에 도메인을 등록하는 순서"를 참조)
네임서버를 어디서 관리하는지 알려줌 (aws)(필수) - route53에서 도메인을 구입하면 자동 등록
SOA 레코드: 도메인의 네임 서버 인증 정보와 타이머 값을 설정하여 도메인 관리를 지원합니다.
dns영역에 대한 핵심정보 (필수적으로 하나 가짐) -route53에서 도메인을 구입하면 자동 등록
MX 레코드: 메일 서버를 지정하여 이메일 주소의 메일 전송 경로를 설정합니다.
A레코드 CNAME의 장단점
A레코드 : IP로 직접 맵핑하기때문에 빠르다. ip주소가 자주바뀌는 환경에 영향을받는다
CNAME : 다른 도메인을 한번 더 거쳐야하기때문에 느리다. ip주소가 자주바뀌는 환경에 영향받지않는다
도메인 사이트에서 구매한 도메인을 AWS의 Route53에 등록하는 순서
1.도메인 사이트(domain registar)에서 도메인을 구매 (도메인사이트 예 : GoDaddy,Freenom)
2.라우트53에 호스팅영역 생성
3.생성된 호스팅영역의 NS레코드(NS:네임서버)에 있는 4개를 도메인 사이트에 등록함
(호스팅영역을 생성시 AWS의 과금대상이 된다)
도메인이 연결되어있는지 테스트를 위해서 사용하면 좋은 도구
dig
nslookup
AWS의 LightSail에서 도메인 등록법 (Route53의 호스팅영역을 사용하지 않음 = 과금 x)
기존에 Route53에 도메인을 등록하는 순서
1.도메인구입 (Route53/GoDaddy/Freenom)
2.Route53에 호스팅영역 생성
3.생성된 호스팅영역의 NS레코드(네임서버)의 4개의 값 복사
4.NS레코드 4개를 도메인 구입사이트에 등록
(해당 도메인을 찾을 경우 Route53의 호스팅 영역에서 찾도록 맵핑함)
AWS의 LightSail에 도메인을 등록하는 순서 ( *중요 )
1.도메인구입 (Route53/GoDaddy/Freenom)
2.LightSail에 DNS영역(호스팅영역) 생성 // LightSail의 DNS영역 = Route53의 호스팅영역
3.생성된 DNS영역의 NS레코드(네임서버)의 4개의 값 복사
4.NS레코드 4개를 도메인 구입사이트에 등록 (Route53에서 구입된 도메인인 경우 등록된 도메인 -> 이름서버로 이동해서 편집)
5.Lightsail에서 DNS레코드등을 편집해서 도메인을 맵핑한다
(해당 도메인을 찾을 경우 LightSail의 DNS 영역에서 찾도록 맵핑함)
(Route53에서 도메인을 구입시 자동으로 호스팅영역을 추가하므로 나도 모르게 계속 과금되고있었다..)
참고