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

Многие домены / сайты размещены на одном сервере, альтернативы CNAME, чтобы избежать записи одного и того же IP-адреса в DNS?

У меня много сайтов (каждый со своим собственным доменом) на одном сервере cPanel (допустим, IP-адрес сервера 1.1.1.1 а основной домен сервера - myserver.com)

Все эти домены используют сторонний DNS (не хостинг cPanel), Я настроил DNS каждого из этих доменов так, чтобы они указывали на IP-адрес сервера. Пример того, как в настоящее время настроен DNS каждого домена:

domainx.com -> A -> 1.1.1.1
domainx.com -> MX -> mail.domainx.com
mail.domainx.com -> A -> 1.1.1.1
www.domainx.com -> CNAME -> domainx.com
ftp.domainx.com -> CNAME -> domainx.com

Эта ситуация заставляет меня сотни раз повторять IP сервера 1.1.1.1 один раз для каждого домена. В случае изменения IP-адреса сервера мне придется пройти через DNS каждого домена, чтобы обновить записи с новым IP-адресом.

Поэтому я подумал, почему бы не использовать CNAME, чтобы не перезаписывать IP-адрес сервера везде ?! Я мог бы настроить DNS для каждого домена следующим образом:

domainx.com -> CNAME -> myserver.com
domainx.com -> MX -> mail.myserver.com
mail.domainx.com -> CNAME -> myserver.com
www.domainx.com -> CNAME -> myserver.com
ftp.domainx.com -> CNAME -> myserver.com

Но я читал это domainx.com -> CNAME -> myserver.com зло, смотри этот и этот.

Но какие альтернативы мне есть, чтобы избежать повсеместной перезаписи IP-адреса сервера?

Но я читал, что domainx.com -> CNAME -> myserver.com - это зло

CNAME - это не зло. Однако использование CNAMES для домена второго уровня нарушит работу DNS для этих доменов. Вы не можете добавить MX, TXT или какие-либо другие записи на том же уровне, что и запись CNAME. Из rfc1912:

Запись CNAME не может сосуществовать с другими данными. В
другими словами, если suzy.podunk.xx - это псевдоним sue.podunk.xx, вы
также не может иметь запись MX для suzy.podunk.edu, или запись A, или
даже запись в формате TXT. Особенно не пытайтесь комбинировать CNAME и NS
записи

Технически это может сработать, но смешивание CNAMES с другими записями может сбить с толку другие DNS-серверы, что приведет к странным сбоям и станет головной болью администратора.

Хотя CNAME для доменов - зло, существует малоизвестное имя DNAME, которое будет делать в значительной степени именно то, что вы хотите (и предназначено именно для этого). Если также позволит переопределить определенные записи в поддоменах (например, текстовые записи spf и т. Д., Если вам нужно) - см. Это вопрос и мой ответ для примера.

Если у вас много зон и / или записей, вам может быть лучше использовать API для их реализации, чем обрабатывать их все вручную через веб-интерфейсы.

У большинства авторитетных поставщиков DNS есть API. (пример, пример, Вики-страница.)

Почему бы не использовать в BIND отдельный файл зоны?

Вы создаете файл зоны с именем virtual_hosts, и поместите туда записи A, MX и т. д. Тогда в named.conf file вы указываете каждому «простому» домену один и тот же файл зоны.

zone "domainx.com" IN {   
    type master;   
    file "virtual_hosts";   
    allow-update { none; }; 
};

zone "domainy.com" IN {   
    type master;   
    file "virtual_hosts";   
    allow-update { none; }; 
};

zone "domainz.com" IN {   
    type master;   
    file "virtual_hosts";   
    allow-update { none; }; 
};

используйте подстановочный знак (*) для записей, указывающих на один и тот же IP-адрес

Таким образом, test.com является вашим доменом:

$ORIGIN test.com.
*           A   1.1.1.1

В этом случае каждый субдомен будет иметь запись A 1.1.1.1, включая www.