Avahi および Zeroconf サーバーはすべてのアプリケーションで検出されますが、Safari では検出されません。

Avahi および Zeroconf サーバーはすべてのアプリケーションで検出されますが、Safari では検出されません。

私のホーム ネットワークには 2 台のサーバーがあります。1 台目は、カスタム Debian 3.4.43 カーネルで動作する Arm ベースの Linux コンピューターです。2 台目は、イーサネット シールドを備えた Arduino です。

Linux サーバーに avahi と apache2 をインストールし、apache mod-dnssd をインストールして、次のサービスを構成しました。

afpd.サービス:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">%h</name>
    <service>
        <type>_afpovertcp._tcp</type>
        <port>548</port>
    </service>
    <service>
        <type>_device-info._tcp</type>
        <port>0</port>
        <txt-record>model=MacPro</txt-record>
    </service>
</service-group>

ssh.サービス:

<service-group>    
  <name replace-wildcards="yes">%h</name>    
  <service>
    <type>_ssh._tcp</type>
    <port>22</port>
  </service>    
</service-group>

そして、Apache mod_dnssd が私の希望どおりに動作しなかった後、http.service も同様に動作しました:

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name>Cubie Remote</name> ## Name of the service
  <service>
    <type>_http._tcp</type>
    <port>80</port>
  </service>
</service-group>

Arduino では、zeroconf を実行するためにライブラリを使用しました。詳細は説明しませんが、原理的には、http.service に似たサービスを、同じタイプとポートで、異なるサーバー上の異なる名前でアドバタイズする必要があります。

これまでのところ順調で、次のことが機能します (宣伝されている http サービスの有無にかかわらず)。

  • iMac Finder (OS X 10.9.1) で afp サービスを見つけ、正しい MacPro アイコンも見つけて接続できます。
  • server1.localでLinuxサーバーにssh接続することもできます
  • FirefoxとChromeでserver1.localとserver2.localのWebサイトを開くことができます
  • これらのウェブサイトは、iPhoneやiPad(Safari)でもURLで開くことができます。

しかし、私のiMacではSafari 7.0.1で

  • Bonjourのお気に入りで宣伝されているウェブサービスを見つける
  • いずれかをクリックすると、それぞれの URL がアドレス バーに表示されます (末尾に「ドット」が付きますが、これは正しいようです)
  • ページが停止し、しばらくすると「Safari はサーバーに接続できません」というメッセージが表示されます
  • アドレスバーにserver1.localと手動で入力した場合も同じことが起こります。
  • Bonjour のお気に入りバーにもルーターが見つかりますが、Safari は末尾のドットを削除しないとルーターに接続できません (推測ですが、ユニキャスト/マルチキャストの zeroconf メッセージではなく、ルーターの「dns」情報を使用します)
  • アドレスバーにIPアドレスを入力するか、iMacの/etc/hostsファイルに手動でサーバーを追加すると、すべてのWebサイトが機能します。

Safari は、宣伝されているサービスに接続するために、特別な種類のクリーンな http または何らかの認証を期待しているように見えます。これが何を引き起こす可能性があるか、何か考えはありますか? それとも、私が盲目で、Safari やセキュリティ設定にチェックマークを付けなければならない明らかなチェックボックスがあるのでしょうか?

ただし、これは Safari に特有の現象のようです。Chrome と Firefox では名前が正しく解決されます (また、ターミナルで ping、ssh などを使用して、ポート 80 のサーバーに telnet することもできます)。

答え1

では、自分の質問に答えてみましょう。私は偏執狂なので、Sophos Anti-Virus をインストールしています ;) iMac の Web サービスにはあまり関係のないログ エントリをいくつか見ました。簡単に言うと、Sophos Anti-Virus で Web 保護を無効にすると、上記の現象はすぐに消えました...

関連情報