- Windows server dns server cache
- Что такое кэш DNS?
- Как посмотреть кэшированные просмотры на DNS сервере
- Как удалить кэш на DNS сервере
- Настройка времени хранения DNS кэша на сервере
- Set-Dns Server Cache
- Syntax
- Description
- Examples
- Example 1: Set the maximum cache size on a DNS server
- Example 2: Set maximum Time-To-Live durations
- Parameters
- Отключение кэширования на стороне клиента DNS на DNS-клиентах Disable DNS client-side caching on DNS clients
- Как отключить кэширование на стороне клиента How to disable client-side caching
- Использование реестра для управления временем кэширования Using the registry to control the caching time
Windows server dns server cache
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов Pyatilistnik.org. В прошлый раз мы с вами научились разбираться в звуковых сигналах биоса на разных материнских платах. В сегодняшней статье я хочу рассмотреть функцию очистки кэша на сервере DNS, который является наверное самой важной службой в Active Directory, так как без нее домен просто не смог бы корректно работать. Я вам покажу, где вы можете посмотреть все кэшированные записи, разберу их плюсы. Думаю, что не все знают, где это искать, а уметь нужно.
Что такое кэш DNS?
Ранее я вам рассказывал, что такое DNS сервер, как его устанавливать в Windows Server. В своей практике вы легко можете столкнуться с тем, вы обратились к какому-то сайту, его DNS имя и IP-адрес попали в кэш сервера. Потом у данного сайта поменялся IP-адрес, но при обращении к нему ваши пользователи все равно попадают на старый IP. Вам необходимо его удалить, лично я столкнулся с данной задачей когда искал проблему с ошибкой:
Именно DNS кэш этому виной. DNS кэш — это некая область в которую попадают записи относящиеся к запрашиваемому домену и зоне, например NS-записи, A-записи и так далее. Данный кэш, не нужно путать с локальным, тут логика у сервера такая, когда клиент запрашивает сопоставление DNS-имени и IP-адреса, он в первую очередь смотрит не является ли он сам этим адресом, если нет, то он обращается уже по рекурсии к вышестоящему DNS-серверу. Когда вся информация получена, то сервер для ускорения последующего разрешения имен просто кладет к себе в кэшированные просмотры эту информацию, что ускоряет скорость ответа для клиента который потом запросит данную информацию, так как не придется делать рекурсивный запрос и так же снимет часть нагрузки с DNS сервера, короче одни плюсы.
Как посмотреть кэшированные просмотры на DNS сервере
Откройте оснастку DNS и перейдите в меню «Вид — Расширенный«
После этого у вас появится скрытый раздел «Кэшированные просмотры«
Если у вас очень много пользователей, то вы тут обнаружите огромное количество зон верхнего уровня, а уже в них вы найдете привычные вам домены третьего уровня.
Тут будут обычные записи, например вот A-запись для моего домена.
То же самое можно посмотреть и через PowerShell. Открываем оболочку и попробуйте выполнить такой командлет:
Как удалить кэш на DNS сервере
Я покажу три метода позволяющих вам удалить текущий DNS-кэш на вашем сервере, они будут отличаться от чистки на клиенте:
Первый метод очистки вашего сервера от кэшированных запросов, это через саму оснастку DNS. Для этого просто выберите имя вашего DNS-сервера и через контекстное меню произведите очистку.
Второй метод, это в командной строке введите команду:
То же самое еще выполним через PowerShell:
Как видите в итоге остались только корневые записи.
Настройка времени хранения DNS кэша на сервере
Каждая запись DNS имеет значение времени жизни (TTL), связанное с ней, и именно это значение обычно определяет, как долго запись будет сохраняться в кэше, но это можно изменить с помощью значения реестра MaxCacheTtl. Существуют настройки MaxCacheTtl как для серверного, так и для клиентского кеша, которые хранятся в разных местах реестра:
- Для сервера — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
- Для клиента — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters
Set-Dns Server Cache
Modifies cache settings for a DNS server.
Syntax
Description
The Set-DnsServerCache cmdlet modifies cache settings for a Domain Name System (DNS) server.
Examples
Example 1: Set the maximum cache size on a DNS server
This command sets the maximum cache size to 10,240 KB on a DNS server that has an FQDN of Win12S-05.DNSServer-01.Contoso.com.
Example 2: Set maximum Time-To-Live durations
This command sets the the maximum TTL to 2 days and the maximum negative TTL to 20 minutes.
Parameters
Runs the cmdlet as a background job. Use this parameter to run commands that take a long time to complete.
The cmdlet immediately returns an object that represents the job and then displays the command prompt. You can continue to work in the session while the job completes. To manage the job, use the *-Job cmdlets. To get the job results, use the Receive-Job cmdlet.
For more information about Windows PowerShell background jobs, see about_Jobs.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.
Type: | CimSession [ ] |
Aliases: | Session |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a DNS server. The acceptable values for this parameter are: an IPv4 address, an IPv6 address, and any other value that resolves to an IP address, such as fully qualified domain name (FQDN), host name, or NETBIOS name.
Type: | String |
Aliases: | Cn |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indicates whether to ignore policies for this cache.
Type: | Boolean |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a percentage of the original Time to Live (TTL) value that caching can consume.
Cache locking is configured as a percent value. For example, if the cache locking value is set to 50, the DNS server does not overwrite a cached entry for half of the duration of the TTL. By default, the cache locking percent value is 100. This value means that the DNS server will not overwrite cached entries for the entire duration of the TTL.
Type: | UInt32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the maximum size, in kilobytes, of the memory cache of a DNS server.
Type: | UInt32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies how long (1 to 2592000 seconds) an entry that records a negative answer to a query remains stored in the DNS cache. The value must be provided as a TimeSpan. The default setting is 15 minutes.
Type: | TimeSpan |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies how long (0 to 2592000 seconds) a record is saved in cache. The value must be provided as a TimeSpan. If the TimeSpan is set to 0 seconds, the DNS server does not cache records. The default setting is one day (86,400 seconds).
Type: | TimeSpan |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Returns an object representing the item with which you are working. By default, this cmdlet does not generate any output.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies whether DNS filters name service (NS) resource records that are cached. Valid values are zero, which caches all responses to name queries and is the default value; and one, which caches only the records that belong to the same DNS subtree.
When you set this parameter value to False, cache pollution protection is disabled. A DNS server caches the Host (A) record and all queried NS resources that are in the DNS server zone. In this case, DNS can also cache the NS record of an unauthorized DNS server. This event causes name resolution to fail or to be appropriated for subsequent queries in the specified domain.
When you set the value for this parameter to True, the DNS server enables cache pollution protection and ignores the Host (A) record. The DNS server performs a cache update query to resolve the address of the NS if the NS is outside the zone of the DNS server. The additional query minimally affects DNS server performance.
For more information about DNS cache locking, see DNS Cache Locking. For more information about cache pollution protection, see Securing the DNS Server Service. For more information about NS resource records, see Managing resource records.
Type: | Boolean |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies whether a DNS server stores empty authoritative responses in the cache (RFC-2308). The default value is True.
Type: | Boolean |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the maximum number of concurrent operations that can be established to run the cmdlet. If this parameter is omitted or a value of 0 is entered, then Windows PowerShellВ® calculates an optimum throttle limit for the cmdlet based on the number of CIM cmdlets that are running on the computer. The throttle limit applies only to the current cmdlet, not to the session or to the computer.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Отключение кэширования на стороне клиента DNS на DNS-клиентах Disable DNS client-side caching on DNS clients
Windows содержит кэш DNS на стороне клиента. Windows contains a client-side DNS cache. Функция кэширования DNS на стороне клиента может создать ложное впечатление, что балансировка нагрузки DNS с циклическим перебором не происходит с DNS-сервера на клиентский компьютер Windows. The client-side DNS caching feature may generate a false impression that DNS «round robin» load balancing is not occurring from the DNS server to the Windows client computer. При использовании команды ping для поиска того же имени домена A-записи клиент может использовать тот же IP-адрес. When you use the ping command to search for the same A-record domain name, the client may use the same IP address.
Как отключить кэширование на стороне клиента How to disable client-side caching
Чтобы отключить кэширование DNS, выполните одну из следующих команд: To stop DNS caching, run either of the following commands:
Для безвозвратного отключения кэша DNS в Windows используйте средство контроллера служб или средство «службы», чтобы задать для параметра «тип запуска службы DNS-клиента значение» отключено«. To disable the DNS cache permanently in Windows, use the Service Controller tool or the Services tool to set the DNS Client service startup type to Disabled. Обратите внимание, что имя службы DNS-клиента Windows также может отображаться как «Днскаче». Note that the name of the Windows DNS Client service may also appear as «Dnscache.»
Если кэш сопоставителя DNS деактивируется, Общая производительность клиентского компьютера снижается, а сетевой трафик для запросов DNS увеличивается. If the DNS resolver cache is deactivated, the overall performance of the client computer decreases and the network traffic for DNS queries increases.
Служба DNS-клиента оптимизирует производительность разрешения имен DNS за счет хранения ранее разрешенных имен в памяти. The DNS Client service optimizes the performance of DNS name resolution by storing previously resolved names in memory. Если служба DNS-клиента отключена, компьютер может по-прежнему разрешать DNS-имена с помощью DNS-серверов сети. If the DNS Client service is turned off, the computer can still resolve DNS names by using the network’s DNS servers.
Когда сопоставитель Windows получает в запрос положительный или отрицательный ответ, он добавляет этот ответ в свой кэш и тем самым создает запись ресурса DNS. When the Windows resolver receives a response, either positive or negative, to a query, it adds that response to its cache and thereby creates a DNS resource record. Сопоставитель всегда проверяет кэш перед запросом DNS-сервера. The resolver always checks the cache before it queries any DNS server. Если запись ресурса DNS находится в кэше, сопоставитель использует запись из кэша вместо запроса к серверу. If a DNS resource record is in the cache, the resolver uses the record from the cache instead of querying a server. Такое поведение ускоряет запросы и уменьшает сетевой трафик для запросов DNS. This behavior expedites queries and decreases network traffic for DNS queries.
Для просмотра и очистки кэша сопоставителя DNS можно использовать средство ipconfig. You can use the ipconfig tool to view and flush the DNS resolver cache. Чтобы просмотреть кэш сопоставителя DNS, выполните в командной строке следующую команду: To view the DNS resolver cache, run the following command at a command prompt:
Эта команда отображает содержимое кэша сопоставителя DNS, включая записи ресурсов DNS, предварительно загруженные из файла Hosts, и все недавно запрошенные имена, разрешенные системой. This command displays the contents of the DNS resolver cache, including the DNS resource records that are preloaded from the Hosts file and any recently queried names that were resolved by the system. Через некоторое время сопоставитель отклоняет запись из кэша. After some time, the resolver discards the record from the cache. Период времени указывается значением срока жизни (TTL) , связанным с записью ресурса DNS. The time period is specified by the Time to Live (TTL) value that is associated with the DNS resource record. Кэш также можно очистить вручную. You can also flush the cache manually. После очистки кэша компьютер должен снова запрашивать DNS-серверы для любых записей ресурсов DNS, которые ранее были разрешены компьютером. After you flush the cache, the computer must query DNS servers again for any DNS resource records that were previously resolved by the computer. Чтобы удалить записи в кэше сопоставителя DNS, выполните ipconfig /flushdns команду из командной строки. To delete the entries in the DNS resolver cache, run ipconfig /flushdns at a command prompt.
Использование реестра для управления временем кэширования Using the registry to control the caching time
Внимательно выполните действия, описанные в этом разделе. Follow the steps in this section carefully. Неправильное изменение реестра может привести к серьезным проблемам. Serious problems might occur if you modify the registry incorrectly. Перед внесением изменений создайте резервную копию реестра для его восстановления в случае возникновения проблем. Before you modify it, back up the registry for restoration in case problems occur.
Промежуток времени, в течение которого кэшируется положительный или отрицательный ответ, зависит от значений записей в следующем разделе реестра: The length of time for which a positive or negative response is cached depends on the values of entries in the following registry key:
HKEY_LOCAL_MACHINE \Систем\куррентконтролсет\сервицес\днскаче\параметерс HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters
TTL для положительных ответов — это меньшее из следующих значений: The TTL for positive responses is the lesser of the following values:
Число секунд, указанное в ответе на запрос, полученным распознавателем The number of seconds specified in the query response the resolver received
Значение параметра реестра макскачеттл . The value of the MaxCacheTtl registry setting.
- По умолчанию TTL для положительных ответов составляет 86 400 секунд (1 день). The default TTL for positive responses is 86,400 seconds (1 day).
- TTL для отрицательных ответов — это количество секунд, указанное в параметре реестра Макснегативекачеттл. The TTL for negative responses is the number of seconds specified in the MaxNegativeCacheTtl registry setting.
- По умолчанию TTL для отрицательных ответов составляет 5 секунд; до Windows 10 версия 1703 по умолчанию составила 900 секунд (15 минут). The default TTL for negative responses is 5 seconds; prior to Windows 10, version 1703 the default was 900 seconds (15 minutes). Если вы не хотите кэшировать отрицательные ответы, присвойте параметру реестра Макснегативекачеттл значение 0. If you do not want negative responses to be cached, set the MaxNegativeCacheTtl registry setting to 0.
Чтобы задать время кэширования на клиентском компьютере, выполните следующие действия. To set the caching time on a client computer:
Запустите редактор реестра (Regedit.exe). Start Registry Editor (Regedit.exe).
Найдите и выберите в реестре следующий раздел: Locate and then click the following key in the registry:
HKEY_LOCAL_MACHINE \Систем\куррентконтролсет\сервицес\днскаче\параметерс HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
В меню Правка наведите указатель мыши на пункт Создать, выберите пункт значение DWORD, а затем добавьте следующие значения реестра: On the Edit menu, point to New, click DWORD Value, and then add the following registry values:
Имя значения: Макскачеттл Value name: MaxCacheTtl
Тип данных: REG_DWORD Data type: REG_DWORD
Данные значения: значение по умолчанию 86400 секунд. Value data: Default value 86400 seconds.
Если вы уменьшите максимальное значение TTL в кэше DNS клиента на 1 секунду, это даст внешнее представление о том, что кэш DNS на стороне клиента отключен. If you lower the Maximum TTL value in the client’s DNS cache to 1 second, this gives the appearance that the client-side DNS cache has been disabled.
Имя значения: Макснегативекачеттл Value name: MaxNegativeCacheTtl
Тип данных: REG_DWORD Data type: REG_DWORD
Значение данные: значение по умолчанию 5 секунд. Value data: Default value 5 seconds.
Установите значение 0, если не нужно кэшировать отрицательные ответы. Set the value to 0 if you do not want negative responses to be cached.
Введите значение, которое необходимо использовать, и нажмите кнопку ОК. Type the value that you want to use, and then click OK.
Закройте редактор реестра. Quit Registry Editor.