1
iPadでのDreamPlug UbuntuでのAvahiの使用
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が追加することですOPTDNS要求の下にリソースレコード。 質問は次のとおりです。リソースレコードの重要性は何ですか(これはこれですか?)、またはそれは別のものですか?この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をチェックする、空でない追加データセクションを持つクエリを無効と見なします。