완전한 TLD (예 : * .dev)를 127.0.0.1로 라우팅


29

개발 목적으로 .dev TLD에 대한 모든 DNS 요청이 내 PC로 전달되기를 원합니다.

hosts 파일로는 충분하지 않습니다. 여러 도메인과 여러 하위 도메인을 사용합니다. 각 조합마다 줄을 추가해야합니다.

DNSmasq와 같은 DNS 전달자를 사용하여 작업을 수행 할 수 있음을 읽었습니다 (예 : 여기 설명 참조 ). 또한이 소프트웨어는 이미 Ubuntu 12.10에 설치되어 있습니다.

문제는 DNSmasq를 구성하는 방법과 위치, 즉이 줄을 어디에 두어야하는지 알 수 없다는 것입니다.

address=/dev/127.0.0.1

1
.devGoogle이 가져간대로 사용하고 싶지 않을 수 있습니다 . 나는 아직도 사람들이 그것을 위해 무엇을 사용할 것인지 연구하고 있으며 일반 사람들이 그것을 연결하거나 직원에게 연결할 계획인지 여부를 연구하고 있지만 이것이 순수한 테스트 상자가 아니라면 전자의 경우 모든 액세스를 리디렉션하지 않을 수도 있습니다 외부 호스트에 연결되지 않습니다.
trysis

답변:


18

완전한 독립형 dnsmasq (DHCP 및 DNS 서버)는 기본적으로 Ubuntu 12.04 및 12.10에 설치되지 않지만 dnsmasq-base라는 패키지는 기본적으로 Ubuntu Desktop 12.04 및 12.10에 설치됩니다. dnsmasq-base 패키지는 dnsmasq 바이너리를 포함하며 NetworkManager에서 사용됩니다.

원하는 작업을 수행하려면 dnsmasq를 캐싱 DNS 서버로 사용해야합니다. 다음을 수행해야합니다.

  • dnsmasq 설치 sudo apt-get install dnsmasq
  • 컴퓨터가 서버를 서버로 사용할 수 있도록 네트워크 설정을 변경하십시오.
  • 구성 파일을 변경하십시오.

/etc/dnsmasq.d/dev-tld다음 내용으로 작성하십시오 .

local=/dev/

address=/dev/127.0.0.5

첫 번째 명령은 *.dev요청을 실제 DNS 서버로 전달할 수 없음을 나타냅니다. 두 번째 는 localhost *.dev127.0.0.5무엇인지 확인 합니다 .

  • dnsmasq 서비스를 다시 시작하십시오 (네트워크 관리자 아님)

고맙습니다! DNSMasq가 실제 거래가 아니라는 것을 알게 된 것은 매우 도움이되었습니다. 완전한 패키지를 설치하고 작동하기 전에 설명한 방식으로 구성한 후. :)
Roel van Duijnhoven

1
최근 데스크탑 설치에 대한 다른 대답 을 선호 합니다. 최근 데스크탑 설치의 경우이 방법으로 두 개의 dnsmasq 인스턴스를 실행합니다. 귀하의 답변은 NetworkManager 이외의 설정, 이전 설정 (dnsmasq를 사용하지 않음) 또는 서버 설치에 매우 유용합니다!
gertvdijk

그렇습니다. 우분투 12.10 이후로 다른 대답이 가장 좋습니다.
BenjaminRH

21

Ubuntu 12.10 이상에서는 NetworkManager가 실행하는 dnsmasq를 사용하여이 작업을 수행 할 수 있습니다.

  1. 디렉토리가 mkdir /etc/NetworkManager/dnsmasq.d없으면 작성하십시오 .

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. 에 다음 줄을 던지십시오 /etc/NetworkManager/dnsmasq.d/dev-tld.

    address=/dev/127.0.0.1
    
  3. (Ubuntu 12.10) NetworkManager를 다시 시작하십시오.

    sudo service network-manager restart
    
  4. (우분투> 13.04) Dnsmasq를 다시 시작하십시오.

    sudo service dnsmasq restart
    
  5. 굉장함을 즐기십시오.

여기에 이미지 설명을 입력하십시오


1
이 작업을 수행하는 방법에 대한 아치 위키 에 대한 링크를 제공하는 AbrahamVan에 감사합니다 .
jrg

단계를 수행 한 후에도 핑을 실행 한 후에 "알 수없는 호스트"가 표시됩니다. 다른 장소에서 DNSMasq를 구성 / 활성화해야합니까? 아니면 다른 방식으로 네트워크 속성을 구성합니까? 감사!
Roel van Duijnhoven

흥미 롭군 그것은 나에게 잘 보이고있다.
jrg

아, @RoelvanDuijnhoven-12.10 또는 12.04를 실행 중입니까? 12.10에서 잘 작동합니다.
jrg

12.10을 실행 중입니다. 그러나 여기서 질문하기 전에 구성 파일을 변경하려고 시도했다는 것을 언급해야합니다. 이러한 변경 사항으로 인해 솔루션이 완화 될 수 있습니다. 그러나 Javier Rivera의 솔루션이 그 트릭을 만들었습니다!
Roel van Duijnhoven

1

우분투 16.04에서 다음과 같이 일했습니다.

  1. 설치 dnsmasq

    sudo apt-get -y install dnsmasq
    
  2. dnsmasq.conf파일 편집 :

    sudo nano /etc/dnsmasq.conf
    
  3. 명령을 추가하십시오 :

    address=/dev/127.0.0.1
    

    와일드 카드 (*)의 경우 점 (.)을 사용한 다음 dnsmasq WHATEWER_YOU_PUT_HERE.yourmachine.yourdomain를 사용하여 동일한 IP로 확인할 수 있습니다. 예 :address=/.localhost.dev/127.0.0.1

  4. dnsmasq 서비스를 다시 시작하십시오.

    sudo /etc/init.d/dnsmasq restart
    

0

방금 19.04를 새로 설치했으며 작동시키는 유일한 방법은 비활성화 systemd-resolved하고 DNS 대신 NetworkManager사용하는 dnsmasq것입니다. NetworkManager에 대한 지원이 포함되어 있습니다 dnsmasqdnsmasq-base패키지가 기본으로 설치됩니다.

내가 좋아하는 다른 VM에 여러 도메인 가리키는 오전 *.customerX.test192.168.33.10*.productY.test192.168.33.20등을. *.dev더 이상 사용 하지 않고 예약 된 최상위 도메인 중 하나를 사용 합니다 .

해결책

  1. 비활성화 systemd-resolved

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    sudo rm /etc/resolv.conf
    
  2. DNS /etc/NetworkManager/NetworkManager.conf에 사용하도록 편집하십시오 dnsmasq.

    [main]
    dns=dnsmasq
    
  3. dnsmasq구성을 넣 습니다/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. 마지막으로 다시 시작 NetworkManager하여 새로운 것을 생성합니다./etc/resolv.conf

    sudo systemctl restart network-manager.service
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.