Estou executando o Windows Server 2008 R2, temos um aplicativo que se conecta de (vincula a) um IP público no servidor a 127.0.0.1:8334 [se conecta a um serviço que escuta em 0.0.0.0:8334]
No Windows 2003, não havia nenhum problema com isso. Podemos nos conectar usando o TCP de 1.2.3.4 [por exemplo] a 127.0.0.1:8334.
No Windows 2008, descobrimos que as conexões TCP do IP público, por exemplo, 1.2.3.4 a 127.0.0.1:8334, até falham. mas o serviço aceita conexões de 127.0.0.1 a 127.0.0.1:8334 e 127.0.0.1 a 1.2.3.4:8334.
Tentei desligar o firewall do Windows, configurar seu registro, etc. (nenhuma entrada de log útil apareceu), sem sucesso. Isso é um problema com a nova pilha de rede?
Editar% s
1.2.3.4 está tentando conectar-se ao host local [127.0.0.1] na mesma máquina
O arquivo hosts é o arquivo host padrão do Windows 2008.
Informação de verificação de loopback, interessante. Tentei ... não funcionou. Verificado para verificar se eu tinha feito tudo corretamente - eu tenho.
Estou querendo saber se existe uma solução usando NAT ou alguma outra maneira de encaminhar portas - se eu encaminhar 127.0.0.1:port para 1.2.3.4:port, isso funcionaria? Como o aplicativo escuta em 0.0.0.0:port, ele seleciona conexões em 1.2.3.4:port
O arquivo HOSTS contém o host local 127.0.0.1 - no entanto, o arquivo hosts é usado apenas em pesquisas de nome de host. Nesse caso, nosso aplicativo não procuraria nenhum nome de host, pois o endereço IP 127.0.0.1 é codificado nele (em vez de localhost). Portanto, o arquivo HOSTS não entra em jogo aqui.
Quanto às portas acima de 1024 [acho que você se refere ao problema MaxUserPort, talvez?] Eu testei isso tentando uma conexão simples à porta 445 - funciona a partir de 127.0.0.1, não funciona quando eu conecto do IP de origem 1.2.3.4. 445 é um serviço padrão do Windows, portanto, deve funcionar!
Atualmente não executando o NAT ou o RRAS na máquina ... estava pensando se havia uma maneira de fazer o redirecionamento - acho que não funcionará, pois a pilha TCP / IP rejeitará o pacote antes que ele atinja a interface de loopback para redirecionar.
Impressão de rota que eu verifiquei - parece bom, os IPs públicos roteados primeiro e, finalmente, 127.0.0.0 máscara de rede 255.255.255.0 e 127.0.0.1 máscara de rede 255.255.255.255 para loopback.
Editar Parece que encontrei a resposta sobre o motivo do problema. Eu usei eventvwr.msc, habilitei o log do Winsock, desliguei outros serviços, apenas tentei este teste de conexão. Ocorreu um erro que, em hexadecimal, foi mapeado para STATUS_INVALID_ADDRESS_COMPONENT quando eu o pesquisei no Google.
Isso me levou a: http://social.msdn.microsoft.com/Forums/en-US/wfp/thread/d7cb6138-3f67-4467-a068-8325f56739ba
O que confirmou que essa é uma alteração de design no WFP para Vista / 7 / Server 2008 [plataforma de filtragem do Windows].
[Ver resposta de Anupama Vasanth]
Parece que terei que seguir o caminho difícil e reescrever o código [difícil porque significa lidar com gerentes!]
Obrigado por me ajudar a localizar / confirmar o problema!
Respostas:
Não se esqueça, no Windows 2008, o firewall está ativado por padrão. Isso potencialmente pode bloquear todo e qualquer tráfego, mesmo na interface de loopback. Além disso, se você ligar para 0.0.0.0, estará aceitando conexões em TODAS as interfaces. O firewall ainda bloquearia isso. Você pode tentar desligar o firewall durante o teste ... e depois ligá-lo novamente. Não tive problemas ao conectar-me a vários programas que desenvolvi no 127.0.0.1.
fonte
Tente conectar-se ao 127.0.0.2 no Vista / win2k8 e superior - parece engraçado, mas funciona. Teve resultados positivos com isso no passado
fonte
Estou certo de que ele está conectado ao recurso de segurança de verificação de loopback, embora não possa obter detalhes detalhados de como ele é implementado, apenas como superá-lo:
http://chillicode.wordpress.com/tag/loopback-check/
E para "APLICAR AO" Windows 2008, consulte http://support.microsoft.com/kb/896861
Bem, o que exatamente está no seu arquivo HOSTS? Eu não tenho o W2008. Você quer dizer que não há "127.0.0.1 localhost" lá?
Também li em algum lugar que a configuração padrão do W2008 não permite a comunicação com portas maiores que 1024.
Você pode enviar comentários sobre o MS Windows Server 2008 diretamente à equipe da MS através
e eles responderão
Se você tentou desativar a "verificação de loopback" através do método de edição do Registro, será necessário reiniciar. Outro - não.
NAT dentro da máquina? 127.0.0.1 não é encaminhado ou roteado, acredito que seja interno, você pode desconectar a placa de rede, seu 1.2.3.4 desaparecerá, mas 127.0.0.1 continuará lá.
Qual é a saída do seu (Run -> cmd -> route print)?
Há mais um momento, pensei, embora não saiba como montar.
127.0.0.1 é host local (interface), é nome de rótulo único e considerado local. 1.2.3.4 é um nome que não é um rótulo único.
Os possíveis problemas com isso são que esse nome pode ter sido considerado externo
Você pode tentar, separadamente:
Desativando (se estiver ativado e ativando se estiver desativado) IPv6 no adaptador de rede?
Colocando um nome de rótulo único para 1.2.3.4 no arquivo HOSTS?
O que é a descrição do evento correspondente, o EventID etc. no eventvwr.msc por falha na comunicação de 1.2.3.4 a 127.0.0.1:8334?
É para SMB-direto sobre TCP / IP? para compartilhamento de arquivos? CIFS?
Não é tão confiável ... Ele está sendo constantemente invadido por hotfixes da Microsoft. Ler:
("A navegação NetBIOS nas sub-redes pode falhar após a atualização para o Windows Server 2008") - http://blogs.technet.com/b/networking/archive/2008/07/25/netbios-browsing-across-subnets-may-fail -depois de atualizar para o Windows Server 2008.aspx? wa = wsignin1.0
Então,
fonte