Eu tenho dois servidores em minha rede doméstica: o primeiro é um computador Linux baseado em Arm rodando em um kernel Debian 3.4.43 personalizado. O segundo é um Arduino com escudo Ethernet.
Instalei o avahi e o apache2 no servidor linux, instalei o apache mod-dnssd e configurei os seguintes serviços:
afpd.service:
<?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.serviço:
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_ssh._tcp</type>
<port>22</port>
</service>
</service-group>
e, depois que o apache mod_dnssd não fez o que eu queria, também o 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>
No Arduino, usei uma biblioteca para fazer o zeroconf. Não fornecerei detalhes, mas em princípio deveria anunciar um serviço semelhante ao http.service com o mesmo tipo e porta, mas com um nome diferente em um servidor diferente.
Até aí tudo bem, as seguintes coisas funcionam (com ou sem o serviço http anunciado):
- Encontro o serviço afp no meu iMac Finder (OS X 10.9.1) e até mesmo o ícone correto do MacPro e posso me conectar a ele
- Também posso fazer ssh com server1.local para o servidor Linux
- Posso abrir os sites server1.local e server2.local com Firefox e Chrome
- Também posso abrir esses sites nas URLs do meu iphone e iPad (Safari)
MAS: no meu iMac, no Safari 7.0.1
- Encontro os serviços da web anunciados nos favoritos do Bonjour
- Quando clico em um deles, o respectivo URL aparece na barra de endereço (com "ponto" à direita, mas ouvi dizer que está correto)
- A página trava e depois de algum tempo aparece a mensagem "O Safari não consegue se conectar ao servidor"
- O mesmo acontece quando digito manualmente server1.local na barra de endereço
- Também encontro meu roteador na barra de favoritos do Bonjour, mas o Safari só consegue se conectar a ele quando removo o ponto final (meu palpite é que ele usa as informações de 'dns' do roteador em vez das mensagens unicast/multicast zeroconf)
- Todos os sites funcionam quando digito o endereço IP na barra de endereços ou quando adiciono os servidores manualmente ao arquivo /etc/hosts no meu iMac
Quase parece que o Safari espera um tipo especial de http limpo ou alguma autorização, para poder se conectar ao serviço anunciado. Alguma idéia do que isso pode causar? Ou sou apenas cego e há uma caixa de seleção óbvia no Safari e/ou nas preferências de segurança que precisa ser marcada?
Parece ser muito exclusivo do Safari, já que os nomes são resolvidos corretamente no Chrome e no Firefox (e no terminal com ping, ssh etc., posso até fazer telnet para os servidores na porta 80)
Responder1
ok, então aqui vou eu respondendo minha própria pergunta. Tenho o antivírus Sophos instalado porque sou paranóico;) Vi algumas entradas de log não relacionadas ao serviço web no iMac. Para resumir a história, desabilitar o Web Protection no Sophos Anti Virus fez com que o fenômeno acima desaparecesse imediatamente...