안녕하세요.
"2부 : AWS-Azure VPN S2S 연결 및 DNS 서버 구성" 포스팅으로 돌아온 TAK 입니다.
이번 포스팅의 내용에서는 일부 일반적인 리소스 배포에 대한 내용은 생략되어 있습니다.
다만, 필요한 구성에 대한 정보는 포함되어 있음을 알려드립니다.
1부 내용은 아래 링크를 참고해주세요:)
Contents
4. DNS 서버 구성
4-1. Windows Server DNS 서버 설치
AWS, Azure 모두 IaaS형 Windows Server에 대한 DNS 서버 설치 방법은 동일합니다.
4-1-1. 서버 관리자 OR PowerShell을 통한 DNS 서버 설치
(1) [서버 관리자] - [역할 및 기능 추가] - [DNS 서버] 선택을 후 설치
OR
(2) 관리자 권한으로 PowerShell 실행
- DNS 역할 설치를 위한 명령어 실행
Install-WindowsFeature -Name DNS
- 설치 확인
- [서버 매니저]를 통해 반영 확인
4-2. DNS 서버 구성
4-2-1. (AWS) DNS 조건부 전달자 구성
- [서버 매니저] - [Tools] - [DNS]
- blob.core.windows.net / Azure DNS 서버 PIP
- 클라이언트에서 FQDN 쿼리 시, DNS 서버를 통해 대상 리소스 IP 찾을 수 있도록 구성
- 조건부 전달자 이므로 조건에 맞는 DNS 쿼리 시, 동작
- 사용될 Blob 도메인
<Storage Account Name>.blob.core.windows.net
- Azure DNS Server의 Private IP 입력
4-2-2. (Azure) DNS Forwarders 구성
- Azure VM - NIC(Network Interface) 에 연결된 Private IP 정적으로 설정
- 기본값 : 동적 → 정적(Static) 변경
- Azure DNS 서버
- 해당 DNS 서버의 Forwarders에서 Azure DNS 가상 서버 IP(168.63.129.16) 를 바라보게 되는 구성
- 이는 Azure 플랫폼 리소스에 대한 통신 채널을 원할하게 설정하는 데 사용되는 가상 공용 IP 주소
- 또한, 내부 Azure 플랫폼만이 통신 간 메시지 원본을 제공할 수 있으므로, 안전함.
→ 즉, Forwarders 값으로 AWS DNS 서버로부터 수신되면, Azure DNS 로 전달되게끔 구성하는 과정입니다.
4-3. AWS Client 구성
DNS 정보를 AWS의 Default 값이 아닌, AWS에 구성한 DNS 서버를 바라보기 위한 설정
각 인스턴스에 적용되는 보안 규칙에서 대해서 AWS DNS 서버의 보안 규칙 중 인바운드에 대한 부분을 허용
(DNS - 53, UDP + TCP)
- daemon 형식으로 실행중인 Amazon Linux의 DNS Resolve 구성 확인
- systemd-resolved
- nslookup 명령어를 통해 구글 도메인(google.com) 조회하면, 도메인 정보 조회에서 0.200.0.2 서버(DNS)가 사용되었음을 알 수 있습니다.
- 이는 EC2의 기본 DNS 정보이며, AWS에서 구성한 VPC의 대역(10.200.0.0/16) 내 포함되어 있는 내부 IP 입니다.
→ 하지만, 현재 구성에서는 기존 DNS 값이 아닌, 다른 서브넷에 구성한 별도의 DNS 서버를 바라보아야 하며
특정 DNS가 포함된 FQDN 조회 시 정상적으로 결과값을 반환(조건부 전달자 구성 했기 때문)해야 합니다.
**참고 사항
: AWS는 동일 네트워크 구성이더라도 보안 그룹의 인/아웃바운드에 대한 별도 설정 필요합니다.
(Azure의 경우, 기본값으로 가상 네트워크 내 모든 통신 허용)
- 만약 별도의 구성 없이 *기본값(기본 DNS 정보이며, AWS에서 구성한 VPC의 대역(10.200.0.0/16) 내 포함되어 있는 내부 IP)으로 진행한다면, 아래와 같이 클라이언트 단에서 변경한 DNS의 정보값이 반영되지 않습니다.
- telnet 명령어를 통해 DNS port 53 Open 여부 확인 → 액세스 불가 확인
재부팅 중에 유지되는 고정 DNS 서버를 EC2 인스턴스에 할당
- 아래 경로에서 파일 내용 중 DNS 편집
sudo vi /etc/systemd/resolved.conf
- 변경 사항 반영을 위한 서비스 재시작 및 상태 확인
sudo systemctl restart systemd-resolved.service
- 로컬 호스트 리졸버를 바라보며, nameserver 정보 반영 여부 확인
sudo vi /etc/resolv.conf
- 기본 DNS 정보 주석 처리
- 확인
→ DNS 질의 시, 기본 DNS 만 사용되며, 해당 값을 주석 처리하게 되면, 질의 불가(무응답) 합니다.
이러한 이유는,
AWS에 배포된 DNS 서버의 보안그룹 규칙에서 상기 작업에 대한 인바운드 Rule 이 존재하지 않기 때문입니다.
따라서, 다음과 같은 조치가 필요합니다.
- AWS의 배포된 DNS 서버의 보안그룹 규칙에 DNS port 53 대해 인바운드 규칙을 추가합니다.
- DNS(UDR) 추가 → 해당 VPN 대역
- telnet 등 연결 확인을 위한 DNS(TCP) 추가
- 설정 후, 재질의 시 수정된 DNS 정보가 반영되었음을 확인할 수 있습니다.
→ 이는 클라이언트에서 DNS 서버를 통해 Azure 인프라에 배포된 Storage 서비스에 대한 정보를 찾기 위한 과정으로, 클라이언트 단에서 AWS DNS 서버로 질의 하는 과정이 선행되어야 합니다.
결과
위 모든 작업을 통해
Client는 AWS DNS 서버를 바라보고 있으며
이를 통해 Azure의 DNS 서버의 Forwarder를 통해 Azure DNS 서버(168.63.129.16) 와 통신할 수 있습니다.
따라서, Azure 가상 네트워크에 연결된 PaaS 리소스인 Storage Account(Blob)에 할당된 Private IP 확인 가능합니다.
- AWS 내 Client 에서 질의
이상으로 "AWS-Azure VPN S2S 연결 및 DNS 서버 구성" 포스팅을 마치겠습니다.
관련하여 추가 포스팅으로 Azure의 PaaS 리소스인 [Azure DNS Private Resolver]으로 찾아뵙겠습니다:)
'TOPIC > Cloud' 카테고리의 다른 글
Azure Cloud Shell에 Private하게 접근하기 (1) (0) | 2024.04.01 |
---|---|
PaaS형 DNS 서버 Azure Private Resolver 알아보자! (0) | 2023.12.15 |
1부 : AWS-Azure VPN S2S 연결 및 DNS 서버 구성 (1) | 2023.11.29 |
Azure Firewall의 SNAT와 DNAT 공부 하기 (1) | 2023.11.28 |
Azure Firewall을 사용하여 Spoke 간 통신하기 (0) | 2023.11.27 |