ライオン/名前解決命令


9

(この問題は10.7.1アップデートで解消されました-/ etc / hostsがいつものように動作するようになりました)

MacをLionに更新したところ、/ etc / hostsがDNSの後でも最後に参照されていることに気づきました。開発に使用するホスト名がたくさんあるので、これは非常に迷惑です。

名前解決の順序はどこに構成されていますか?私はdscacheutilを使用してそれをチェックできるので、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

そして、これがライオンが私に言うことです

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

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

2つのエラーは別として、私は/ BSD / Localが/ etc / hostsを以前に読み取らせる原因であると想定します。

この「キャッシュ検索ポリシー」が格納されている場所と、それを元に戻す方法を知っている人はいますか?

私はdcslを使用してホスト名エントリを作成できることを知っていますが、さまざまなマシンで使用する/ etc / hostsを保持したいです。

更新:解決の順序は明らかにディレクトリユーティリティで設定できます。残念ながら、このインストールのDirectroyユーティリティは、[サービス]タブにBSDファイルをリストしません。

この機能はLionからなくなったのですか?または、このインストールはホースですか?

回答:


5

私は問題を解決しました(したがって、質問を修正するのではなく、回答として投稿します)。

BSDファイルは確かにDirectory Utilityにもdscacheutilにもリストされていませんが、少なくとも/ etc / hostsは引き続き読み取られますが、IPアドレスごとに複数のホスト名がサポートされていない、または少なくとも、ATMは正しく機能しません。

古い/ etc / hostsが次のようになっている可能性がある場合

127.0.0.1 localhost foo foobar

これにより、これらのホスト名のいずれかが解決されるまでに最大10秒の待機時間が発生します。

しかし、あなたが使うなら

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

すぐに解決されます。

RedGrittyBrickの回答も有効ですが、私は特に、ローカルディレクトリの変更よりもホストファイルを使用して、私のさまざまな開発マシン間で共有されるようにしたいと考えています。

私の残りの質問にも答えるには(今ではすべてがはっきりしています):

  • ディレクトリユーティリティで構成するキャッシュ解決の順序では、有効なディレクトリのどれをどの順序で確認するかを指定できます。
  • ディレクトリを設定するには、ディレクトリユーティリティも使用します
  • ディレクトリユーティリティは、[システム環境設定]> [アカウント]> [ログインオプション]> [ディレクトリに参加]> [ディレクトリユーティリティ]から起動します。
  • Lionでは、ヘルプファイルが参照しているにもかかわらず、BSDファイルの「ディレクトリ」は使用できなくなりました。
  • 先ほど述べたように、/ etc / hostsはまだ読み込まれていますが、上記のバグがあります。

各エントリを個別の行に配置しても、解決できませんでした。ChromeとSafariの両方で「foo」と「foobar」にアクセスできますか?私にとっては、Chromeでのみ機能します。「127.0.0.1 www.google.com」などの既存のウェブサイトを上書きできますか?私にとって、それはChromeでもSafariでも機能しません。
richardkmiller

これで10代の待機が解消されました。ありがとう、それは私を夢中にさせた。
ジョシュブリーチャースナイダー

10.7.3で解決しました。
EMiller 2012

3

問題は、いくつかのマルチキャストDNS機能(Bonjourで使用)のために予約されているため、Lionが.local TLDを異なる方法で処理することです。この問題を解決する唯一の方法は、開発ホスト(つまり、.dev)に別のTLDを使用することです。それは私にとってはうまくいきます。


これは絶対に私の箱で起こっていたことでした。thx
slf

1

ご存知のとおり、これを処理する従来のUnixの方法は、でhostresorderor orderディレクティブを使用すること/etc/resolv.confです。OS Xはこれらのファイルを読み取って使用します(または作成することができます)が、OS Xにはネットワーク設定で管理される個別のシステムがあり、起動時にこれらの構成ファイルを上書きすると思います。

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

これはあなたの質問の答えにはなりませんが、情報とリンクがそれを見つけるのを助けるかもしれません。必要に応じてそれを圧縮できれば、コメントに入れておきます。


dsclについては知っていますが、Lionで明示的にオン/オフを切り替えることができないhostsファイルを使用したいと思いました。それは常に読まれますが、以前とは異なる解析規則があります-私の質問に対する私の答えを見てください。
ピリフ

1

この問題を回避するには、dnsmasqをローカルDNSとして使用してそこにエントリを追加するか、dnsmasqを使用してを使用します/etc/hosts

スクリプトを使用して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
-------------------------------------------------

ファイルを作成します。

chmod +x setdns

そして、(例)でistを使用します:setdns domain.com 12.23.34.45
http://hints.macworld.com/article.php?story=20050621051643993の emzyによる投稿)

スクリプトがネットワークの変更時に自動的に読み込まれるようにするには、.plistを作成し、それを配置し/Library/LaunchDaemonsて使用する必要があります。

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

1

透過的なソフトウェアアップデートサーバーをセットアップしようとしたときに、Snow Leopardでこの問題に遭遇しました。Lionでも動作するようになりました。Software Update Server自体はハックとクラッジの中間にありますが、この問題はかなりエレガントに解決されました。これが私が知っていることです:

  • / etc / hostsはLionに存在し、最近のOS Xバージョンと同様にDNSの後に読み取られるように設定されています。
  • /etc/resolv.confはLionに存在しますが、/ var / run / resolv.confへのシンボリックリンクです。
  • /var/run/resolv.confは、ネットワーク構成が更新されるたびに書き換えられます。これは、再起動、DHCPリースの更新などが原因である可能性があります。

次のスクリプトを作成しました。/ 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

このバックアップは、現在のメインのresolv.confファイルをバックアップし、BINDの前にホストの希望する順序で新しいファイルを作成し、前のファイルを最後まで連結します。

/library/LaunchDaemons/com.domain.hostsBind.plistで起動された次のジョブでメインのresolv.confファイルを監視することによって、このスクリプトを呼び出します(com.domainを意味のあるものに変更できます)。

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

これは、Lion Software Updateサーバーを備えた組織で機能しています。

最後に、resolv.confのパスを/etc/resolv.confに変更すると、Snow Leopardでも問題なく機能します。Lionはシンボリックリンクのカーブボールを/ etc /ではなく/ var / run /に投げただけです。

-b

PS:スクリプトのソース:http : //forums.macrumors.com/showthread.php?p=6742920


私がこれを試したとき、ファイルを変更すると新しい更新がトリガーされたため、ジョブはファイルの先頭に追加されました。
harmanjd 2013

1

OSX Lionに同梱されているapache-serverには、多くの問題があります。

  1. 多くのモジュールがデフォルトでロードされます。
    開いて/etc/apache2/httpd.conf、有効なモジュールのリストを確認します(モジュールはすべてデフォルトで有効になっています)。おそらく#、行の前にを置くことで、それらの多くをオフにすることができます。

    これらは私がオフにしたものです:

#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ファイルを開きます/etc/hosts。ここに、この行(およびいくつかのコメント)が表示されます。

127.0.0.1 macbook-pro-van-bart.local

(もちろん他のコンピューター名)。次の行を追加します(コンピューター名を変更します)。

fe80::1%lo0 macbook-pro-van-bart.local
  1. Apacheの設定
    を見てください。IPにvhosts依存していないことを確認してください。次のように変更します。

NameVirtualHost 127.0.0.1:80

になる:

NameVirtualHost *:80

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.