[Network] Hybrid DNS Network #1 (feat. AWS, IDC)
0. 작성 취지
사설 DNS를 AWS 환경과 IDC 환경에서 모두 사용해야 하는 경우에는 AWS에서와 IDC에서는 어떻게 해야 하는지를 테스트 해보고자 한다.
위 사진이 만들고자 하는 최종 아키텍처인데 Direct Connect를 개인 구축하는 것은 비용과 장비 측면에서 어렵기 때문에 Site to Site VPN으로 대체해서 진행한다.
모든 테스트 진행 순서는 아래와 같다.
- [AWS - IDC 환경] Site to Site VPN 구축
- [IDC 환경] Openswan 구축, DNS 서버 구축
- [AWS - IDC 환경] Routing 설정
- [AWS 환경] Private Hosted Zone Route53 구축
- IDC -> AWS로 질의하는 경우
- [AWS 환경] Inbound Resolver Endpoint 생성
- [IDC 환경] DNS Forwarder 설정
- AWS -> IDC로 질의하는 경우
- [AWS 환경] Outbound Resolver Endpoint 생성
- [AWS 환경] Rules 생성
이번 포스팅에서는 사전 준비 격인 아래 4가지를 테스트할 것이다.
- [AWS - IDC 환경] Site to Site VPN 구축
- [IDC 환경] Openswan 구축, DNS 서버 구축
- [AWS - IDC 환경] Routing 설정
- [AWS 환경] Private Hosted Zone Route53 구축
1. [AWS - IDC 환경] Site to Site VPN 구축
Site to Site VPN을 구축할 때 필요한 것은 AWS 환경 측의 Virtual Private Gateway
와 IDC 환경 측의 Openswan에 연결된 Public IP
이다.
1-1. Virtual Private Gateway 생성
Virtual Private Gateway는 AWS와 IDC 네트워크를 연결하는 AWS 쪽의 라우터 역할이다.
Virtual Private Gateway는 1개의 VPC와 연결되지만 여러 개의 Customer Gateway와 연결 가능하다.
Virtual Private Gateway를 생성한다.
cloud vpc와 연결한다.
1-2. Customer Gateway 생성
Customer Gateway는 온프레미스 네트워크의 Customer Gateway Device의 설정 값을 Virtual Private Gateway에 제공하기 위한 가상 게이트웨이이다.
이번 포스팅에서 Customer Gateway Device는 Openswan이 된다.
Public IP라서 가렸지만 가려진 IP는 Openswan에 할당한 Elastic IP이다.
1-3. Site to Site VPN 생성
주의할 점으로는 아래와 같다.
- Local IPv4 Network CIDR: IDC Cidr
- Remote IPv4 Network CIDR: Cloud Cidr
2. [IDC 환경] Openswan 서버 구축, DNS 서버 구축
2-1. Openswan 서버 구축
2-1-1. Openswan 패키지 다운로드
yum install -y openswan
(❗️ OS는 Amazon Linux 2를 이용했습니다.)
(❗️ Security Group의 경우 Site to Site VPN이 생성되고 Tunnel 1의 공인 IP를 UDP 4500 Port로 열어주어야 합니다.)
2-1-2. Site to Site VPN 터널 구성
위 사진처럼 Site to Site VPN의 구성을 Openswan으로 맞추고 다운로드 받는다.
위 사진처럼 txt 파일로 가이드 문서가 다운로드가 되는데 해당 문서대로 Openswan 서버에서 직접 작업을 진행하면 된다.
위 사진처럼 VPN Tunnel 중 1개만 Up 상태가 된다면 성공이다.
2-2. DNS 서버 구축
2-2-1. Bind 패키지 다운로드
yum update -y
yum install -y bind bind-utils
(❗️ Security Group의 경우 aws vpc와 idc vpc를 UDP 53 Port로 열어주어야 합니다.)
2-2-2. DNS 설정
/var/named/idc.com.zone
파일을 생성하고 아래 내용을 추가한다.
$TTL 86400
@ IN SOA ns1.cloud.com. root.cloud.com. (
2013042201 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
; Specify our two nameservers
IN NS dnsA.idc.com.
IN NS dnsB.idc.com.
; 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 << idc vpc App Private IP >>
app IN A << idc vpc App Private IP >>
/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; << idc vpc DNS Private IP >>; };
recursion yes;
forward first;
forwarders {
192.168.0.2;
};
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
zone "idc.com" IN {
type master;
file "idc.com.zone";
allow-update { none; };
};
service named restart
chkconfig named on
service named status
정상적으로 동작하는지 확인할 수 있다.
2-3. App 서버 DNS 설정 변경
idc vpc의 App 서버에서 모든 DNS 요청을 idc vpc의 DNS 서버로 할 수 있게 변경해주어야 한다.
DNS1=<< idc vpc DNS Private IP >>
/etc/sysconfig/network-scripts/ifcfg-eth0
에서 위 내용을 추가해야 한다.
reboot
변경사항을 적용시키기 위해 재부팅을 한다.
nslookup
및 ping
도 전부 자기 자신을 가리키고 있다는 것을 확인할 수 있다.
3. [AWS - IDC 환경] Routing 설정
3-1. AWS 환경 Routing 설정
위 사진처럼 cloud vpc에 존재하는 Routing Table에는 route propagation
기능이 있으며 해당 기능을 켜주면 자동으로 Virtual Private Gateway에 연결된 cidr 대역이 추가된다.
cloud vpc에 존재하는 Private Subnet의 Routing Table에 모두 켜준다.
3-2. IDC 환경 Routing 설정
3-2-1. Openswan EC2 Network 설정 변경
위 사진처럼 Openswan의 EC2 인스턴스에 Source / Destination Check 기능을 꺼주어야 한다.
Openswan 입장에서는 자기 자신으로부터 출발하고 도착해야 하는 것이 아닌 다른 서버들(idc vpc의 DNS, App)도 자신을 통해서 트래픽이 나가야 하기 때문이다.
3-2-2. IDC 환경 Routing 변경
idc vpc에 존재하는 모든 Private Subnet의 Routing Table은 cloud vpc에 대해서 Openswan EC2 인스턴스로 가도록 변경해주어야 한다.
4. [AWS 환경] Private Hosted Zone Route53 구축
4-1. Private Hosted Zone Route53 구축
cloud.com에 대한 Private Hosted Zone을 생성하고 may30 이라는 Sub Domain도 연결해준다.
5. 마치며
AWS와 IDC 간의 Hybrid DNS Network를 직접 구축 및 테스트까지 해보고 싶었다.
이번 포스팅은 테스트를 위한 구축이었고 다음 포스팅은 실제 Rule, Forward 등의 테스트를 해보려고 한다.
댓글남기기