Internet bağlantısı olmasa bile OS X'te DNS sunucusunu ayarlama


17

Yüklü, yapılandırılmış DNS sunucusu (yerel Dnsmasq örneği) istediğim gibi localhost için çözer, tüm Tamam.

Çevrimdışı olduğumda, OS X resolv.conf içeriğini boş bıraktığından ve bu dosyadaki değişiklikleri yansıtma girişimini yoksayarak çalışmayı durdurur.

Herhangi bir fikir, çevrimdışı olsa bile DNS nasıl yapılandırılır?

Benzer sorun (çözülmemiş): http://blog.steamshift.com/geek/leopard-lookupd-and-local-web-development-sites

Ana motivasyon, alt anahtarları hesap anahtarları olarak kullanan RoR uygulamasının kolaylıkla geliştirilmesidir. Ve / etc / hosts dizininde 127.0.0.1 * .yourapp.local dosyasını kullanamazsınız. Bazıları 127.0.0.1'de .smackaho.st gibi alan adı smackaho.st ve srt DNS'yi kaydetti, ancak yine de çevrimdışı çalışırken kullanamazsınız.

EDIT: scutil komutunu denedi, ancak çevrimdışıysa DNS'yi değiştirebileceğiniz anlaşılıyor

NOT: tüm arabirimleri kapattığınızda, DNS sunucularını Pref. panel.


İlgili: Süper Kullanıcı üzerinde OS X Yosemite'de internet bağlantısı olmadan dnsmasq çalışmıyor (bir çözüm ancak bazı referanslar olmadan).
Arjan

Yanıtlar:


29

AŞAĞIDAKİ GÜNCELLEMEYİ GÖR!

Ayrıca yerel makinemde Dnsmasq kullanmaktan zevk alıyorum ve bu problemi de yaşadım. İşte çözüm:

Gönderen man 5 resolver:

The configuration for a particular client may be read from a file
having the format described in this man page. These are at present
located by the system in the /etc/resolv.conf file and in the files
found in the /etc/resolver directory.

/etc/resolver/varsayılan olarak mevcut değildir; kendiniz yaratmalısınız.

Ayrıca man sayfasından:

domain
  Domain name associated with this resolver configuration. This
  option is normally not required by the Mac OS X DNS search system
  when the resolver configuration is read from a file in the
  /etc/resolver directory. In that case the file name is used as the
  domain name.

Bu nedenle, üst düzey etki alanı için tüm dns sorgularının devyerel ad sunucusuna yönlendirilmesini isterseniz, şunları yaparsınız:

# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev

configdiçindeki dosyaları değiştirmez /etc/resolver/, bu nedenle bu ayar ağ değişiklikleri ve yeniden başlatmalarla devam eder.

GÜNCELLEŞTİRME 17 Temmuz 2012

Ne yazık ki, OS X Lion'dan itibaren, scutil --dnshiçbir arabirim etkin olmadığında üst çözücü (ile gösterildiği gibi ) kaybolur:

# scutil --dns # Online
DNS configuration

resolver #1
  nameserver[0] : 127.0.0.1

...

resolver #8
  domain   : dev
  nameserver[0] : 127.0.0.1

# scutil --dns # Offline
DNS configuration

resolver #1

...

resolver #8
  domain   : dev
  nameserver[0] : 127.0.0.1

Çözümleyici # 1'in boş olduğuna, ancak / etc / çözümleyici türetilmiş ad sunucusu girişinin kaldığına dikkat edin.

Çözümleyici etki alanını doğrudan / etc / resolver / dosyasında belirtebildiğiniz için, özel Internet kök etki alanının belirtilmesi . aşağıdaki gibi bir genel çözümleyici girişinin oluşturulmasına neden olduğu ortaya çıkar:

resolver #8
  nameserver[0] : 127.0.0.1

Artık tüm DNS sorguları çevrimdışı olsa bile localhost'a yönlendiriliyor.

Tabii ki, yine de dnsmasq'ın --address seçeneği gibi bir şey kullanarak seçtiğiniz alan adlarını 127.0.0.1 olarak çözmeniz gerekecektir:

# dnsmasq --address=/dev/127.0.0.1

Özetle:

  • Tüm ağ arabirimi dns sunucularınızı 127.0.0.1 olarak ayarlayın:
    networketup -setdnsservers Ethernet 127.0.0.1
    networketup -setdnsservers Kablosuz ağ 127.0.0.1
    ...
  • / Etc / resolver / dosyasını oluşturun:
    ad sunucusu 127.0.0.1
    alan adı .
  • Yerel bir DNS sunucusu kurun ve mutlu olun.

