dnsmasq ไม่ทำงานบน Mac OS Sierra


9

ฉันกำลังเรียกใช้ dnsmasq ในปี 2559 MBP ที่ใช้ Mac OS Sierra (10.12.1) แต่ฉันไม่สามารถ ping ที่อยู่ใด ๆ . เดฟแม้จะมีสิ่งที่ฉันเชื่อว่าเป็น config ที่เหมาะสม การเรียกใช้ dig จะส่งคืนเอาต์พุตที่มีสติ

/usr/local/etc/dnsmasq.conf

resolv-file=/usr/local/etc/resolv-dnsmasq.conf
address=/.dev/127.0.0.1

/ etc / จำแนก / dev

nameserver 127.0.0.1

/usr/local/etc/resolv-dnsmasq.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

รายการเซิร์ฟเวอร์ DNS ของฉันในการตั้งค่าระบบมีเพียงหนึ่งรายการที่ชี้ไปที่ 127.0.0.1

เมื่อฉันเรียกใช้ dig ที่อยู่. เดฟฉันจะได้ผลลัพธ์ต่อไปนี้:

; <<>> DiG 9.11.0-P1 <<>> test.dev
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36126
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;test.dev.          IN  A

;; ANSWER SECTION:
test.dev.       0   IN  A   127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Dec 19 23:13:20 PST 2016
;; MSG SIZE  rcvd: 42

ฉันสามารถโหลดเว็บไซต์ภายนอกเช่น google.com ได้อย่างสมบูรณ์แบบ แต่ถ้าฉันลองเข้าถึงเว็บเซิร์ฟเวอร์ในพื้นที่หรือแม้แต่ส่งที่อยู่. .dev ไปก็ล้มเหลว

ความช่วยเหลือจะได้รับการชื่นชม!


ขอบคุณสำหรับคำแนะนำ ฉันลบบรรทัดออกแล้ว แต่ก็ยังใช้งานไม่ได้
Steve

คุณใช้วิธีใดในการกำหนดชื่อโฮสต์ วิธีการ / etc / hosts หรือ / usr / local / etc / hosts / file?
klanomath

ฉันไม่ได้ใช้ไฟล์เหล่านี้อย่างใดอย่างหนึ่ง ฉันได้กำหนดค่า dnsmasq ด้วยวิธีที่ควรจะกำหนดเส้นทางการรับส่งข้อมูลทั้งหมดซึ่งตรงกับรูปแบบ. เดฟไปยัง localhost หมายความว่าฉันไม่ควรป้อนทุกโดเมนที่ต้องการเปลี่ยนเส้นทางในไฟล์โฮสต์ของฉันด้วยตนเอง
Steve

โปรดเพิ่มส่วนนี้ของไฟล์ dnsmasq.conf ในคำถามของคุณ
klanomath

1
ฉันมีประสบการณ์เช่นเดียวกับ @ortonomy
Chris Carson

คำตอบ:


5

dnsmasq daemon ของคุณไม่ได้รับการกำหนดค่าอย่างเหมาะสม

จำแนกภายนอกของคุณคือการทำงาน: แบบสอบถามทั้งหมดเพื่อไม่devโฮสต์ / โดเมนจะถูกส่งต่อไปยังเซิร์ฟเวอร์ DNS ของบุคคลที่ 3 กับresolv-file=/usr/local/etc/resolv-dnsmasq.confสาย - ในกรณีของคุณไฟล์ที่กำหนดไว้มีสองสาธารณะ DNS เซิร์ฟเวอร์ของ Google

โปรแกรมแก้ไขภายในของคุณไม่สามารถแก้ไขชื่อภายในได้

บรรทัดaddress=/.dev/127.0.0.1หรือดีกว่าaddress=/dev/127.0.0.1จะเปลี่ยนเส้นทางแบบสอบถามใด ๆ * .dev ไปยังโฮสต์ 127.0.0.1 ไม่จำเป็นต้องใช้โปรแกรมแก้ไขภายในและเซิร์ฟเวอร์ชื่อภายในที่กำหนดใน / etc / resolver / dev ไม่มีประโยชน์

เปรียบเทียบสิ่งนี้กับตัวอย่างในไฟล์ dnsmasq.conf:

# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
# web-server.
#address=/double-click.net/127.0.0.1

แบบสอบถามใด ๆ สำหรับ * .double-click.net จะถูกเปลี่ยนเส้นทางไปยัง 127.0.0.1 และไปยังเว็บไซต์ที่ให้บริการโดยพลการที่ localhost

