четверг, 14 января 2010 г.

Восстановление стека TCP/IP в Windows XP

Возможно, вы сталкивались с вирусами/троянами, после лечения которых перестает нормально работать сеть («компьютер не выходит в интернет»). Как человек, угробивший кучу времени на борьбу с этим замечательным явлением на нескольких компьютерах, считаю нужным записать рецепт.

Как может проявляться проблема:
• Команда ipconfig выдает ошибку.
• Не работает получение адреса по dhcp (команда ipconfig /renew).
• «Странные знаки» вместо IP-адреса в выводе команды ping.
• Касперский при запуске выдает ошибки типа «Сбой при запуске монитора HTTP-трафика».
• ActiveSync при запуске выдает ошибку типа «TCP/IP network transport is not installed».
• В диспетчере устройств при включенном «Показать скрытые устройства» в разделе «Драйверы устройств не Plug and Play» драйвер протокола TCP/IP не виден или показан как отключенный и отображается сообщение об ошибке.
• Могут, естественно, быть и другие симптомы.

Как можно бороться:
1. Начинаю я со сканирования всех жестких дисков с аварийного диска с антивирусом со свежими базами. Править недолеченную винду — удовольствия мало, да и смысла может не быть.
2. Если у каких-то сетевых соединений IP-адреса назначены вручную, выписываем их или делаем скриншоты. На следующем шаге эти настройки скорее всего слетят.
3. Даем команду netsh int ip reset, перезагружаемся. Помогло? Замечательно. Нет? Едем дальше.
4. Даем команду netsh winsock reset, перезагружаемся. Это может не работать на Windows до SP2. После этого действия может слететь интеграция в стек TCP/IP антивирусов, фаерволлов, клиентов для проксей. Правится или повторной установкой нужных галок в настройках этих программ, или их переустановкой.
5. Простые методы закончились Возможно, поврежден или остутствует файл tcpip.sys. Восстановить его можно командой expand X:\i386\tcpip.sy_ c:\windows\system32\tcpip.sys, где X: — буква диска с дистрибутивом. После восстановления перезагружаемся.
6. Возможно, дело в каких-то еще системных файлах, потертых или измененных. Запустить проверку с восстановлением из дистрибутива по необходимости можно командой sfc /scannow. Мне не помогло, работало долго, но ошибок никаких не нашло.
7. Видел рекомендацию воспользоваться софтинкой http://www.snapfiles.com/get/winsockxpfix.html — мне не помогло, но «десять баксов-то не лишние» — вдруг кому поможет. Софтинка небольшая, около мегабайта весит.
8. Можно попробовать заново установить протокол TCP/IP. В свойствах подключения к локальной сети на вкладке Общие щелкаем Установить -> Протокол -> Добавить. В окне Выбор сетевых протоколов щелкаем Установить с диска, вводим путь C:\windows\inf, нажимаем ОК. Выделяем Протокол Интернета (TCP/IP), нажимаем ОК. Проверяем настройки IP, перезагружаемся.
9. Можно попробовать в диспетчере устройств удалить и установить заново сетевую карту. Я не пробовал.

Полная переустановка TCP/IP aka закат солнца вручную:
Если ничего из вышеперечисленного не восстановило работоспособность, осталась еще одна процедура, помогающая избежать переустановки Windows. Кстати, переустановка «поверх», с сохранением настроек, программ и документов, может не устранить проблему. Пробовал, сталкивался.
Итак, отращиваем бороду, покупаем бубен, надеваем толстые очки и засучиваем рукава.
1. Открываем в блокноте файл c:\windows\inf\nettcpip.inf.
2. Находим секцию [MS_TCPIP.PrimaryInstall]..
3. В записи Characteristics = 0xA0 замеяем 0xA0 на 0x80.
4. Сохраняем, закрываем.
5. Открываем Сетевые подключения, там открываем свойства Подключения к локальной сети.
6. На вкладке Общие щелкаем Установить -> Протокол -> Добавить.
7. В окне Выбор сетевых протоколов щелкаем Установить с диска.
8. Вводим путь C:\windows\inf, нажимаем ОК.
9. Выделяем Протокол Интернета (TCP/IP), нажимаем ОК. Теперь в свойстве подключения стало возможно снести TCP/IP.
10. Выделяем Протокол Интернета (TCP/IP), нажимаем кнопку Удалить, затем ОК.
11. Запускаем regedit, удаляем ветки реестра HKLM\System\CurrentControlSet\Services\Winsock и HKLM\System\CurrentControlSet\Services\Winsock2.
12. Перезагружаемся.
13. В файле c:\windows\inf\nettcpip.inf меняем обратно 0x80 на 0xA0, сохраняем, закрываем.
14. Открываем Сетевые подключения, там открываем свойства Подключения к локальной сети.
15. На вкладке Общие щелкаем Установить -> Протокол -> Добавить.
16. Выделяем Протокол Интернета (TCP/IP), нажимаем ОК.
17. При необходимости восстанавливаем настройки адресов IP, перезагружаемся. TCP/IP работает.

Предпоследний пункт может не сработать, выдав «расширенную ошибку». Возможно, если не менять обратно файл nettcpip.inf, этой ошибки не возникнет. Дело в том, что системная база безопасности почему-то оказывается в неправильном состоянии. Как быть в этом случае? Для проверки сначала запускаем команду:

esentutl /g c:\windows\security\Database\secedit.sdb

Если в выводе между строчками Checking database integrity и Integrity check successful нет никаких сообщений, что что-то не так, значит с базой все в порядке. У меня было сообщение типа This operation may find that this database is corrupt.
Пробуем восстановление базы (у меня не сработало):

esentutl /r c:\windows\security\Database\secedit.sdb

Делаем ремонт базы:

esentutl /p c:\windows\security\Database\secedit.sdb

После этого запуск с ключом /g должен показать, что база в порядке, и TCP/IP установится. Эти манипуляции с базой безопасности могут что-то такое сделать с групповыми политиками, так что если вы ими пользуетесь, проверьте, все ли там в порядке.
Надеюсь, все написанное здесь вам не пригодится, а если все-таки пригодится, то сэкономит немало времени и нервов.

Вам нужно сбросить TCP/IP стек по умолчанию. С правами Админа выполнить вот это:
Пуск >> Выполнить >> cmd /k netsh int ip reset resetlog.txt {OK}
Перегрузить компьютер.
Проще всего убить протокол TCP и перегрузиться - он должен сам снова установиться (наверняка нужен будет дистрибутив). Где он в ХР - не искал.
У меня пару раз было такое, что протокол сам куда-то падал. Не с бухты-барахты, естественно, но не смог понять от которого именно софта, установленного кучей (в тестовых целях), потому как это не сразу заметно становится...
Срубал и сетевуху, ничего дельного не получилось.
А так, переустановил винду, проблема решена
При появлении сообщения: "TCP/IP Network Transport Not Installed" выполните команду netsh int ip reset resetlog.txt - тем самым вы восстановите исходные настройки протокола TCP/IP на компьютере.
установи транспортный протокол:
сетевое подключение - свойство - протокол TCP/IP
перегрузись
tcp/ip установлен!
присвоен адрес!
Вот такая ошибка вылетает в ХР ПРо при загрузке системы
Mobile devices properties
the tcp/ip network transport is not installed

Если после выполненных рекомендаций остается ошибка 720, значит то-то не то с протоколом РРР и его следут переустановить. Как это делается читаем тут.

Комментариев нет:

Отправить комментарий