Назад | Перейти на главную страницу

Отключить IPv6 на адресе обратной связи (локальный хост, имя компьютера,…)

Мы попытались установить сторонний программный продукт на новый компьютер с 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.