모든 리전에서 기본 DNS 확인자를 선택적으로 우회하도록 AWS EC2 인스턴스를 구성하려면 어떻게 해야 합니까?

모든 리전에서 기본 DNS 확인자를 선택적으로 우회하도록 AWS EC2 인스턴스를 구성하려면 어떻게 해야 합니까?

AWS EC2 인스턴스 네트워크가 있습니다. 대부분은 유출을 방지하고 내부 도메인을 확인하기 위해(사용자 지정 TLD 사용) 기본 VPC의 DNS 확인자를 사용하고 있습니다. 모두 잘 작동합니다.

그러나 대규모 인터넷에 연결하기 위해 일반 공개 확인자를 사용해야 하는 하나(Ubuntu) 인스턴스가 있습니다(예: 8.8.8.8).

/etc/systemd/resolved.conf를 다음으로 대체하여 us-east-1에서 이 작업을 수행했습니다.

[Resolve]
DNS=8.8.8.8 208.67.222

/etc/systemd/resolved.conf.d/MYTLD.conf 추가

[Resolve]
Domains=MYTLD
DNS=10.6.0.2

systemd-resolved를 다시 시작한 후 인스턴스는 모든 도메인을 정상적으로 확인합니다. 하지만 이와 똑같은 구성을 us-east-2의 거의 동일한 네트워크에 적용하면 공용 DNS가 작동하지 않습니다.

StackExchange에서 찾은 제안 중 하나는 /etc/resolv.conf를 /run/systemd/resolve/resolv.conf에 심볼릭 링크하는 것이었습니다. 이로 인해 공용 DNS가 확인되기 시작했지만 내부 TLD가 중지되었습니다.

DNS가 모든 지역에서 일관되게 확인되도록 하려면 어떻게 해야 합니까?

답변1

나는 해결책을 찾았습니다.

DNS Resolver는 기본 블록으로 설정되어 있었습니다.(당연히 이것이 이 연습의 핵심이었습니다.) 그러나 응답은 NODATA로 설정되었습니다. 이로 인해 경쟁 조건이 발생했습니다. systemd-resolve 사용링크-로컬 멀티캐스트 이름 확인DNS 결과를 얻으려면. 이는 AWS 내부 서버와 공용 서버 중 하나에 동시에 쿼리했음을 의미합니다. LLMNR은 처음으로 성공한 결과 또는 마지막 실패(모든 결과가 실패인 경우)를 반환합니다.

DNS Resolver의 NODATA 결과는 기술적으로 성공이므로 결과가 먼저 도착하면 해당 결과가 반환됩니다. systemd-resolve의 관점에서 실패 결과인 작업을 NXDOMAIN으로 변경하면 문제가 해결되었습니다.

관련 정보