Amazon EC2 Linux 인스턴스에서 DNS 확인 실패를 방지하려면 어떻게 해야 하나요?
Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에서 DNS 확인 실패를 방지하고 싶습니다.
간략한 설명
CPU 및 네트워크 사용량을 줄이고 DNS 확인 실패를 방지하려면 DNS 캐시를 적용합니다.
DNS 캐시를 사용하여 외부 DNS 리소스를 쿼리하는 경우 캐시는 대부분의 반복 DNS 쿼리에 로컬로 응답합니다. 캐시가 이 작업을 수행하면 네트워크를 통해 DNS 해결 프로그램과 상호 작용하지 않습니다. 다음 예와 같은 외부 DNS 리소스를 쿼리할 수 있습니다.
- Amazon Relational Database Service(RDS)
- Amazon ElastiCache
- Amazon Simple Storage Service(S3)
다음 절차는 모든 버전의 Amazon Linux에 적용됩니다. 다른 배포를 사용하는 경우 다음 목록에서 배포에 사용할 설명서를 선택합니다.
- Debian에 대한 자세한 정보는 debian.org 웹 사이트의 로컬 캐싱을 참조하세요.
- Ubuntu에 대한 자세한 정보는 Ubuntu 웹 사이트의 로컬 DNS 캐시를 참조하세요.
- Red Hat Enterprise Linux(RHEL)에 대한 자세한 정보는 Red Hat 고객 포털에서 RHEL에서 dnsmasq를 사용하여 DNS 캐싱 서버를 구성하는 방법을 참조하세요.
해결 방법
dnsmasq를 사용하여 로컬 DNS 캐시를 설정합니다
로컬 DNS 캐시를 설정하려면 dnsmasq를 사용하십시오. 자세한 내용은 thekelleys.org.uk 웹 사이트의 dnsmasq를 참조하세요.
다음 단계를 완료합니다.
-
dnsmasq 서버를 설치하려면 다음 명령을 실행합니다.
sudo yum install -y dnsmasq
-
dnsmasq를 실행할 전용 시스템 사용자를 생성하려면 다음 명령을 실행합니다.
sudo groupadd -r dnsmasq sudo useradd -r -g dnsmasq dnsmasq
참고: dnsmasq는 일반적으로 루트 사용자로 실행되지만 스타트업 후 다른 사용자로 변경됩니다. 기본적으로 사용자는 nobody입니다. dnsmasq가 다른 사용자로 변경되면 루트 권한이 삭제됩니다.
-
dnsmasq.conf 파일의 복사본을 생성하려면 다음 명령을 실행합니다.
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.ori
텍스트 편집기로 구성 파일을 열려면 다음 명령을 실행합니다.
sudo vim /etc/dnsmasq.conf
-
/etc/dnsmasq.conf 파일을 편집하려면 다음 예제 명령을 실행합니다.
# Server Configurationlisten-address=127.0.0.1 port=53 bind-interfaces user=dnsmasq group=dnsmasq pid-file=/var/run/dnsmasq.pid # Name resolution options resolv-file=/etc/resolv.dnsmasq cache-size=500 neg-ttl=60 domain-needed bogus-priv
참고: dnsmasq의 bogus-priv 옵션으로 인해 /etc/hosts에 없는 프라이빗 IP 범위에 대한 역방향 DNS 조회가 실패합니다. 또한 이 옵션을 사용하면 DHCP(동적 호스트 구성 프로토콜) 임대 파일에 대한 역방향 DNS 조회가 실패할 수 있습니다. 성공적인 역방향 조회를 수행하려면 bogus-priv를 주석 처리하거나 제거합니다.
-
/etc/resolv.dnsmasq 파일을 생성합니다. 그런 다음 Amazon DNS 서버 또는 DHCP 옵션 세트에 지정한 사용자 지정 도메인 이름 서버를 설정하기 위해 다음 명령을 실행합니다.
sudo bash -c "echo 'nameserver 169.254.169.253' > /etc/resolv.dnsmasq"
참고: DNS 서버 위치에 대한 자세한 내용은 DHCP란?을 참조하십시오. 경우에 따라 해당 네트워크의 이름 서버를 사용하려면 /etc/resolv.dnsmasq 파일을 조정해야 합니다. 다른 CIDR을 사용하는 다른 VPC에서 시작하기 위해 dnsmasq 캐시가 있는 인스턴스에서 AMI를 생성할 때 파일을 조정합니다. 또는 DHCP 옵션에서 사용자 정의 DNS 서버를 지정할 때 파일을 조정합니다.
-
dnsmasq 서버를 재시작하고 부팅 시 서비스가 시작되도록 설정하려면 다음 작업 중 하나를 수행하십시오.
부팅 시 Amazon Linux 1을 시작하려면 다음 명령을 실행합니다.sudo service dnsmasq restart sudo chkconfig dnsmasq on
재부팅 시 Amazon Linux 2와 Amazon Linux 2023을 시작하려면 다음 명령을 실행합니다.
sudo systemctl restart dnsmasq.service sudo systemctl enable dnsmasq.service
-
dnsmasq가 올바르게 작동하는지 확인하려면 다음의 dig 명령을 사용합니다.
dig aws.amazon.com @127.0.0.1
응답이 다음 예와 비슷하면 dnsmasq 캐시가 올바르게 작동하는 것입니다.
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> aws.amazon.com @127.0.0.1;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25122 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;aws.amazon.com. IN A ;; ANSWER SECTION: aws.amazon.com. 41 IN A 54.239.31.69 ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ...
-
dnsmasq DNS 캐시를 기본 DNS 해결 프로그램으로 설정합니다.
참고: DHCP가 제공하는 기본 DNS 해결 프로그램을 억제해야 합니다. 이렇게 하려면 /etc/dhcp/dhclient.conf 파일을 변경하거나 생성하십시오. 자세한 내용은 Amazon EC2 인스턴스에 재부팅해도 유지되는 정적 DNS 서버를 할당하려면 어떻게 해야 합니까?를 참조하세요.그런 다음 기본 DNS 해결 프로그램을 대체 옵션으로 구성하기 위해 다음 명령을 실행하세요.
sudo bash -c "echo 'supersede domain-name-servers 127.0.0.1, 169.254.169.253;' >> /etc/dhcp/dhclient.conf"
-
변경 사항을 적용하려면 다음 작업 중 하나를 수행하세요. 다음 dhclient 명령을 실행합니다.
sudo dhclient
-또는-
네트워크 서비스를 다시 시작하려면, 다음 명령을 실행합니다.sudo systemctl restart network
-또는-
인스턴스를 재부팅하려면 다음 명령을 실행합니다.sudo reboot
참고: 아마존 리눅스 2023의 경우 **
sudo systemctl restart systemd-networkd.service
**을 dhclient 대신 실행하세요.
인스턴스가 DNS 캐시를 사용하는지 확인하려면 다음 dig 명령을 실행합니다.dig aws.amazon.com
응답에 응답 서버가 127.0.0.1이라고 표시되면 DNS 캐시가 올바르게 작동하는 것입니다.
응답 예시:; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> aws.amazon.com;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1028 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;aws.amazon.com. IN A ;; ANSWER SECTION: aws.amazon.com. 55 IN A 54.239.31.69 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) <<<------- ...
dnsmasq 자동화
Amazon Linux에서 DNS 해결 프로그램으로 dnsmasq의 설치 및 구성을 자동화하려면 다음 옵션 중 하나를 사용합니다.
- AutomateDnsmasq.sh bash 스크립트
- AutomateDnsmasq.cloudinit 지시문
AutomateDnsmasq.sh bash 스크립트에 대한 자세한 내용은 GitHub 웹 사이트에서 #!/bin/bash를 참조하세요.
AutomateDnsmasq.cloudinit 지시문에 대한 자세한 내용은 GithHub 웹 사이트의 #cloud-config를 참조하세요.
다른 Linux 배포판에서 dnsmasq 설치를 자동화하려면 두 파일 중 하나를 사용하여 필요한 사용자 정의를 수행합니다.
두 파일 모두 Amazon DNS 서버 대체 주소 169.254.169.253을 사용하면 VPC 인스턴스에서 실행될 수 있습니다.
시작 시 두 파일 중 하나를 실행하려면 사용자 데이터 필드에 파일 내용을 전달합니다. 인스턴스에서 작업을 수행하기 위해 Bash 스크립트를 독립 실행형 스크립트로 실행하거나 AWS Systems Manager 실행 명령을 사용할 수 있습니다.
Bash 스크립트를 독립형 스크립트로 실행하려면 다음 단계를 완료합니다.
-
인스턴스에 스크립트를 다운로드하고 실행 가능하게 만들기 위해 다음 명령을 실행하세요.
wget https://raw.githubusercontent.com/awslabs/aws-support-tools/master/EC2/AutomateDnsmasq/AutomateDnsmasq.shchmod +x AutomateDnsmasq.sh
-
루트 사용자로 다음 명령을 실행하거나 sudo를 사용합니다.
sudo ./AutomateDnsmasq.sh
관련 정보
관련 콘텐츠
- 질문됨 일 년 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 2년 전