Mac OS X'te DNS Sunucusunu Terminalden (veya komut dosyasından) değiştirin


29

DNS sunucumu Mac OS X'teki Terminal'den nasıl değiştirebilirim? [Buna ihtiyacım var çünkü DNS'im VPN'imle düzgün çalışmıyor. Bazen ana bağlantım için DNS kullanıyor ve bazen VPN için belirtilen DNS'yi kullanıyor (olması gereken).]

Yanıtlar:


15

scutilTerminalden etkileşimli olarak kullanabilirsiniz . sudo scutilDNS sunucularınızı uygun yerlerde değiştirerek bu komutları çalıştırın ve çalıştırın:

> aç
> d.init
> d.add Sunucu Adresleri * 8.8.8.8 9.9.9.9
> Durumu Ayarla: / Ağ / Servis / PRIMARY_SERVICE_ID / DNS
> çık

DNS sunucularınızı kullanmak 8.8.8.8ve 9.9.9.9kullanmak yerine .

Tek sorun bunun yeniden başlatmalar arasında kalıcı olmaması . Kalıcı değişiklikler istiyorsanız, ncutil isteyeceksiniz . Düzenlemenin nedeni /etc/resolv.confOS X'in daha yeni sürümlerinde yeterli değil, çünkü configd şimdi diğer uygulamaların okuduğu geçerli ayarların bilgilerini depolamak için bir veritabanı kullanıyor. Bazı uygulamalar yine de okuyacak /etc/resolv.conf (örneğin, ana bilgisayar), tüm uygulamalar için geçerli olmasa da.


2
8.8.8.8, yine de geçerli bir tanesidir. Google’ın Genel DNS’si. 8.8.4.4 ikincildir. :-)
Unutulmuş Noktalı virgül

Biliyorum, kullanıyorum :)
John T

1
Olması gerekiyor. scutil --dnsOnaylamak için kullanabilirsiniz .
John T

2
Bu, Mac OSX 10.7.5 MBP üzerinde çalışıyor gibi görünmüyor, en azından gerçek anlamda yapıldığında değil. Satırdaki herhangi bir şeyi değiştirmeli miyim set State:/Network/Service/PRIMARY_SERVICE_ID/DNSyoksa onu olduğu gibi kullanabilir miyim? Yeni DNS sunucuları scutil --dnsdeğişiklikten sonra çıktıda görünmeli mi?
ssc

2
@ssc PRIMARY_SERVICE_ID ile değiştirilecek anahtarı bulmak için scutilardından çalıştırın > list.
J.Money

46

Kullanabilirsiniz networksetup:

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

örneğin (Havaalanı bağlantısının Google’ın DNS Sunucularını kullanması)

sudo networksetup -setdnsservers AirPort 8.8.8.8 8.8.4.4

Şebeke servisinin adını çalıştırarak öğrenebilirsiniz networksetup -listallnetworkservices. Muhtemelen 'Wi-Fi' olacak.

Bu, Sistem Tercihleri'ndeki Ağ Tercihleri ​​Bölmesi'ndeki girişleri düzenliyor olmanızla aynıdır, bu nedenle yeniden başlatmalar arasında kalıcıdır.

Sipariş DNS sunucuları sorgulandığı zaman ortaya çıkan Snow Leopard'da bir DNS sorunu yaşıyor olabilirsiniz (bkz. Soru 84144 ))


Vay canına, 84144, yaşadığım sorun. Hala tüm bunları işliyor .... çok teşekkür ederim!
Dan Rosenstark

6
DNS'yi kaldırmak isteyen herkese bir not, yalnızca DNS yerine "boş" (tırnak işaretleri olmadan) yazın:sudo networksetup -setdnsservers <networkservice> empty
jackJoe

14

Chealion'un gönderisine cevap vermek için yeterli puanım yok ama üzerine eklemek için arayüzleri listelemeye başlayacağım

networksetup -listallnetworkservices

Değiştirmek istediğiniz arayüze sahip olduktan sonra aşağıdakileri yapabilirsiniz (Wi-Fi kullanıyorum ancak başka bir arayüz de yapabilirsiniz)

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

Yukarıdakilerin ilk satırı DNS ayarlarını boşaltır, ardından kullanmak istediğimiz DNS sunucuları ile takip eder ve DNS önbelleğini temizler

DNS değişikliğini doğrulamak için bunu önce ve sonra veya hemen sonra yapabilirsiniz.

scutil --dns | grep 'nameserver\[[0-9]*\]'

Bu sayfa boyunca tökezleyen herkes. GitHub'da yardım etmesi gereken bir Gist'im var. gist.github.com/dkittell/34fe7b7422323fba546948b7448933a5
David Kittell

1

resolv.conf artık OSX'de çalışmıyor. Dosyanın en üstünde aşağıdaki gibi bir bildirim var:

#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
#   scutil --dns
#
# SEE ALSO
#   dns-sd(1), scutil(8)
#
# This file is automatically generated.
#

Ayrıca, networksetup -listallnetworkservicestüm VPN arayüzlerini listelemez.

Doğru arayüzü hedeflemek için scutil kullanmanın bir yolu: 1. commands.txtİnteraktif scutil aracı için komutlarınızla bir dosya oluşturun . Örneğin, benim durumumda Pulse güvenli arayüz içeriği:

get State:/Network/Service/net.pulsesecure.pulse.nc.main/DNS
d.add ServerAddresses * 8.8.8.8 9.9.9.9
set State:/Network/Service/net.pulsesecure.pulse.nc.main/DNS
  1. Scutil komutunu, içine alınmış komutlarla çalıştırın. (İçin sudo gerekir set)
sudo scutil < commands.txt

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.