Alterar servidor DNS do terminal (ou script) no Mac OS X

26

Como posso alterar meu servidor DNS do Terminal no Mac OS X? [Eu preciso disso porque meu DNS não está funcionando corretamente com minha VPN. Às vezes, ele está usando o DNS para minha conexão principal e, às vezes, está usando o DNS especificado para a VPN (o que deveria).]

    
por Dan Rosenstark 21.12.2009 / 19:40

4 respostas

13

Você pode usar scutil interativamente a partir do terminal. Execute sudo scutil e execute esses comandos, trocando seus servidores DNS no local apropriado:

> open
> d.init
> d.add ServerAddresses * 8.8.8.8 9.9.9.9
> set State:/Network/Service/PRIMARY_SERVICE_ID/DNS
> quit

Em vez de usar 8.8.8.8 e 9.9.9.9 , use seus servidores DNS.

O único problema é que isso não é persistente nas reinicializações . Se você quiser mudanças permanentes, você vai querer ncutil . A razão pela qual a edição de /etc/resolv.conf não é suficiente em versões mais recentes do OS X é porque o configd agora usa um banco de dados para armazenar informações das configurações atuais, que outros aplicativos lêem. Certos aplicativos ainda lerão /etc/resolv.conf (host, por exemplo), embora esse não seja o caso de todos os aplicativos.

    
por 21.12.2009 / 19:54
44

Você pode usar networksetup :

sudo networksetup -setdnsservers <networkservice> DNS1, DNS2, DNS3

por exemplo (com a conexão do aeroporto usando os servidores DNS do Google)

sudo networksetup -setdnsservers AirPort 8.8.8.8 8.8.4.4

Você pode descobrir o nome do serviço de rede executando networksetup -listallnetworkservices . Vai ser 'Wi-Fi' provavelmente.

Isto é o mesmo que se você fosse editar as entradas no Painel de Preferências de Rede nas Preferências do Sistema, por isso é persistente durante as reinicializações.

Você pode estar se deparando com um problema de DNS no Snow Leopard que ocorre quando as alterações dos servidores DNS do pedido são consultadas (consulte a pergunta 84144 )

    
por 21.12.2009 / 22:06
11

Eu não tenho pontos suficientes para responder à postagem do Chealion, mas para adicioná-la eu começaria listando as interfaces

networksetup -listallnetworkservices

Depois de ter a interface que você deseja alterar, você pode fazer o seguinte (estou usando o Wi-Fi, mas você pode fazer qualquer outra interface)

sudo networksetup -setdnsservers Wi-Fi empty
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
sudo killall -HUP mDNSResponder

A primeira linha dos itens acima irá esvaziar as configurações de DNS, segui-lo com os servidores DNS que gostaríamos de usar e limpar o cache do DNS

Para verificar a alteração do DNS, você pode fazer isso antes e depois ou simplesmente depois

scutil --dns | grep 'nameserver\[[0-9]*\]'
    
por 27.05.2016 / 13:56
1

Você deve ser capaz de editar editando o /etc/resolv.conf (lembre-se de que o resolv.conf é reiniciado após a reinicialização), espere que ajude - link

    
por 21.12.2009 / 19:58

Tags