Aslan / isim çözünürlük sırası


9

(10.7.1 güncellemesi ile bu sorun benim için gitti - / etc / hosts artık her zamanki gibi benim için çalışıyor)

Mac'imi Lion'a güncelledim ve DNS'den sonra bile / etc / hosts'a danışıldığını fark ettim. İçinde geliştirme için kullandığım birçok ana bilgisayar adı olduğu için bu çok can sıkıcı bir durum.

Ad çözümleme sırası nerede yapılandırılır? Dscacheutil kullanarak kontrol edebilirim, işte bir Snow Leopard makinesi bana şöyle diyor:

pilif@tali ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default
    /BSD/local

Settings:
AAAA Queries  - Disabled (link-local IPv6 addresses)
Default TTL   - 3600
Policy Flags  - 0

Ve işte Lion'un söylediği şey

pilif@kosmos ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default

Unable to get details from the cache node
Unable to get cache configuration information

iki hata bir yana, ben / etc / hosts daha önce okumak yapar / BSD / Yerel olduğunu varsayalım.

Bu "Önbellek arama politikasının" nerede saklandığı ve nasıl değiştirileceği hakkında bir fikri olan var mı?

Dcsl kullanarak ana bilgisayar adı girişleri oluşturabileceğimi biliyorum, ama gerçekten / etc / host'larımı çeşitli makinelerde kullanmak istiyorum.

Güncelleme: Çözüm sırası görünüşe göre dizin Yardımcı Programında yapılandırılabilir. Ne yazık ki, bu kurulumlar Directroy Utility artık BSD dosyalarını Hizmetler sekmesinde listelemiyor.

Bu özellik Lion'dan mı geldi? Yoksa bu kurulumda mı?

Yanıtlar:


5

Sorunu çözdüm (ve böylece soruyu değiştirmek yerine cevap olarak gönderiyorum):

BSD dosyaları gerçekten Dizin Yardımcı Programında veya artık dscacheutil'de listelenmiyor, ancak en azından / etc / hosts hala okunuyor, ancak IP adresi başına birden çok ana bilgisayar adının artık desteklenmediği veya en azından doğru ATM çalışmıyor.

Ne zaman eski / etc / hosts gibi görünebilirdi

127.0.0.1 localhost foo foobar

Bu, bu ana bilgisayar adlarının herhangi birini çözmek için ~ 10 saniye bekleme süresine neden olur.

Ama eğer kullanırsan

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

Çözünürlük anında gerçekleşecek.

RedGrittyBrick'in yanıtı da geçerli, ancak özellikle benim çeşitli geliştirme makineleri arasında paylaşılan yerel dizini değiştirmek üzerinden hosts dosyasını kullanmaya devam etmek istiyorum.

Diğer sorularıma da cevap vermek (şimdi benim için her şey açık):

  • Dizin yardımcı programında yapılandırdığınız önbellek çözünürlüğü sırasını, hangi etkin dizinlerden hangisine hangi sırayla bakmak istediğinizi söyleyebilirsiniz.
  • Dizinleri yapılandırmak için dizin yardımcı programını da kullanın
  • Dizin yardımcı programı Sistem Tercihleri> Hesaplar> Giriş Seçenekleri> Dizine Katıl> Dizin Yardımcı Programı'na giderek başlatılır.
  • Lion'da, BSD Dosyaları "dizini" artık yardım dosyası buna başvursa bile kullanılamaz
  • Dediğim gibi, / etc / hosts hala okunuyor, ama yukarıda açıkladığım hata var.

Her girişi kendi satırına koymak benim için çözmedi. Hem Chrome'da hem de Safari'de "foo" ve "foobar" ı ziyaret edebilir misiniz? Benim için yalnızca Chrome'da çalışıyor. Mevcut bir web sitesini geçersiz kılabilir misiniz, örneğin "127.0.0.1 www.google.com"? Benim için, bu Chrome veya Safari'de çalışmaz.
richardkmiller

Bu, 10'ların beni beklemesine neden oldu. Teşekkür ederim, bu beni deli ediyordu.
Josh Bleecher Snyder

10.7.3 yay benim için çözüldü!
EMiller

3

Mesele Lion .local TLD'yi farklı işlemektedir çünkü bazı Çok Noktaya Yayın DNS özellikleri (Bonjour tarafından kullanılır) için ayrılmıştır. Bu sorunu çözmek için buldum tek yolu geliştirme ana bilgisayarlar için farklı bir TLD kullanmak (yani: .dev). Benim için iyi çalışıyor, umarım başkalarına yardımcı olur!


kesinlikle kutumda olan buydu. thx
slf

1

Bildiğim gibi, bununla başa çıkmanın geleneksel Unix yolu bir hostresorderveya orderyönergesi kullanmaktır /etc/resolv.conf. OS X bu dosyaları okur (veya bunlara yapılabilir) ancak OS X'in, açılışta bu yapılandırma dosyalarının üzerine yazdığına inandığım ağ tercihleri ​​aracılığıyla yönetilen ayrı bir sistemi vardır.

http://hints.macworld.com/article.php?story=20070223050607406

http://docs.info.apple.com/article.html?path=ServerAdmin/10.6/en/od4939886e.html

https://discussions.apple.com/thread/2493759

http://blog.daemon.com.au/go/blog-post/managing-the-host-file-on-leopard

Bu, sorunuza cevap vermiyor ancak bilgi ve bağlantılar bir tane bulmanıza yardımcı olabilir. Sığacak şekilde yoğunlaştırabilseydim bunu bir yorumda söylerdim.


Ben dscl hakkında biliyorum, ama ben özellikle açıkça artık açılıp kapatılamaz hosts dosyasını kullanmak istedim. Her zaman okunur, ancak eskisinden daha farklı ayrıştırma kuralları vardır - soruma verilen cevaba bakın.
pilif

