이틀 동안 AWS (Amazon Web Service) 에 대해 간단히 알아보고 또 실습하는 과정을 밟았습니다. 특히 오늘은 Advanced 과정으로 Route53, CloudFront, Certificate Manager 를 이용해 https 를 적용해보는 과제를 진행했습니다.
블로그 링크를 쫓아 차근차근 진행하면 될 줄 알았는데 문제가 생겼습니다. 앞서 이미지로 보여드린 것처럼 도메인 주소로 연결이 되지 않고, DNS_PROBE_FINISHED_NXDOMAIN
이라는 메시지만 뜨더라구요.
결론부터 먼저 말씀드리자면 Route 53 에서의 문제는 아닌 것 같고, 아마도 무료 도메인을 받아온 freenom 사이트에서 name server 가 제대로 등록이 안되었거나 .tk 라는 국가 도메인의 문제가 아닌가 싶습니다.
오늘은 이 과제를 해결해나가면서 마주쳤던 문제들과 이를 어떻게 해결해나갔는지에 대해 블로깅을 해보겠습니다.
첫번째 문제는 freenom 사이트의 가입 문제였습니다. 회원가입 버튼을 찾을 수가 없고, 소셜 로그인을 시도하니 오류 메시지만 나오더라구요.
예전에는 금방 가입이 되었던 모양인데 알 수 없는 이유로 지금은 가입을 진행하는데 어려움이 있습니다. 마침 동기 수강생 분을 통해서 문제를 해결할 수 있는 실마리가 담긴 유튜브 링크를 얻을 수 있었습니다.
원하는 도메인 이름부터 검색해보고, 무료로 사용 가능한 도메인을 체크아웃 해서 이메일을 등록하게 되면 가입이 처리되는 형식이었습니다. 이 때 중요한 점은, 검색할 때부터 뒤에 국가 도메인 주소를 붙여서 검색해야 사용이 가능한지 여부를 알 수 있다는 것입니다.
약간의 잡설입니다만, freenom 에서 제공하는 최상위 도메인은 보통 아프리카 여러 국가의 국가 코드 최상위 도메인이라고 합니다. 한국이 .kr 이라면 .ml 은 말리, .cf 는 중앙 아프리카 공화국 이런 느낌인 셈이죠. 참고로 오류 이미지의 .tk 는 토켈라우라고 하는 뉴질랜드령의 섬의 국가 도메인입니다.
블로그 링크를 따라서 진행하는 와중에 마주한 두 번째 문제는, Route 53 설정 부분에서 발생했습니다. 따라서 진행을 잘 했다고 생각했는데 도메인으로 접속이 불가능하더라구요.
블로그 작성자 분께서 "만약 접속이 불가하더라도 나머지 과정을 쭉 진행하자" 라고 적어두셔서 일단 이 부분은 넘어갔습니다.
댓글에서 어느 분이 언급하신 바로는, 지금은 도메인 인증서를 발급받아서 Alternate Domain Names(CNAMEs) 를 반드시 설정해야지만 Cloudfront 를 통한 배포가 가능하다고 합니다.
그 다음 과정은 AWS Certificate Manager 를 활용해 SSL 인증서를 받아 Cloudfront 와 연동하는 과정이었습니다. 처음에는 생각보다 SSL 인증서를 발급받는 데 꽤나 오랜 시간이 걸렸는데요. 이게 잘 되고 있는건지를 알 수 있는 방법이 없다 보니 내가 뭘 잘못한게 아닌가 싶어 전전긍긍하기도 했습니다.
나중에 여러번 이 과정을 반복했었는데, 이상하게도 그 다음부터는 발급 자체는 매우 빠르게 진행되더라구요. 아래 이미지처럼 Status 부분에 "Issued" 라고 뜨면 발급이 잘 마무리된 것을 알 수 있습니다.
참고로 여기서 끝이 아니고 Cloudfront 로 가서 Distribution Settings 라는 과정을 하도록 되어있는데요. 블로그 글과 UI 가 조금 바뀐 부분들이 있었습니다.
Distribution 이름을 클릭하면 나오는 General 탭의 아래 부분에 있는 Settings 를 Edit 해서 진행이 가능합니다.
Edit 를 눌러서 들어가면 Custom SSL Certificate 라고 해서 발급받은 인증서를 선택할 수 있는데요. 자동으로 인증서가 연동되어 선택 창에 뜨게 되는데 시간이 조금 걸리는 편입니다. 만약 너무 오래동안 선택 창에 업데이트가 되지 않을 경우에는 인증서를 다시 만들어보시는 것을 권해드립니다. 실제로 한참을 기다렸는데도 업데이트가 되지 않아 다시 새로고침해보니 어쩐 일인지 인증서가 날아가고 생성이 안 되었었더라구요. ㅠㅠ
블로그 상으로는 여기까지 진행하면 인증서가 적용되고 정상적으로 도메인이 연결되어야 하는데 도무지 연결이 안 되더라구요. 혹시라도 freedom 에서 도메인을 만들 때부터 문제가 있었나 싶어 새로 다른 도메인을 만들었었습니다. (참고로 위에서 한참을 기다려도 인증서가 선택 창에 안 떴었던 건 새로운 도메인을 만들었을 때 일이었죠.)
우여곡절 끝에 새로운 도메인은 정상적으로 잘 작동하는 걸 확인할 수 있었습니다. 그냥 거기서 끝을 냈으면 좋았을텐데, 왜 오류가 생기는 건지가 궁금하더라구요. 잘 되는 케이스와 안 되는 케이스가 있으니 둘을 비교해보면 문제를 알 수 있지 않을까 싶어 검토를 시작했습니다.
하지만 AWS의 시스템 상에서는 아무런 차이점을 발견하지 못했습니다. 찾고 찾다가 몇가지 유용한 명령어를 발견하게 되었고, 이 명령어를 통해 일단 원인이 어디 쯤에 있는지를 파악할 수 있었습니다. 나름의 꿀팁이 되었으면 하는 마음으로 소개해봅니다.
터미널에서 dig 이라는 명령어를 통해 DNS 네임 서버에 query 를 날릴 수 있다고 하는데요. +trace 라는 옵션을 붙이면 어떻게 우리가 원하는 ip 주소를 찾아가는지 그 흐름을 확인할 수 있습니다.
nslookup [도메인 주소] [네임 서버 주소]
와 같이 명령어를 입력하면 특정한 네임 서버 주소를 통해 매핑되는 ip 를 확인할 수 있습니다.
제대로 동작하지 않는 도메인 주소를 넣어 dig +trace
명령어를 실행해본 결과 root name server 에서 국가 코드 최상위 도메인 서버(?) 까지 진행되다가 아무 것도 찾을 수 없다는 결과를 보여주는 것을 알게 되었습니다.
사진의 아래 부분을 보시면 couldn't get address for '******': not found 라는 문구가 반복되는 것을 확인할 수 있습니다.
반대로 AWS Route 53 에서 제공하고 있는 4개의 name server 주소를 넣어 nslookup
명령어를 실행해보니 ip 주소를 잘 매핑하고 있다는 것을 알 수 있었구요.
앞서 말한대로 결국 name server 가 freenom 쪽에 제대로 설정이 안되었든지, 아니면 그보다 더 상위에서 생긴 문제가 아닐까 싶은데 이 둘 중 어느 쪽에서 생긴 문제인지는 현재로써는 파악하기가 어렵다는 생각이 듭니다.
AWS 쪽의 문제라면 설정을 바꾸고 뭐 다른 접근을 해볼 수 있을텐데 그런 것이 아니니 이 정도면 충분한 것 같아 더 이상 고민할 필요는 없다고 판단하게 되었네요.
freenom 에서 name server 를 변경하게 되면 적용되기까지 시간이 걸린다는 말이 있어 내일 한 번 더 접속해보려고 합니다만.. 다른 도메인 주소는 이미 적용이 된 것으로 보아서는, 문제가 되는 도메인 주소로 접속이 될 가능성은 낮아 보입니다.
문제를 해결해나갔던 과정을 한 번 정리해보았습니다. 해결이 안되어서 찝찝한 마음이면 어떡하나 싶었는데, 그래도 일단 제가 어찌할 수 있는 문제가 아니라고 생각이 되니 마음은 한결 편하네요.
프로젝트에 돌입하게 되면 종종 이런 순간을 겪게 되지 않을까 싶은 생각이 들었습니다. 완벽하지는 않더라도 이렇게 하나하나 풀어가다보면 어떻게든 결과를 낼 수 있을 거라는 자신감을 조금이나마 얻은 것 같네요.
마지막으로 크나큰 힌트를 제공받았던 "갓활코딩"님의 유튜브 강의 영상을 링크합니다. 시리즈 물이니 다른 강의도 함께 보시면 조금 더 깊은 이해가 가능할 것 같습니다.
Freenom을 사용하여 무료 도메인을 얻어 Cloudflare DNS로 교체하였는데, 적어주신 것과 동일한 이슈를 경험하고 있습니다. 참으로 답답한 지경인데요. 혹시 하루가 지난 뒤에 접속이 잘 되시던가요?