10장 커스텀 도메인과 DNS 준비하기


도메인

인터넷 상에는 많은 서버가 연결되어 있고 이러한 서버들을 구분짓기 위한 정보로 IP주소를 이용한다.
하지만, IP주소는 숫자의 나열로 사람들이 기억하기 어렵다. 그래서 문자를 이용한 표현 수단이 도메인 이름이다.
우리가 흔히 사용하는 www.naver.com 같은 도메인 주소들 말이다.

DNS

도메인 이름에서 IP 주소를 결정하는 것을 이름 결정이라고 하고, 이 이름을 결정하는 시스템을 제공하는 것이 DNS 이다.

SSL 서버 인증서

브라우저에서 통시할 때 수행하는 프로토콜로 HTTP와 HTTPS를 이용한다.

사이트가 위장되지 않았음을 보장해주는 회사들이 있다. 이 회사들을 인증기관이라고 한다.
인증기관에서는 보장을 증명하는 SSL 서버 인증서를 발급해준다.

Route 53

AWS에서 DNS 역할을 하는 네이티브 서비스인 Route 53 를 제공한다.
2가지 기능을 제공한다.

도메인 이름 등록

상위 도메인을 관리하는 조직에 자신의 도메인을 요청해서 등록한다.
도메인 이름을 관리하는 조직에 요청을 보낸뒤 요청이 통과되면 도메인을 획득할 수 있다.
Route 53 이 이러한 과정을 대행해준다.

DNS 서버

Route 53은 DNS 서버의 기능을 제공하는 매니지드 서비스이다.
EC2 로 DNS 서버를 구축할 수도 있다. 안정성, 비용, 성능, 로드밸런서와 연계 등의 장점을 가진 Route 53 을 이용하자.
DNS 서버는 용도에 따라 2가지로 구분된다.

퍼블릭 DNS

외부로부터의 통신에 대해 공개하는 서버의 도메인을 결정하는데 쓰인다.
웹 서버나 로드 밸런서등을 공개할 때 이용되는 서버.
퍼블릭 IP를 반환한다.

프라이빗 DNS

시스템 내부에 생성한 리소스에 이름 붙여서 관리할 때 사용.
시스템 내부에서만 참조되는 것을 전제로하는 서버.
private ip를 반환.

즉, public dns는 외부와의 통신을 위해서 사용하는 것이고, private dns는 내부에서 참조하기 쉽게 사용하는 거라고 이해하면 된다.

Certificate Manager

AWS에서 SSL 서버 인증서도 발행해준다.

SSL 서버 인증서는 3단계로 나눈다.

AWS에서는 DV 인증서만 보장한다.

도메인 이름 취득

Route 53 -> 등록된 도메인 -> 도메인 등록

구매 후 도메인 취득까지 며칠 걸린다. Route 53 대기중인 요청에서 확인할 수 있다.

퍼블릭 DNS에 리소스 정보 추가

Route 53 을 통해서 도메인을 취득하면 자동으로 취득한 도메인을 관리하는 public dns가 생성된다.
public dns에 점프 서버와 로드 밸런서를 추가해주자.

점프서버 정보 추가

Route 53 -> 호스팅 영역 -> 레코드 생성

  1. 라우팅 정책 : 단순 라우팅
  2. 레코드 구성 -> 단순 레코드 정의
    Attachments/Picture/Pasted image 20231208165536.png|500
    • 레코드 유형 : IPv4 주소 및 일부 AWS리소스 선택
    • 값/ 트래픽 유형 : 점프서버의 퍼블릭 Ip

로드밸런서 정보 추가

Attachments/Picture/Pasted image 20231208173718.png|500
점프서버랑은 달리 값/트래픽 라우팅 대상에서 로드밸런서를 지정해준다.

Attachments/Picture/Pasted image 20231208173951.png
점프서버와 로드밸런서에 대한 레코드들을 정의해준뒤에 레코드를 생성한다.

작동확인

도메인 이름이 올바르게 IP주소로 변환되는지 nslookup 명령으로 확인할 수 있다.
Attachments/Picture/Pasted image 20231208181303.png|500
결과를 하나의 도메인에 여러 IP주소가 존재할 수 있다.
로드밸런서와 같은 시스템에서 이러한 방식은 많이 사용된다.

도메인 이름으로 접속

ssh의 config 설정에서 bastion의 Hostname을 도메인 이름으로 바꿔준다.

Host bastion
	Hostname  bastion.learn8run.com
	User ec2-user
	IdentityFile ~/.ssh/chanho.pem

Host web01
	Hostname {web01의 private ip}
	User ec2-user
	IdentityFile ~/.ssh/chanho.pem
	ProxyCommand ssh bastion -W %h:%p

Host web02
	Hostname {web02의 private ip}
	User ec2-user
	IdentityFile ~/.ssh/chanho.pem
	ProxyCommand ssh bastion -W %h:%p

Private DNS 준비하기

private dns 이용가능 여부 확인

VPC -> 세부정보 -> DNS 호스트이름/ DNS 확인 활성화 확인
아니라면 작업 -> VPC 설정 편집 -> 활성화

Attachments/Picture/Pasted image 20231208183559.png|500

호스팅 영역 생성

Route 53 -> 호스팅영역 -> 생성

Attachments/Picture/Pasted image 20231208183748.png|500

EC2 정보 추가

ec2의 정보들을 private dns에 추가한다.
만들어진 호스팅영역에 레코드를 EC2 들의 정보를 추가해준다.
Attachments/Picture/Pasted image 20231208185516.png|500
public dns에 레코드를 추가할 때는 public ip를 사용한 것과는 다르게 private ip를 사용한다.

RDS 정보추가

RDS의 엔드포인트도 등록해준다.
Attachments/Picture/Pasted image 20231208185903.png|500
레코드 유형이 다름에 유의한다.

작동확인

점프서버에서 nslookup 하여 확인할 수 있다.
Attachments/Picture/Pasted image 20231208190919.png|500
rds에 ip 주소가 할당되는데 이는 RDS 내부 시스템에 의해서 변경될 수 있다. 엔드포인트는 변경되지 않아서 문제가 되진 않는다.

config의 private ip도 내부 도메인으로 바꿔준다.

Host bastion
	Hostname  bastion.learn8run.com
	User ec2-user
	IdentityFile ~/.ssh/chanho.pem

Host web01
	Hostname web01.home
	User ec2-user
	IdentityFile ~/.ssh/chanho.pem
	ProxyCommand ssh bastion -W %h:%p

Host web02
	Hostname web02.home
	User ec2-user
	IdentityFile ~/.ssh/chanho.pem
	ProxyCommand ssh bastion -W %h:%p

SSL 서버 인증서

SSL 인증서를 발행하고 취득한 SSL 서버 인증서를 이용해서 HTTPS용 로드 밸런서 리스너를 생성하고 HTTPS 통신을 확인해보자.

SSL 서버 인증서 발행하기

Certificate Manager -> 인증서 요청

Attachments/Picture/Pasted image 20231208191911.png|500

발행 요청을 하면 검증대기 상태가 되고, 수분이 지나면 발급이된다.

다음으로는 도메인을 검증한다.
Attachments/Picture/Pasted image 20231208192204.png|500
DNS레코드를 생성해준다

로드 밸런서에 리스너 추가

발행한 서버 인증서를 이용해서 HTTPS를 받는 리스너를 로드밸런서에 추가해준다.

EC2 -> 로드 밸런서 -> 리스너 추가

Attachments/Picture/Pasted image 20231208194600.png|500
HTTPS를 프로토콜로 설정하고 대상그룹을 설정해준다.
SSL인증서를 선택한다.