Оддий ҳолатда ҳар бир субдомен учун DNS'да алоҳида ёзув қўшилади: www, shop, mail ва ҳоказо. Wildcard, яъни юлдузчали ёзув эса битта қатор билан зонада аниқ ёзилмаган барча номларга жавоб беради. Масалан, *.example.uz учун A ёзуви қўйилса, abc.example.uz, test.example.uz ва ҳатто хато терилган wwww.example.uz ҳам шу серверга йўналтирилади. Бу жуда қулай восита, аммо унинг қоидаларини ва ён таъсирларини билмасдан ишлатиш сайтга ҳам, почтага ҳам муаммо келтириши мумкин.
Юлдузча қандай мос келади
Wildcard ёзуви зонада аниқ мавжуд бўлмаган номлар учунгина ишлайди. Агар shop.example.uz учун алоҳида ёзув бўлса, унга юлдузча таъсир қилмайди. Муҳим нозик жиҳат шундаки, номда исталган турдаги ёзув бўлса, масалан фақат TXT ёзуви, бу ном "мавжуд" ҳисобланади ва унинг учун A сўрови wildcard жавобини олмайди, балки бўш жавоб қайтади. Шунингдек, юлдузча доменнинг ўзига, яъни example.uz апексига таъсир қилмайди, у учун алоҳида ёзув керак.
example.uz. 3600 IN A 203.0.113.10
*.example.uz. 3600 IN A 203.0.113.10
shop.example.uz. 3600 IN A 203.0.113.20
Кўпчилик билмайдиган яна бир қоида бор: юлдузча фақат бир даража учун эмас, чуқурроқ номлар учун ҳам ишлаши мумкин. a.b.example.uz сўралганда, агар зонада b.example.uz номи умуман бўлмаса, жавоб *.example.uz ёзувидан олинади. Лекин b.example.uz мавжуд бўлса, унинг остидаги номлар учун юқоридаги юлдузча ишламайди ва керак бўлса *.b.example.uz алоҳида ёзилади. Текшириш осон:
dig +short A tasodifiy-nom.example.uz
dig +short A a.b.example.uz
dig +short A shop.example.uz
Қаерда ҳақиқатан фойдали
Энг классик ҳолат кўп мижозли хизматлардир. Масалан, Тошкентдаги стартап кичик дўконлар учун онлайн витрина платформасини ишга туширди ва ҳар бир дўкон dokon-nomi.misol.uz кўринишидаги манзил олади. Ҳар янги мижоз учун DNS ёзуви қўшиш ўрнига, битта wildcard ёзуви барча субдоменларни илова серверига йўналтиради, илова эса сўровдаги Host сарлавҳасига қараб керакли дўконни кўрсатади. Янги дўкон рўйхатдан ўтган заҳоти унинг манзили ишлай бошлайди.
Иккинчи ҳолат ишлаб чиқиш ва тест муҳитлари. Дастурчилар ҳар бир ўзгариш ёки branch учун feature-123.dev.example.uz каби вақтинчалик манзил яратади ва уларни ҳар сафар DNS'га қўшиб ўтирмайди. Бу ҳолда wildcard одатда алоҳида тест субдомени остида, масалан *.dev.example.uz кўринишида қўйилади, асосий зонага эмас.
Веб-серверда ҳам бу номларни қабул қилиш керак. Nginx'да server_name юлдузчани ёки мунтазам ифодани қабул қилади, иккинчиси субдомен номини ўзгарувчига ажратиб олиш имконини беради:
server {
listen 443 ssl;
server_name ~^(?<tenant>[a-z0-9-]+)\.misol\.uz$;
root /var/www/platform/public;
location / {
fastcgi_param TENANT $tenant;
# ...
}
}
Wildcard ёзувининг хавфлари
Биринчи хавф SEO билан боғлиқ. Агар wildcard асосий сайтга йўналтирилса ва сервер ҳар қандай номга бир хил саҳифани қайтарса, istalgan-soz.example.uz кўринишидаги чексиз такрорий саҳифалар пайдо бўлади. Қидирув тизимлари уларни топиб қолса, такрорий контент муаммоси юзага келади. Ечим оддий: номаълум субдоменлар учун сервер 404 қайтариши ёки асосий доменга 301 йўналтириши керак.
Иккинчи хавф ишонч ва фишинг билан боғлиқ. Wildcard бўлса, login-bank.example.uz каби ҳар қандай ном сизнинг серверингизга очилади. Агар иловада фойдаланувчи киритган маълумотни саҳифада акс эттирадиган заифлик бўлса, ҳужумчи ишончли кўринадиган субдомен билан ҳавола тарқатиши мумкин. Учинчи хавф хатоларни яширишдир: хато ёзилган api2.example.uz манзили "домен топилмади" хатосини бермайди, балки нотўғри серверга тушади ва муаммо кеч аниқланади.
Тўртинчи хавф почта ва хизмат ёзувлари билан боғлиқ. Wildcard MX ёзуви мавжуд бўлмаган субдоменларга юборилган хатларни ҳам қабул қилишга уринади ва спам оқимини оширади. Wildcard TXT ёзуви эса SPF ва бошқа текширувларни чалкаштириб юбориши мумкин. Шунинг учун почта билан боғлиқ ёзувларда юлдузчадан қочиш тавсия этилади. Бундан ташқари, *.example.uz CNAME орқали ташқи хизматга йўналтирилган бўлса ва у хизмат ҳисоби ёпилса, исталган субдоменни бошқа одам эгаллаб олиш хавфи пайдо бўлади.
Wildcard SSL сертификати
DNS'даги юлдузча ва SSL сертификатидаги юлдузча алоҳида нарсалар. *.example.uz сертификати фақат бир даражадаги субдоменларни қамрайди: shop.example.uz учун ишлайди, лекин a.b.example.uz учун ҳам, доменнинг ўзи учун ҳам ишламайди, шунинг учун одатда сертификатга иккала ном қўшилади. Let's Encrypt wildcard сертификатни фақат DNS-01 текшируви орқали беради: сиз зонага _acme-challenge номли TXT ёзуви қўйишингиз керак.
certbot certonly --manual --preferred-challenges dns \
-d example.uz -d '*.example.uz'
Қўлда режимда сертификатни янгилаш ҳам қўлда бажарилади, шунинг учун амалда DNS провайдерининг API'си билан ишлайдиган плагин ёки автоматлаштирилган тизим ишлатилади. sayt.uz хостингидаги бепул Let's Encrypt сертификатлари автоматик янгиланади; wildcard сертификат керак бўлса, имкониятни кабинетдан ёки техник ёрдам орқали аниқланг.
Хавфсиз ишлатиш бўйича амалий қоидалар
- Wildcard'ни иложи борича тор жойга қўйинг:
*.example.uzўрнига*.app.example.uzёки*.dev.example.uz. - Муҳим субдоменлар, масалан
www,mailваapiучун доим аниқ ёзув қўшинг. - Веб-сервер номаълум номларга 404 ёки асосий доменга йўналтириш билан жавоб берсин.
- MX ва TXT ёзувларида юлдузчани ишлатманг.
Wildcard ёзувини sayt.uz кабинетидаги DNS бўлимида ном майдонига * ёзиш орқали қўшиш мумкин. Қўшгандан кейин бир нечта тасодифий номни dig билан текшириб, улар кутилган манзилга ва кутилган саҳифага олиб бораётганига ишонч ҳосил қилинг.