กำหนดเส้นทาง TLD ที่สมบูรณ์ (ตัวอย่างเช่น * .dev) ไปยัง 127.0.0.1


29

เพื่อวัตถุประสงค์ในการพัฒนาฉันต้องการให้ DNS ทั้งหมดร้องขอให้. TLD TLD ส่งต่อไปยังพีซีของฉันเอง

ไฟล์โฮสต์ไม่เพียงพอ ฉันใช้หลายโดเมนและหลายโดเมนย่อย ฉันจะต้องเพิ่มบรรทัดสำหรับชุดค่าผสมแต่ละชุด

ฉันได้อ่านแล้วว่าผู้ส่ง DNS เช่น DNSmasq สามารถใช้ในการทำงาน (ตัวอย่างเช่นที่อธิบายไว้ที่นี่ ) ซอฟต์แวร์นี้ยังได้รับการติดตั้งบน Ubuntu 12.10 ด้วย

ปัญหาคือฉันไม่สามารถดูว่าฉันควรกำหนดค่า DNSmasq อย่างไรและที่ไหนฉันควรใส่บรรทัดนี้:

address=/dev/127.0.0.1

1
คุณอาจไม่ต้องการใช้.devตามที่ Google ทำ ฉันยังคงค้นคว้าสิ่งที่พวกเขาจะใช้และไม่ว่าพวกเขาวางแผนที่จะให้คนทั่วไปเชื่อมต่อกับมันหรือแค่พนักงาน แต่คุณอาจไม่ต้องการเปลี่ยนเส้นทางการเข้าถึงทั้งหมดในกรณีที่มันเป็นอดีตยกเว้นว่านี่เป็นกล่องทดสอบ จะไม่เชื่อมต่อกับโฮสต์ภายนอก
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
  • เปลี่ยนการตั้งค่าเครือข่ายของคุณเพื่อให้คอมพิวเตอร์ของคุณใช้ตัวเองเป็นเซิร์ฟเวอร์ dns
  • ทำการเปลี่ยนแปลงไฟล์ config:

สร้าง/etc/dnsmasq.d/dev-tldด้วยเนื้อหาเหล่านี้:

local=/dev/

address=/dev/127.0.0.5

คำสั่งแรกบอกว่า*.devคำขอไม่สามารถส่งต่อไปยังเซิร์ฟเวอร์ DNS ที่แท้จริงของคุณ ที่สองบอกว่า*.devจะแก้ไข127.0.0.5ซึ่งเป็น localhost

  • เริ่มบริการ dnsmasq (ไม่ใช่ตัวจัดการเครือข่าย)

ขอขอบคุณ! มันเป็นประโยชน์อย่างมากที่ฉันได้รู้ว่า DNSMasq ปัจจุบันไม่ใช่ของจริง หลังจากติดตั้งแพคเกจที่สมบูรณ์และกำหนดค่าในวิธีที่ฉันอธิบายก่อนที่จะใช้งานได้ :)
Roel van Duijnhoven

1
ฉันต้องการคำตอบอื่น ๆสำหรับการติดตั้งเดสก์ท็อปล่าสุด สำหรับการติดตั้งเดสก์ท็อปล่าสุดคุณจะใช้งานอินสแตนซ์ dnsmasq สองตัวด้วยวิธีนี้ คำตอบของคุณอาจมีประโยชน์มากในการตั้งค่าที่ไม่ใช่ NetworkManager, อันเก่า (ไม่ใช้ dnsmasq) หรือแม้แต่การติดตั้งเซิร์ฟเวอร์!
gertvdijk

ใช่คำตอบอื่น ๆ ดีที่สุดตั้งแต่ Ubuntu 12.10
BenjaminRH

21

ใน Ubuntu 12.10 หรือใหม่กว่าคุณสามารถทำได้ด้วย dnsmasq ซึ่งดำเนินการโดย NetworkManager

  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. (Ubuntu> 13.04) รีสตาร์ท Dnsmasq

    sudo service dnsmasq restart
    
  5. เพลิดเพลินกับสุดยอด

ป้อนคำอธิบายรูปภาพที่นี่


1
ขอบคุณ AbrahamVanHelpsing สำหรับลิงก์ไปยัง Wiki wikiเกี่ยวกับวิธีการทำเช่นนี้
jrg

หลังจากทำตามขั้นตอนของคุณแล้วฉันก็จะเห็น "host ที่ไม่รู้จัก" หลังจากรัน ping ฉันต้องกำหนดค่า / เปิดใช้งาน DNSMasq ในสถานที่อื่นหรือไม่ หรือกำหนดค่าคุณสมบัติเครือข่ายของฉันในวิธีที่แตกต่างกันอย่างไร ขอบคุณ!
Roel van Duijnhoven

น่าสนใจ มันแสดงให้เห็นดีสำหรับฉัน
jrg

Ah, @RoelvanDuijnhoven - คุณใช้งาน 12.10 หรือ 12.04 อยู่หรือเปล่า? ทำงานได้ดีสำหรับฉันที่ 12.10
jrg

ฉันทำงาน 12.10 แต่ฉันต้องพูดถึงว่าฉันได้พยายามแก้ไขไฟล์กำหนดค่าบางอย่างก่อนถามคำถามที่นี่ อาจเป็นไปได้ว่าการเปลี่ยนแปลงเหล่านี้จะช่วยบรรเทาปัญหาของคุณ Javier Rivera แก้ปัญหาได้อย่างไร!
Roel van Duijnhoven

1

งานต่อไปนี้ใช้งานได้สำหรับฉันใน Ubuntu 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
    

    สำหรับ wild card (*) จากนั้นคุณสามารถใช้ dot (.) จากนั้น dnsmasq เพื่อแก้ไข WHATEWER_YOU_PUT_HERE.yourmachine.yourdomainเป็น ip เดียวกัน เช่น,address=/.localhost.dev/127.0.0.1

  4. เริ่มบริการ dnsmasq:

    sudo /etc/init.d/dnsmasq restart
    

1

เพิ่งติดตั้งใหม่ 19.04 และวิธีเดียวที่ฉันทำให้มันใช้งานได้คือปิดใช้งานsystemd-resolvedและNetworkManagerใช้dnsmasqแทน DNS NetworkManagerสนับสนุนในตัวdnsmasqและdnsmasq-baseแพคเกจติดตั้งโดยค่าเริ่มต้น

ฉันกำลังชี้หลายโดเมนเพื่อ VMs แตกต่างกันเช่น*.customerX.testไป192.168.33.10และ*.productY.testไป192.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. แก้ไข/etc/NetworkManager/NetworkManager.confเพื่อใช้dnsmasqสำหรับ DNS

    [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.