DreamPlug(Ubuntu Jauntyを実行しているプラグコンピューター)でAvahiを使用すると、次の非常に特殊な問題が発生します。
これに何日も費やした後、問題を絞り込むことができたと思います。
DreamPlugはWiFiアクセスポイントとして機能し、ホスト名plug
とIPアドレス192.168.1.1
(との両方/etc/hosts
で設定/etc/hostname
)を持ち、lighttpdを実行します。
現在、私のMac http://plug.local
はChrome でアクセスするとすぐに動作しますhttp://plug.local
が、iPadにロードしようとしても動作しません。つまり、デスクトップにページをロードするまで機能しません。
何らかの理由で、ホスト名が最初にMacで解決されるまで、iPadはホスト名を解決できません... iPadとMacの間に接続されているという事実以外に接続がないため、これは奇妙です同じアクセスポイント(DreamPlug)。
だからもう一度明確にするために:iPad上のSafariは、Macでhttp://plug.local
アクセスhttp://plug.local
するか、実行ping plug.local
するssh root@plug.local
か、基本的にホスト名を解決する他の何かを実行しない限り、アクセスするとハングします(ブラウジングが失敗したと報告されるまで)。ホスト名およびそれはきちんとはたらき始めます。
私の理解が正しければ、iPadが接続すると、に対する解決要求をブロードキャストしplug.local
ます。何らかの理由で、この要求はDreamPlugによって無視されます(または受信されません)。ただし、Mac はそのリクエストをブロードキャストできます。解決要求をブロードキャストし、DreamPlugが結果をブロードキャストしますplug.local
-> 192.168.1.1
。その後、iPadはこの結果(実際にはMac向け)を受信し、正常に解決できます。
avahi-daemon.conf
リクエストに応じて、自分または他の構成ファイルを提供させていただきます。
更新: Wiresharkを使用することに成功し、iPadが実際にネットワークにリクエストをブロードキャストしていることがわかりました。
DIDがAvahiからの応答をもたらすパケットと、そうでないパケットの両方をキャプチャしました。
両方とも完全に同一に見えますが、唯一の違いは、失敗したものがタイプの追加のRRを指定したことOPT
です... OPT
レコードが何であるかわかりません。AvahiはOPT
、何らかの理由でRRが添付されたDNSクエリを好まない可能性がありますか?
以下は、Wiresharkから取得した2つのスクリーンショットです。最初の例は、デスクトップコンピューターから送信された「良好な」mDNS要求を示しています(この場合、デバイスが呼び出されますrunway.local
)。このクエリは正常に機能し、サーバー(192.168.1.1
)はすぐに応答します。
から返される応答の例を次に示しrunway.local
ます。
一方、これは同じホスト名に対してiPadから送信された2番目のDNSクエリrunway.local
です。この場合、要求は単純に無視されるようです(いずれにしても、このDNSクエリに対する応答は受信されません)。
問題の原因となっているiPadリクエストの内容を追跡しようとすると、2つのパケットはほとんど同一であるように見えます。デスクトップ(OS Xを実行)とiPadから送信されるmDNSクエリの唯一の違いは、iPadが追加することですOPT
DNS要求の下にリソースレコード。
質問は次のとおりです。リソースレコードの重要性は何ですか(これはこれですか?)、またはそれは別のものですか?このDNS要求がAvahiによって無視される原因となります。
更新これは私が探していたブレークスルーかもしれません:
--debugフラグを使用してavahi-daemonを実行していると、多くの「無効なクエリパケット」に気付きました。メッセージ。これにより、次のページに移動しました:http : //avahi.org/ticket/284これは既知の問題であると思われます(ただし、解決されるはずです)。
具体的には:
tcpdumpは、これがMac OS 10.6がRFC2671を使用してDNSクエリの追加データセクションに情報を追加することによるものだと信じさせます。具体的には、応答パケットの最大サイズのヒントとして「UDPペイロードサイズ」(私の場合は1440)を提供しています。[...] Avahiは、無効なクエリパケットメッセージを生成する直前にAVAHI_DNS_FIELD_ARCOUNT!= 0をチェックする、空でない追加データセクションを持つクエリを無効と見なします。
plug
SSH 経由でDreamPlugにログインしping 224.0.0.251
、mDNSマルチキャストアドレスであるコマンドを実行すると、結果が得られることを追加する必要connect: Network is unreachable
があります。