ฉันขอแนะนำอย่างยิ่งให้กำหนดไฟล์ hosts.config และป้อน / กำหนดโฮสต์ที่จำเป็นทั้งหมดที่นั่น:

เพิ่มบรรทัดaddn-hosts=/usr/local/etc/hosts/hosts.confใน dnsmasq.conf จากนั้นเพิ่มโฟลเดอร์ด้วยsudo mkdir /usr/local/etc/hostsและสร้างไฟล์ hosts.conf

sudo nano /usr/local/etc/hosts/hosts.conf

มีเนื้อหาดังต่อไปนี้:

127.0.0.1   localhost
127.0.0.1   test.dev
127.0.0.1   test2.dev
...

หลังจากบันทึกไฟล์แล้วให้รีโหลด dnsmasq daemon ของคุณ

หากคุณต้องการใช้ IP ที่แตกต่างกันสำหรับชื่อโฮสต์ของคุณเช่น:

127.0.0.1   localhost
127.0.0.2   test.dev
127.0.0.3   test2.dev
...

คุณจะต้องเพิ่ม IP เพิ่มเติมด้วย:

sudo ifconfig lo0 alias 127.0.0.2 up
sudo ifconfig lo0 alias 127.0.0.3 up
...

1
ฉันเข้าใจประเด็นของคุณเกี่ยวกับโปรแกรมแก้ไขภายในที่ไร้ประโยชน์ แต่ไม่เข้าใจความต้องการไฟล์ hosts.conf หาก dnsmasq ทำงานอย่างถูกต้องควรกำหนดที่อยู่ dev ทั้งหมดไปยัง localhost การเข้ารหัสฮาร์ดโค้ดโดเมนและโดเมนย่อยทั้งหมดในไฟล์โฮสต์จะได้ประโยชน์จากการใช้ dnsmasq
Steve

@Steve ฉันไม่รู้จักการตั้งค่าของคุณ แต่บ่อยครั้งที่นักพัฒนาซอฟต์แวร์ (เว็บ -) ใช้ชื่อโฮสต์ที่แตกต่างกันหลายตัวในเครื่องท้องถิ่นและ / หรือโฮสต์เพิ่มเติมใน VM หรือในเครื่องจริงอื่น ๆ จากนั้นคุณต้องกำหนดค่าเซิร์ฟเวอร์ DNS / DHCP ที่มีน้ำหนักเบาอย่าง dnsmasq อย่างง่ายดาย IMHO จุดประสงค์ของ dnsmasq ไม่ได้เป็นการแก้ไขชื่อโฮสต์เฉพาะโลคัลเป็น localhost ซึ่งสามารถทำได้ง่ายขึ้นโดยการแก้ไข / etc / hosts โดยตรงกับsudo nano ...หรือ GUI เหมือนหน้ากากแก๊ส
klanomath

1
ปัญหาเกี่ยวกับวิธีการโฮสต์ไฟล์คือมันพังถ้าเว็บแอปพลิเคชันของคุณอาศัยโดเมนย่อยที่สร้างขึ้นแบบไดนามิกเช่นเดียวกับที่ฉันกำลังทำอยู่ dnsmasq สามารถบรรลุเป้าหมายของฉันในการเปลี่ยนเส้นทางทุกอย่างด้วย "dev" บนเครื่องที่ใช้ Linux ในอดีตด้วย config เดียวกัน
Steve

@Steve 1. ความละเอียด DNS เป็นที่รู้กันดีใน OS X 2. ฉันไม่คิดว่าวิธีการแก้ปัญหาชื่อ "หลุมดำ" จะเป็นไปตามมาตรฐาน RFC 3. ในการทดสอบ VM "การจำแนกชื่อ" ของฉันทำงานร่วมกับการกำหนดค่าของคุณสำหรับโฮสต์ apache เสมือน (test.dev, test2.dev ฯลฯ ) อื่น ๆ แต่ IIRC ยัง ping ด้วย ฉันอาจทดสอบสิ่ง ping อีกครั้งฉันกลับไปที่ VM snapshot ที่บันทึกไว้โดยไม่ติดตั้ง dnsmasq และใช้เวลาพอสมควรในการตั้งค่าอีกครั้งเพื่อตรวจสอบปัญหาต่อไป
klanomath

ฉันไม่แน่ใจว่ามีอะไรเปลี่ยนแปลง แต่หลังจากติดตั้งการอัปเดตเป็น Mac OS dnsmasq ดูเหมือนว่าจะทำงานได้ตามที่ควร
Steve
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.