Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Кирилистические домены и IDNA - как их настраивать

Практика



Служба доменных имен (DNS) изначально поддерживала названия доменов, написанных только латинскими буквами. Долгое время это продолжалось и долгое время всех все устраивало. Но прогресс не стоит на месте и была разработана интернациональная система доменных имен, позволяющая вводить в браузере название сайта на своем родном языке.

С недавних пор и Россия открыла свой корневой домен .РФ, позволяющий регистрировать сайты с русскими названиями (мойсайт.рф). В этой статье я, в двух словах, объясню - как же настроить сервер Bind/Named для работы с интернациональными доменами.


Прежде всего - как оно работает?

Принцип "только латинские символы" на самом деле никуда не делся. В данный момент DNS-сервера могут "резолвить" только названия, написанные латинскими символами, с привлечением дополнительно цифр и спец-символов типа дефиза и подчеркивания. Когда же пользователь вводит в строке браузера русское название сайта (или другое интернациональное) - браузер с поддержкой IDNA самостоятельно преобразует национальные символы в так называемый Puny-code и запрашивает у DNS-серверов уже преобразованное имя.

Puny-code состоит только из разрешенных латинских символов, цифр и знаков, кои разрешены были и в прошлом для стандартного латинского DNS. Вот несколько примеров соответствия русских названий - puny-кодам:

мойдомен.рф = xn--d1acklchcc.xn--p1ai
другой-сайт.рф = xn----8sbhd0ac5aonmd.xn--p1ai
www.новый.рф = www.xn--b1aoke0e.xn--p1ai

Преобразование из кириллицы в Puny-code не обязательно делать руками. Для этого существуют уже готовые веб-сервисы. Как правило, они находятся у регистраторов доменов и их несложно найти через поисковые системы. Вот пример 3х из них:

http://www.reg.ru/whois/punycode
http://www.bname.ru/tools/webmasters/encoding_punycode/
http://tools.mydiv.net/punycode/

Они работали на момент написания статьи и исправно выдавали по русскому имени рабочий puny-code.


Теперь давайте настроим наш bind-сервер для работы с Puny-code.

А настраивать, на самом деле, особо ничего не нужно. Доменные зоны создаются точко так-же, как и с обычными латинскими доменами. Ниже приведен пример одной зоны с обычного DNS-сервера.

Часть файла с указанием доменных зон (например, /etc/bind/named.conf.zones):

...

# Сайт мойдомен.рф
zone "xn--d1acklchcc.xn--p1ai" {
        type master;
        file "/etc/bind/master/moi_sait.rf";
};

...

И вот файл-пример с описанием этого домена (в данном случае: /etc/bind/master/moi_sait.rf):

$ORIGIN .
$TTL 3600               ; 1 hour
xn--d1acklchcc.xn--p1ai.      IN SOA  ns1.mydomain.ru. root.mydomain.ru. (
                                2011011801 ; serial
                                28800      ; refresh (8 hours)
                                7200       ; retry (2 hours)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      ns1.mydomain.ru.
                        NS      ns2.mydomain.ru.
                        A       255.255.255.255

$ORIGIN xn--d1acklchcc.xn--p1ai.
www                     CNAME   xn--d1acklchcc.xn--p1ai.

Как видно - ничего сложного.


Как же это прописать в веб-сервере?

Точно так-же просто, как и в DNS-сервере. Виртуальный сервер называйте по Puny-коду, а ссылку на директорию с файлами для веб-сервера - как Вам удобно. Опять-же - простенький пример на основе Apache2 для того-же сайта "мойдомен.рф".

# Мой домен
<VirtualHost *:80>
        ServerName              xn--d1acklchcc.xn--p1ai
        ServerAlias             www.xn--d1acklchcc.xn--p1ai
        DocumentRoot            /www/moisait.rf
        DirectoryIndex          index.php
</VirtualHost>

Конечно, вариант только как пример - вот так оно уже будет работать.

Дополнительную информацию можно легко найти в интернет.
создано: 2017-05-09
обновлено: 2021-03-13
271



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)