1

Yerel DNS olarak dnsmasq kullanarak ve buraya girişler ekleyerek veya kullanmak için dnsmasq kullanarak bu soruna geçici bir çözüm bulmak mümkündür /etc/hosts.

DNS sunucusu sırasını ayarlamak için bir komut dosyası kullanmak mümkündür:

Filename: setdsn
-------------------------------------------------
#!/bin/bash

# Script is used to set the Nameserver Lookup under Max OS X 10.4 with the Console
# Script by Stephan Oeste

if [ $# -lt 2 ] ; then
echo "Use: $0 [2.Nameserver]"
echo "Example Use: $0 example.tld 1.2.3.4 1.2.3.5"
exit 1
fi

PSID=$( (scutil | grep PrimaryService | sed -e 's/.*PrimaryService : //')<< EOF
open
get State:/Network/Global/IPv4
d.show
quit
EOF
)

scutil << EOF
open
d.init
d.add ServerAddresses * $2 $3
d.add DomainName $1
set State:/Network/Service/$PSID/DNS
quit
EOF
-------------------------------------------------

Dosyayı oluşturun:

chmod +x setdns

Ve sonra ist ile (Örnek) kullanın: setdns domain.com 12.23.34.45
(emzy tarafından http://hints.macworld.com/article.php?story=20050621051643993 tarihinde gönderildi )

Komut dosyasının ağ değişikliğine otomatik olarak yüklenmesini istiyorsanız, bir .plist oluşturmalı, koymalı /Library/LaunchDaemonsve kullanmalısınız:

sudo launchctl load -w /LibraryLaunchDaemons/name.your.plist

1

Şeffaf bir Yazılım Güncelleme Sunucusu kurmaya çalışırken Snow Leopard'da bu sorunla karşılaştım. Şimdi Lion üzerinde de çalıştım. Yazılım Güncelleme Sunucusunun kendisi bir kesmek ve bir çamurun ortasında, ancak bu sorun oldukça zarif bir şekilde çözüldü. İşte bildiklerim:

  • / etc / hosts, Lion'da bulunur ve son OS X sürümleri gibi DNS'den sonra okunacak şekilde ayarlanır.
  • /etc/resolv.conf, Lion'da bulunur ancak /var/run/resolv.conf için bir sembolik bağlantıdır.
  • /var/run/resolv.conf, ağ yapılandırmanız her güncellendiğinde yeniden yazılır. Bunun nedeni yeniden başlatmalar, DHCP kira yenilemeleri vb. Olabilir.

Aşağıdaki betiği oluşturdum. / Usr / local / hostsBind:

mv /var/run/resolv.conf /var/run/resolv.conf.new
echo order hosts, bind > /var/run/resolv.conf
cat /var/run/resolv.conf.new >> /var/run/resolv.conf

bu, geçerli ana resolv.conf dosyasını yedekler, BIND'dan önce istenen ana bilgisayar sırasına sahip yeni bir tane oluşturur ve önceki dosyayı sonuna kadar birleştirir.

Ben /Library/LaunchDaemons/com.domain.hostsBind.plist aşağıdaki başlattı iş ana resolv.conf dosyasını izleyerek bu senaryoyu diyoruz (değiştirebileceğiniz com.domain sizin için mantıklı bir şey):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.domain.hostsBind</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/hostsBind</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/var/run/resolv.conf</string>
    </array>
</dict>
</plist>

Bu, Lion Software Update sunucusuyla kuruluşumuz için çalışmaktadır.

Son not etmek gerekirse, resolv.conf yolunu /etc/resolv.conf olarak değiştirirseniz, Snow Leopard ile de iyi çalışır. Lion, sembolik bağın eğrisini / etc / yerine / var / run / 'e attı.

-b

Not: Komut dosyasının kaynağı: http://forums.macrumors.com/showthread.php?p=6742920


Bunu denediğimde, dosya değiştirilirken yeni bir güncelleme tetiklendiğinden iş dosyada siparişi beklemeye devam etti.
harmanjd

1

OSX Lion ile birlikte gelen apache-server ile ilgili bazı yanlış şeyler var.

  1. Varsayılan olarak birçok modül yüklenmiştir.
    Açın /etc/apache2/httpd.confve etkin modüller listesini gözden geçirin (tümü varsayılan olarak etkindir). Muhtemelen birçoğunu #çizginin önüne a koyarak kapatabilirsiniz .

    Bunlar kapattığım şeyler:

#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_default_module libexec/apache2/mod_authn_default.so
#LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
#LoadModule authz_user_module libexec/apache2/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_default_module libexec/apache2/mod_authz_default.so
#LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
#LoadModule dbd_module libexec/apache2/mod_dbd.so
#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
#LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
#LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
#LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
#LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
#LoadModule dav_module libexec/apache2/mod_dav.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule bonjour_module libexec/apache2/mod_bonjour.so
#LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
  1. Hosts dosyası mükemmel bir değil.
    Şimdi adresinde bulunan hosts dosyanızı açın /etc/hosts. Burada bu satırı göreceksiniz (ve bazı yorumlar):

127.0.0.1 macbook-pro-van-bart.local

(diğer bilgisayar dışı kurs dışı). Aşağıdaki satırı ekleyin (bilgisayar adını değiştirin):

fe80::1%lo0 macbook-pro-van-bart.local
  1. Apache yapılandırmanıza bir göz atın IP'lere güvenmediğinizden
    emin olun vhosts. Bunları şu şekilde değiştirin:

AdıVirtualHost 127.0.0.1:80

Oluyor:

AdıVirtualHost *: 80

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.