我的家庭网络中有两台服务器:第一台是基于 Arm 的 Linux 计算机,运行自定义的 Debian 3.4.43 内核;第二台是带有以太网屏蔽的 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 ssh 连接到 Linux 服务器
- 我可以使用 Firefox 和 Chrome 打开网站 server1.local 和 server2.local
- 我还可以在我的 iPhone 和 iPad (Safari) 上打开 URL 下的这些网站
但是:在我的 iMac 上,在 Safari 7.0.1 中
- 我在 Bonjour 收藏夹中找到了广告宣传的网络服务
- 当我单击其中一个时,相应的 URL 会出现在地址栏中(带有尾随“点”,但我认为这是正确的)
- 页面卡住,一段时间后出现“Safari 无法连接到服务器”的消息
- 当我在地址栏中手动输入 server1.local 时,也会发生同样的情况
- 我也在 Bonjour 收藏夹栏中找到了我的路由器,但是只有当我删除尾随的点时,Safari 才能连接到它(我猜它会使用路由器的“dns”信息,而不是单播/多播零配置消息)
- 当我在地址栏中输入 IP 地址,或者将服务器手动添加到 iMac 上的 /etc/hosts 文件中时,所有网站都可以正常工作
看起来 Safari 似乎需要一种特殊的干净 http 或某种授权,才能连接到广告服务。您知道这可能导致什么吗?还是我只是瞎了眼,Safari 和/或安全偏好设置中有一个明显的复选框需要勾选?
不过,这似乎是 Safari 独有的,因为名称在 Chrome 和 Firefox 中可以正确解析(并且在使用 ping、ssh 等的终端中,我甚至可以通过 telnet 连接到端口 80 上的服务器)
答案1
好的,现在我要回答我自己的问题了。我安装了 Sophos 防病毒软件,因为我比较偏执 ;) 我看到了一些与 iMac 上的 Web 服务无关的日志条目。长话短说,禁用 Sophos Anti Virus 中的 Web Protection 可立即消除上述现象...