SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
НазадDNS-кэш используется как для минимизации количества DNS-запросов к внешнему DNS-серверу, так и для сокращения времени, уходящего на перевод DNS-имени в IP-адрес. Это простой рекурсивный DNS-сервер с локально содержащимися элементами.
Маршрутизатор MikroTik с активированной DNS-функцией может быть задан в качестве DNS-сервера для любого DNS-совместимого клиента. Кроме того, маршрутизатор MikroTik может быть определён в качестве основного (primary) DNS-сервера при настройке на маршрутизаторе DHCP-сервера. При разрешённых удалённых запросах маршрутизатор MikroTik перехватывает TCP и UDP DNS-запросы к порту 53.
Функция DNS используется для обеспечения разрешения доменного имени как для самого маршрутизатора, так и для подключённых к нему клиентов.
| Параметр | Описание |
|---|---|
| allow-remote-requests (yes | no; default: no) | определяет, разрешены ли удалённые запросы |
| cache-max-ttl (время; default: 1w) | определяет максимальное время жизни (time-to-live) записей кэша. Иными словами, по истечении времени, присвоенного значению cache-max-ttl записи кэша станут неактуальны. Предпочтительны более короткие значения TTL, получаемые от DNS-серверов. |
| cache-size (целочисленное значение: 512..10240; default: 2048KiB) | определяет размер DNS-кэша в килобайтах |
| cache-used (только для чтения: целочисленное значение) | отображает текущий размер кэша в килобайтах |
| servers (список IPv4/IPv6-адресов; default: 0.0.0.0) | разделённый запятой список IP-адресов DNS-серверов |
{{Примечание|До RouterOS версии 4.6 DNS-серверы через командную консоль задавались с помощью параметров primary-dns и secondary-dns, начиная с упомянутой версии, эти два параметра были заменены одним параметром servers, с помощью которого должны быть перечислены IP-адреса всех DNS-серверов.}}
{{Note|Если параметру use-peer-dns в меню /ip dhcp-client присвоено значение yes, то в этом случае значение параметра primary-dns в меню /ip dns изменится на адрес DNS-сервера, выдаваемый DHCP-сервером. }}
Для установки адреса 159.148.60.2 в качестве основного DNS-сервера и разрешения на использование маршрутизатора в качестве DNS-сервера выполните следующее:
[admin@MikroTik] ip dns> set servers=159.148.60.2 \
\... allow-remote-requests=yes
[admin@MikroTik] ip dns> print
servers: 159.148.60.2
allow-remote-requests: yes
cache-size: 2048KiB
cache-max-ttl: 1w
cache-used: 7KiB
[admin@MikroTik] ip dns>
Данное меню предоставляет список всех записей адресов (DNS тип "A"), хранящихся на сервере.
| Параметр | Описание |
|---|---|
| address (только для чтения: IP-адрес) | IP-адрес узла |
| name (только для чтения: имя) | DNS-имя узла |
| ttl (только для чтения: время) | оставшееся время жизни (time to live) записи |
Данное меню предоставляет полный список, содержащий все DNS-записи, хранящиеся на сервере.
| Параметр | Описание |
|---|---|
| data (только для чтения: текст) | поле DNS-данных. Для записей типа "A" это IP-адрес. У других типов записей в поле данных может размещаться другое содержимое (например, имя узла или произвольный текст) |
| name (только для чтения: имя) | DNS-имя узла |
| ttl (только для чтения: время) | оставшееся время жизни (time to live) записи |
| type (только для чтения: текст) | тип DNS-записи |
DNS-кэш в MikroTik RouterOS обладает встроенной возможностью DNS-сервера. Данная возможность позволяет вам связывать определённые доменные имена с соответствующими IP-адресами и использовать эти соответствия для DNS-клиентов, использующих маршрутизатор в качестве своего DNS-сервера. Данная возможность также может быть использована для предоставления подложной DNS-информации клиентам вашей сети. Например, для того чтобы при любых DNS-запросах по разрешению имён определённой группы доменов (или целиком всей сети Internet) возвращать в ответ клиентам IP-адрес вашей собственной страницы.
Сервер способен разрешать DNS-запросы, основанные на применении регулярных POSIX-выражений, таким образом, что несколько запросов могут соответствовать одной и той же записи. В случае если какая-либо запись не соответствует стандартам присвоения доменных имён, она считается регулярным выражением и отмечается флагом "R". Список упорядочен и проверяется сверху вниз. Сначала проверяются регулярные выражения, затем простые записи.
| Параметр | Описание |
|---|---|
| address (IP-адрес) | IP-адрес присвоенный доменному имени |
| name (текст) | DNS-имя, которое будет разрешено в данный IP-адрес. Может являться регулярным выражением |
| ttl (время) | время жизни DNS-записи |
Обратный DNS-запрос (перевод IP-адреса в имя) записей, сделанных с помощью регулярных выражений, невозможен. Можно, однако, добавить дополнительную простую запись с тем же самым IP-адресом и задать какое-нибудь имя для него.
Помните, что точкой (.) в регулярных выражениях можно задать любой символ, поэтому выражение необходимо составлять должным образом. Например, если вам необходимо задать какое-либо соответствие в пределах домена example.com, но не для всех доменов, а только для тех, имена которых заканчиваются на .example.com, исключая домены вида www.another-example.com, примените name=".*\.example\.com".
Поиск соответствий по регулярным выражениям значительно медленнее, чем обработка простых записей, поэтому рекомендуется минимизировать количество используемых регулярных выражений и оптимизировать их.
Добавим статическую DNS-запись для имени www.example.com, которое должно быть разрешено в IP-адрес 10.0.0.1:
[admin@MikroTik] ip dns static> add name www.example.com address=10.0.0.1 [admin@MikroTik] ip dns static> print Flags: D - dynamic, X - disabled, R - regexp # NAME ADDRESS TTL 0 www.example.com 10.0.0.1 1d [admin@MikroTik] ip dns static>
| Параметр | Описание |
|---|---|
| flush | очищает встроенный DNS-кэш |
[admin@MikroTik] ip dns> cache flush
[admin@MikroTik] ip dns> print
servers: 159.148.60.2
allow-remote-requests: yes
cache-size: 2048 KiB
cache-max-ttl: 1w
cache-used: 10 KiB
[admin@MikroTik] ip dns>