bakınız http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c


Pow'in aynen kullandığı budur ( pow.cx ).
daeltar

ama maalesef çalışmıyor - github.com/37signals/pow/issues/104
daeltar

3
@guns bu çözüm yosemite'de hala çalışıyor mu? dnsmasq yükseltene kadar çevrimdışı benim için iyi çalışıyordu. Şimdi scutil --dnsinternete bağlı No DNS configuration available olmadığında
koştuğumda

1
@MatthewLee, evet haklısın, tek çözüm ana bilgisayar dosyasına girdi eklemek gibi görünüyor.
Lenciel

1
Yosemite için henüz bir çözüm bulamayan var mı?
jmagnusson

2

Neden / etc / hosts içindeki girişleri yapmıyorsunuz? Tam gelişmiş bir DNS sunucusu çalıştırmanız gereken bir durumu düşünmekte sorun yaşıyorum. Mac'lerimde böyle şeyler yapmak için her zaman ana bilgisayar dosya girişlerini kullanıyorum.

OS X'teki çözümleyici, Linux veya diğer Unix'lerden farklı çalışır. Bu muhtemelen size keder veren şeyin bir parçasıdır. Örneğin ilk önce hangi çözümleme yönteminin kullanılacağına dair bir tercihleri ​​vardır ve bir süre boyunca tüm sorguların sonuçlarını önbelleğe alır.

DNS sunucusunu Ağ tercih bölmesindeki arabirime eklediniz mi? Bu, bir DNS girdisi aramaya karar vermesi durumunda çözümleyicinin bu sunucuyu sorguları için kullanmasını sağlamalıdır.


İstemci makinesinde DNS iletici kullanmanın bir nedeni , her istekte bulunan şimdi şişirilmiş ana bilgisayarlar dosyasını açarak çözümleyici arka plan programının performans cezasına maruz kalmadan büyük bir reklam / kötü amaçlı yazılım etki alanı listesi bulundurmaktır. Bu yaklaşımın esası, arama süresinin küçük olacağı dnsmasq / etc / hosts belleğine yükler. Ayrıca, web geliştirme yaparsanız, üzerinde çalıştığınız her site için yerel alan adları eklemenin küçük sıkıntılarından kaçınmanızı sağlar.
guns

1

(b / c yanıtlıyor Henüz yorum yapamıyorum ...)

Nasıl çevrimdışı oluyorsunuz?

(şu anda aldığım en iyi cevap)

# man -S 5 resolver
 .
 .
 .
 Note that the /etc/resolv.conf file,
 which contains configuration for the default (or "primary") DNS resolver
 client, is maintained automatically by Mac OS X and should not be edited manu-
 ally.  Changes to the DNS configuration should be made by using the Network
 Preferences panel.

Bu nedenle, kullanıcı arayüzüne bir şey girebilmeniz gerekir ve bu da yapışmalıdır. Yerel DHCP sunucumun sağladığı DNS sunucusunu beğenmediğimde bunu birkaç kez yapmıştım.


NetworkPreferences'da DNS yapılandırmasını değiştirmek /etc/resolv.conf dosyasını değiştirir.
Fabian Zeindl

0

OSX'te normal Linux / UNIX DHCP istemci yapılandırmalarının sahip olduğu /etc/dhcp3/dhclient.conf yapılandırma dosyası var mı?

Eğer öyleyse, sizin için uncomment olabilir bir çizgi olmalıdır

prepend domain-name-servers 127.0.0.1;

DHCP istemcisinin bu satırı her zaman resolv.conf dosyasına eklemesini sağlamak için


Resolv.conf dosyasına eklemek OS X üzerinde yardımcı olmuyor. .
daeltar

0

Statik bir adresle yapılandırılmış ikinci bir ethernet hizmeti ve DNS sunucunuz olarak 127.0.0.1 eklemeyi deneyin. Veya, DNS sunucunuzu 127.0.0.1 olarak ayarlayan bir ağ Konumu ekleyin. Bu değişikliklerin her ikisi de "Ağ" paneli altındaki "Sistem Tercihleri" nde yapılır.


-2

Sadece koymak yardımcı olabilir

127.0.0.1       localhost

/ etc / hosts içine yerleştirildiğinden, localhost'u bulmak için çözümleyici gerekmez.


1
Alt alanlar için buna ihtiyacım var, bu yüzden bu hayır.
099
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.