среда, 27 октября 2010 г.

Как устранить конфликт IPv4 с IPv6? Требуются умы!

В кои-то веки... (хотя, вообще, наверное, впервые) обращаюсь к читателям за экстренной помощью! Вторглась в мой дом беда... :) Срочно нужна помощь профессионала в Windows 7! Поэтому если ты от этого далёк, эта статья не для тебя.

В общем, стоят у меня одинаковые лицензионные Windows 7 Professional на нетбуке и ноутбуке. Ноут был в ремонте, поэтому первой проблема всплыла на Нетике. Мучился, искал решение - не нашел. Тогда поставил виртуалку с Windows XP и работал на ней. С возвращением Нотика, обрадовался, что на нем такой проблемы нету. Но вчера появилась она и здесь.

В один прекрасный день перестали открываться сайты http://localhost и http://127.0.0.1 (хотя до этого открывались). Apache и MySQL службы запущены. После этого пробовал несколько разных сборок xampp и Denwer. По ним и опишу симптомы.

Итак, первое - Denwer (ещё вчера работал, сегодня - нет; восстановление системы не помогло).

В netstat, связанное с портом Apache (80) и MySQL (3306) только это:
Активные подключения
Имя Локальный адрес Внешний адрес Состояние
TCP 127.0.0.1:80 0.0.0.0:0 LISTENING
TCP 127.0.0.1:3306 0.0.0.0:0 LISTENING

Сайты localhost и 127.0.0.1 не открываются, слинкованные через hosts домены также не работают.

Теперь выключим Denwer и запустим xampp. В netstat появляется:
Активные подключения
Имя Локальный адрес Внешний адрес Состояние
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
TCP [::]:80 [::]:0 LISTENING
TCP [::1]:80 [::1]:49553 ESTABLISHED

При этом сайт http://localhost работает! Но не работает http://127.0.0.1 (именно так, а не наоборот - для тех, кто начал грешить на hosts).

Понял также, что все порты других программ, открываемые для [::] работают, а для 127.0.0.1, 0.0.0.0 и подобных - нет. То есть, легко заметить, что проблема так или иначе связана с конфликтом IPv4/IPv6 протоколов. Но как её устранить?

