Возможно, вы сталкивались с этим неоднократно: один компьютер неизвестно почему не может связаться с другими. Система управления находится в одном сегменте сети с маршрутизаций, подключенного к другим сегментам сети с помощью маршрутизатора, например сервера Microsoft Internet Security and Acceleration (ISA) Server или другого устройства. При управлении десятью, двадцатью и даже сотней системам никаких неполадок не возникает. Но при попытке управлять 500 системами ваш компьютер не может связаться по сети с другими компьютерами за исключением тех, к которым уже открыты подключения. Невозможно обмениваться данными с другими системами, невозможно выйти в Интернет, но ни у кого во всей сети, в том числе и в вашем сегменте, нет таких неполадок. Где прежде всего стоит искать причину?
Диагностика неполадки
В такой ситуации прежде всего следует предположить сбой программы, управляющей системами. Многие средства управления могут подключаться к другим компьютерам и управлять ими, но иногда такие средства сами могут вызвать неполадки, которые вы пытаетесь устранить. Причина заключается в том, что средства управления могут создавать тысячи подключений к устройствам в целях управления. В Windows® эти подключения по умолчанию остаются открытыми в течение двух минут даже в случае простоя, если только какая-либо программа, приложение или служба не продлит срок действия этих подключений. Это означает, что даже если система управления не обращалась к другим компьютерам в течение двух минут, может быть по-прежнему более 1000 открытых подключений. (Чтобы увидеть открытые подключения, можно выполнить в командной строке команду NETSTAT. С помощью этой команды можно увидеть все открытые, ожидающие и закрывающиеся подключения к системе и их состояние. Описания сообщений о состоянии приведены в документе RFC 793)
Чтобы определить, что именно система управления вызывает сбой, можно создать пакетный файл, устанавливающий подключение к удаленным системам. Если такая же неполадка возникнет при запуске пакетного файла, то система управления не имеет отношения к неполадке. Вот пример содержимого такого пакетного файла:
Net use \\system01\ipc$ Net use \\system02\ipc$ Net use ...
Если программа управления использует свой собственный сетевой стек и стек проверки подлинности, причина неполадки может заключаться в этой программе, однако в решениях без агентов, таких как большинство систем управления, для выполнения действий в сети используются системные стеки сети и проверки подлинности. Применение пакетного файла, запускающего столько же сетевых подключений без сбоев, будет означать, что проблема вызвана не тем, как программа использует стеки операционной системы (сетевой и проверки подлинности), поскольку пакетный файл использует их правильно.
Если журналы и сообщения об ошибках не помогают
Возможно, вы обратили внимание, что когда начались неполадки в сети, на компьютере появились сообщения об ошибках: ошибка 53 — сетевой путь не найден, ошибка 64 — имя в сети удалено, ошибка 1203 — поставщик сети не принял указанный сетевой путь. Все эти сообщения могут правильно указывать на наличие соответствующих ошибок, но ведь на других компьютерах нет никаких проблем с разрешением имен и подключением к тем же самым системам. Чтобы проверить правильность параметров компьютера и убедиться, что неполадка вызвана не ими, просто выполните команду ipconfig.
Теперь, поскольку проблема существует только в вашей системе управления, стоит заглянуть в журналы событий. Поиск журналов приложений бесполезен, но в системном журнале окажется событие предупреждения с кодом 4226 из источника TCP/IP, означающее, что достигнуто предельное число подключений (см. рис. 1).
TCP connection limit has been reached
Тщательный поиск данных об ограничениях подключений в базе знаний Майкрософт приведет к следующему результату: оказывается, есть ограничения, накладываемые на невыполненные подключения, но выполненные подключения ограничений не имеют. Для управления этими свойствами можно изменить значения реестра в разделе HKLM\System\CurrentControlSet\Services\TCPIP. Параметр TcpNumConnections используется для установки максимального числа одновременно открытых TCP-подключений (по умолчанию это число равно 10). Параметр TCPTimedWaitDelay устанавливает время, в течение которого подключение остается в состоянии TIME_WAIT при закрытии. Это время по умолчанию равно 120 секундам, то есть подключение обычно используется в течение 4 минут. Наибольше число подключений также зависит от параметра MaxFreeTcbs. Если все контрольные блоки TCP использованы, протокол TCP должен высвободить подключения, находящиеся в состоянии TIME_WAIT, чтобы создать больше подключений, даже если время, указанное параметром TCPTimedWaitDelay, еще не истекло. Диапазон допустимых значений параметра TCPTimedWaitDelay составляет от 30 до 300 секунд (0x1E – 0x12C).
В зависимости от среды изменение этих параметров реестра может привести к некоторому повышению производительности работы системы. Для устранения ограничений можно также изменить файл TCPIP.sys, но это повлияет только на работу P2P-приложений.
Запись сетевых данных
Если больше ничего не помогает, можно попробовать записать сетевые данные с компьютеров. При запуске сетевого монитора (Netmon) записанные данные в точности соответствовали результатам, которые были очевидны при запуске средств управления и тестовых сценариев: сначала все работает, а потом перестает работать без каких-либо указаний на ошибки.
На рис. 2 показан результат запуска Netmon — успешная связь между первыми и системами. Обратите внимание, что я получаю подтверждения запросов удаленного вызова процедур. Это именно то, что нужно увидеть – успешный двусторонний обмен данными.
Successful communication in Netmon
Теперь посмотрим на данные системы управления и удаленных компьютеров, на которых возникает ошибка 53/1203. Как и предполагалось, смотреть не на что: компьютеры не обмениваются данными. В записи сетевых данных на рис. 3система управления преобразовала IP-адрес и пытается подключиться к системе по порту 445 (порт SMB Майкрософт), но не получает ответа.
Attempts to connect to the system over port 445 yield no response
Если количество потоков превышает число подключений, которые может установить ваш компьютер в настоящее время, могут возникать различные ошибки. В некоторых случаях в исходной системе возникает ошибка 53, которая означает, что получено преобразование имени, но IP-адрес не был найден. Это означает, что DNS-сервер предоставил адрес, к которому невозможно подключиться. В некоторых случаях возникает ошибка 1203, которая означает, что на запрошенное имя или IP-адрес не ответил ни один компьютер. В этом случае ошибка 1203 означает, что служба DNS недоступна. Чтобы убедиться в этом, можно запустить команду nslookup.
На этом этапе вы, наверное, уже потеряете надежду, но еще есть возможности все исправить. Обычно мало кто обращает внимание на инфраструктуру подключений из-за того, как именно возникает неполадка: ваш компьютер — единственный из всех, которому не удается подключиться к остальной сети, и даже журналы событий свидетельствуют, что на компьютере достигнуто предельное число подключений, поэтому вряд ли причиной неполадки является архитектура сети.
Несмотря на то, что тысячи подключений, создаваемых системой управления, создаются не одновременно, из-за времени ожидания передачи данных и подключений может возникнуть очень большое число одновременно открытых подключений. Поэтому нужно обратить внимание на системы, посредством которых ваш компьютер подключен к остальной сети.
А дело вот в чем. Как я уже говорил выше, весь трафик в вашей сети проходит через коммутаторы, маршрутизаторы и, вероятно, через межсетевые экраны. В любом из этих элементов, обычно в маршрутизаторах или межсетевых экранах, могут применяться системы обнаружения вторжения. В управляемых коммутаторах и маршрутизаторах также может быть включена фильтрация трафика. Тем, кто управляет этими устройствами, нужно проверить их журналы — возможно, в них будут ошибки или предупреждения. Неполадки связи вполне могут быть вызваны именно этими системами.
Вы подключаетесь из внутренней системы к другим внутренним системам, поэтому оповещения не создаются: создание оповещений может быть не настроено на устройствах, или потому что неполадка не рассматривается как вторжение или атака типа «отказ в обслуживании». Итак, снова начнем с журналов. В качестве примера будем использовать ISA Server. В этом случае журналы будут находиться в консоли управления ISA Server в разделе Массивы\<Имя_массива>\Наблюдение\Ведение журнала.
Если вам мешает политика, можно (при использовании ISA Server) поискать следующие коды результатов (исходный IP-адрес — ваш компьютер управления):
* 0xc0040037 FWX_E_TCP_RATE_QUOTA_EXCEEDED_DROPPED
* 0xc004000d FWX_E_POLICY_RULES_DENIED
* 0xc0040017 FWX_E_TXP_SYN_PACKET_DROPPED
Если вы их обнаружили, то причина неполадок в сети найдена.
Применение решения
Итак, теперь проблема установлена, решение может быть простым, но политика отдела может затруднить применение этого решения. Перед внесением каких-либо изменений убедитесь, что у вас есть на это разрешение, поскольку создание исключений в конфигурации безопасности межсетевых экранов, маршрутизаторов и систем обнаружения вторжений может быть запрещено.
На примере ISA Server посмотрим, как увеличить наибольшее число подключений для данного узла или для всех компьютеров сети (см. рис. 4). Откройте консоль управления ISA Server и перейдите в раздел Массивы\<Имя_массива>\Конфигурация\Общие\Настройте параметры предотвращения Flood-атаки.
Increase the maximum number of connections for one host or all machines using ISA Server
Два нужных нам параметра — наибольшее число одновременных TCP-подключений на IP-адрес и наибольшее число запросов TCP-подключений на IP-адрес в минуту. Предельное число одновременных TCP-подключений на IP-адрес обычно устанавливается таким, чтобы его было достаточно при отсутствии активного управления, то есть одному компьютеру не нужно быстро подключаться к тысячам других компьютеров. В ISA Server наибольшее число одновременных TCP-подключений равно 160. Число запросов TCP-подключений на IP-адрес в минуту устанавливается таким образом, чтобы ограничить нагрузку, вызванную сканированием сети, и его видимость. Это число равно 600 запросам в минуту на каждый IP-адрес.
Как мы уже обсудили выше, в Windows подключение по умолчанию остается активным в течение двух минут, если не предпринимаются никакие действия, чтобы продлить срок действия подключения, даже если оно не используется. Это означает, что подключение к какому-либо компьютеру останется активным даже после того, как все действия по управлению этим компьютером уже выполнены и обмениваться с ним данными больше не нужно. Это открытое подключение остается одним из множества открытых подключений. Если повторить этот процесс более 160 раз, не удаляя подключения, то окажется, что все дальнейшие попытки подключений будут отклонены маршрутизатором. Даже если программа управления активно завершает сеанс, операционная система Windows может оставить подключение в состоянии time_wait, дожидаясь от второго компьютера ответа с согласием на отключение.
Таким образом, прежде всего нужно изменить тот параметр, который вероятнее всего вызывает неполадку: наибольшее число одновременных TCP-подключений на IP-адрес. Значение этого параметра нужно установить таким, чтобы система управления смогла устанавливать все необходимые подключения, не сталкиваясь с запретом доступа. Нажмите кнопку «Изменить» рядом с этим параметром и измените значения.
В следующем окне (см. рис. 5) появится поле «Предел», в котором указано предельное значение по умолчанию, применяемое ко всем клиентским системам. «Настраиваемый предел» применяется ко всем компьютерам, сетям и другим объектам, определенным на вкладке «Исключения IP-адресов» окна предотвращения Flood-атак. Чтобы разрешить всем компьютерам создавать больше подключений, измените значение параметра «Предел». Чтобы настроить исключение только для данного компьютера, измените предельное значение и добавьте данный компьютер на вкладку «Исключения IP-адресов». Рекомендуется разрешить исключения только для вашего компьютера.
Default connection limit and custom connection limit
Если нужно изменить это значение только для определенных компьютеров, измените значение в поле «Настраиваемый предел» и нажмите кнопку «ОК». Затем добавьте ваш компьютер на вкладку «Исключения IP-адресов» окна предотвращения Flood-атак. Чтобы добавить только ваш компьютер в список исключений, нажмите на вкладке «Исключения IP-адресов» кнопку «Добавить», чтобы открыть окно «Наборы компьютеров». Щелкните «Создать», чтобы создать новый набор, содержащий ваш компьютер (если такого еще не существует). Выберите этот набор и нажмите кнопку «Добавить», чтобы добавить набор «Внутренние сети», затем нажмите кнопку «Закрыть». Снова выберите набор «Внутренние сети» и нажмите кнопку «Изменить». При этом откроется окно свойств набора «Внутренние сети» (см. рис. 6). Нажмите в этом окне кнопку «Добавить», чтобы открыть вложенное меню, в котором можно добавить компьютер, диапазон адресов или подсеть. Выберите компьютер. Введите имя, чтобы определить эту запись, IP-адрес и понятное описание, чтобы кто-нибудь другой при просмотре этой записи не удалил вашу систему (см. рис. 7). Нажмите кнопку «ОК», чтобы добавить ваш компьютер, затем нажмите ее снова, чтобы добавить исключение. Теперь нужно применить внесенные изменения.
Internal networks properties settings
Enter computer name, IP address, and description to ensure your system is not removed
Попробуйте снова запустить систему управления. Вы увидите, что производительность стала гораздо выше, а подключения работают без неполадок (во всяком случае, без неполадок, вызванных сетевым трафиком). Таким образом, в итоге выяснилось, что неполадка была вызвана не числом подключений, вызванных программой, а неправильным их планированием.
Извлеченные уроки
Одна из самых больших неприятностей в сфере ИТ — возникновение и устранение проблем, причину которых трудно обнаружить. Эти неполадки не вызваны действиями пользователей или серверной группы, служба поддержки окажется не в курсе, но вы можете отвечать за их устранение. Существуют средства, которые помогут выявить неполадки, обнаружить их и устранить, но иногда их недостаточно. Иногда они работают неправильно. Иногда вам нужно быть умнее таких средств.
Если вдруг возникнет ситуация, когда у вашего компьютера начнутся неполадки с сетевыми подключениями без каких-либо очевидных причин, попробуйте сделать то, о чем я рассказал выше. Вполне вероятно, что, выполнив описанные действия, внимательно изучив работу системы управления и правильно настроив разрешенные подключения, вы успешно решите проблему.
Автор: Кристофер Стонеф (Christopher Stoneff)
Источник: декабрь Technet Magazine