Каковы причины отказа локальных именованных каналов Windows?

14

Я работал над этим весь день, и я застрял. Этим утром наши азиатские коллеги позвонили мне, потому что надстройка SolidWorks для нашей системы управления данными о продукции не могла связаться с локальным основным приложением. Эта проблема затрагивает компьютеры конечных пользователей в домене Windows. Мы использовали утилиты READPIPE и MAKEPIPE из набора инструментов сервера SQL, чтобы выяснить, что основной проблемой была функция канала Windows.

  • Утилита MAKEPIPE создает канал и ожидает клиента. Утилита READPIPE возвращает: «Не удалось открыть канал. Состояние 53». Согласно http://support.microsoft.com/kb/110905 это означает, что имя сети не найдено. На моем локальном компьютере каналы без проблем отправляют привет из READPIPE в MAKEPIPE.
  • Серверный процесс, который включает именованные каналы, работает.
  • Настройки в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Lanmanserver \ Parameters выглядят хорошо. Нет настройки брандмауэра труб.
  • Проблема затрагивает некоторых пользователей, но не всех. Мы не вносили изменений в группы доменов, за исключением некоторых групп общих сетевых ресурсов.
  • Я вошел в систему как администратор, и все еще каналы не будут работать.

Любая помощь приветствуется! Спасибо.

user152700
источник
Могут ли затронутые пользователи подключиться к обычным файловым ресурсам на рассматриваемом сервере?
Гарри Джонстон
На данный момент проблем с акциями нет. Это не проблема сервера / клиента. Оба процесса находятся на одном компьютере.
user152700
Когда вы воспроизводите проблему, выполнив вход в уязвимый компьютер как администратор, с READPIPE и MAKEPIPE, какие именно команды вы используете? (Пожалуйста, отредактируйте свой пост, чтобы включить их, а не помещать их в комментарии.)
Harry Johnston
Спасибо за поддержку. Это было сложно, и я документирую решение здесь.
user152700

Ответы:

12

Потребовалось 1,5 дня, чтобы понять это для каждого случая. Здесь для документации.

симптомы

  • Перетаскивание в приложения не работает.
  • Межпроцессное взаимодействие, например, между основным приложением и надстройками не работает.

Причины / фон

Межпроцессное взаимодействие реализовано для некоторых приложений через именованные каналы Windows (не путать с каналами стиля UNIX). См. Документацию MSDN: http://msdn.microsoft.com/en-us/library/aa365590.aspx.

Могут быть разные причины, по которым каналы имен Windows не работают. Чтобы убедиться, что трубы являются причиной проблемы, можно использовать инструменты MAKEPIPE и READPIPE. В этой статье базы знаний описывается процедура тестирования: http://support.microsoft.com/kb/68941 Проводник процесса инструмента Sysinternals также может быть полезен для поиска открытых каналов. Используйте параметр «Найти -> Найти дескриптор или DLL ...» и введите шаблон «\ Device \ NamedPipe \». Он покажет вам, какие процессы имеют какие каналы открыты. http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Troubleshoot

Причина 1: приложение заблокировано брандмауэром Pipes

Windows может блокировать приложения от использования именованных каналов. Этот брандмауэр обычно не включен и настраивается через реестр. См. Статью поддержки MS здесь: http://support.microsoft.com/kb/925890 . Убедитесь, что межсетевой экран каналов не включен, или добавьте Keytech и все надстройки в список разрешенных приложений.

Причина 2: служба общего доступа к файлам и принтерам не включена.

Именованные каналы включаются процессом, который также контролирует общий доступ к файлам и принтерам. Убедитесь, что этот процесс выполняется с помощью инструмента Windows Services. Название сервиса отображается как «Сервер» в списке сервисов. Имя службы - LanmanServer, а EXE - C: \ Windows \ system32 \ svchost.exe -k netsvcs

Причина 3: брандмауэр Windows блокирует LanmanServer

Брандмауэр Windows может блокировать именованные каналы, даже если они используются только для межпроцессного взаимодействия на одном компьютере. Особенно доменные и локальные правила брандмауэра могут вызвать конфликт. Две записи в списке «Разрешенные программы брандмауэра Windows» указывают на конфликт. В большинстве случаев эту проблему можно решить с помощью окна «Проверка состояния брандмауэра». Если в этом окне отображается опция для установки рекомендуемых правил брандмауэра, каналы часто могут быть разблокированы с помощью этой опции. В сочетании с правилами брандмауэра домена иногда необходимо сначала отключить ПК от домена, а затем разрешить совместное использование файлов и принтеров.

user152700
источник
3
Причина 1) Межсетевой экран каналов влияет только на удаленный доступ к именованным каналам. Тем не менее, обратите внимание, что подключение к именованному каналу с использованием \\ machinename \ pipename, вероятно, считается удаленным доступом, даже если machinename является локальным компьютером.
Гарри Джонстон
3
Причина 2) Аналогично, общий доступ к файлам и принтерам требуется только для удаленного доступа к именованным каналам. Опять же, \\ machinename \ pipename, вероятно, считается для этого удаленным доступом.
Гарри Джонстон
Причина 3) Брандмауэр Windows не должен блокировать локальные соединения, даже если используется \\ machinename \ pipename. Однако, если вы находитесь в домене, а брандмауэр Windows настроен неправильно, возможно, вы столкнулись с более распространенными проблемами, возможно, связанными с аутентификацией.
Гарри Джонстон
@HarryJohnston Какой тип аутентификации может быть заблокирован? Вроде ServiceHost.Authenticationкак описано здесь ?
iCantSeeSharp
Если вы находитесь в домене, и ваш сетевой доступ к контроллерам домена заблокирован брандмауэром Windows (или по какой-либо другой причине), вы не сможете пройти проверку подлинности. Это не должно влиять на локальный доступ к каналу, но на YMMV.
Гарри Джонстон