На заметку. Также перестал работать веб-интерфейс Oracle локального сервера (он находится по недоступному адресу http://localhost:8080/apex/). Java ME SDK тоже не запускается (ошибка какого-то коннекта - в общем ясно, что связано с этой же проблемой). Мой чат, написанный на третьем курсе, открывает порт 0.0.0.0:4512, но клиенты к этому порту подключиться не могут.



route print (при отключенных интернет-соединениях проблемы те же):
IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
===========================================================================
Постоянные маршруты:
Сетевой адрес Маска Адрес шлюза Метрика
0.0.0.0 0.0.0.0 192.168.1.10 По умолчанию
0.0.0.0 0.0.0.0 192.168.1.1 По умолчанию
===========================================================================

IPv6 таблица маршрута
===========================================================================
Активные маршруты:
Метрика Сетевой адрес Шлюз
1 306 ::1/128 On-link
1 306 ff00::/8 On-link
===========================================================================
Постоянные маршруты:
Отсутствует

С момента, когда всё работало, система установила критическое обновление: Definition Update for Windows Defender - KB915597 (Definition 1.93.468.0). Описание:
Install this update to revise the definition files used to detect spyware and other potentially unwanted software. Onse you have installed this item, it cannot be removed.

То есть, удалить его невозможно... Восстановление системы, как я уже сказал, с проблемой не справляется. Но, возможно, оно тоже не может удалить это обновление.

Не стесняйся - задавай наводящие вопросы в комментариях, высказывай предположения. Нужны хоть какие-то зацепки! Решение этой проблемы для меня катастрофически важно! HELP!!!

UPD: В этой теме спамеры не приветствуются. За неконструктивные ответы типа "...а зачем..." или "...не знаю..." - БАН! Имей совесть!

UPD (02.11): ping localhost
Обмен пакетами с PoStNotebook [::1] с 32 байтами данных:
Ответ от ::1: время<1мс
Ответ от ::1: время<1мс
Ответ от ::1: время<1мс
Ответ от ::1: время<1мс
Статистика Ping для ::1:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

По всей видимости, проблема сводится к тому, чтобы здесь было 127.0.0.1 вместо ::1 без редактирования hosts.

36 комментариев:

A-lex комментирует...

Серёга, вот тут вроде как суппорт живёт от Мелкософта, попробуй задать вопрос там - https://support.microsoft.com/oas/default.aspx?gprid=14019&st=1&wfxredirect=1&sd=gn. У тебя ж лицензионная Вин7, как ни как, пусть подумают над твоей проблемой)

Иван комментирует...

Очень жаль, что не могу помочь автору блога в разрешении его проблемы, просто нет таких знаний. Но уверен, что добрые люди найдутся, и все наладится. Удачи!

Константин комментирует...

А зачем вообще его (Ipv6) было включать? Я его, как настраиваю, всегда вообще вырубаю — и всё нормально работает.

Kichrum комментирует...

A-lex, спасибо, попробую.

Иван, спасибо, еще один подобный коммент только ради ссылки и бан тебе обеспечен.

Константин, я вроде не писал, что я его включал. Тем не менее, этот этап тоже мной пройден. Включать я его не включал, а вот отключать пробовал. Как его выключить полностью? Пробовал по мануалам через редактор реестра... Всё равно. Отключается IPv6 только для определенного сетевого подключения (сетевой карты), но не для всей системы! А тут надо для всей, ведь даже без подключения к сети localhost должен работать.

Kichrum комментирует...

A-lex, общался только-что с техподержкой Microsoft. Действительно, неплохо. У них и чат есть. Удобно, как оказывается, я и не знал. Но вот вердикт Аудрюса из техподдержки: "Ваша проблема профессионального уровня, а мы можем помочь только с проблемами домашнего пользователя уровня". Проблема не решена! =(

Андрей комментирует...

Попробуйте сделать чистую загрузку операционной системы.
Win+R > msconfig
На вкладке службы внизу поставьте галочку Не отображать службы майкрософт и нажмите кнопку отключить все
На вкладке автозагрузка нажмите также кнопку отключить все.
Применить и ОК. После этого перезапустите ноут.
Если проблема не повториться, то скорее всего это настройки вашего софта.

A-lex комментирует...

честно, я б их обматюкал... за что тогда берут деньги, лицензия то не мало стоит... если берут деньги за лицензию - пусть и поддержку оказывают нормальную...
Попытайся написать ещё, авось попадёшь на другого оператора который что то да и скажет... =)

Kichrum комментирует...

Андрей, сделал всё по пунктам. Проверил - то же самое. Это проблему не решило...

UnFeeLing комментирует...

Что в логах apache2 при попытке отправить запрос к серверу?

Григорий комментирует...

Ахаха )) чат бесполезен от Билла, пробовал, подобные ответы получал.

Думаю, что проблема и вправду в Софте.

Kichrum комментирует...

UnFeeLing, вот полностью error.log Денвера. В access.log с момента последней нормальной работы ничего не записывалось.

Григорий, давай по делу. В каком именно софте? Почему не смущает то, что при отключении всех служб проблема не пропадает?

UnFeeLing комментирует...

NameVirtualHost 192.168.1.1:80

ServerName localhost
DocumentRoot /home/localhost/www


попробуйте переконфигурировать виртуальный хост таким образом, видимо проблема то что сервер теряется что и откуда ему брать и передавать на каком порту, почистите лог и опять попробуйте сделать такой же запрос

UnFeeLing комментирует...

и для справки SSL не может работать на нескольких виртуальных хостах

Kichrum комментирует...

UnFeeLing, не работает НЕ АПАЧ, а всё, что обращается к IPv4-портам локального компьютера! Как, прикажете, переконфигурировать тот же Oracle? :D

UnFeeLing комментирует...

[Fri Oct 29 00:28:38 2010] [warn] Init: SSL server IP/port conflict: test1.ru:443 (/usr/local/apache/conf/vhosts.conf:177) vs. Tools.localhost:443 (/usr/local/apache/conf/vhosts.conf:200)

это означает что конфликтует test1.ru:443 и Tools.localhost:443

usr/local/apache/conf/vhosts.conf

этот файлик в студию пожалуйста

