Directory Service 생성 후, Bastion Host에서 SSM이 안될 경우 Provided DNS를 고정해 보기

Directory Service를 생성 후, Bastion Host에서 SSM이 안될 경우 Provided DNS를 고정해 보는 방법에 대해서 정리해 봤습니다.
2022.08.06

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Directory Service를 생성 후, Bastion Host에서 SSM이 안될 경우 Provided DNS를 고정해 보는 방법에 대해서 정리해 봤습니다.

문제 발생

Private Subnet에 EC2 Instance를 생성한 다음, VPC Endpoint를 설정하면 다음과 같이 Session Manager에 접근할 수 있습니다.

하지만 Directory Service를 설정하고 나면 다음과 같이 Session Manager에 연결할 수 없는 문제가 발생합니다.

문제 원인

PS C:\Windows\system32> nslookup ssm.ap-northeast-1.amazonaws.com
Server: ip-10-xxx-0-2.ap-northeast-1.compute.internal
Address: 10.xxx.0.2

Non-authoritative answer:
Name: ssm.ap-northeast-1.amazonaws.com
Addresses: 10.xxx.2.105
10.xxx.1.213

Directory Service를 설정하기 전, EC2 Instance에서 nslookup을 해 보면 다음과 같이 VPC내 IP Address, 즉 Private IP를 반환하고 있는 것을 확인할 수 있습니다.

현재 VPC에 할당된 DHCP 옵션 세트를 확인해 보면「도메인 이름 서버」가 Provided DNS로 설정된 것을 확인할 수 있습니다.

Amazon Provided DNS는 Amazon DNS 서버입니다. 이 옵션은 VPC의 인터넷 게이트웨이를 통해 통신해야 하는 인스턴스에 대해 DNS를 활성화합니다.

그 외, 기본적으로 VPC 내에서 이름 확인을 할 때는 이 서버를 사용하도록 설정되어 있기 때문에 nslookup을 했을 시에도 VPC내 IP Address를 받아볼 수 있게 되는 것 입니다.

반대로 Directory Service를 설정을 한 상태에서 SSM 접속이 안될 경우 nslookup을 해보면 어떤 결과가 나올까요?

PS C:\Users\Administrator> nslookup ssm.ap-northeast-1.amazonaws.com
Server: ip-10-xxx-0-2.ap-northeast-1.compute.internal
Address: 10.xxx.1.191

Non-authoritative answer:
Name: ssm.ap-northeast-1.amazonaws.com
Address: 52.119.223.48

확인해 보면 52.119.223.48라는 글로벌 아이피 주소가 반환 되는 것을 확인할 수 있습니다.

실제로 DHCP 옵션 세트를 확인해 보면「도메인 이름 서버」가 Provided DNS가 아닌 Directory Service로 되어 있기 때문에 VPC 내에서 이름 확인을 하고 있지 못하는 상태입니다.

DNS Server 설정을 확인해 보면, 자동으로 주소를 찾게끔 설정이 되어있습니다.

Directory Service를 설정할 때, DHCP 옵션 세트를 생성하고 VPC에 연결을 해버리면 DHCP 옵션 세트에서 설정 했던 DNS 주소가 자동적으로 할당이 되기 때문에 Private IP가 아닌 글로벌 아이피 주소가 반환되는 것 입니다.

문제 해결

먼저 CMD를 열어서 아래 명령어를 입력합니다.

  • %SystemRoot%\system32\control.exe ncpa.cpl

Ethernet -> Internet Protocol Version 4 (TCP/IPv4)로 들어갑니다.

그리고「Use the following DNS server Addresses」를 선택하고 Provided DNS 주소를 입력합니다.

Provided DNS의 경우 VPC CIDR에서 + 2를 해주면 됩니다.

예를 들어 VPC CIDR이 10.0.0.0일 경우 10.0.0.2가 Provided DNS가 됩니다.

그러면 Directory Service의 DHCP 옵션 세트로 변경이 됐어도 문제 없이 SSM으로 접속할 수 있습니다.

이와 같은 문제 해결 방식을 사용한 이유는 아래와 같습니다.

  • AWS 환경이 Private한 환경이며, Directory Service를 적용하고 싶다.
  • 하지만 Private한 환경이기 때문에 외부에서 AD서버로 접근이 불가능
  • 그렇기 때문에, VPC Endpoint와 Bastion Host를 생성해서 SSM을 이용한 AD서버로 접근 시도
  • 하지만 Directory Service, DHCP 옵션 세트를 설정하면 Bastion Host 또 한 SSM 사용이 불가능 하기 때문에 Directory Service, DHCP 옵션 세트를 설정하기 전, Provided DNS를 고정할 필요가 있다.

그 외 Directory Service에 관한 내용은 아래 블로그를 참고해 주세요.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !