在OS X上是否可以覆盖DHCP分配的DNS服务器,但仍保留它们以进行回退?


9

默认情况下,我想使用google公共DNS服务器,并在这些服务器出现故障时回退到Intranet服务器。

这可能吗?...我正在寻找一种在不将笔记本电脑移至其他网络时不会中断的设置。

如果我找到了专门针对此wifi网络连接的解决方案,则可以接受(仅在这种情况下才能完成操作,而对其他情况使用默认值)。


什么是“当Google公共DNS服务器出现故障时”?有很多方法可以编写脚本来更改网络位置和/或简单地编写不同DNS的条目的脚本,但是尚不清楚如何测试Google DNS的失败。更糟糕的是,如果将以下内容添加到您的需求组合中,那么以下有关VPN的评论将使事情更加复杂。
bmike

我很惊讶这是不可能的。有时我有通过DHCP提供给我的DNS服务器失败,所以我使用Google的。但是,我现在不能使用任何使用DNS来实施强制门户的网络。如果我可以将DHCP提供的服务器作为备份,那么它将解决此问题。您找到解决方案了吗?
杰克

Answers:


4

您可以ipconfig getpacket用来查找DHCP建议的DNS服务器:

$ 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地址添加为前两个条目
  • 将Intranet DNS服务器添加到这些服务器之下
  • 点击确定
  • 点击应用
  • 关闭系统偏好设置

1
我知道这一点,但是问题在于,这使我无法从另一个位置使用相同的VPN。它应该是另一种解决方案,可以在VPN服务器(PPTP)中进行配置,或者使用127.0.0.1地址配置DNS,并配置仍使用DHCP提供的DNS服务器的本地DNS。
索林2013年

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服务器,并让我在加入时学习Intranet。

我很高兴dns服务器甚至可以在进行递归调用之前区分Intranet和Internet主机名

我担心我要么需要短的TTL,要么需要编写钩子,以便每次接口更改时都考虑刷新dns缓存,或者类似。

如果成功,我会回报。

前50%

在查看Wikipedia对DNS服务器的比较之后,Dnsmasq进入了我列表的顶部。

事实证明,它brew有一个forumla dnsmasq,它甚至还servicesbrew... 编写了一些子接口,很棒,没什么好想的,只需要制定配置即可。

$ 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,但是最小状态对我也很有吸引力-在进行网络配置时不必清除它)。

去做

  • 确定配置网络首选项以使用我的新dn,以及
  • 配置dnsmasq以确保它可以使用Intranet设置。(真正的挑战)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.