Kichrum комментирует...

Вот vhosts.conf, он практически стандартный для денвера (и строится сам при запуске денвера в автоматическом режиме). Только еще раз повторяю: апач к проблеме не причастен. Он был только для проверки дополнительных условий проблемы.

UnFeeLing комментирует...

SSLEngine on

уберите, либо вообще попробуйте оставить один виртуальный хост, (так для справки, SSL нужен вообще?)

Kichrum комментирует...

Ну спасибо за помощь, UnFeeLing. SSL если и нужен, то только когда будет работать всё остальное :) По теме поста - мож еще идеи появились?

weracruz комментирует...

Что-то подобное у меня было. Поставил Денвер 3 и перестало работать (со вторым все работало). Порылся на форуме Денвера и отключил какую-то службу MS, все заработало. А вот какую - не помню. Рад бы помочь, но не могу вспомнить.

Kichrum комментирует...

weracruz, Службы IIS выключены, Skype не запущен, если ты о том, что может прослушивать порт 80. Т.о. его точно никто не прослушивает. Но попытка хорошая. Спасибо, продолжай в том же духе!

UPD! Обновил новость, дополнив данными ответа на "ping localhost". Вдруг еще у кого что созреет...

skforussia комментирует...

подобных проблем никогда не было. проверь файл host и порезолвь адреса. Думаю дело как здесь пишут вовсе не с апачей. Кстати какая версия денвера ?

Kichrum комментирует...

Если б же было всё так просто - с hosts или denwer... =( Но, увы... Баг так глубоко в недрах системы, что даже майкрософтовцы предложили перебивать винду.

Molse комментирует...

Пробовал ли сбросить настройки TCP/IP? Как сделать описано например тут - http://www.windowsreference.com/windows-vista/reset-tcpip-in-windows-7-and-windows-vista/

И что получается в результате попытки сделать telnet 127.0.0.1 80 ?

Kichrum комментирует...

Molse, спасибо, отличная попытка, сделал сброс логов, но, увы... =( А телнета в Windows 7 нет.

Molse комментирует...

Есть, включается через панель управление - программы и компоненты - включение и отключение компонентов Windows - клиент telnet поставить чекбокс.

Molse комментирует...

Да, и ещё. В Event Viewer есть какие-то сообщения об ошибках?

Владимир комментирует...

я всегда отрубаю 6-ой протокол)

SSU комментирует...

Попробуй отключить Windows Defender в настройках программы (на панели управления Windows Defender или Защитник Windows). После этого отключить службы IP Helper, Security Center и Windows Defender. Есть подозрение, что дело именно в них.

Kichrum комментирует...

Спасибо, SSU. "Защитник Windows", "Центр обеспечения безопасности" и "Вспомогательную службу IP" отключил. Но разницы никакой не увидел... =(

SSU комментирует...

Пока могу резюмировать, что ни Win7, ни ipv6 здесь ни при чем. Удалось повторить ситуацию на winXP - после накатывания пака обновлений перестали отвечать Oracle на 127.0.0.1:8080 и Apach на 127.0.0.1:80. Разбираюсь...

Kichrum комментирует...

Спасибо, SSU! Отлично! Эгоистично радуюсь, что я теперь не один! =)

sda комментирует...

Я с удивлением увидел, у себя эту проблему. Решил просто - открыл hosts и закомментил строчку
localhost ::1

После этого пинг на localhost стал ходить на 127.0.0.1 и все починилось :)

Kichrum комментирует...

sda, ага, вот все такие тупые, один ты умный. Извини конечно, но это первое, что я сделал. Более того, я прописал "127.0.0.1 localhost", пинг действительно стал ходить правильно, но на демонов это не влияет.

socpiter комментирует...

Вывод один - не набо было ничего перенастраивать и обновлять. Как говорил мой учитель - Работает ?? Работает. Слава Богу что работает!

Kichrum комментирует...

Вывод делать рано - проблема-то не решена. Обновлялось само, кстати.

Derry комментирует...

сам не давно на 2008 server с похожим столкнулся, днс сервер всем говорил чтоб обращались к нему по ipv6 и записи в нем хоть удаляй хоть не удаляй
http://support.microsoft.com/kb/929852/ru