MacBook Pro에서 MacOX Sierra를 실행하고 nginx를 웹 서버로 사용하여 로컬 개발 환경을 설정했지만 문제가 있습니다.
내가하고 싶은 것
127.0.0.1
와일드 카드 도메인의 호스트로 반환 되는 로컬 dns 서버로 dnsmasq를 사용 합니다*.develop
(.dev는 이제 ICANN과 충돌하므로).- 다른 모든 호스트 이름 (외부 및 내부)을 확인할 수 있도록 네트워크에 연결할 때마다 DHCP에서 제공 한 DNS 서버로 해결되지 않은 요청을 전달하십시오.
조건과 제약
- 나는 네트워크 사이를 이동합니다. 내 홈 네트워크 DHCP는의 DNS 서버
192.168.1.1
이지만 내 작업 DHCP는 내 DNS를10.128.x.x
10.128.x.x
DNS 가있는 회사 네트워크search domain
는 내부 주소를 설정 합니다.- 그래서처럼 공공 DNS 서버의 무리를 설정, 중국에 있어요
Google or OpenDNS
뿐만 아니라127.0.0.1
잘 작동 할 수 있지만 국제 GFW에 의해 스로틀받을 것.
내가 지금까지 한 일
- 설치
nginx
하고dnsmasq
사용하고homebrew
있습니다. - 를 사용하여 실행중인 서비스
sudo brew services start xxx
. 이것은 nginx를 실행할 수port 80
있고 그렇지 않을 수port 8080
있습니다.) dnsmasq
지시어 설정address=/.develop/127.0.0.1
- 다음
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
- DNS 서버를
127.0.0.1
in으로 설정하면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
문제
- 간단한 해결책은 네트워크 어댑터 DNS 목록에
127.0.0.1
+192.168.0.1
를 추가하는 것 같습니다 . 그것은 집에서 작동하지만 회사 위치에서는 작동하지 않습니다. - 회사를 추가하면
10.128.x.x
분명히 사무실에서 일하지만 집에서는 일하지 않습니다. So add both corporate and home DNS to the list?
DHCP DNS 서버를 선택하지 않기 때문에 다른 Wi-Fi / 이더넷 연결이 끊어집니다.- 중국에 있기 때문에 공개 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/*
읽지 않을 것을 제안합니다
그래서 내 진짜 질문은 : 할 수있는 방법이 있습니까?
- 항상 127.0.0.1을 먼저 사용하십시오.
- 찾을 수없는 경우 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