No OS X, é possível substituir os servidores DNS atribuídos ao DHCP, mas ainda mantê-los para fallback?

9

Por padrão, eu gostaria de usar os servidores DNS públicos do Google e fazer o fallback para os da intranet quando estes estiverem falhando.

Isso é possível? ... Estou procurando uma configuração que não seja interrompida quando movo meu laptop sem outras redes.

Seria aceitável se eu encontrasse uma solução específica para essa conexão de rede wifi (para executar o truque apenas neste caso e usar padrões para outros).

sorin
fonte
O que significa "quando os servidores DNS públicos do Google estão falhando"? Existem várias maneiras de criar scripts para alterar as localizações da rede e / ou simplesmente criar scripts para a entrada de DNS diferente, mas não está claro como você testaria a falha do DNS do Google. Pior, o comentário abaixo sobre VPN complicará ainda mais as coisas se você adicionar isso ao seu mix de requisitos.
Bmike
Estou surpreso que isso não seja possível. Às vezes, os servidores DNS que são fornecidos via DHCP falham, então eu uso os do Google. No entanto, não posso usar nenhuma rede que use DNS para implementar um portal cativo agora. Se eu pudesse ter os servidores fornecidos como DHCP como backup, isso resolveria isso. Você encontrou uma solução?
24415 Jake

Respostas:

4

Você pode usar ipconfig getpacketpara encontrar o servidor DNS recomendado pelo DHCP:

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

Portanto, supondo que você esteja usando o Wi-Fiadaptador e seu dispositivo en0, você pode:

#!/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
Mark Grimes
fonte
2

Sim, você pode adicionar os servidores DNS do Google no topo da lista e segui-los com os seus (servidores da intranet).

  • Vá para Preferências do Sistema> Rede
  • Selecione sua interface de rede na lista à esquerda
  • Clique no botão Avançado à direita
  • Na guia DNS da caixa de diálogo, clique em "+" para adicionar ou "-" para remover entradas (você também pode editar entradas clicando duas vezes ou selecionando e clicando no endereço)
  • Adicione os endereços DNS do Google como as duas primeiras entradas
  • Adicione os servidores DNS da intranet abaixo daqueles
  • Clique em OK
  • Clique em Aplicar
  • Fechar Preferências do Sistema
MK
fonte
1
Eu sei disso, mas o problema é que isso me impossibilita de usar a mesma VPN em outro local. Deve ser outra solução, talvez algo para configurar no servidor VPN (PPTP) ou para configurar um DNS com endereço 127.0.0.1 e para configurar um DNS local que ainda use os servidores DNS fornecidos pelo DHCP.
711313
1

Também há uma maneira de fazer isso na linha de comando, se você é um administrador de rede que está procurando uma maneira de fazer isso em lote:

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

Substitua "Wi-Fi" pelo dispositivo de rede correto. Em vez disso, você pode usar:

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

Estou tentando fazer o mesmo. Vou executar manualmente um servidor DNS em cache localmente e fazer com que ele aprenda intranets à medida que ingresso.

Estou animado que o servidor DNS possa até diferenciar nomes de host da intranet e da Internet antes de fazer a chamada recursiva.

Estou preocupado que eu precise de TTLs curtos ou precise escrever ganchos para que, toda vez que uma interface seja alterada, considere liberar o cache do DNS ou algo semelhante.

Vou relatar se for bem-sucedido ...

Os primeiros 50%

Depois de analisar a comparação da Wikipedia de servidores DNS , o Dnsmasq chega ao topo da minha lista.

Acontece que brewtem um forumla para dnsmasq, e ainda tem alguma servicessub-interface escrita para brew... ótimo, menos para pensar, apenas para elaborar a configuração.

$ 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 

( brewtambém tem bind, mas o estado mínimo também é atraente para mim - não sendo necessário limpá-lo ao fazer a configuração de rede).

Façam

  • Descubra como configurar as Preferências de rede para usar meus novos dns e
  • Configure dnsmasqpara garantir que ele possa usar as configurações da intranet. (o verdadeiro desafio)
Mcint
fonte