
ActivePerl과 PPM 포함을 직장에 설치했지만 프록시를 통해 모듈 저장소에 연결할 수 없습니다. 환경변수를 설정했어요
HTTP_PROXY = http://user:[email protected]:port
하지만 PPM에는 여전히 407 오류가 표시됩니다.프록시 인증 필요. NTLM 프록시인 것 같은데 확실하지 않습니다.
하고 난 후이것, 나는오류 500: 잘못된 호스트 이름~을 위한pm4.activestate.com. PPM은 내 DNS 서버에 해당 이름을 확인하도록 요청했지만 내 로컬 DNS 서버는 이러한 외부 도메인 이름을 확인할 수 없습니다. 오직 프록시만이 그러한 일을 하며 HTTP 트래픽에 대해서만...
다음은 Wireshark(동일한 Windows XP 상자의 BackTrack VM에서 실행)가 보여주는 스크린샷입니다.
내 Windows 상자는10.75.82.221 DNS 서버는10.7.3.110
TraceRoute가 Windows에서 표시하는 내용은 다음과 같습니다.
G:\>tracert ppm4.activestate.com
No se puede resolver el nombre de destino ppm4.activestate.com.
이는 다음을 의미합니다.
pm4.activestate.com을 확인할 수 없습니다
예상대로.
댓글에서 말했듯이 브라우저는 DNS 쿼리를 실행하지 않는 것 같습니다. 다음은 Firefox(WXP)에서 www.google.es에 대한 액세스를 보여주는 Wireshark 스크린샷(BT)입니다.
내 Windows 상자는10.75.82.221 프록시는10.7.8.46
보시다시피 브라우저를 통해 액세스할 때 DNS 쿼리가 전혀 없습니다...
나에게 그것은 단지 보안 기능인 것 같고 ActiveState의 PPM 도구를 사용하려면 허가를 요청해야 할 것입니다... 여기서 작성한 스크립트의 대부분(99%)이 과속을 위한 것임에도 불구하고 이는 그럴듯하지 않습니다. 작품.
답변1
오류 407 해결 방법은 perl.org에 설명되어 있습니다.질문과 답변:
큐:적절한 자격 증명을 사용하여 http_proxy가 올바른 서버로 설정된 경우에도(사용자 이름 규칙 사용:[이메일 보호됨]:port) 여전히 cpan을 통해 패키지를 설치할 수 없습니다. "LWP가 코드[407] 메시지와 함께 실패했습니다.[프록시 인증 필요(ISA Server는 요청을 이행하려면 인증이 필요합니다. 웹 프록시 서비스에 대한 액세스가 거부되었습니다.)]"
ㅏ:CPAN은 NTLM 인증을 지원하지 않으며 Authen::NTLM을 CPAN과 함께 작동시키는 것이 어렵습니다. 결국 NTLM 인증을 위한 로컬 프록시로 ntlmaps를 사용하게 되었습니다.
가장 먼저 해야 할 일은 svn 저장소에서 최신 버전의 NTLMAPS를 가져와서 어딘가에 추출하는 것입니다. 다음으로 최신 버전의 Python을 다운로드하여 설치해야 합니다. NTLMAPS의 server.cfg를 열고 PARENT_PROXY를 프록시 주소 또는 IP로 설정하고, PARENT_PROXY_PORT를 프록시가 실행되는 포트(보통 80 또는 8080)로, NT_DOMAIN을 도메인으로, USER를 사용자 이름으로 설정합니다.
runserver.bat를 실행합니다. 비밀번호를 묻는 메시지가 나타나면 비밀번호를 입력하고 Enter를 누르세요. 다음으로 NTTLMAPS를 프록시로 사용하도록 cpan을 구성해야 합니다. 딸기\perl\lib\CPAN으로 이동하여 Config.pm을 엽니다. http_proxy를 다음으로 설정하세요. http://localhost:5865. CPAN을 실행하고 평소처럼 사용하세요. 이제 CPAN을 실행하기 전에 NTTLMAPS를 시작하기만 하면 제대로 실행됩니다.
간단히 말해서 LM 대신 LM + NT 인증을 강제해야 할 수도 있습니다. 이렇게 하려면 NTLMAPS server.cfg를 열고 NT_PART를 1로 설정하고 NTLM_FLAGS를 07820000으로 설정합니다.
HTTP_PROXY를 제거하고 명시된 대로 CPAN/Config.pm을 수정하면 문제가 해결될 수 있습니다.
아래 댓글 요약:
Wireshark 덤프 연구에 따르면 ActivePerl은 DNS 서버에서 알 수 없는 것으로 반환되는 DNS 요청을 발행하는 것으로 나타났습니다. 가능한 해결책은 다음과 같습니다.
- DNS 서버 재구성 (포스터에서는 불가능)
- 에서 요청 실행ActiveState 커뮤니티 사이트이러한 쓸데없는 요청을 중단하기 위해(빠른 구제가 보장되지 않음)
- 수동으로 다운로드하고설치하다모듈(실용적인 솔루션만 남음)
답변2
NTLM인 경우 NTLM
Perl 모듈이 필요합니다. ActiveState PPM 문서에는 ppmx
다음에서 패키지를 얻을 수 있다고 나와 있습니다.저장소, 그러나 그러한 링크를 찾을 수 없습니다. 그러나 여전히 다운로드할 수 있습니다.ppd
그리고tar.gz
파일을 다운로드하고 설치합니다.
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
또한 컴퓨터가 Windows 도메인에 속하는 경우 자격 증명을 명시적으로 제공할 필요가 없습니다. http://proxy.full.name:port
NTLM/Kerberos에 충분할 뿐만 아니라 보안도 더 높아야 합니다.
최근 Microsoft 소프트웨어는 NTLM에서 Kerberos로 전환하고 있습니다. 일반적으로 프록시는 두 가지를 모두 지원하지만~할 수 있다NTLM이 비활성화됩니다. PPM을 사용하는 Kerberos 프록시에 대한 문서는 많지 않지만 HTTP-Negotiate
NTLM을 작동시킬 수 없다면 시도해 볼 가치가 있습니다.
답변3
이것은 어둠 속의 장면입니다... 아무도 이것을 시도한다고 언급하지 않았지만 모두가 아이디어가 없는 것처럼 들립니다... 이것이 사실이라면:
"Turns out PPM asks my DNS server to resolve that name, but my local DNS server cannot resolve such external domain names."
그런 다음 편집하십시오.
C:\Windows\System32\Drivers\etc\hosts
다음 줄을 추가하세요:
204.244.102.19 ppm4.activestate.com
차이가 있는지 확인하세요.
NTLMAP 문제를 해결하려면 다음을 수행하세요.
server.cfg DEBUG 및 BIN_DEBUG에는 두 가지 옵션이 있습니다. 서버에 문제가 있는 경우 문제 페이지(또는 리소스)를 요청하기 직전에 이러한 옵션을 DEBUG:1 및 BIN_DEBUG:1로 설정하세요. server.cfg를 다시 읽으려면 프록시 서버를 다시 시작해야 합니다. 이렇게 하면 127.0.0.1-1048, 127.0.0.1-1048.bin.client 및 127.0.0.1-1048.bin.rserver와 같이 http 요청당(정확히는 연결당) 3개의 로그 파일이 제공됩니다. 첫 번째에는 APS가 수행한 작업에 대한 정보가 있고 다른 두 개에는 클라이언트와 프록시의 원시 트래픽이 포함되어 있습니다.
답변4
set http_proxy =를 수행하는 대신http://사용자:[이메일 보호됨]:포트, 사용자 이름과 비밀번호 없이 프록시를 설정해 보세요.
그냥 해:
http_proxy = 설정http://proxy.full.name:포트
이유: 최신 버전의 Perl 5.22에서는 프록시 인증이 필요하지 않다는 내용을 어딘가에서 읽었습니다. 그것은 마술처럼 나에게 효과가 있었습니다.
문제가 해결되기를 바랍니다.