Singa / urutan resolusi nama


9

(masalah ini hilang untuk saya dengan pembaruan 10.7.1 - / etc / hosts sekarang berfungsi seperti biasa untuk saya)

Saya telah memperbarui Mac ke Lion dan sekarang saya perhatikan bahwa / etc / hosts sudah dikonsultasikan terakhir, bahkan setelah DNS. Ini sangat menjengkelkan karena saya memiliki banyak nama host di sana yang saya gunakan untuk pengembangan.

Di mana urutan resolusi nama dikonfigurasi? Saya dapat memeriksanya menggunakan dscacheutil, jadi inilah yang dikatakan oleh mesin Snow Leopard:

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

Dan inilah yang dikatakan Lion kepada saya

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

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

selain dari dua kesalahan, saya akan berasumsi bahwa / BSD / Local adalah apa yang membuatnya baca / etc / hosts sebelumnya.

Adakah yang tahu di mana "kebijakan pencarian Cache" ini disimpan dan bagaimana cara mengubahnya kembali?

Saya tahu bahwa saya dapat membuat entri nama host menggunakan dcsl, tapi saya benar-benar ingin menyimpan / etc / hosts yang saya gunakan di berbagai mesin.

Pembaruan: Urutan resolusi tampaknya dapat dikonfigurasi dalam Utilitas direktori. Sayangnya, instalasi ini Directroy Utility tidak lagi mencantumkan file BSD di tab Layanan.

Apakah fitur ini hilang dari Lion? Atau apakah instalasi ini disembunyikan?

Jawaban:


5

Saya memecahkan masalah (dan dengan demikian memposting sebagai jawaban alih-alih mengubah pertanyaan):

File-file BSD memang tidak terdaftar dalam Direktori Utility, atau di dscacheutil lagi, tetapi setidaknya / etc / hosts masih dibaca, tetapi ada masalah di mana beberapa nama host per alamat IP sepertinya tidak didukung lagi atau setidaknya, mereka tidak berfungsi dengan benar ATM.

Ketika / etc / hosts lama Anda bisa terlihat seperti

127.0.0.1 localhost foo foobar

Ini akan menyebabkan waktu tunggu ~ 10 detik untuk menyelesaikan semua nama host ini.

Tetapi jika Anda gunakan

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

Resolusi akan instan.

Jawaban RedGrittyBrick juga valid, tetapi saya secara khusus ingin terus menggunakan file host alih-alih memodifikasi direktori lokal karena dibagi di antara berbagai mesin pengembangan milik saya.

Untuk menjawab sisa pertanyaan saya juga (sekarang semuanya jelas bagi saya):

  • Urutan resolusi cache yang Anda konfigurasikan dalam utilitas direktori tempat Anda dapat menentukan mana dari direktori yang diaktifkan yang ingin Anda lihat dalam urutan apa.
  • Untuk mengkonfigurasi direktori, gunakan juga utilitas direktori
  • Utilitas direktori diluncurkan dengan masuk ke System Preferences> Accounts> Login Options> Join Directory> Utility Direktori
  • Di Lion, "direktori" File BSD tidak tersedia lagi meskipun file bantuan masih merujuknya
  • Seperti yang saya katakan, / etc / hosts masih membaca, tetapi ada bug yang saya jelaskan di atas.

Menempatkan setiap entri pada barisnya sendiri tidak menyelesaikannya untuk saya. Bisakah Anda mengunjungi "foo" dan "foobar" di Chrome dan Safari? Bagi saya, itu hanya berfungsi di Chrome. Bisakah Anda mengganti situs web yang ada, misalnya "127.0.0.1 www.google.com"? Bagi saya, itu tidak berfungsi di Chrome atau Safari.
richardkmiller

Ini menyelesaikan 10-an menunggu saya. Terima kasih, itu membuatku gila.
Josh Bleecher Snyder

Mengatasinya untuk saya pada 10.7.3 yay!
EMiller

3

Masalahnya adalah Lion menangani .local TLD berbeda karena disediakan untuk beberapa fitur DNS Multicast (digunakan oleh Bonjour). Satu-satunya cara yang saya temukan untuk mengatasi masalah ini adalah menggunakan TLD yang berbeda untuk host pengembangan (yaitu: .dev). Ini berfungsi dengan baik untuk saya, berharap ini akan membantu orang lain!


ini benar-benar apa yang terjadi di kotak saya. thx
slf

1

