Диспетчер пакетов Perl через прокси NTLM

Я установил ActivePerl и include PPM на работе, но я не могу подключить его к репозиторию модулей через прокси-сервер. Я установил переменную окружения

HTTP_PROXY = http://user:pass@proxy.full.name:port

но PPM по-прежнему показывает ошибку 407 Требуется Проверка Подлинности Прокси. Я думаю, что это прокси-сервер NTLM, но я не уверен.

после этого этой, я получаю Ошибка 500: неверное имя хоста для ppm4.activestate.com. Оказывается PPM спрашивает мой DNS сервер для разрешения этого имени, но мой локальный DNS-сервер не может разрешить такие внешние доменные имена. Только прокси делает такую вещь и только для HTTP трафика...

вот скриншот того, что Wireshark (работает на BackTrack VM на том же окне Windows XP) показывает:

моем окне 10.75.82.221
DNS-сервер 10.7.3.110

Wireshark sniff

Это чего TraceRoute показывает от Windows:

G:>tracert ppm4.activestate.com
No se puede resolver el nombre de destino ppm4.activestate.com.

что означает:

не удается разрешить ppm4.activestate.com

как и ожидалось.

Как я уже сказал в комментариях, браузер, похоже, не запускает DNS-запрос. Вот скриншот Wireshark (от BT), который показывает доступ к www.google.es из Firefox (из WXP):

моем окне 10.75.82.221
Прокси-сервер 10.7.8.46

Wireshark sniff

Как вы можете видеть, нет запроса DNS вообще при доступе через браузер...

для меня, это просто кажется, что это функция безопасности, и я должен буду попросить разрешения, чтобы позволить мне использовать инструмент PPM ActiveState В... что не правдоподобно, даже если большинство (99%) скриптов, которые я делаю здесь, предназначены для ускорения работы.

20
задан m0skit0
03.03.2023 16:43 Количество просмотров материала 2481
Распечатать страницу

5 ответов

решение ошибки 407 описано в perl.org вопросы и ответы:

Q: даже если при выбран правильный сервер с надлежащими полномочиями (с помощью конвенции username:password@server.tld: порт) я все еще не могу установить пакеты через cpan. "Ошибка LWP с кодом [407] сообщение [Прокси Требуется проверка подлинности (ISA Server требует авторизации для выполнить просьбу. Доступ к службе веб-прокси отвергнутый. )]"

A: CPAN не поддерживает аутентификацию NTLM, и трудно получить Authen::NTLM, работающий с CPAN. В итоге я использовал ntlmaps как локальный прокси для проверки подлинности NTLM.

первое, что вам нужно сделать, это получить последнюю версию NTLMAPS из их РЕПО в SVN, где его добывают. Затем вам будет нужно получить последняя версия python и установить его. Откройте сервер NTLMAPS. cfg, который можно установить PARENT_PROXY на адрес вашего прокси или IP, PARENT_PROXY_PORT к порт прокси-сервера (обычно 80 или 8080), NT_DOMAIN для вашего домена, и пользователь к вашему имени пользователя.

запустить runserver.летучая мышь. Он запросит ваш пароль, введите его и нажмите входить. Затем необходимо настроить cpan для использования NTLMAPS в качестве прокси-сервера. Идти для клубники\Перл\Либ\CPAN и откройте файл config.ПМ. Набор http_proxy для http://localhost:5865. Запустите CPAN и используйте его, как обычно. Теперь необходимо только запустить NTLMAPS перед запуском CPAN, чтобы получить его работать должным образом.

только быстрое Примечание, Вы, возможно, потребуется, чтобы заставить проверку подлинности LM + НТ, а чем LM; для этого откройте сервер NTLMAPS.cfg установите NT_PART в 1 и NTLM_FLAGS до 07820000.

удаление HTTP_PROXY и изменение CPAN/Config.pm, как указано может решить проблему.

резюме комментариев ниже:

исследование с помощью Wireshark свалок показывает, что с использованием ActivePerl проблемы с DNS запросы, возвращаемые DNS-сервером как неизвестные. Решения возможны только:

  1. перенастройка DNS сервера (невозможно для плаката)
  2. запуск запроса на Сайт Сообщества ActiveState чтобы остановить эти бесполезные просьбы (без гарантии скорейшего облегчения)
  3. вручную загрузить и установить модули (только практическое решение осталось).
2
отвечен harrymc 2023-03-05 00:31

если это 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-хотя обычно прокси поддерживают оба, это can случается, что NTLM будет отключен в вашем. Существует не так много документации на прокси Kerberos с PPM, но HTTP-Negotiate возможно, стоит попробовать, если вы не можете заставить NTLM работать.

1
отвечен grawity 2023-03-05 02:48

это выстрел в темноте... никто не упоминал об этом, но похоже, что у всех нет идей... если это правда:

"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

посмотреть, если это имеет значение.


для ntlmaps устранение:

есть два варианта сервера.cfg отладки и BIN_DEBUG, если у вас есть toubles с сервером так установить эти параметры для отладки: 1 и BIN_DEBUG:1 раз перед запросом страницы, задачу (или ресурс). Необходимо перезапустить прокси-сервер, чтобы перечитать сервер.cfg. Это даст вам 3 лог-файлов на http-запрос (за соединение, чтобы быть точным), как 127.0.0.1-1048, 127.0.0.1-1048.закром.клиент и 127.0.0.1-1048.закром.rserver. В первом есть информация о том, что сделали AP, два других содержат необработанный трафик от клиента и от прокси.

http://ntlmaps.sourceforge.net/

1
отвечен mgjk 2023-03-05 05:05

вот альтернатива использованию NTLMAPS + Python (как описано выше в harrymc). Идея очень похожа, но более "обтекаемая":

  • установить Саша.
  • настройка PPM для использования Fiddler в качестве прокси. В командной строке введите:

    set http_proxy=http://127.0.0.1:8888
    
  • Не забудьте сначала открыть любую интернет-страницу из любого браузера (это создаст аутентифицированный сеанс между Fiddler и вашим корпоративным Полномочие.)

  • дайте PPM попробовать.

посмотреть сайт сообщества ActiveState немного более детально.

если он все еще не работает, вам может потребоваться включить скрипты pac в fiddler.

Сервис -> Параметры Fiddler -> Подключения

отметьте "Use a PAC Script"

1
отвечен Miroslav 2023-03-05 07:22

вместо установки http_proxy = http://user:pass@proxy.full.name:port, просто попробуйте установить прокси без имени пользователя и пароля.

так же:

набор http_proxy = http://proxy.full.name:port

причина: я где-то читал, что для последней версии Perl 5.22 аутентификация прокси не требуется. Это сработало для меня как по волшебству.

надеюсь, что это решит вашу проблему.

0
отвечен Vyankatesh Agrawal 2023-03-05 09:39

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх