Мы попытались установить сторонний программный продукт на новый компьютер с Windows Server 2008 R2 и обнаружили, что все работает, кроме доступа к локальным службам через адреса обратной связи, такие как localhost
или имя компьютера (например: VPS-Web
который решает localhost
). Мы не используем IPv6 и хотели бы отключить его, пока программное обеспечение не станет совместимым.
Я пробовал использовать эти инструкции для отключение IPv6 в Windows 2008 R2 но это не отключило протокол для localhost
. Пинг localhost
или VPS-Web
все равно вернется ::1:
вместо того 127.0.0.1
. я могу использовать ping localhost -4
чтобы получить правильный адрес, но IPv6 имеет приоритет над IPv4, поэтому стороннее программное обеспечение получает только IPv6-адрес.
Первоначально я проверил файл хоста, как было предложено SilverbackNet, но на сервере Windows 2008 R2 это файл по умолчанию:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
#
обозначает комментарий в хост-файле, поэтому все записи закомментированы, а первая строка немного сбивает с толку. Затем я заметил, что были закомментированы две записи для localhost, поэтому я попытался раскомментировать IPv4, и это сработало! Я должен был попробовать это первым, но первая строчка сбила меня с пути. Использование указанного ниже хост-файла при проверке имени компьютера или локального хоста всегда будет возвращать адрес IPv4, что решает проблему со сторонним программным обеспечением!
# localhost name resolution is handled within DNS itself.
# ::1 localhost
127.0.0.1 localhost
127.0.0.1 VPS-Web
Установка DisabledComponents = 0x20 в
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters \
настроит этот компьютер на использование IPv4 вместо IPv6 в политиках префиксов.
Создайте раздел реестра, если он не существует.
Первоначальный поток ServerFault об использовании DisabledComponents
значение реестра действительно лучший способ сделать это. Настройка файла хоста никогда не должна быть необходимой в хорошо функционирующей сети. Настройка реестра также много легче развернуть и вернуться через групповую политику, если у вас есть Active Directory.
Причина, по которой это не сработало, в том, что DisabledComponents
Параметр реестра читается как набор битовых флагов, а не просто включен или выключен. Вот официальная документация от Microsoft по этому вопросу:
Как отключить IP версии 6 (IPv6) или его отдельные компоненты в Windows 7, Windows Vista, Windows Server 2008 R2 и Windows Server 2008
Вкратце, чтобы полностью отключить IPv6 в Vista / 2008 и более поздних версиях, установите значение DisabledComponents
к 0xff
. Я делаю это на каждой машине, которой управляю, где мы явно не используем IPv6. У него есть приятный побочный эффект, заключающийся в значительном сокращении вывода ipconfig
команда.
Вы пытались удалить запись из файла hosts в% systemroot% \ system32 \ drivers \ etc? Это должно сработать, если вам просто нужно, чтобы "localhost" всегда был IPv4. Однако, если он основан на имени сервера, это, вероятно, не сработает.
Вы также можете зайти в свойства самой сетевой карты и снять флажок IPv6, оставив IPv4 включенным. Должен сделать свое дело.
Попробуйте добавить строку в файл хостов, например:
::1 VPW-Web
Это должно позволить преобразователю получить VPW-Web
как имя для обратной петли IPv6.