
Instalei o ActivePerl e incluí o PPM no trabalho, mas não consigo conectá-lo ao repositório do módulo por meio do proxy. Eu configurei uma variável de ambiente
HTTP_PROXY = http://user:[email protected]:port
mas o PPM ainda mostra um erro 407Autenticação de proxy necessária. Acho que é um proxy NTLM, mas não tenho certeza.
Depois de fazeresse, eu recebo umErro 500: nome de host incorretoparappm4.activestate.com. Acontece que o PPM pede ao meu servidor DNS para resolver esse nome, mas meu servidor DNS local não consegue resolver esses nomes de domínio externos. Somente o proxy faz isso e apenas para tráfego HTTP...
Aqui está a captura de tela do que o Wireshark (executando em uma VM BackTrack na mesma caixa do Windows XP) está mostrando:
Minha caixa do Windows é10.75.82.221 O servidor DNS é10.7.3.110
Isto é o que o TraceRoute mostra no Windows:
G:\>tracert ppm4.activestate.com
No se puede resolver el nombre de destino ppm4.activestate.com.
Que significa:
Não é possível resolver ppm4.activestate.com
como esperado.
Como eu disse nos comentários, o navegador parece não lançar nenhuma consulta DNS. Aqui está uma captura de tela do Wireshark (da BT) que mostra o acesso a www.google.es do Firefox (do WXP):
Minha caixa do Windows é10.75.82.221 A procuração é10.7.8.46
Como você pode ver, nenhuma consulta de DNS ao acessar pelo navegador...
Para mim, parece que é um recurso de segurança e terei que pedir permissão para usar a ferramenta PPM do ActiveState... o que não é plausível, mesmo que a maioria (99%) dos scripts que faço aqui sejam para acelerar o trabalho.
Responder1
A solução do erro 407 está descrita em perl.orgPerguntas e respostas:
P:Mesmo quando http_proxy está configurado para o servidor correto com as credenciais adequadas (usando o nome de usuário convencional:[e-mail protegido]:port) Ainda não consigo instalar pacotes via cpan. "LWP falhou com a mensagem do código [407] [Autenticação de proxy necessária (O ISA Server requer autorização para atender à solicitação. O acesso ao serviço Web Proxy foi negado.)]"
A:CPAN não oferece suporte à autenticação NTLM e é difícil fazer com que Authen::NTLM funcione com CPAN. Acabei usando ntlmaps como proxy local para autenticação NTLM.
A primeira coisa que você precisa fazer é obter a versão mais recente do NTLMAPS do repositório SVN e extraí-la em algum lugar. Em seguida, você precisará obter a versão mais recente do python e instalá-la. Abra server.cfg do NTLMAPS, defina PARENT_PROXY como o endereço ou IP do seu proxy, PARENT_PROXY_PORT como a porta em que o proxy é executado (geralmente 80 ou 8080), NT_DOMAIN como seu domínio e USER como seu nome de usuário.
Execute runserver.bat. Ele irá pedir sua senha, digite-a e pressione Enter. Em seguida, você deve configurar o cpan para usar o NTLMAPS como proxy. Vá para morango\perl\lib\CPAN e abra Config.pm. Defina http_proxy como http://localhost:5865. Execute o CPAN e use-o normalmente. Agora você só precisa iniciar o NTLMAPS antes de executar o CPAN para que ele funcione corretamente.
Apenas uma observação rápida: pode ser necessário forçar a autenticação LM + NT em vez de LM; Para fazer isso, abra o NTLMAPS server.cfg e defina NT_PART como 1 e NTLM_FLAGS como 07820000.
Remover HTTP_PROXY e modificar CPAN/Config.pm conforme indicado pode resolver o problema.
Resumo dos comentários abaixo:
O estudo dos dumps wireshark mostra que o ActivePerl emite solicitações DNS que são retornadas como desconhecidas pelo servidor DNS. As soluções possíveis são apenas:
- Reconfiguração do servidor DNS (impossível para o autor da postagem)
- Lançar uma solicitação noSite da comunidade ActiveStatepara interromper essas solicitações fúteis (sem garantia de qualquer alívio rápido)
- Baixe manualmente einstalaros módulos (só resta a solução prática).
Responder2
Se for NTLM, você precisará do NTLM
módulo Perl. A documentação do ActiveState PPM diz que você pode obter um ppmx
pacote norepositório, mas não consegui encontrar nenhum link desse tipo. Você ainda pode, no entanto, baixar oppd
etar.gz
arquivos e instale-os:
wget http://ppm4.activestate.com/MSWin32-x86/5.12/1205/N/NB/NBEBOUT/NTLM-1.09.ppd
wget http://ppm4.activestate.com/MSWin32-x86/5.12/1205/N/NB/NBEBOUT/NTLM-1.09.tar.gz
ppm install NTLM-1.09.ppd
Observe também que, se o seu computador pertencer a um domínio do Windows, você não precisará fornecer as credenciais explicitamente - http://proxy.full.name:port
deve ser suficiente para NTLM/Kerberos, além de ser mais seguro.
Recentemente, o software da Microsoft tem mudado de NTLM para Kerberos – embora normalmente os proxies suportem ambos, elepodeacontece que o NTLM será desativado no seu. Não há muita documentação sobre proxies Kerberos com PPM, mas HTTP-Negotiate
pode valer a pena tentar, se você não conseguir fazer o NTLM funcionar.
Responder3
Este é um tiro no escuro... ninguém mencionou tentar isso, mas parece que todo mundo está sem ideias... se isso for verdade:
"Turns out PPM asks my DNS server to resolve that name, but my local DNS server cannot resolve such external domain names."
Então edite:
C:\Windows\System32\Drivers\etc\hosts
adicione a linha:
204.244.102.19 ppm4.activestate.com
Veja se isso faz diferença.
Para solucionar problemas de ntlmaps:
Existem duas opções em server.cfg DEBUG e BIN_DEBUG, se você tiver problemas com o servidor, defina essas opções como DEBUG:1 e BIN_DEBUG:1 antes de solicitar uma página (ou recurso) com problema. Você precisa reiniciar o servidor proxy para reler o server.cfg. Isso fornecerá 3 arquivos de log por solicitação http (por conexão, para ser exato), como 127.0.0.1-1048, 127.0.0.1-1048.bin.client e 127.0.0.1-1048.bin.rserver. No primeiro há informações sobre o que o APS fez, outros dois contêm tráfego bruto do cliente e do proxy.
Responder4
Em vez de fazer set http_proxy =http://usuário:[e-mail protegido]:porta, tente configurar o proxy sem nome de usuário e senha.
Apenas faça:
definir http_proxy=http://proxy.full.name:porta
Motivo: li em algum lugar que para a versão mais recente do Perl 5.22, a autenticação de proxy não é necessária. Funcionou para mim como mágica.
Espero que isso resolva seu problema.