AWS 커스텀 DNS 서버 만들기
DHCP 옵션 세트
- 생성된 DHCP 옵션 세트는 수정할 수 없지만 새로운 DHCP 옵션 세트를 생성하고 VPC와 연결할 수 있습니다.
- VPC에는 하나의 DHCP 옵션 세트만 연결할 수 있습니다.
- VPC는 DHCP 옵션 세트 없이 설정할 수도 있습니다.
- DHCP 옵션 세트가 VPC와 연결되면 인스턴스는 자동으로 새로운 옵션 세트를 사용하지만, 이는 몇 시간이 걸릴 수 있습니다.
- 또한 운영 체제 명령어를 사용하여 DHCP 옵션 매개변수를 새로 고칠 수도 있습니다.
- ex)
sudo dhclient -r eth0
핸즈온1: 커스텀 DNS with Route 53 프라이빗 호스팅 영역
-
VPC 생성 -
10.10.0.0/16
- DNS 리졸버 프라이빗 IP -
10.10.0.2
(+2)
- DNS 리졸버 프라이빗 IP -
-
도메인 이름이 corp.internal이고 DNS 서버로 AmazonProvidedDNS를 갖는 DHCP 옵션 세트 신규 생성
-
위에서 생성한 VPC - VPC 설정 편집 - DHCP 옵션 세트 변경
-
corp.internal 프라이빗 호스팅 영역 생성
- A 레코드 추가 - instance1.corp.internal:
10.0.0.11
- A 레코드 추가 - instance2.corp.internal:
10.0.0.15
- A 레코드 추가 - instance1.corp.internal:
-
EC2 Instance 생성
- 퍼블릭 서브넷
- Amazon Linux 2 이미지
- 10.0.0.11을 사설 IP로 갖는 instance1
- 10.0.0.15을 사설 IP로 갖는 instance2
인스턴스1 접속 후 쿼리
[ec2-user@ip-10-0-0-15 ~]$ cat /etc/resolv.conf
...
nameserver 10.0.0.2
search corp.internal
[ec2-user@ip-10-0-0-15 ~]$ nslookup instance2.corp.internal
...
Server: 10.0.0.2
Address: 10.0.0.2#53
Non-authoritative answer:
Name: instance2.corp.internal
Address: 10.0.0.15
$ ping instance2.corp.internal
$ ping instance2
$ nslookup instance2.corp.internal
핸즈온2: EC2 인스턴스를 DNS 서버로 활용하기
-
퍼블릭 서브넷과 프라이빗 서브넷을 갖는 VPC 생성 (10.0.0.0/16)
-
DNS 서버로 활용할 인스턴스와 앱 서버는 퍼블릭 서브넷에 존재
DNS 서버 보안그룹 설정
- VPC 대역에서 들어오는 UDP 53 트래픽 허용
- 내 IP/32로 들어오는 SSH 트래픽 허용
-
DB 서버는 프라이빗 서브넷에 존재
APP, DB 서버 보안그룹 설정
- VPC 대역에서 들어오는 ICMP 트래픽 허용 (ping)
- 내 IP/32로 들어오는 SSH 트래픽 허용
EC2 인스턴스 DNS 설정
# DNS 서버 접속
sudo su -
yum update -y
yum install bind bind-utils -y
vi /var/named/corp.internal.zone
...
$TTL 86400
@ IN SOA ns1.corp.internal. root.corp.internal. (
2013042201 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
; Specify our two nameservers
@ IN NS dnsA.corp.internal.
IN NS dnsB.corp.internal.
; Resolve nameserver hostnames to IP, replace with your two droplet IP addresses.
dnsA IN A 1.1.1.1
dnsB IN A 8.8.8.8
; Define hostname -> IP pairs which you wish to resolve
@ IN A 10.0.7.78
app IN A 10.0.7.78
db IN A 10.0.130.208
vi /etc/named.conf
...
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-transfer { localhost; 10.0.6.210; };
recursion yes;
forward first;
forwarders {
10.0.0.2;
};
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
zone "corp.internal" IN {
type master;
file "/var/named/corp.internal.zone";
allow-update { none; };
};
service named restart
chkconfig named on
- DHCP 옵션 세트 신규 생성
- 도메인 이름: corp.internal
- 네임 서버: DNS 서버로 사용할 EC2 인스턴스의 사설 아이피
- VPC - VPC 설정 편집 - 위에서 생성한 DHCP로 변경
- DHCP 업데이트를 위해 DNS 서버 인스턴스와 APP 서버 인스턴스 재부팅
$ cat /etc/resolv.conf
...
nameserver 10.0.6.210
search corp.internal
# 변경된 nameserver 확인
$ nslookup app.corp.internal
...
Server: 10.0.6.210
Address: 10.0.6.210#53
Name: app.corp.internal
Address: 10.0.7.78
$ nslookup db.corp.internal
...
Server: 10.0.6.210
Address: 10.0.6.210#53
Name: db.corp.internal
Address: 10.0.130.208
$ nslookup db
...
Server: 10.0.6.210
Address: 10.0.6.210#53
Name: db.corp.internal
Address: 10.0.130.208
$ ping db