Mac OS X에서 DNS 확인자 순서 또는 "독점" 경로 추가 순서는 무엇입니까?

Mac OS X에서 DNS 확인자 순서 또는 "독점" 경로 추가 순서는 무엇입니까?

저는 여러 가지 이상한 이유로 인해 다음과 같은 설정을 가진 회사에서 일하고 있습니다.

  • 이더넷: 게스트 네트워크에 있으며 인터넷에 액세스할 수 있습니다.
  • Wi-Fi: 회사 네트워크에 있으며 인트라넷에 액세스할 수 있습니다.
  • 어댑터 순서가 설정되어 이더넷이 먼저
  • route add필요한 인트라넷 경로(10.[4/6/1/39].xx 등)를 추가하는 데 사용됩니다.

이제 문제는 특정 프로그램이 IP를 사용하지 않고 명명된 주소를 사용하기 때문에 작동하지 않는다는 것입니다. 따라서 scutil --dns외부 DNS 서버가 있는 확인자 #1이 있고 인트라넷 DNS 서버가 있는 확인자 #2가 뒤따릅니다. (케이블을 분리하고 Wi-Fi 회사에만 있으면 이름이 잘 해결됩니다.)

두 가지 가능한 해결책을 생각했지만 어떻게 작동하게 할 수 있는지 모르겠습니다.

  • Wi-Fi가 순서대로 첫 번째 어댑터임에도 불구하고 인트라넷 DNS가 인터넷 DNS보다 먼저 시도되도록 DNS 확인자 순서를 어떻게든 전환합니다.
  • Wi-Fi 어댑터를 먼저 배치한 다음 "en0을 통해 IP X 보내기"가 아니라 "en1을 통해 X와 같지 않은 모든 IP 보내기"라고 말하는 "제외" 경로 명령을 찾습니다.

누군가 나를 도와줄 수 있나요?

답변1

같은 회사에서 일했던 것 같네요 ;-)

아래 링크에서 어떤 작업을 수행할 수 있는지 Ruby 스크립트를 찾아보세요.Hennes는 옵션 4)로 설명합니다., 보기 대신 DNS 요청 전달을 사용하지만. 하지만 이 문제는 쉽게 해결할 수 있습니다. https://github.com/simonair/pubcode/blob/master/multihome_setup/multihome_setup.rb

이 스크립트는 필요에 따라 sudo를 사용합니다.

그것이 무엇을 하는지 정확히 이해하는 경우에만 사용하십시오.

Location이 스크립트로 실험을 시작하기 전에 새로운 using을 만드는 것이 가장 좋습니다. System Preferences > Network이렇게 하면 알려진 좋은 스크립트로 다시 전환하여 변경 사항을 실행 취소할 수 있기 때문입니다 Location.

수행할 작업:

  • 모든 네트워크 인터페이스를 열거하고 이를 기반으로 회사 네트워크에 연결된 인터페이스와 다른 네트워크에 연결된 인터페이스를 식별합니다.기본 게이트웨이'IP 주소(인터페이스 자체에 할당된 주소가 아님)
  • BIND기업 네트워크와 인터넷 모두에 대한 요청을 처리하고 도메인별로 전달하도록 내장 DNS 서버를 구성합니다 . 예를 들어 example.com회사 이름 서버로 전달되고 example.net다른 이름 서버로 전달됩니다.
  • 회사 인터페이스를 통해 서브넷 목록에 대한 라우팅을 설정하고 나머지는 다른 네트워크를 통해 라우팅을 설정합니다.
  • 선택적으로 올바르게 구성된 경우 VPN 연결도 시작합니다.

필요에 맞게 스크립트를 조정해야 합니다.

해야 한다는 점을 알아 두세요.restore회사 네트워크 연결을 끊은 후 인수를 사용하여 스크립트를 다시 호출하십시오 .그렇지 않으면 모든 DNS 요청이 로컬 이름 서버에 도착하고 회사 환경 외부에서는 이를 해결할 수 없습니다.

답변2

이것이 적절한 답변인지는 확실하지 않지만 여러 개의 댓글에 넣는 것은 혼란스러워 보입니다.

1) 빠른 해결 방법:

호스트 파일에 인트라넷 이름을 추가합니다. (그것은/private/etc/hosts). 이는 소수의 서버에만 액세스해야 하고 상대적으로 쉬운 경우에 작동합니다. 또한 혼란스러운 느낌이 들며 서버 IP가 변경되면 호스트 파일을 수동으로 업데이트해야 합니다.

2) 인트라넷의 DNS 서버가 인터넷의 이름도 회전한다고 가정하면 해당 DNS 서버만 사용할 수 있습니다. 게스트 네트워크에는 인터넷 액세스가 있고 다른 네트워크에는 인트라넷에 액세스할 수 있다고 명시적으로 언급했기 때문에 이것이 가능하지 않다고 생각합니다. (인트라넷에 인터넷 액세스가 있지만 모든 것을 차단하지 않는 일부 방화벽 규칙을 통해 차단된 경우일 수 있습니다. 예: 포트 53이 아님).

3) 두 DNS 서버를 모두 사용하는 것(현재 수행하려는 작업)이 작동하지 않을 수 있습니다.

나는 이것을 테스트할 OS/X 시스템이 없지만 최근 일부 운영 체제가 DNS 서버를 순서대로 쿼리하지 않거나 첫 번째 서버가 실패할 때 보조 네임서버로 돌아가지 않는다는 어려운 방법을 배웠습니다. 대신 그들은 나열된 네임서버를 무작위로 사용하는 것 같습니다.

그 결과는 다음과 같습니다.
(인터넷 DNS, 인트라넷 DNS 주문)
인터넷에서 호스트 쿼리 -> 작동합니다.
인트라넷의 호스트 쿼리 -> 인터넷의 DNS 서버를 통한 조회 실패, 포기하고 다음 시도.

이것이 OS/X의 경우인지는 모르겠고 테스트할 Mac도 없습니다.

4)로컬 네임서버

(이것이 최선의 해결책이라고 생각하므로 굵게 표시했습니다.)

OS/X는 다음과 함께 제공됩니다.묶다그리고 쉬운 것 같아활성화. BIND에서 찾고자 하는 키워드는 views 입니다.

답변3

나는 비슷한 문제가 있었다맥 OS다수의 물리적 및 가상 네트워크 인터페이스와 해당 네트워크 인터페이스의 가용성 또는 가용성에 따라 다른 서버에 이름 확인을 요청해야 하는 필요성이 있습니다.

인터넷 검색과 노력 끝에 더 큰 토론에서 가장 완전한 정보를 찾았습니다.https://rakhesh.com/infrastructure/macos-vpn-doesnt-use-the-vpn-dns. 즉, 특정 리졸버를 정의하고macos의 시스템 리졸버 우선순위 변경, 각 특정 해결 요구 사항에 대해(예:"개인 DNS 서버 10.10.10.128은 연결할 수 있을 때 mydomain.tld에 대해 쿼리되어야 하며, 그렇지 않으면 Google의 공개 8.8.8.8") 충분했어요

  1. /etc/resolver에 파일을 만듭니다(예: /etc/resolver/per-domain-resolver 또는 가장 좋아하는 이름).

  2. 그것을 일련의 것으로 채운다.도메인,네임서버, 그리고검색_주문지시문, 예:

    domain mydomain.tld
    nameserver 10.10.10.128
    search_order 1
    nameserver 8.8.8.8
    

내 시도가 포함되자마자 효과적인 솔루션이 되었다는 점을 강조할 가치가 있습니다.도메인그리고검색_주문지시문.

관련 정보