dnsmasq 구성 및 DHCP 제공 DNS를 함께 사용


1

MacBook Pro에서 MacOX Sierra를 실행하고 nginx를 웹 서버로 사용하여 로컬 개발 환경을 설정했지만 문제가 있습니다.

내가하고 싶은 것

  1. 127.0.0.1와일드 카드 도메인의 호스트로 반환 되는 로컬 dns 서버로 dnsmasq를 사용 합니다 *.develop(.dev는 이제 ICANN과 충돌하므로).
  2. 다른 모든 호스트 이름 (외부 및 내부)을 확인할 수 있도록 네트워크에 연결할 때마다 DHCP에서 제공 한 DNS 서버로 해결되지 않은 요청을 전달하십시오.

조건과 제약

  1. 나는 네트워크 사이를 이동합니다. 내 홈 네트워크 DHCP는의 DNS 서버 192.168.1.1이지만 내 작업 DHCP는 내 DNS를10.128.x.x
  2. 10.128.x.xDNS 가있는 회사 네트워크 search domain는 내부 주소를 설정 합니다.
  3. 그래서처럼 공공 DNS 서버의 무리를 설정, 중국에 있어요 Google or OpenDNS뿐만 아니라 127.0.0.1잘 작동 할 수 있지만 국제 GFW에 의해 스로틀받을 것.

내가 지금까지 한 일

  1. 설치 nginx하고 dnsmasq사용하고 homebrew있습니다.
  2. 를 사용하여 실행중인 서비스 sudo brew services start xxx. 이것은 nginx를 실행할 수 port 80있고 그렇지 않을 수 port 8080있습니다.)
  3. dnsmasq지시어 설정address=/.develop/127.0.0.1
  4. 다음 dnsmasq을 사용하여 작동 하는지 확인할 수 있습니다 dig.

dig testing.testing.one.two.three.develop @127.0.0.1

; <<>> DiG 9.8.3-P1 <<>> testing.testing.one.two.three.develop @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46013
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;testing.testing.one.two.three.develop. IN A

;; ANSWER SECTION:
testing.testing.one.two.three.develop. 0 IN A   127.0.0.1

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jun 20 12:04:44 2017
;; MSG SIZE  rcvd: 71
  1. DNS 서버를 127.0.0.1in으로 설정하면 Network Preferences작동하며 이것을 'ping'할 수 있습니다.

핑 예 :

ping -c 1 this.is.a.test.develop
PING this.is.a.test.develop (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.036 ms

--- this.is.a.test.develop ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.036/0.036/0.036/0.000 ms

사용 가능한 유일한 DNS는 내 dnsmasq이므로 외부 서비스를 사용할 수 없습니다. 127.0.0.1

문제

  1. 간단한 해결책은 네트워크 어댑터 DNS 목록에 127.0.0.1+ 192.168.0.1를 추가하는 것 같습니다 . 그것은 집에서 작동하지만 회사 위치에서는 작동하지 않습니다.
  2. 회사를 추가하면 10.128.x.x분명히 사무실에서 일하지만 집에서는 일하지 않습니다.
  3. So add both corporate and home DNS to the list? DHCP DNS 서버를 선택하지 않기 때문에 다른 Wi-Fi / 이더넷 연결이 끊어집니다.
  4. 중국에 있기 때문에 공개 DNS 서버 만 추가 할 수 없습니다 (Google 또는 Open DNS와 같이 중국에서는 공개 DNS가 매우 느리기 때문에 DHCP를 제공해야합니다).

다른 사람들이 매우 빈번한 설정처럼 보이는 것을 어떻게 해결했는지 알고 싶지만 문제가 있습니다.

나는 스택 교환에 대해 비슷한 문제가 있지만 동일 하지 않은 두 가지 별도의 질문을 이미 보았다 . 질문은이 질문의 맨 아래에 첨부됩니다 [1], [2]. 이 질문들이 보여주는 것은 macOS에서 다음 /etc/resolve.conf과 같은 통지를 받았습니다.

헤더에

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

이것은 이 파일에서 수정 사항을 읽을 수 없다는 것을 암시하고 질문의 다른 대답은 파일을 /etc/resolver/*읽지 않을 것을 제안합니다

그래서 내 진짜 질문은 : 할 수있는 방법이 있습니까?

  1. 항상 127.0.0.1을 먼저 사용하십시오.
  2. 찾을 수없는 경우 DHCP가 제공하는 모든 동적 DNS를 사용하십시오.

왜 호스트 만 사용하지 않았습니까?

* .develop 도메인을 가지고 있고 정규 표현식을 사용하여 로컬 사이트를 동적으로 해결하는 단일 사이트를 추가한다는 아이디어는 매우 매력적입니다!

some-sub-domain.develop->/Users/myuser/www/some-sub-domain/

[1] dnsmasq가 Mac OS Sierra에서 작동하지 않습니다

[2] https://serverfault.com/questions/478534/how-is-dns-lookup-configured-for-osx-mountain-lion

답변:


1

답변을 찾았습니다! 특히 MacOS Sierra에서이 작업을 수행 /etc/resolver/*하려는 경우 네트워크 환경 설정을 변경할 필요없이 리졸버 파일을 사용하는 표준 솔루션이 실제로 작동합니다.

필자의 경우 로컬 개발 도메인 이름을으로 설정 하고 내용이 (확장자 없음) 인 *.develop파일을 만들었습니다 develop.

nameserver 127.0.0.1

나는 이것이 효과가 없다고 생각했고 명령을 사용했지만 macOS 가이 파일에서 읽지 dscacheutil -flushcache못하고 작동하지 않았다고 생각했습니다. 로컬 리졸버를 사용하기 위해 시스템을 시작 하기에 하드 재시작 만으로 충분했습니다.

완전성을 위해 내 dnsmasq.conf 파일의 내용은 다음과 같습니다.

no-resolv
address=/.develop/127.0.0.1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.