Seperti yang saya harapkan Anda tahu, cara Unix tradisional untuk menangani ini adalah dengan menggunakan hostresorderatau orderarahan /etc/resolv.conf. OS X memang (atau dapat dibuat untuk) membaca dan menggunakan file-file ini tetapi OS X memiliki sistem terpisah yang dikelola melalui preferensi jaringan yang saya percaya menimpa file-file konfigurasi ini saat boot.

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

Ini tidak menjawab pertanyaan Anda tetapi info dan tautannya mungkin membantu menemukannya. Saya akan menaruh ini dalam komentar jika saya bisa menyingkatnya agar pas.


Saya tahu tentang dscl, tetapi saya secara khusus ingin menggunakan file hosts yang tidak dapat secara eksplisit dinyalakan dan dimatikan di Lion. Itu selalu dibaca, tetapi dengan aturan parsing yang berbeda dari sebelumnya - lihat jawaban saya untuk pertanyaan saya.
pilif

1

Dimungkinkan untuk mengatasi masalah ini dengan menggunakan dnsmasq sebagai DNS lokal dan menambahkan entri di sana, atau menggunakan dnsmasq untuk digunakan /etc/hosts.

Dimungkinkan untuk menggunakan skrip untuk mengatur urutan server DNS:

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
-------------------------------------------------

Buat file:

chmod +x setdns

Dan kemudian gunakan ist dengan (Contoh): setdns domain.com 12.23.34.45
(Diposting oleh emzy di http://hints.macworld.com/article.php?story=20050621051643993 )

Jika Anda ingin skrip dimuat secara otomatis pada perubahan jaringan, Anda harus membuat .plist, masukkan, /Library/LaunchDaemonsdan gunakan:

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

1

Saya mengalami masalah ini di Snow Leopard saat mencoba menyiapkan Server Pembaruan Perangkat Lunak transparan. Saya sudah membuatnya bekerja pada Lion sekarang juga. Server Pembaruan Perangkat Lunak itu sendiri berada di antara hack dan kludge, tetapi masalah ini diselesaikan dengan sangat elegan. Inilah yang saya tahu:

  • / etc / hosts memang ada di Lion dan seperti versi OS X terbaru diatur untuk dibaca setelah DNS.
  • /etc/resolv.conf ada di Lion tetapi merupakan symlink ke /var/run/resolv.conf.
  • /var/run/resolv.conf ditulis ulang kapan saja konfigurasi jaringan Anda diperbarui. Itu bisa disebabkan oleh restart, perpanjangan sewa DHCP, dll.

Saya membuat skrip berikut. / 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

ini mencadangkan file resolv.conf utama saat ini, membuat yang baru dengan urutan host yang diinginkan sebelum BIND, dan menyatukan file sebelumnya hingga akhir.

Saya menyebut skrip ini dengan menonton file resolv.conf utama dengan pekerjaan yang diluncurkan berikut ini di /Library/LaunchDaemons/com.domain.hostsBind.plist (Anda dapat mengubah com.domain menjadi sesuatu yang masuk akal bagi Anda):

<?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>

Ini telah berfungsi untuk organisasi kami dengan server Pembaruan Perangkat Lunak Lion.

Hal terakhir yang perlu diperhatikan, ini berfungsi baik dengan Snow Leopard juga jika Anda mengubah path untuk resolv.conf ke /etc/resolv.conf. Lion hanya melempar curveball dari symlink ke / var / run / bukan / etc /.

-b

PS: Sumber untuk skrip: http://forums.macrumors.com/showthread.php?p=6742920


ketika saya mencoba ini, pekerjaan terus memesan pada file karena mengubah file memicu pembaruan baru.
harmanjd

1

Ada beberapa hal yang salah dengan server-apache yang dikirimkan bersama OSX Lion.

  1. Banyak modul dimuat secara default.
    Buka /etc/apache2/httpd.confdan buka daftar modul yang diaktifkan (semuanya diaktifkan secara default). Anda mungkin dapat mematikan banyak dari mereka dengan meletakkan tanda #di depan garis.

    Inilah yang saya matikan:

#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. File host adalah tidak sempurna.
    Sekarang buka file host Anda, yang terletak di /etc/hosts. Di sini Anda akan melihat baris ini (dan beberapa komentar):

127.0.0.1 macbook-pro-van-bart.local

(nama pengguna komputer lain tentunya). Tambahkan baris berikut (ubah nama pengguna):

fe80::1%lo0 macbook-pro-van-bart.local
  1. Lihatlah konfigurasi apache Anda.
    Pastikan Anda vhoststidak bergantung pada IP. Ubah mereka seperti ini:

NameVirtualHost 127.0.0.1:80

Menjadi:

NameVirtualHost *: 80

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.