{"id":476425,"date":"2026-04-18T09:15:43","date_gmt":"2026-04-18T09:15:43","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=476425"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=476425","title":{"rendered":"\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 Anycast DNS \u0441\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0447\u0435\u0440\u0435\u0437 IaC"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/60f\/c63\/264\/60fc6326429691931d11b9bae935fa4f.png\" width=\"888\" height=\"499\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/60f\/c63\/264\/60fc6326429691931d11b9bae935fa4f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/60f\/c63\/264\/60fc6326429691931d11b9bae935fa4f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>DNS\u00a0\u2014 \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u0430\u044f \u0438 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u043d\u043e\u0433\u0434\u0430 \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442. \u041f\u043e\u0440\u043e\u0439 \u0435\u0451 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043a\u0430\u043a\u00a0\u043d\u0435\u0447\u0442\u043e \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439 \u0440\u0430\u0437\u0443\u043c\u0435\u044e\u0449\u0435\u0435\u0441\u044f, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u043e\u00a0\u043d\u0435\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u00a0\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u0433\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0438\u043b\u0438\u00a0\u0430\u0432\u0430\u0440\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0443\u0448\u0430\u0442 \u0432\u0441\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430\u00a0\u0447\u0430\u0441\u044b.<\/p>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u044f \u0434\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0434\u043e\u00a0\u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430 DNS \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b\u00a0\u2014 \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0451 \u043f\u0440\u043e\u0449\u0435, \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435. \u0412\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u00a0\u0443\u00a0\u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 DNS \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c \u043a\u0430\u043a\u00a0\u043a\u043e\u0434\u043e\u043c.<\/p>\n<h3>\u0412\u0432\u043e\u0434\u043d\u044b\u0435<\/h3>\n<p>\u0427\u0442\u043e\u00a0\u043c\u044b \u0438\u043c\u0435\u0435\u043c:<\/p>\n<ul>\n<li>\n<p>\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 DNS, \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u043d\u0430\u0448\u0438 \u0437\u043e\u043d\u044b \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u00a0\u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0426\u041e\u0414, \u0437\u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0442\u043e\u0447\u0435\u043a \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0438\u043b\u0438\u00a0\u0447\u0435\u0433\u043e\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u0435\u0449\u0435, \u0433\u0434\u0435 \u043d\u0443\u0436\u0435\u043d DNS <\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 DNS, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c forward\u00a0\u2014 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u00a0\u043d\u0438\u0445 \u0437\u043d\u0430\u0442\u044c, \u043d\u043e\u00a0\u043c\u044b \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445 \u0437\u043e\u043d\u0430\u043c\u0438 <\/p>\n<\/li>\n<li>\n<p>\u0432\u043d\u0435\u0448\u043d\u0438\u0435 DNS\u00a0\u2014 \u0445\u043e\u0441\u0442\u0435\u0440\u044b, \u043e\u0431\u043b\u0430\u043a\u0430 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u0433\u0434\u0435 \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043e\u043d\u0430\u043c\u0438, \u043d\u043e\u00a0\u043d\u0435\u00a0\u0438\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 <\/p>\n<\/li>\n<li>\n<p>\u0445\u0430\u043e\u0442\u0438\u0447\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u043e\u043c\u00a0\u2014 \u0447\u0430\u0441\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0447\u0430\u0441\u0442\u044c\u00a0\u2014 \u043d\u0435\u0442, \u0441\u00a0\u0440\u043e\u0441\u0442\u043e\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b DNS \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0441\u044f \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u00a0\u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 DNS, \u043d\u0435\u00a0\u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u0434\u043b\u044f\u00a0\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f <\/p>\n<\/li>\n<li>\n<p>\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 <\/p>\n<\/li>\n<li>\n<p>\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u043c\u0438 \u0437\u043e\u043d\u0430\u043c\u0438 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 forward \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u043e\u043a\u043d\u0435 <\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442\u00a0\u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043a\u0440\u0430\u0445\u0430 \u0432\u0441\u0435\u0433\u043e DNS \u0438\u0437\u2011\u0437\u0430 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 <\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u00a0\u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043c\u044b \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u00a0\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u043d\u043e\u00a0\u0447\u0430\u0441\u0442\u044c \u0441\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0437\u043e\u043d\u0430\u043c\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435\u00a0\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0431\u0435\u0437\u00a0\u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f.<\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043d\u043e\u0432\u043e\u0433\u043e DNS<\/h3>\n<p>\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0437\u043e\u043d \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041c\u0430\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0443 \u0437\u043e\u043d\u00a0\u2014 \u0445\u043e\u0447\u0435\u0442\u0441\u044f\u00a0\u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u0435\u0445\u0430\u043b\u0438 \u0434\u043e\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u0435\u043b\u044c\u0442\u044b. \u0418\u00a0\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0449\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0441\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 DNS.<\/p>\n<h4>Zone transfer<\/h4>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043d\u0430\u00a0master <\/p>\n<\/li>\n<li>\n<p>master \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 NOTIFY \u043d\u0430\u00a0slave<\/p>\n<\/li>\n<li>\n<p>slave \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 AXFR \u0438\u043b\u0438\u00a0IXFR<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0438, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, superslave \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435.<\/p>\n<p>\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0438 \u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u0441\u0435\u0431\u044f, \u043d\u043e\u00a0\u043d\u0430\u043c \u043d\u0435\u00a0\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442\u00a0\u043e\u0434\u043d\u043e\u0433\u043e master \u043d\u0430\u00a0\u0437\u0430\u043f\u0438\u0441\u044c <\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u0438\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445 <\/p>\n<\/li>\n<li>\n<p>\u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435\u00a0\u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u044f\u0442\u0441\u044f \u043d\u0430\u00a0\u0442\u0430\u043a\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e <\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u043b\u0438 \u0441\u0440\u0430\u0437\u0443.<\/p>\n<h4>PowerDNS Authoritative\u00a0\u2014 Database Backend<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u00a0\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u00a0NOTIFY, PowerDNS \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u043e\u043d \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (MySQL, Postgres, MSSQL\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u00a0\u0432\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a). \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0431\u0430\u0437\u0430, \u043f\u0440\u043e\u00a0\u044d\u0442\u043e \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c, \u043d\u043e&#8230;<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 multi\u2011master \u0432\u00a0DNS \u043c\u044b \u043f\u0435\u0440\u0435\u043b\u043e\u0436\u0438\u043b\u0438 \u043d\u0430\u00a0\u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<ul>\n<li>\n<p>\u0441\u0442\u0440\u043e\u0438\u0442\u044c active\u2011active master \u043d\u0430\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0426\u041e\u0414 \u0440\u0430\u0434\u0438 DNS \u0442\u043e\u0447\u043d\u043e \u043d\u0435\u00a0\u0445\u043e\u0447\u0435\u0442\u0441\u044f <\/p>\n<\/li>\n<li>\n<p>\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0438 \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u043e\u0436\u0435 \u043d\u0435\u00a0\u0432\u043d\u0443\u0448\u0430\u044e\u0442 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0437\u043c <\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0446\u0435\u043d\u0438\u0432 \u043e\u0431\u044a\u0435\u043c\u044b \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0442\u043e\u0436\u0435 \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c.<\/p>\n<h4>PowerDNS Authoritative\u00a0\u2014 Database Backend (\u0435\u0449\u0435 \u0440\u0430\u0437)<\/h4>\n<p>\u0412\u0435\u0440\u043d\u0435\u0435, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0431\u0430\u0437. \u0417\u0430\u0442\u043e \u0432\u043e\u0442 \u0441\u0430\u043c\u0430 \u0431\u0430\u0437\u0430 \u043a\u0430\u043a\u00a0\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0437\u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/doc.powerdns.com\/authoritative\/http-api\/index.html\" rel=\"noopener noreferrer nofollow\">API<\/a> \u0434\u043b\u044f\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043e\u043d\u0430\u043c\u0438\u00a0\u2014 \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0433\u0438\u0431\u0447\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0430\u043c\u0438\u043c DNS.<\/p>\n<p>\u041d\u043e\u00a0\u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0437\u043e\u043d \u043d\u0430\u043c \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0442\u044c? \u0410\u00a0\u043d\u0430\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c!<\/p>\n<p>\u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430\u00a0DNS. \u0412\u0435\u0434\u044c \u043c\u044b \u0443\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043e\u043d\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 API, \u0432\u043e\u0442 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u00a0\u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0442\u043e\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 API.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u043e\u0435 \u043d\u0430\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 PowerDNS <\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u043a\u0430\u043a\u00a0\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0443\u0437\u043b\u044b\u00a0\u2014 \u043e\u043d\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u0437\u043d\u0430\u044e\u0442 \u0434\u0440\u0443\u0433 \u043e\u00a0\u0434\u0440\u0443\u0433\u0435 <\/p>\n<\/li>\n<li>\n<p>\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0445 \u0437\u043e\u043d\u0430\u043c\u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 <\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0434\u0440\u0443\u0433 \u043e\u0442\u00a0\u0434\u0440\u0443\u0433\u0430, \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u00a0\u043f\u0440\u0438\u0434\u0430\u0447\u0443. \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u044d\u0442\u043e\u00a0\u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>\u041d\u043e\u00a0\u0442\u0443\u0442 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441\u00a0authoritative DNS, \u0435\u0449\u0435 \u0435\u0441\u0442\u044c recursor.<\/p>\n<h4>PowerDNS Recursor<\/h4>\n<p>\u0420\u0430\u0437 \u0443\u0436 \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c PowerDNS Authoritative, \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043d\u0430\u00a0\u0438\u0445 Recursor. \u0415\u0433\u043e \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438.<\/p>\n<p>\u0423\u00a0\u043d\u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/doc.powerdns.com\/recursor\/http-api\/endpoint-zones.html\" rel=\"noopener noreferrer nofollow\">API<\/a>. \u0412\u043e\u043e\u0431\u0449\u0435 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u00a0authoritative, \u043d\u043e,\u00a0\u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u044b \u0434\u0430\u0436\u0435 \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041f\u0443\u0441\u0442\u044c \u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u0430\u00a0\u0437\u043e\u043d\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e Authoritative.<\/p>\n<details class=\"spoiler\">\n<summary>\u0410 \u0447\u0442\u043e \u0441 dnsdist?<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041c\u044b \u043f\u0440\u043e\u00a0\u043d\u0435\u0433\u043e \u043c\u044b \u043d\u0435\u00a0\u0437\u0430\u0431\u044b\u043b\u0438.<\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u0443\u043c\u0430\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a\u00a0\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u0435\u0440\u0435\u0434 \u0432\u0441\u0435\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043d\u043e\u00a0\u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u043c. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Recursor \u043d\u0430\u043c \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u00a0\u043d\u0430\u0441 \u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430\u00a0\u0445\u043e\u0434\u0443 \u043d\u0430\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e, \u0430\u00a0\u0441\u0430\u043c\u0443 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431\u00a0\u044d\u0442\u043e\u043c\u00a0\u2014 \u0434\u0430\u043b\u0435\u0435.<\/p>\n<\/div>\n<\/details>\n<h4>DNS server<\/h4>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430\u0448 DNS \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437\u00a0pdns\u2011recursor \u0438 pdns\u2011authoritative.<\/p>\n<p>\u041d\u0430\u00a0\u0432\u0445\u043e\u0434\u0435 recursor \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u0430\u043a\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u043a\u0435\u0448, \u0437\u0430\u00a0\u043d\u0438\u043c authoritative\u00a0\u2014 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430\u00a0\u043d\u0430\u0448\u0438 \u0437\u043e\u043d\u044b.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/86d\/39b\/08a\/86d39b08abe670420fdc0c936b291b75.png\" width=\"785\" height=\"379\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/86d\/39b\/08a\/86d39b08abe670420fdc0c936b291b75.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/86d\/39b\/08a\/86d39b08abe670420fdc0c936b291b75.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0443\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0430:<\/p>\n<ul>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u0437\u043e\u043d\u0430 \u044f\u0432\u043d\u043e \u043d\u0435\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432\u00a0forward\u00a0\u2014 \u0437\u0430\u043f\u0440\u043e\u0441 \u0443\u0439\u0434\u0435\u0442 \u0432\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0430\u00a0root hints <\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0438 \u043c\u044b \u0435\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u00a0\u2014 \u043d\u0430\u00a0\u043d\u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 authoritative <\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430, \u043d\u043e\u00a0\u043c\u044b \u0435\u0439 \u043d\u0435\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u00a0\u2014 recursor \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u00a0\u0441\u0430\u043c\u0438\u043c DNS \u0438 \u0441\u0442\u0435\u043a\u043e\u043c \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0438 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c.<\/p>\n<h3>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 IaC<\/h3>\n<h4>Authoritative<\/h4>\n<p>\u0411\u044b\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u0434\u0435\u0438, \u043a\u0430\u043a\u00a0\u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u00a0\u0435\u0433\u043e API, \u0434\u0430\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u00a0reconciliation loop \u0438 \u0432\u043e\u0442 \u044d\u0442\u043e \u0432\u0441\u0451. \u041f\u043e\u0440\u0430\u0437\u043c\u044b\u0441\u043b\u0438\u0432, \u044f\u0432\u043d\u044b\u0445 \u043f\u043b\u044e\u0441\u043e\u0432 \u043e\u0442\u00a0\u0442\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u0438 \u043c\u044b \u0434\u043b\u044f\u00a0\u0441\u0435\u0431\u044f \u043d\u0435\u00a0\u043d\u0430\u0448\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0449\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/octodns\/octodns\" rel=\"noopener noreferrer nofollow\">octodns<\/a> \u0434\u043b\u044f\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043e\u043d\u0430\u043c\u0438 <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.gitlab.com\/topics\/build_your_application\" rel=\"noopener noreferrer nofollow\">Gitlab CI<\/a> \u0434\u043b\u044f\u00a0\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 <\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u043d\u0435\u0435 \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e\u00a0\u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0449\u0435 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0437\u043e\u043d\u0430\u043c\u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c\u00a0\u2014 \u0438 octodns \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0423\u00a0\u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0430\u043c powerdns. \u041f\u043b\u044e\u0441\u00a0\u2014 \u043e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430\u00a0python, \u043a\u043e\u0434 \u0443\u00a0\u043d\u0435\u0433\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0438\u043b\u0438\u00a0\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u043f\u0440\u0438\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u00a0\u0442\u0440\u0443\u0434\u043d\u043e.<\/p>\n<p>\u0412\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043d\u0438\u0436\u0435 \u044f \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e <a href=\"https:\/\/octodns.readthedocs.io\/en\/latest\/configuration.html\" rel=\"noopener noreferrer nofollow\">octodns<\/a> \u0438 <a href=\"https:\/\/docs.gitlab.com\/ci\/\" rel=\"noopener noreferrer nofollow\">gitlab\u2011ci<\/a> \u0445\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443, \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 \u044f \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u00a0\u0431\u0443\u0434\u0443.<\/p>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f octodns \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0YAML, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0446\u0435\u043b\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e anchors\u00a0\u2014 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0443\u00a0\u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u0437\u043e\u043d \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0423\u00a0\u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439:<\/p>\n<pre><code>authoritative\/\u251c\u2500\u2500 dns\u2502\u00a0\u00a0 \u2514\u2500\u2500 intranet\u2502\u00a0\u00a0     \u251c\u2500\u2500 zone-a.internal\u2502\u00a0\u00a0     \u251c\u2500\u2500 zone-b.internal\u2502\u00a0\u00a0     \u2514\u2500\u2500 zone-c.internal\u251c\u2500\u2500 dns-intranet.yaml\u2514\u2500\u2500 .gitlab-ci.yml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 <code>dns-intranet.yaml<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f DNS \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u043a\u00a0API:<\/p>\n<pre><code class=\"yaml\">powerdns_template: &amp;powerdns_template  class: octodns_powerdns.PowerDnsProvider  api_key: env\/POWERDNS_AUTHORITATIVE_API_KEY  scheme: https  port: 443  ssl_verify: trueproviders:  intranet_config:    class: octodns.provider.yaml.YamlProvider    directory: .\/dns\/intranet    enforce_order: false  ns-1-az-1:    &lt;&lt;: *powerdns_template    host: 192.0.2.11  ns-2-az-1:    &lt;&lt;: *powerdns_template    host: 192.0.2.12  ns-1-az-2:    &lt;&lt;: *powerdns_template    host: 192.0.2.21  ns-2-az-2:    &lt;&lt;: *powerdns_template    host: 192.0.2.22  ns-1-az-3:    &lt;&lt;: *powerdns_template    host: 192.0.2.31  ns-2-az-3:    &lt;&lt;: *powerdns_template    host: 192.0.2.32providers_templates:  intranet_ns: &amp;intranet_ns    - ns-1-az-1    - ns-2-az-1    - ns-1-az-2    - ns-2-az-2    - ns-1-az-3    - ns-2-az-3zones:  '*':    sources:      - intranet_config    targets: *intranet_ns<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 <code>dns\/intranet\/<\/code> \u0434\u0435\u0440\u0436\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u043e\u043d \u0432\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"yaml\"># zone-a.internal'':  type: NS  values:    - ns1.zone-a.internal.    - ns2.zone-a.internal.ns1:  ttl: 3600  type: A  value: 198.51.100.10ns2:  ttl: 3600  type: A  value: 198.51.100.20service-1:  ttl: 300  type: A  value: 192.0.2.101service-2:  ttl: 300  type: A  value: 192.0.2.102service-3:  ttl: 120  type: A  value: &amp;svc-3 192.0.2.103service-4:  ttl: 120  type: A  value: &amp;svc-4 192.0.2.104svc-3-4:  ttl: 120  type: A  values:    - *svc-3    - *svc-4<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u00a0pipeline \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f octodns, \u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043c\u043c\u0438\u0442 \u0432 <code>dev<\/code> \u0432\u0435\u0442\u043a\u0443 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u044c\u0442\u0443, \u0430\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 merge \u0432 <code>prod<\/code>:<\/p>\n<pre><code class=\"yaml\"># commit - devdiff_intranet:  stage: diff  script:    - octodns-sync --config-file dns-intranet.yaml# merge - prodapply_intranet:  stage: apply  script:    - octodns-sync --config-file dns-intranet.yaml --doit --force<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 pipeline &#8212; \u043f\u043b\u0430\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0439:<\/p>\n<pre><code class=\"bash\">$ octodns-sync --config-file dns-intranet.yaml --doit --forceINFO    Manager sync:     targets=['ns-1-az-1', 'ns-1-az-2']INFO    YamlProvider[intranet_config] populate:   found 7 records, exists=TrueINFO    PowerDnsProvider[ns-1-az-1] plan: desired=zone-a.internal.INFO    PowerDnsProvider[ns-1-az-1] populate:   found 8 records, exists=TrueINFO    PowerDnsProvider[ns-1-az-1] plan:   Creates=0, Updates=2, Deletes=1, Existing=8, Meta=FalseINFO    PowerDnsProvider[ns-1-az-2] plan: desired=zone-a.internal.INFO    PowerDnsProvider[ns-1-az-2] populate:   found 8 records, exists=TrueINFO    PowerDnsProvider[ns-1-az-2] plan:   Creates=0, Updates=2, Deletes=1, Existing=8, Meta=FalseINFO    Plan********************************************************************************* zone-a.internal.********************************************************************************* ns-1-az-1 (PowerDnsProvider)*   Delete &lt;ARecord A 300, service-2.zone-a.internal., ['192.0.2.102']&gt;*   Update*     &lt;ARecord A 120, service-3.zone-a.internal., ['192.0.2.103']&gt; -&gt;*     &lt;ARecord A 120, service-3.zone-a.internal., ['192.0.2.110']&gt; (intranet_config)*   Update*     &lt;ARecord A 120, svc-3-4.zone-a.internal., ['192.0.2.103', '192.0.2.104']&gt; -&gt;*     &lt;ARecord A 120, svc-3-4.zone-a.internal., ['192.0.2.104', '192.0.2.110']&gt; (intranet_config)*   Summary: Creates=0, Updates=2, Deletes=1, Existing=8, Meta=False* ns-1-az-2 (PowerDnsProvider)*   Delete &lt;ARecord A 300, service-2.zone-a.internal., ['192.0.2.102']&gt;*   Update*     &lt;ARecord A 120, service-3.zone-a.internal., ['192.0.2.103']&gt; -&gt;*     &lt;ARecord A 120, service-3.zone-a.internal., ['192.0.2.110']&gt; (intranet_config)*   Update*     &lt;ARecord A 120, svc-3-4.zone-a.internal., ['192.0.2.103', '192.0.2.104']&gt; -&gt;*     &lt;ARecord A 120, svc-3-4.zone-a.internal., ['192.0.2.104', '192.0.2.110']&gt; (intranet_config)*   Summary: Creates=0, Updates=2, Deletes=1, Existing=8, Meta=False********************************************************************************INFO    PowerDnsProvider[ns-1-az-1] apply: making 3 changes to zone-a.internal.INFO    PowerDnsProvider[ns-1-az-2] apply: making 3 changes to zone-a.internal.INFO    Manager sync:   6 total changes<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u00a0\u043d\u0430\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432\u043e\u00a0\u0432\u0441\u0435\u0445 \u0437\u043e\u043d\u0430\u0445: \u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445, \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445. \u0412\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 merge request, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043d\u0435\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0432\u0435\u0441\u044c DNS \u0440\u0430\u0437\u043e\u043c. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0435\u00a0\u0442\u0430\u043a\u00a0\u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f.<\/p>\n<p>\u041d\u043e\u00a0\u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u0434\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h4>Recursor<\/h4>\n<p>Octodns \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0437\u043e\u043d \u0434\u043b\u044f\u00a0Authoritative, \u043d\u043e\u00a0\u044d\u0442\u043e \u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u00a0Recursor, \u0430\u00a0\u043d\u0430\u043c \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u0438\u0435 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0434\u0430\u00a0\u0438 \u043d\u0430\u00a0\u043d\u0430\u0448\u0438 \u0442\u043e\u0436\u0435.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430\u00a0\u0431\u044b\u043b\u0430 \u0438\u0434\u0435\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440, \u043d\u043e\u00a0\u044d\u0442\u043e \u043d\u0435\u00a0\u043e\u0447\u0435\u043d\u044c \u0431\u044c\u0435\u0442\u0441\u044f \u0441\u00a0\u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043c\u044b \u0432\u0441\u0451\u00a0\u0436\u0435 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438. \u0412\u00a0\u043e\u0431\u0449\u0435\u043c, \u043f\u0440\u043e\u0449\u0435\u00a0\u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0434\u043b\u044f\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f forward \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 (\u0438 recursor \u0432\u043e\u043e\u0431\u0449\u0435)\u00a0\u2014 \u0442\u0430\u043a \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b <strong>pdns\u2011recursor\u2011cli<\/strong>. \u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u044f \u043d\u0435\u00a0\u0433\u043e\u0442\u043e\u0432 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0435\u0451 \u0432\u00a0\u043f\u0430\u0431\u043b\u0438\u043a, \u043d\u043e\u00a0\u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432\u0440\u0435\u043c\u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u043f\u043e\u0437\u0436\u0435. <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 pdns\u2011recursor\u2011cli \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u00a0\u0436\u0435, \u043a\u0430\u043a\u00a0octodns: \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u00a0\u0436\u0435\u043b\u0430\u0435\u043c\u044b\u0439 state \u0438\u0437\u00a0\u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0441\u0432\u0435\u0440\u044f\u0435\u0442 \u0435\u0433\u043e \u0441\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c DNS, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u044b (<code>targets<\/code>), \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f\u00a0\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u00a0API \u0438 \u043f\u0443\u0442\u044c \u043a\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c forward (<code>zone_file<\/code>):<\/p>\n<pre><code class=\"yaml\">zone_file: dns\/recursor\/zones.yamltargets:\u00a0- name: rec-1\u00a0\u00a0\u00a0api_url: https:\/\/ns-1.az-1.internal\/rec\/\u00a0\u00a0\u00a0api_key: !env POWERDNS_RECURSOR_API_KEY\u00a0\u00a0\u00a0api_ssl_verify: true\u00a0- name: rec-2\u00a0\u00a0\u00a0api_url: https:\/\/ns-1.az-2.internal\/rec\/\u00a0\u00a0\u00a0api_key: !env POWERDNS_RECURSOR_API_KEY\u00a0\u00a0\u00a0api_ssl_verify: true\u00a0- name: rec-3\u00a0\u00a0\u00a0api_url: https:\/\/ns-1.az-3.internal\/rec\/\u00a0\u00a0\u00a0api_key: !env POWERDNS_RECURSOR_API_KEY\u00a0\u00a0\u00a0api_ssl_verify: true<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 <code>zone_file<\/code> \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u0430\u043a\u00a0\u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u044c \u0437\u043e\u043d\u0443 (\u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0438\u043b\u0438\u00a0\u043d\u0435\u0442) \u0438 \u043a\u0430\u043a\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"yaml\">aliases:  internal_dns: &amp;internal_dns    - 192.0.2.11:53    - 192.0.2.12:53  remote_dns: &amp;remote_dns    - 198.51.100.10:53    - 203.0.113.10:53  testing_dns: &amp;testing_dns    - 192.0.2.201:53zones:  - name: intranet.internal.    recursion_desired: false    servers: *internal_dns  - name: site-a.remote.tld.    recursion_desired: false    servers: *remote_dns  - name: labs.example.    recursion_desired: true    servers: *testing_dns<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e pipeline \u0434\u043b\u044f\u00a0Authoritative, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0435\u043b\u044c\u0442\u044b \u043f\u0440\u0438\u00a0\u043a\u043e\u043c\u043c\u0438\u0442\u0435 \u0432 <code>dev<\/code>:<\/p>\n<pre><code class=\"bash\">$ pdns-recursor-cli state diffRetrieving state- [+] Retrieved state from rec-1- [+] Retrieved state from rec-2- [+] Retrieved state from rec-3Diff with rec-1:  - add: []  \u00a0 delete: []  \u00a0 update:  \u00a0\u00a0\u00a0intranet.internal.:  \u00a0\u00a0\u00a0- '[servers] 192.0.2.21:53, 192.0.2.22:53 -&gt; 192.0.2.11:53, 192.0.2.12:53'    Diff with rec-2:  - add: []  \u00a0 delete: []  \u00a0 update:  \u00a0\u00a0\u00a0intranet.internal.:  \u00a0\u00a0\u00a0- '[servers] 192.0.2.21:53, 192.0.2.22:53 -&gt; 192.0.2.11:53, 192.0.2.12:53'    Diff with rec-3:  - add: []  \u00a0 delete: []  \u00a0 update:  \u00a0\u00a0\u00a0intranet.internal.:  \u00a0\u00a0\u00a0- '[servers] 192.0.2.21:53, 192.0.2.22:53 -&gt; 192.0.2.11:53, 192.0.2.12:53'<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0432 <code>prod<\/code>:<\/p>\n<pre><code class=\"bash\">$ pdns-recursor-cli state syncRetrieving state- [+] Retrieved state from rec-1  - [+] Retrieved state from rec-2  - [+] Retrieved state from rec-3  Syncing state on rec-1  - [+] Synced on rec-1  Syncing state on rec-2  - [+] Synced on rec-2  Syncing state on rec-3  - [+] Synced on rec-3<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e\u0442\u00a0\u0436\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043a\u0435\u0448\u0435\u043c:<\/p>\n<pre><code class=\"bash\">$ pdns-recursor-cli cache flush intranet.internal.Flushing caches for zone \"intranet.internal.\", recursive: False  - [+] Flushed on rec-1  - [+] Flushed on rec-2  - [+] Flushed on rec-3  $ pdns-recursor-cli cache flush .Flushing caches for zone \".\", recursive: True  - [+] Flushed on rec-1  - [+] Flushed on rec-2  - [+] Flushed on rec-3<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c DNS \u043a\u0435\u0448 \u043d\u0430\u00a0\u0432\u0441\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u043e\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043f\u0438\u0441\u044f\u043c \u0438\u043b\u0438\u00a0\u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0435\u0441\u044c.<\/p>\n<p>\u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>\u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u00a0\u2014 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 CI\/CD <\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0438 \u0433\u0440\u0443\u0431\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a <\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0435\u043b\u044c\u0442\u044b \u0441\u00a0recursor, authoritative \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 DNS <\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0432\u043e\u0434 \u043f\u043b\u0430\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 <\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043f\u043e\u0441\u043b\u0435 merge<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a5e\/141\/cf6\/a5e141cf69efd69199b9ce4ea3c9f5c2.png\" alt=\"Workflow\" title=\"Workflow\" width=\"830\" height=\"331\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a5e\/141\/cf6\/a5e141cf69efd69199b9ce4ea3c9f5c2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a5e\/141\/cf6\/a5e141cf69efd69199b9ce4ea3c9f5c2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043d\u0430\u0434 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c\u044e \u0438 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u043e\u0439.<\/p>\n<h4>BGP Anycast<\/h4>\n<p>\u0422\u0443\u0442 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u00a0\u0432\u044b\u0431\u043e\u0440\u044b \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043c\u044b \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. BGP \u0434\u043b\u044f\u00a0\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 HA \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0432\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445 \u0438 \u043d\u0430\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c. \u0418 \u0432\u043e\u043e\u0431\u0449\u0435 \u044f\u00a0\u0431\u044b\u0432\u0448\u0438\u0439 \u0441\u0435\u0442\u0435\u0432\u0438\u043a, \u044f \u043b\u044e\u0431\u043b\u044e BGP (\u043d\u043e \u0434\u0435\u043b\u043e \u043d\u0435\u00a0\u0432\u00a0\u044d\u0442\u043e\u043c!).<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0430\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430\u00a0\u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e ECMP \u0433\u0440\u0443\u043f\u043f \u043d\u0430\u00a0\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043b\u0438\u00a0\u0434\u0440\u043e\u043f \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430\u00a0firewall \u0438\u0437\u2011\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438 \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435\u00a0\u2014 \u043d\u043e\u00a0\u043c\u044b \u043f\u0440\u043e\u00a0\u043d\u0438\u0445 \u043f\u043e\u043c\u043d\u0438\u043c, \u043d\u043e\u00a0\u0441\u0435\u0439\u0447\u0430\u0441 \u044f \u043d\u0435\u00a0\u0431\u0443\u0434\u0443 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438.<\/p>\n<p>\u0421\u0443\u0442\u044c Anycast \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u00a0\u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 (\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432) \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u0442\u0440\u0430\u0444\u0438\u043a, \u0441\u043e \u0432\u0441\u0435\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0442\u0438. \u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0441\u0442\u0440\u043e\u044f\u0442 BGP \u043f\u0438\u0440\u0438\u043d\u0433 \u0441\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c\u0438 (\u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0438\u043b\u0438\u00a0route\u2011reflector, \u0438\u043b\u0438\u00a0\u0447\u0435\u043c\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u0435\u0449\u0435) \u0432\u00a0\u0441\u0432\u043e\u0435\u0439 \u0437\u043e\u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f BGP Anycast\u00a0\u2014 Google DNS, \u043e\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d (\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435).<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f72\/9e3\/4d8\/f729e34d8bca6be0658cea0e0b34abd6.png\" width=\"853\" height=\"802\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f72\/9e3\/4d8\/f729e34d8bca6be0658cea0e0b34abd6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f72\/9e3\/4d8\/f729e34d8bca6be0658cea0e0b34abd6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u00a0\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u043c \u043a\u00a0\u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u043a\u0430\u0437\u0430\u00a0\u2014 \u0442\u0440\u0430\u0444\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u00a0\u0441\u0447\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0410\u00a0\u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043e\u043d\u0443\u0441\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c ECMP \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 DNS \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435\u00a0\u0436\u0435 \u0430\u0434\u0440\u0435\u0441\u0430, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442\u00a0\u043b\u043e\u043a\u0430\u0446\u0438\u0438.<\/p>\n<h4>\u041a\u0430\u043a\u00a0\u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443\u00a0\u043d\u0430\u0441 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b BGP \u0441\u0435\u0441\u0441\u0438\u0438 \u043d\u0430\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u0445, \u043e\u043d\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043d\u0430\u0448\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f\u00a0DNS \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0442 AS path prepend (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e).<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0c8\/7ad\/a7b\/0c87ada7bcd420b298e7ff5cd36398c6.png\" width=\"452\" height=\"478\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/0c8\/7ad\/a7b\/0c87ada7bcd420b298e7ff5cd36398c6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0c8\/7ad\/a7b\/0c87ada7bcd420b298e7ff5cd36398c6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<div class=\"floating-image\">\n<p>\u041d\u0430\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0435 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 (<strong>ns-1<\/strong>\u00a0\u0438 <strong>ns-2<\/strong>) \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f anycast \u0430\u0434\u0440\u0435\u0441\u0430 <code>198.51.100.10<\/code> \u0438 <code>198.51.100.20<\/code>, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u043d\u0430\u00a0loopback \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (\u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f netplan):<\/p>\n<\/div>\n<pre><code class=\"yaml\"># \/etc\/netplan\/0_loopback.yamlnetwork:  version: 2  renderer: networkd  ethernets:    lo:      addresses:        - 127.0.0.1\/8        - ::1\/128        # anycast-svc-dns-1        - 198.51.100.10\/32        # anycast-svc-dns-2        - 198.51.100.20\/32<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u0441\u0442\u044b\u043a\u043e\u0432\u043a\u0438 \u043f\u043e\u00a0BGP \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/bird.network.cz\/\" rel=\"noopener noreferrer nofollow\">bird<\/a>, \u0432\u00a0\u043d\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0430, \u0430\u043d\u043e\u043d\u0441\u044b \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u044b. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043c\u044b \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u00a0\u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c \u0434\u043b\u044f\u00a0<strong>ns-1<\/strong>\u00a0\u0438 <strong>ns-2,<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f path prepend. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, <strong>ns-1<\/strong>\u00a0\u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u043c \u0434\u043b\u044f\u00a0\u0430\u0434\u0440\u0435\u0441\u0430 <code>198.51.100.10<\/code>, \u0430\u00a0<strong>ns-2<\/strong>\u00a0\u2014 \u0434\u043b\u044f\u00a0\u0430\u0434\u0440\u0435\u0441\u0430 <code>198.51.100.20<\/code>.<\/p>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f bird \u0434\u043b\u044f\u00a0<strong>ns-1<\/strong>:<\/p>\n<pre><code># ns-1log syslog all;router id 192.0.2.11;protocol device {}protocol direct {    interface \"lo\";}protocol kernel {        import all;        export all;}protocol bgp {    local as 65501;    neighbor 203.0.113.1 as 65502;    neighbor 203.0.113.2 as 65502;    keepalive time 3;    hold time 9;    import none;    export filter {        if net = 198.51.100.10\/32 then accept;        if net = 198.51.100.20\/32 then {            bgp_path.prepend(65501);        } accept;        reject;    };}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u0434\u043b\u044f\u00a0<strong>ns-2<\/strong>:<\/p>\n<pre><code># ns-2log syslog all;router id 192.0.2.12;protocol device {}protocol direct {    interface \"lo\";}protocol kernel {        import all;        export all;}protocol bgp {    local as 65501;    neighbor 203.0.113.1 as 65502;    neighbor 203.0.113.2 as 65502;    keepalive time 3;    hold time 9;    import none;    export filter {        if net = 198.51.100.20\/32 then accept;        if net = 198.51.100.10\/32 then {            bgp_path.prepend(65501);        } accept;        reject;    };}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c <strong>connected route<\/strong> \u0438\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 <code>lo<\/code>, \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u043c \u043f\u0440\u0438\u0435\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432 \u043e\u0442\u00a0\u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u0438 \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u043c \u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432\u00a0<code>filter<\/code>. \u0414\u043b\u044f\u00a0\u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u043c\u0443 \u0432\u00a0<strong>AS_PATH<\/strong> \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0439 AS (prepend).<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e \u0432\u044b\u0431\u043e\u0440 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0432 BGP<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0412\u00a0BGP \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u043e\u043c \u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438, AS path prepend\u00a0\u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0438\u0437\u00a0\u043d\u0438\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e <a href=\"https:\/\/www.cisco.com\/c\/en\/us\/support\/docs\/ip\/border-gateway-protocol-bgp\/13753-25.html\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u043c\u0443<\/a> \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432\u00a0Cisco.<\/p>\n<\/div>\n<\/details>\n<p>\u042d\u0442\u043e\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448 DNS \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0435\u0433\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u043a\u0440\u044b\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c DR \u043f\u043b\u0430\u043d. \u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<h3>\u041e\u00a0\u0447\u0435\u043c \u044f \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b<\/h3>\n<p><em>\u0418 \u043e\u00a0\u0447\u0435\u043c \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435.<\/em><\/p>\n<p>\u0412\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043d\u0435\u00a0\u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u043b \u0432\u0441\u0435 \u043c\u0435\u043b\u043e\u0447\u0438 \u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442\u00a0\u0431\u044b\u0442\u044c, \u0432\u0441\u0451\u00a0\u0436\u0435 \u0446\u0435\u043b\u044c\u044e\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439. \u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0443\u00a0\u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u043d\u0430\u044f \u0438 \u0432\u0435\u0437\u0434\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041d\u043e\u00a0\u0445\u043e\u0447\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0432\u0430\u0436\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043d\u0435\u0440\u0432\u044b \u0438 \u043c\u0438\u043d\u0443\u0442\u044b \u043f\u0440\u043e\u0441\u0442\u043e\u044f, \u043d\u0435\u00a0\u0432\u0434\u0430\u0432\u0430\u044f\u0441\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0432\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.<\/p>\n<p><strong>\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u0449\u0438\u0442\u0430 API<\/strong><\/p>\n<p>\u0412\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u044f \u043d\u0435\u00a0\u0432\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0432\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 TLS, \u0432\u044b\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u00a0API. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0432\u00a0\u043f\u0440\u043e\u0434\u0435 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u041f\u0435\u0440\u0435\u0434 API \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c nginx, traefik \u0438\u043b\u0438\u00a0\u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p><strong>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 (\u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c)<\/strong><\/p>\n<p>\u041d\u0430\u00a0\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435 \u0431\u0435\u0437\u00a0\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0438\u043a\u0443\u0434\u0430, \u0442\u0435\u043c \u043d\u0435\u00a0\u043c\u0435\u043d\u0435\u0435, \u0437\u0434\u0435\u0441\u044c \u044d\u0442\u043e \u043a\u0440\u0442\u0438\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e. \u041e\u0448\u0438\u0431\u043a\u0438 \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 DNS \u043c\u043e\u0433\u0443\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c ansible \u0438 gitlab \u0434\u043b\u044f\u00a0\u0440\u0430\u0441\u043a\u0430\u0442\u043a\u0438 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, BGP), \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438, \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0442\u043a\u0430\u0442 \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435\u00a0\u043f\u043e\u00a0\u043f\u043b\u0430\u043d\u0443.<\/p>\n<p><strong>Liveness probe<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 DNS \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0430\u00a0\u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f\u00a0\u2014 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437\u00a0\u043f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0448\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043e\u0442\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u00a0\u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u043c\u0443\u2011\u0442\u043e \u0445\u0432\u0430\u0442\u0438\u0442 systemd \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 bird \u043e\u0442\u00a0pdns, \u0430\u00a0\u043a\u043e\u043c\u0443\u2011\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0430\u043d\u043e\u043d\u0441\u043e\u0432 BGP \u043f\u0440\u0438\u00a0\u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/alice-lg\/birdwatcher\" rel=\"noopener noreferrer nofollow\">birdwatcher<\/a>. \u041c\u044b \u0432\u043d\u0435\u0434\u0440\u044f\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u043d\u0433\u0430 \u0441\u0432\u043e\u0438\u0445 \u0437\u043e\u043d \u0438 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u0438\u0434\u0435\u0442 \u043d\u0435\u00a0\u0442\u0430\u043a.<\/p>\n<p><strong>\u041b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u0438\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442, \u0447\u0435\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0431\u0440\u0430\u0442\u044c \u0430\u043d\u043e\u043d\u0441\u044b<\/strong><\/p>\n<p>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 drain \u043f\u0440\u0438\u00a0\u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u00a0\u2014 \u044d\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u043f\u043e\u043a\u0430 \u044d\u0442\u043e \u043d\u0435\u00a0\u0440\u0435\u0448\u0430\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 DNS \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0432 2021\u00a0\u0433\u043e\u0434\u0443 \u0432\u00a0\u044d\u0442\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u043b\u0430\u0441\u044c. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u0436\u0430\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u043a\u043e\u0439, \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 less\u2011specific \u043a\u0430\u043a\u00a0\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0438\u043b\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0442\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432\u043d\u0435 anycast\u00a0\u2014 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435\u043b\u0435\u0439 \u043c\u043d\u043e\u0433\u043e, \u0433\u043b\u0430\u0432\u043d\u043e\u0435\u00a0\u2014 \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0443\u00a0\u0432\u0430\u0441\u00a0\u0431\u044b\u043b.<\/p>\n<h3>\u0418\u0442\u043e\u0433\u0438<\/h3>\n<p>\u042d\u0442\u043e\u00a0\u0431\u044b\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0438 \u044f \u0434\u043e\u0432\u043e\u043b\u0435\u043d \u0442\u0435\u043c, \u043a\u0430\u043a\u00a0\u0432\u0441\u0451 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430 \u043d\u0430\u00a0\u043d\u043e\u0432\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043d\u0430\u043c \u0441\u0442\u0430\u043b\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0436\u0438\u0442\u044c: \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0431\u043e\u044f\u0442\u0441\u044f \u0442\u0440\u043e\u0433\u0430\u0442\u044c DNS, \u0432\u0441\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0438\u00a0\u2014 \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e, \u0430\u00a0\u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0441\u0430\u043c DNS \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0442\u0440\u0443\u0434\u043d\u0435\u0435. \u041d\u043e\u00a0\u0432\u0441\u0451 \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e.<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430\u00a0\u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1024930\/\">https:\/\/habr.com\/ru\/articles\/1024930\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DNS\u00a0\u2014 \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u0430\u044f \u0438 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u043d\u043e\u0433\u0434\u0430 \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442. \u041f\u043e\u0440\u043e\u0439 \u0435\u0451 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043a\u0430\u043a\u00a0\u043d\u0435\u0447\u0442\u043e \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439 \u0440\u0430\u0437\u0443\u043c\u0435\u044e\u0449\u0435\u0435\u0441\u044f, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u043e\u00a0\u043d\u0435\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u00a0\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u0433\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0438\u043b\u0438\u00a0\u0430\u0432\u0430\u0440\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0443\u0448\u0430\u0442 \u0432\u0441\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430\u00a0\u0447\u0430\u0441\u044b.\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u044f \u0434\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0434\u043e\u00a0\u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430 DNS \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b\u00a0\u2014 \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0451 \u043f\u0440\u043e\u0449\u0435, \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435. \u0412\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u00a0\u0443\u00a0\u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 DNS \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c \u043a\u0430\u043a\u00a0\u043a\u043e\u0434\u043e\u043c.\u0412\u0432\u043e\u0434\u043d\u044b\u0435\u0427\u0442\u043e\u00a0\u043c\u044b \u0438\u043c\u0435\u0435\u043c:\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 DNS, \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u043d\u0430\u0448\u0438 \u0437\u043e\u043d\u044b \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u00a0\u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0426\u041e\u0414, \u0437\u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0442\u043e\u0447\u0435\u043a \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0438\u043b\u0438\u00a0\u0447\u0435\u0433\u043e\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u0435\u0449\u0435, \u0433\u0434\u0435 \u043d\u0443\u0436\u0435\u043d DNS \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 DNS, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c forward\u00a0\u2014 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u00a0\u043d\u0438\u0445 \u0437\u043d\u0430\u0442\u044c, \u043d\u043e\u00a0\u043c\u044b \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445 \u0437\u043e\u043d\u0430\u043c\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 DNS\u00a0\u2014 \u0445\u043e\u0441\u0442\u0435\u0440\u044b, \u043e\u0431\u043b\u0430\u043a\u0430 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u0433\u0434\u0435 \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043e\u043d\u0430\u043c\u0438, \u043d\u043e\u00a0\u043d\u0435\u00a0\u0438\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u043e\u043c\u00a0\u2014 \u0447\u0430\u0441\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0447\u0430\u0441\u0442\u044c\u00a0\u2014 \u043d\u0435\u0442, \u0441\u00a0\u0440\u043e\u0441\u0442\u043e\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b DNS \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0441\u044f \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0427\u0442\u043e\u00a0\u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c:\u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 DNS, \u043d\u0435\u00a0\u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u0434\u043b\u044f\u00a0\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u043c\u0438 \u0437\u043e\u043d\u0430\u043c\u0438 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 forward \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442\u00a0\u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043a\u0440\u0430\u0445\u0430 \u0432\u0441\u0435\u0433\u043e DNS \u0438\u0437\u2011\u0437\u0430 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0412\u00a0\u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043c\u044b \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u00a0\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u043d\u043e\u00a0\u0447\u0430\u0441\u0442\u044c \u0441\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0437\u043e\u043d\u0430\u043c\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435\u00a0\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0431\u0435\u0437\u00a0\u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f.\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043d\u043e\u0432\u043e\u0433\u043e DNS\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0437\u043e\u043d \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041c\u0430\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0443 \u0437\u043e\u043d\u00a0\u2014 \u0445\u043e\u0447\u0435\u0442\u0441\u044f\u00a0\u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u0435\u0445\u0430\u043b\u0438 \u0434\u043e\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u0435\u043b\u044c\u0442\u044b. \u0418\u00a0\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0449\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0441\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 DNS.Zone transfer\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438:\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043d\u0430\u00a0master master \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 NOTIFY \u043d\u0430\u00a0slaveslave \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 AXFR \u0438\u043b\u0438\u00a0IXFR\u0415\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0438, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, superslave \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435.\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0438 \u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u0441\u0435\u0431\u044f, \u043d\u043e\u00a0\u043d\u0430\u043c \u043d\u0435\u00a0\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f:\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442\u00a0\u043e\u0434\u043d\u043e\u0433\u043e master \u043d\u0430\u00a0\u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u0438\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435\u00a0\u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u044f\u0442\u0441\u044f \u043d\u0430\u00a0\u0442\u0430\u043a\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u043b\u0438 \u0441\u0440\u0430\u0437\u0443.PowerDNS Authoritative\u00a0\u2014 Database Backend\u0415\u0441\u043b\u0438 \u043d\u0435\u00a0\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u00a0NOTIFY, PowerDNS \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u043e\u043d \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (MySQL, Postgres, MSSQL\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u00a0\u0432\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a). \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0431\u0430\u0437\u0430, \u043f\u0440\u043e\u00a0\u044d\u0442\u043e \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c, \u043d\u043e&#8230;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 multi\u2011master \u0432\u00a0DNS \u043c\u044b \u043f\u0435\u0440\u0435\u043b\u043e\u0436\u0438\u043b\u0438 \u043d\u0430\u00a0\u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445:\u0441\u0442\u0440\u043e\u0438\u0442\u044c active\u2011active master \u043d\u0430\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0426\u041e\u0414 \u0440\u0430\u0434\u0438 DNS \u0442\u043e\u0447\u043d\u043e \u043d\u0435\u00a0\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0438 \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u043e\u0436\u0435 \u043d\u0435\u00a0\u0432\u043d\u0443\u0448\u0430\u044e\u0442 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0437\u043c \u041e\u0446\u0435\u043d\u0438\u0432 \u043e\u0431\u044a\u0435\u043c\u044b \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0442\u043e\u0436\u0435 \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c.PowerDNS Authoritative\u00a0\u2014 Database Backend (\u0435\u0449\u0435 \u0440\u0430\u0437)\u0412\u0435\u0440\u043d\u0435\u0435, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0431\u0430\u0437. \u0417\u0430\u0442\u043e \u0432\u043e\u0442 \u0441\u0430\u043c\u0430 \u0431\u0430\u0437\u0430 \u043a\u0430\u043a\u00a0\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0437\u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c API \u0434\u043b\u044f\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043e\u043d\u0430\u043c\u0438\u00a0\u2014 \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0433\u0438\u0431\u0447\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0430\u043c\u0438\u043c DNS.\u041d\u043e\u00a0\u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0437\u043e\u043d \u043d\u0430\u043c \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0442\u044c? \u0410\u00a0\u043d\u0430\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c!\u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430\u00a0DNS. \u0412\u0435\u0434\u044c \u043c\u044b \u0443\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043e\u043d\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 API, \u0432\u043e\u0442 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u00a0\u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0442\u043e\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 API.\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u043e\u0435 \u043d\u0430\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 PowerDNS \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u043a\u0430\u043a\u00a0\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0443\u0437\u043b\u044b\u00a0\u2014 \u043e\u043d\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u0437\u043d\u0430\u044e\u0442 \u0434\u0440\u0443\u0433 \u043e\u00a0\u0434\u0440\u0443\u0433\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0445 \u0437\u043e\u043d\u0430\u043c\u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0422\u0430\u043a \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0434\u0440\u0443\u0433 \u043e\u0442\u00a0\u0434\u0440\u0443\u0433\u0430, \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u00a0\u043f\u0440\u0438\u0434\u0430\u0447\u0443. \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u044d\u0442\u043e\u00a0\u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e.\u041d\u043e\u00a0\u0442\u0443\u0442 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441\u00a0authoritative DNS, \u0435\u0449\u0435 \u0435\u0441\u0442\u044c recursor.PowerDNS Recursor\u0420\u0430\u0437 \u0443\u0436 \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c PowerDNS Authoritative, \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043d\u0430\u00a0\u0438\u0445 Recursor. \u0415\u0433\u043e \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438.\u0423\u00a0\u043d\u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 API. \u0412\u043e\u043e\u0431\u0449\u0435 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u00a0authoritative, \u043d\u043e,\u00a0\u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u044b \u0434\u0430\u0436\u0435 \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041f\u0443\u0441\u0442\u044c \u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u0430\u00a0\u0437\u043e\u043d\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e Authoritative.\u0410 \u0447\u0442\u043e \u0441 dnsdist?\u041c\u044b \u043f\u0440\u043e\u00a0\u043d\u0435\u0433\u043e \u043c\u044b \u043d\u0435\u00a0\u0437\u0430\u0431\u044b\u043b\u0438.\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u0443\u043c\u0430\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a\u00a0\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u0435\u0440\u0435\u0434 \u0432\u0441\u0435\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043d\u043e\u00a0\u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u043c. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Recursor \u043d\u0430\u043c \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u00a0\u043d\u0430\u0441 \u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430\u00a0\u0445\u043e\u0434\u0443 \u043d\u0430\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e, \u0430\u00a0\u0441\u0430\u043c\u0443 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431\u00a0\u044d\u0442\u043e\u043c\u00a0\u2014 \u0434\u0430\u043b\u0435\u0435.DNS server\u0418\u0442\u0430\u043a, \u043d\u0430\u0448 DNS \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437\u00a0pdns\u2011recursor \u0438 pdns\u2011authoritative.\u041d\u0430\u00a0\u0432\u0445\u043e\u0434\u0435 recursor \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u0430\u043a\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u043a\u0435\u0448, \u0437\u0430\u00a0\u043d\u0438\u043c authoritative\u00a0\u2014 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430\u00a0\u043d\u0430\u0448\u0438 \u0437\u043e\u043d\u044b.\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0443\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0430:\u0435\u0441\u043b\u0438 \u0437\u043e\u043d\u0430 \u044f\u0432\u043d\u043e \u043d\u0435\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432\u00a0forward\u00a0\u2014 \u0437\u0430\u043f\u0440\u043e\u0441 \u0443\u0439\u0434\u0435\u0442 \u0432\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0430\u00a0root hints \u0435\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0438 \u043c\u044b \u0435\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u00a0\u2014 \u043d\u0430\u00a0\u043d\u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 authoritative \u0435\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430, \u043d\u043e\u00a0\u043c\u044b \u0435\u0439 \u043d\u0435\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u00a0\u2014 recursor \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u0421\u00a0\u0441\u0430\u043c\u0438\u043c DNS \u0438 \u0441\u0442\u0435\u043a\u043e\u043c \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0438 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c.\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 IaCAuthoritative\u0411\u044b\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u0434\u0435\u0438, \u043a\u0430\u043a\u00a0\u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u00a0\u0435\u0433\u043e API, \u0434\u0430\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u00a0reconciliation loop \u0438 \u0432\u043e\u0442 \u044d\u0442\u043e \u0432\u0441\u0451. \u041f\u043e\u0440\u0430\u0437\u043c\u044b\u0441\u043b\u0438\u0432, \u044f\u0432\u043d\u044b\u0445 \u043f\u043b\u044e\u0441\u043e\u0432 \u043e\u0442\u00a0\u0442\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u0438 \u043c\u044b \u0434\u043b\u044f\u00a0\u0441\u0435\u0431\u044f \u043d\u0435\u00a0\u043d\u0430\u0448\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0449\u0435:octodns \u0434\u043b\u044f\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043e\u043d\u0430\u043c\u0438 Gitlab CI \u0434\u043b\u044f\u00a0\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0420\u0430\u043d\u0435\u0435 \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e\u00a0\u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0449\u0435 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0437\u043e\u043d\u0430\u043c\u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c\u00a0\u2014 \u0438 octodns \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0423\u00a0\u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0430\u043c powerdns. \u041f\u043b\u044e\u0441\u00a0\u2014 \u043e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430\u00a0python, \u043a\u043e\u0434 \u0443\u00a0\u043d\u0435\u0433\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0438\u043b\u0438\u00a0\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u043f\u0440\u0438\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u00a0\u0442\u0440\u0443\u0434\u043d\u043e.\u0412\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043d\u0438\u0436\u0435 \u044f \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e octodns \u0438 gitlab\u2011ci \u0445\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443, \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 \u044f \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u00a0\u0431\u0443\u0434\u0443.\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f octodns \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0YAML, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0446\u0435\u043b\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e anchors\u00a0\u2014 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0443\u00a0\u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u0437\u043e\u043d \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.\u0423\u00a0\u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439:authoritative\/\u251c\u2500\u2500 dns\u2502\u00a0\u00a0 \u2514\u2500\u2500 intranet\u2502\u00a0\u00a0     \u251c\u2500\u2500 zone-a.internal\u2502\u00a0\u00a0     \u251c\u2500\u2500 zone-b.internal\u2502\u00a0\u00a0     \u2514\u2500\u2500 zone-c.internal\u251c\u2500\u2500 dns-intranet.yaml\u2514\u2500\u2500 .gitlab-ci.yml\u0412 dns-intranet.yaml \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f DNS \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u043a\u00a0API:powerdns_template: &amp;powerdns_template  class: octodns_powerdns.PowerDnsProvider  api_key: env\/POWERDNS_AUTHORITATIVE_API_KEY  scheme: https  port: 443  ssl_verify: trueproviders:  intranet_config:    class: octodns.provider.yaml.YamlProvider    directory: .\/dns\/intranet    enforce_order: false  ns-1-az-1:    &lt;&lt;: *powerdns_template    host: 192.0.2.11  ns-2-az-1:    &lt;&lt;: *powerdns_template    host: 192.0.2.12  ns-1-az-2:    &lt;&lt;: *powerdns_template    host: 192.0.2.21  ns-2-az-2:    &lt;&lt;: *powerdns_template    host: 192.0.2.22  ns-1-az-3:    &lt;&lt;: *powerdns_template    host: 192.0.2.31  ns-2-az-3:    &lt;&lt;: *powerdns_template    host: 192.0.2.32providers_templates:  intranet_ns: &amp;intranet_ns    &#8212; ns-1-az-1    &#8212; ns-2-az-1    &#8212; ns-1-az-2    &#8212; ns-2-az-2    &#8212; ns-1-az-3    &#8212; ns-2-az-3zones:  &#8216;*&#8217;:    sources:      &#8212; intranet_config    targets: *intranet_ns\u0412 dns\/intranet\/ \u0434\u0435\u0440\u0436\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u043e\u043d \u0432\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:# zone-a.internal&#187;:  type: NS  values:    &#8212; ns1.zone-a.internal.    &#8212; ns2.zone-a.internal.ns1:  ttl: 3600  type: A  value: 198.51.100.10ns2:  ttl: 3600  type: A  value: 198.51.100.20service-1:  ttl: 300  type: A  value: 192.0.2.101service-2:  ttl: 300  type: A  value: 192.0.2.102service-3:  ttl: 120  type: A  value: &amp;svc-3 192.0.2.103service-4:  ttl: 120  type: A  value: &amp;svc-4 192.0.2.104svc-3-4:  ttl: 120  type: A  values:    &#8212; *svc-3    &#8212; *svc-4\u0412\u00a0pipeline \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f octodns, \u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043c\u043c\u0438\u0442 \u0432 dev \u0432\u0435\u0442\u043a\u0443 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u044c\u0442\u0443, \u0430\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 merge \u0432 prod:# commit &#8212; devdiff_intranet:  stage: diff  script:    &#8212; octodns-sync &#8212;config-file dns-intranet.yaml# merge &#8212; prodapply_intranet:  stage: apply  script:    &#8212; octodns-sync &#8212;config-file dns-intranet.yaml &#8212;doit &#8212;force\u0412 pipeline &#8212; \u043f\u043b\u0430\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0439:$ octodns-sync &#8212;config-file dns-intranet.yaml &#8212;doit &#8212;forceINFO    Manager sync:     targets=[&#8216;ns-1-az-1&#8217;, &#8216;ns-1-az-2&#8217;]INFO    YamlProvider[intranet_config] populate:   found 7 records, exists=TrueINFO    PowerDnsProvider[ns-1-az-1] plan: desired=zone-a.internal.INFO    PowerDnsProvider[ns-1-az-1] populate:   found 8 records, exists=TrueINFO    PowerDnsProvider[ns-1-az-1] plan:   Creates=0, Updates=2, Deletes=1, Existing=8, Meta=FalseINFO    PowerDnsProvider[ns-1-az-2] plan: desired=zone-a.internal.INFO    PowerDnsProvider[ns-1-az-2] populate:   found 8 records, exists=TrueINFO    PowerDnsProvider[ns-1-az-2] plan:   Creates=0, Updates=2, Deletes=1, Existing=8, Meta=FalseINFO    Plan********************************************************************************* zone-a.internal.********************************************************************************* ns-1-az-1 (PowerDnsProvider)*   Delete &lt;ARecord A 300, service-2.zone-a.internal., [&#8216;192.0.2.102&#8217;]&gt;*   Update*     &lt;ARecord A 120, service-3.zone-a.internal., [&#8216;192.0.2.103&#8217;]&gt; -&gt;*     &lt;ARecord A 120, service-3.zone-a.internal., [&#8216;192.0.2.110&#8217;]&gt; (intranet_config)*   Update*     &lt;ARecord A 120, svc-3-4.zone-a.internal., [&#8216;192.0.2.103&#8217;, &#8216;192.0.2.104&#8217;]&gt; -&gt;*     &lt;ARecord A 120, svc-3-4.zone-a.internal., [&#8216;192.0.2.104&#8217;, &#8216;192.0.2.110&#8217;]&gt; (intranet_config)*   Summary: Creates=0, Updates=2, Deletes=1, Existing=8, Meta=False* ns-1-az-2 (PowerDnsProvider)*   Delete &lt;ARecord A 300, service-2.zone-a.internal., [&#8216;192.0.2.102&#8217;]&gt;*   Update*     &lt;ARecord A 120, service-3.zone-a.internal., [&#8216;192.0.2.103&#8217;]&gt; -&gt;*     &lt;ARecord A 120, service-3.zone-a.internal., [&#8216;192.0.2.110&#8217;]&gt; (intranet_config)*   Update*     &lt;ARecord A 120, svc-3-4.zone-a.internal., [&#8216;192.0.2.103&#8217;, &#8216;192.0.2.104&#8217;]&gt; -&gt;*     &lt;ARecord A 120, svc-3-4.zone-a.internal., [&#8216;192.0.2.104&#8217;, &#8216;192.0.2.110&#8217;]&gt; (intranet_config)*   Summary:&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-476425","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/476425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=476425"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/476425\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=476425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=476425"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=476425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}