Azure에 단일 클라우드 서버가 있는 단일 가상 네트워크가 있습니다. 이 가상 네트워크에는 Windows 머신과 일부 Linux 머신을 포함한 여러 서버 노드가 있습니다. Windows 머신 중 하나는 가상 네트워크 내에서 이름 확인을 위해 로컬 DNS 서버를 호스팅합니다. 모든 노드는 DNS 옵션으로 생성되었으므로 로컬 DNS가 노드에 DNS로 등록됩니다. 또한 이 DNS 서버(172.16.0.4)를 VN용 DNS로 포함하도록 가상 네트워크 설정이 업데이트되었습니다.
내 Windows 컴퓨터는 잘 작동할 수 있습니다. 새로 프로비저닝하거나 다시 시작하면 해당 컴퓨터의 새 IP가 있는 경우 이를 반영하도록 DNS가 자동으로 업데이트됩니다.
그러나 Linux 시스템은 이 로컬 DNS에 전혀 등록되지 않습니다. Linux 노드는 로컬 DNS(172.16.0.4)를 사용하여 Windows 노드 IP를 확인할 수 있지만 이름 확인을 통해 다른 Linux 노드에 연결할 수는 없습니다.
resolvconf/resolvconf.d/tail 파일 업데이트를 시도하고 "search" 항목을 추가하고 다시 시작했습니다. 또한 Linux 서버의 호스트 이름 파일에 FQDN을 제공해 보았습니다. resolv.conf에 여전히 "search reddog.microsoft.com" 문자열이 있는 것을 확인했습니다. 이는 VN 내에서 새로운 로컬 DNS 서버를 사용할 수 있음에도 불구하고 사용 중인 DNS 접미사가 여전히 오래된 것임을 의미합니다. resolv.conf는 다음과 같습니다.
nameserver 172.16.0.4
search reddog.microsoft.com
내가 이해하는 바에 따르면, 이 문제의 근본 원인은 Azure DHCP 서버가 이 로컬 DNS(VN 수준 DNS로 정식으로 등록됨)에 DDNS 요청을 보내 새로운 노드 또는 다시 시작된 노드에 대한 레코드를 업데이트해야 한다는 것입니다. VN. 그러나 Azure DHCP는 이러한 DDNS 요청을 DNS에 보내지 않는 것 같습니다. 내가 무엇을 놓치고 있나요?
답변1
내 초기 생각은 이것이 Linux 서버로 연결되는 문제가 아니라 DNS 서버가 Linux 서버에서 등록을 수락하는 문제라는 것입니다. 확인해야 할 한 가지 사항은 DNS 영역이 안전하지 않은 업데이트를 허용하도록 구성되어 있습니까? 이는 Linux 서버가 DNS 업데이트를 인증할 수 없기 때문에 필요합니다.
답변2
다음 줄을 추가하여 DHCP 클라이언트의 구성을 수정할 수 있습니다.
supersede domain-name "your.domainname.com";
supersede domain-search "your.domainname.com";
supersede search "your.domainname.com";
일반적으로 파일에서 DHCP 구성을 찾을 수 있습니다 /etc/dhcp/dhclient.conf
. dhclient
내부를 검색하여 /etc/
올바른 것을 찾으세요.
답변3
서버가 재부팅될 때마다 /etc/resolv.conf의 내용이 Azure 기본값으로 재설정된다는 점은 말할 것도 없습니다. 따라서 변경하더라도 다음에 다시 부팅하면 reddog.microsoft.com의 검색 도메인과 기본 Azure 이름 서버가 무엇이든 다시 표시됩니다.