Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Amazon EC2 인스턴스에 재부팅해도 유지되는 정적 DNS 서버를 할당하려면 어떻게 해야 합니까?
재부팅 시에 유지되는 정적 DNS 서버를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 구성하고 싶습니다.
간략한 설명
기본적으로 Amazon Virtual Private Cloud(VPC)와 연결된 Amazon EC2 인스턴스는 시작할 때 DNS 서버 주소를 요청합니다. Dynamic Host Configuration Protocol(DHCP)이 요청을 전송합니다. DHCP 응답은 로컬 /etc/resolv.conf 파일에 기록된 DNS 서버 주소를 반환합니다.
인스턴스를 다시 시작하면 사용자 지정 DNS 서버 주소가 포함된 resolv.conf 파일을 수동으로 수정하지 않아도 됩니다. 인스턴스를 재부팅할 때 정적 DNS 서버를 유지하려면 Linux 배포에 따라 다음 절차 중 하나를 완료하세요.
해결 방법
중요: 인스턴스를 변경하기 전에 Amazon Machine Image(AMI)를 사용하여 백업을 생성하세요. 또는 Amazon Elastic Block Store(Amazon EBS) 스냅샷을 사용하여 백업을 생성할 수도 있습니다. 인스턴스의 네트워킹 구성을 변경하면 인스턴스에 접속할 수 없게 될 수 있습니다.
Amazon Linux 2023
Amazon Linux 2023은 systemd-resolved를 사용합니다. 자세한 내용은 Archlinux 웹 사이트에서 systemd-resolved를 참조하세요.
확인자 구성
/etc/systemd/resolved.conf 파일을 편집하고 DNS 및 도메인 옵션을 변경합니다.
구성 파일 예제:
# /etc/systemd/resolved.conf [Resolve] DNS=8.8.8.8 Domains=~.
또는 드롭인을 생성합니다. 예를 들어, /etc/systemd/resolved.conf.d/dns\ _servers.conf 파일을 사용하세요.
구성 파일 예제:
#/etc/systemd/resolved.conf.d/dns_servers.conf [Resolve] DNS=8.8.8.8 8.8.4.4 Domains=~.
참고: Domains=~. 옵션이 설정되지 않은 경우 systemd-resolved는 per-link 구성에 설정된 per-link DNS 서버를 사용할 수 있습니다. Domains=~. 옵션은 per-link 구성에 지정된 보다 구체적인 검색 도메인과 일치하는 도메인 이름의 쿼리에는 영향을 미치지 않습니다. 도메인 이름은 여전히 각각의 per-link DNS 서버를 사용하여 확인됩니다.
/etc/resolv.conf가 가리키는 위치를 변경하세요
/etc/resolv.conf는 로컬 호스트 스텁 확인자로 기본 설정되어 있습니다. 확인자를 변경하려면 다른 내용으로 파일을 다시 만들거나 로컬 호스트 스텁 확인자가 아닌 다른 곳을 가리키도록 합니다. 예를 들어, systemd-resolved에서 사용하는 서버의 플랫화된 목록이 포함된 /run/systemd/resolve/resolv.conf를 가리킬 수 있습니다.
구성을 테스트하려면 resolvectl status 명령을 실행하고 resolvectl query amazonaws.com을 사용하세요. 그런 다음 출력을 검토하세요.
Amazon Linux 또는 Amazon Linux 2
다음 옵션 중 하나를 사용하여 인스턴스를 구성합니다. 두 옵션을 모두 적용하는 경우 ifcfg-eth0 파일에 지정된 DNS 서버를 우선으로 합니다.
두 옵션이 모두 작동하려면 ifcfg-eth0 파일의 PEERDNS 파라미터 값을 yes로 설정해야 합니다. PEERDNS 파라미터를 no로 설정하면 ifcfg-* 파일에 지정되거나 DHCP에서 제공한 DNS 서버가 무시됩니다.
옵션 1:
다음 단계를 완료합니다.
- /etc/dhcp/dhclient.conf 파일을 편집하거나 생성합니다.
참고: 이 파일을 편집하려면 루트 사용자 권한이 있어야 합니다. sudo -i를 사용하여 루트가 되거나 sudo를 사용하여 모든 명령을 구현하세요. - domain-name-servers를 재정의하려면 파일에 supersede 명령을 추가합니다. 다음 명령 예제에서는 xxx.xxx.xxx.xxx를 인스턴스에서 사용하려는 DNS 서버의 IP 주소로 바꿉니다.
앞의 수정 후 인스턴스 재부팅 시 resolv.conf 파일이 dhclient 파일에 지정한 DNS 서버만 포함하도록 업데이트됩니다.supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
- per-interface 구성 파일인 /etc/sysconfig/network-scripts/ifcfg-*에서 PEERDNS 파라미터를 yes로 설정합니다.
- EC2 인스턴스를 재부팅합니다.
옵션 2
다음 단계를 완료합니다.
-
/etc/dhcp/dhclient.conf 파일의 DNS 서버 값을 재정의하려면 per-interface 구성 파일에서 사용자 지정 DNS 서버를 지정합니다.
예를 들어, 다음 파일은 두 개의 사용자 지정 DNS 서버를 포함하도록 수정된 Amazon Linux 인스턴스의 /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 보여 줍니다.DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes TYPE=Ethernet USERCTL=yes PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes RES_OPTIONS="timeout:2 attempts:5" DHCP_ARP_CHECK=no MTU="9001" DNS1=8.8.8.8 DNS2=8.8.4.4
-
per-interface 구성 파일인 /etc/sysconfig/network-scripts/ifcfg-*에서 PEERDNS 파라미터를 yes로 설정합니다.
Ubuntu 16.04
다음 단계를 완료합니다.
- /etc/dhcp/dhclient.conf 파일을 편집하거나 생성합니다.
참고: 이 파일을 편집하려면 루트 사용자 권한이 있어야 합니다. sudo -i를 사용하여 루트가 되거나 sudo를 사용하여 모든 명령을 구현하세요. - domain-name-servers를 재정의하려면 파일에 supersede 명령을 추가합니다. 다음 명령 예제에서는 xxx.xxx.xxx.xxx를 인스턴스에서 사용하려는 DNS 서버의 IP 주소로 바꿉니다.
이렇게 수정하면 인스턴스를 재부팅할 때 resolv.conf 파일이 dhclient 파일에 지정한 DNS 서버만 포함하도록 업데이트됩니다.supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
- 인스턴스를 재부팅합니다.
Ubuntu 18.04
Ubuntu 18.04에서는 netplan.io 패키지가 네트워크 인터페이스 구성을 관리하고 systemd-resolved 서비스가 스텁 확인자를 사용하여 DNS 쿼리를 관리합니다. 스텁 확인자 IP 주소는 /etc/resolv.conf에 있습니다.
/etc/resolv.conf 파일은 /run/systemd/resolve/stub-resolv.conf 파일에 대한 symlink입니다. 다음 조건 중 하나라도 /etc/resolv.conf 파일에 대해 참이면, /etc/dhcp/dhclient.conf의 supersede 문이 예상대로 작동하지 않을 수 있습니다.
- 해당 파일이 인스턴스에서 symlink가 아닙니다.
- 해당 파일은 다른 파일을 가리키는 symlink입니다. 예를 들어, 파일은 /run/systemd/resolve/resolv.conf를 가리킵니다.
DNS 서버 값을 재정의하려면 다음 단계를 실행합니다.
- Netplan은 일반적으로 /etc/netplan 디렉터리에 구성 파일을 저장합니다. 이름이 /etc/netplan/99-custom-dns.yaml인 파일을 만든 다음 파일에 다음 줄을 입력합니다. 예제 DNS 서버 IP 주소를 사용자의 IP 주소로 바꾸십시오.
참고: 위의 예제 코드에서 인터페이스는 ens5로 지정되었습니다. 인터페이스 이름이 설정한 인터페이스와 일치하는지 확인합니다. 인터페이스 이름을 확인하려면 ip a 명령을 실행합니다.cat << 'EOF' | sudo tee /etc/netplan/99-custom-dns.yaml network: version: 2 ethernets: ens5: nameservers: addresses: [1.1 .1 .1, 1.0 .0 .1] dhcp4-overrides: use-dns: false use-domains: false EOF
- Netplan YAML 파일을 구성 파일로 변환하려면 다음 netplan 명령을 실행합니다.
이제 /etc/resolv.conf에 스텁 확인자 IP 주소가 있습니다. 이는 예상된 결과입니다. 스텁 확인자 IP 주소는 운영 체제에 로컬입니다. 백그라운드에서 스텁 확인자는 99-custom-dns.yaml 파일에 지정한 DNS 서버를 사용합니다.netplan generate
- 인스턴스를 재부팅합니다.
- 시스템이 의도한 DNS 서버 IP 주소를 올바르게 수신하는지 확인하려면 systemd-resolve 명령을 실행합니다.
systemd-resolve --status
RHEL 7.5
기본적으로 NetworkManager 서비스는 resolv.conf 파일을 관리합니다. 그런 다음 이 서비스는 DHCP에서 제공하는 DNS 서버로 파일을 채웁니다. NetworkManager가 resolv.conf 파일을 관리하지 않도록 허용하지 않으므로 resolv.conf 파일이 DHCP에서 제공하는 DNS 서버를 무시하게 합니다.
옵션 1:
다음 단계를 완료합니다.
- /etc/dhcp/dhclient.conf 파일을 편집하거나 생성합니다.
참고: 이 파일을 편집하려면 루트 사용자 권한이 있어야 합니다. sudo -i를 사용하여 루트가 되거나 sudo를 사용하여 모든 명령을 구현하세요. - domain-name-servers를 재정의하려면 파일에 supersede 명령을 추가합니다. 다음 예제에서는 xxx.xxx.xxx.xxx를 DNS 서버의 IP 주소로 바꿉니다.
또는 인스턴스에서 사용하기를 선호하는 서버를 입력할 수 있습니다.supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
이렇게 수정하면 인스턴스를 재부팅할 때 resolv.conf 파일이 dhclient 파일에 지정한 DNS 서버만 포함하도록 업데이트됩니다. - per-interface 구성 파일인 /etc/sysconfig/network-scripts/ifcfg-*에서 PEERDNS 파라미터를 yes로 설정합니다.
- 인스턴스를 재부팅합니다.
옵션 2
다음 단계를 완료합니다.
-
다음 콘텐츠가 포함된 /etc/NetworkManager/conf.d/90-dns-none.conf 파일을 생성합니다.
[main] dns=none
-
인스턴스를 재부팅한 다음 /etc/resolv.conf 파일을 수동으로 채웁니다.
관련 정보
Archlinux 웹 사이트의 2.1 네트워크 파일
Archlinux 웹 사이트의 resolved.conf(5)
Archlinux 웹 사이트의 dhclient.conf(5)
Archlinux 웹 사이트의 networkmanager.conf(5)
관련 콘텐츠
- 질문됨 일 년 전lg...
- 질문됨 8달 전lg...
- 질문됨 일 년 전lg...
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 10달 전