ใน OS X เป็นไปได้หรือไม่ที่จะแทนที่ DHCP ที่กำหนดเซิร์ฟเวอร์ DNS แต่ยังคงเก็บไว้เพื่อการย้อนกลับ?


9

ตามค่าเริ่มต้นฉันต้องการใช้เซิร์ฟเวอร์ DNS สาธารณะของ Google และสำรองไปยังอินทราเน็ตเมื่อสิ่งเหล่านี้ล้มเหลว

เป็นไปได้ไหม ... ฉันกำลังมองหาการตั้งค่าที่จะไม่หยุดลงเมื่อฉันย้ายแล็ปท็อปของฉันไม่มีเครือข่ายอื่น

มันจะเป็นที่ยอมรับถ้าฉันพบวิธีแก้ปัญหาเฉพาะสำหรับการเชื่อมต่อเครือข่าย wifi นี้ (เพื่อทำการหลอกลวงในกรณีนี้เท่านั้นและใช้ค่าเริ่มต้นสำหรับผู้อื่น)


มันหมายความว่าอะไร "เมื่อเซิร์ฟเวอร์ DNS สาธารณะของ Google ล้มเหลว"? มีวิธีมากมายในการเปลี่ยนสคริปต์ที่ตั้งเครือข่ายและ / หรือเพียงแค่เขียนสคริปต์รายการ DNS ที่แตกต่างกัน แต่ก็ยังไม่ชัดเจนว่าคุณจะทดสอบความล้มเหลวของ google DNS ได้อย่างไร ยิ่งไปกว่านั้นความคิดเห็นด้านล่างเกี่ยวกับ VPN จะทำให้สิ่งต่าง ๆ มีความซับซ้อนยิ่งขึ้นหากคุณเพิ่มสิ่งเหล่านี้ลงในความต้องการของคุณ
bmike

ฉันประหลาดใจที่มันเป็นไปไม่ได้ บางครั้งฉันมีเซิร์ฟเวอร์ DNS ที่ให้ฉันผ่าน DHCP ล้มเหลวดังนั้นฉันจึงใช้เซิร์ฟเวอร์ Google อย่างไรก็ตามฉันไม่สามารถใช้เครือข่ายใด ๆ ที่ใช้ DNS เพื่อใช้งาน Captive Portal ได้ในตอนนี้ หากฉันสามารถให้เซิร์ฟเวอร์ DHCP ที่ให้มาเป็นข้อมูลสำรองก็จะแก้ปัญหานี้ คุณหาทางออกหรือไม่?
Jake

คำตอบ:


4

คุณสามารถใช้ipconfig getpacketเพื่อค้นหาเซิร์ฟเวอร์ DNS ที่แนะนำ DHCP:

$ ipconfig getpacket en0 
...
domain_name_server (ip_mult): {192.168.3.2, 192.168.42.1}
...

ดังนั้นสมมติว่าคุณใช้Wi-Fiอะแดปเตอร์และอุปกรณ์ของมันคือen0คุณสามารถ:

#!/bin/bash

default_servers=$( ipconfig getpacket en0 | \
   perl -ne'/domain_name_server.*: \{(.*)}/ && print join " ", split /,\s*/, $1' )
networksetup -setdnsservers Wi-Fi 127.0.0.1 $default_servers

2

ใช่คุณสามารถเพิ่มเซิร์ฟเวอร์ Google DNS ที่ด้านบนของรายการและติดตามเซิร์ฟเวอร์เหล่านั้นด้วยเซิร์ฟเวอร์อินทราเน็ตของคุณเอง

  • ไปที่การตั้งค่าระบบ> เครือข่าย
  • เลือกอินเทอร์เฟซเครือข่ายของคุณจากรายการด้านซ้าย
  • คลิกปุ่มขั้นสูงทางด้านขวา
  • ในแท็บDNSของกล่องโต้ตอบคลิก "+" เพื่อเพิ่มหรือ "-" เพื่อลบรายการ (คุณสามารถแก้ไขรายการได้โดยดับเบิลคลิกหรือเลือกและคลิกที่ที่อยู่)
  • เพิ่มที่อยู่ Google DNS เป็นสองรายการแรก
  • เพิ่มเซิร์ฟเวอร์ DNS อินทราเน็ตของคุณด้านล่าง
  • คลิกตกลง
  • คลิกนำไปใช้
  • ปิดการตั้งค่าระบบ

1
ฉันรู้สิ่งนี้ แต่ปัญหาคือมันเป็นไปไม่ได้ที่ฉันจะใช้ VPN เดียวกันจากที่อื่น มันควรจะเป็นโซลูชันอื่นอาจเป็นสิ่งที่จะกำหนดค่าในเซิร์ฟเวอร์ VPN (PPTP) หรือกำหนดค่า DNS ที่มีที่อยู่ 127.0.0.1 และเพื่อกำหนดค่า DNS ท้องถิ่นที่ยังคงใช้เซิร์ฟเวอร์ DNS DHCP ที่ให้มา
โซริน

1

นอกจากนี้ยังมีวิธีการทำสิ่งนี้จากบรรทัดคำสั่งหากคุณเป็นผู้ดูแลระบบเครือข่ายที่กำลังมองหาวิธีการทำสิ่งนี้ในแบตช์:

networksetup listallnetworkservices
# look for the correct network device here, probably "Wi-Fi"
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

แทนที่ "Wi-Fi" ด้วยอุปกรณ์เครือข่ายที่ถูกต้อง คุณอาจต้องการใช้:

device=`networksetup listallnetworkservices | grep Wi-Fi`
sudo networksetup -setdnsservers "$device" 8.8.8.8 8.8.4.4

1

ฉันพยายามทำเช่นเดียวกัน ฉันจะเรียกใช้แคชเซิร์ฟเวอร์ DNSด้วยตนเองในท้องถิ่นและให้มันเรียนรู้อินทราเน็ตขณะที่ฉันเข้าร่วม

ฉันตื่นเต้นที่เซิร์ฟเวอร์ dns อาจสามารถแยกความแตกต่างระหว่างชื่อโฮสต์ของอินทราเน็ตและอินเทอร์เน็ตก่อนที่จะทำการโทรซ้ำ

ฉันกังวลว่าฉันจะต้องการ TTL สั้นหรือต้องการเขียน hooks เพื่อให้ทุกครั้งที่มีการเปลี่ยนแปลงอินเตอร์เฟสฉันพิจารณาการล้างแคช dns หรือคล้ายกัน

ฉันจะรายงานกลับหากประสบความสำเร็จ ...

50% แรก

หลังจากดูที่การเปรียบเทียบวิกิพีเดียของเซิร์ฟเวอร์ DNS Dnsmasq มาอยู่ด้านบนของรายการของฉัน

ปรากฎว่าbrewมี forumla สำหรับdnsmasqและมันยังมีบางส่วนservicesของอินเทอร์เฟซย่อยที่เขียนขึ้นสำหรับbrew... ยอดเยี่ยมน้อยกว่าที่จะคิดเพียงแค่ต้องกำหนดค่า

$ brew install dnsmasq  # [libidn] internation domain names
$ cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
# To have launchd start dnsmasq now and restart at startup:
$ sudo brew services start dnsmasq 

( brewมีbindแต่สถานะที่น้อยที่สุดก็น่าสนใจเช่นกัน - ไม่ต้องเคลียร์เมื่อทำการกำหนดค่าเครือข่าย)

ทำ

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