대부분 Ubuntu 18이 설치된 네트워크와 네트워크 콘텐츠에 대한 로컬 전용 DNS 서비스가 있습니다.
내가 원하는 것은 시스템이 부팅 시 DHCP를 통해 정상적으로 네임서버를 얻는 것입니다. 이러한 요청을 인터넷으로 보내는 대신 로컬 컴퓨터에 로컬 DNS 서버를 사용해야 하지만 다른 모든 조회에는 인터넷 서버를 사용해야 합니다.
사용자가 메뉴 표시줄에 있는 NetworkManager 제어 VPN 클라이언트에 연결할 때 로컬이 아닌 요청에만 VPN의 DNS 서버를 사용해야 하며, DHCP에서 얻은 DNS 서버는 절대 사용하지 않아야 합니다. 그러나 계속해서 로컬 서버를 사용해야 합니다. 로컬 요청을 처리 중입니다.
내 생각에는 로컬 확인을 위해 dnsmasq의 "서버" 옵션을 성공적으로 사용한 것 같습니다. 단, 정규화된 로컬 이름에 대해서도 여전히 요청을 인터넷으로 전달합니다.
먼저 로컬 서버에서 이전 스타일의 resolv.conf를 설정하려고 시도했지만(서버는 요청을 전달하는 대신 거부하도록 구성되어 있음) Ubuntu의 확인자가 구문 분석에서 두 번째 서버를 즉시 사용하려고 시도하지 않기 때문에 실패했습니다. 첫 번째 서버가 요청을 거부하면 두 번째 서버를 시도하기 전에 5초 후에 강제로 시간 초과되도록 합니다. options timeout:1 을 사용하여 시간 초과를 1초로 줄일 수 있지만 여전히 이상적인 수준은 아니며 VPN이 파일을 다시 쓸 때마다 해결하기 위해 네트워크 관리자가 해당 옵션을 작성하도록 하는 방법을 찾지 못했습니다. 아니면 아래로. 저는 NetworkManager와 충돌하지 않는 솔루션을 선호하지만 작동하는 솔루션이라면 무엇이든 좋습니다.
답변1
이 질문을 우연히 발견한 다른 사람을 위해 제가 현재 사용하고 있는 답변은 다음과 같습니다.
그러나 문제가 있습니다. 문서 내용에 관계없이 원격 주소를 쿼리할 때마다 일련의 요청을 로컬 서버로 보냅니다. 내 로컬 서버는 빠르고 연구실에 인원이 많지 않기 때문에 이는 허용 가능하지만 일반적인 솔루션으로는 확장성이 좋지 않을 것입니다.