{"id":497052,"date":"2026-10-02T08:43:39","date_gmt":"2026-10-02T08:43:39","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=497052"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=497052","title":{"rendered":"DDNS \u0434\u043b\u044f \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432: \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0438 \u0447\u0442\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432\u0437\u0430\u043c\u0435\u043d"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0421\u0435\u0440\u0432\u0435\u0440 \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u043c\u0430 \u0438\u043b\u0438 \u0432 \u0444\u0438\u043b\u0438\u0430\u043b\u0435, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441, \u0430 \u0434\u043e\u043c\u0435\u043d \u0432 \u0437\u043e\u043d\u0435 .ru \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 REG.RU, Selectel \u0438\u043b\u0438 Yandex Cloud. \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 DDNS-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u044d\u0442\u0438 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0438 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u043c\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438 \u043d\u0430 curl. \u041b\u043e\u043c\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043c\u043e\u043b\u0447\u0430. Selectel \u0432 2026 \u0433\u043e\u0434\u0443 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b \u0441\u0442\u0430\u0440\u044b\u0439 DNS API, \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043d\u0435\u0433\u043e \u0445\u043e\u0434\u0438\u043b\u0438, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438. \u042f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b API \u044d\u0442\u0438\u0445 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432, \u0441\u043e\u0431\u0440\u0430\u043b \u0438\u0445 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0430 Go DDNS-\u0434\u0435\u043c\u043e\u043d dnspatch, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0445 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>\u041d\u0430\u0447\u043d\u0443 \u0441 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0440\u0435\u0448\u0430\u044e\u0442 \u0441\u0435\u0439\u0447\u0430\u0441: \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u0441\u043e\u0432\u0435\u0442, Cloudflare, \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438 \u0441 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430\u043c\u0438, \u0447\u0442\u043e \u0443\u043c\u0435\u044e\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 DDNS-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0438 \u0433\u0434\u0435 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b. \u0417\u0430\u0442\u0435\u043c \u0440\u0430\u0437\u0431\u0435\u0440\u0443 API REG.RU, Selectel \u0438 Yandex Cloud \u0438 \u0438\u0445 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d dnspatch, \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0438 \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0437\u0430 \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442.<\/p>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 Cloudflare<\/h2>\n<p>\u0414\u043b\u044f self-hosted \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0437\u043e\u043d\u0443 \u0432 Cloudflare \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <a href=\"https:\/\/github.com\/favonia\/cloudflare-ddns\" rel=\"noopener nofollow\">favonia\/cloudflare-ddns<\/a> (\u2b50 2,9 \u0442\u044b\u0441.) \u0438\u043b\u0438 <a href=\"https:\/\/github.com\/timothymiller\/cloudflare-ddns\" rel=\"noopener nofollow\">timothymiller\/cloudflare-ddns<\/a> (\u2b50 4,5 \u0442\u044b\u0441.). \u041e\u0431\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 Cloudflare. \u0414\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439 \u0443 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0432\u0435\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>\u0432 \u043d\u043e\u044f\u0431\u0440\u0435 2024 \u0433\u043e\u0434\u0430 \u0426\u041c\u0423 \u0421\u0421\u041e\u041f (\u0426\u0435\u043d\u0442\u0440 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u044c\u044e \u0441\u0432\u044f\u0437\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0434\u0432\u0435\u0434\u043e\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0420\u043e\u0441\u043a\u043e\u043c\u043d\u0430\u0434\u0437\u043e\u0440\u0443) \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c \u0441\u0430\u0439\u0442\u043e\u0432 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c TLS ECH \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 CDN [1];<\/p>\n<\/li>\n<li>\n<p>\u0441 9 \u0438\u044e\u043d\u044f 2025 \u0433\u043e\u0434\u0430 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u044e\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0437\u0430 Cloudflare, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0435 16 \u041a\u0411 \u043e\u0442\u0432\u0435\u0442\u0430 [2];<\/p>\n<\/li>\n<li>\n<p>\u0441 1 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430 \u043f\u043e 569-\u0424\u0417 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d \u0432 \u0437\u043e\u043d\u0430\u0445 .ru, .\u0440\u0444 \u0438 .su \u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e NS \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0413\u043e\u0441\u0443\u0441\u043b\u0443\u0433\u0438 [3].<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 Cloudflare, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0434\u0451\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u0441\u0430\u0439\u0442\u0430. \u0415\u0441\u043b\u0438 \u0432 Cloudflare \u043b\u0435\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e DNS, \u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0432\u0430\u0448 \u0430\u0434\u0440\u0435\u0441, \u0442\u0440\u0430\u0444\u0438\u043a \u0447\u0435\u0440\u0435\u0437 Cloudflare \u043d\u0435 \u0438\u0434\u0451\u0442. \u041d\u043e \u0435\u0441\u043b\u0438 \u0437\u043e\u043d\u0430 \u0443\u0436\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0433\u0434\u0435 \u043a\u0443\u043f\u043b\u0435\u043d \u0434\u043e\u043c\u0435\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443 REG.RU, \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0440\u0430\u0434\u0438 DDNS-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u043c\u0435\u043d\u0443 NS \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u043e\u0432\u044b\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u041f\u0440\u043e\u0449\u0435 \u0432\u0437\u044f\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u043c, \u0433\u0434\u0435 \u0437\u043e\u043d\u0430 \u0443\u0436\u0435 \u043b\u0435\u0436\u0438\u0442.<\/p>\n<h2>\u0427\u0442\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c<\/h2>\n<p>\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 DDNS-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432. \u0417\u0432\u0451\u0437\u0434\u044b \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0430 24 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041a\u043b\u0438\u0435\u043d\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u042f\u0437\u044b\u043a<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u2b50<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0435 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0438<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/jeessy2\/ddns-go\" rel=\"noopener nofollow\">jeessy2\/ddns-go<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Go<\/p>\n<\/td>\n<td>\n<p align=\"left\">17 366<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442; \u043e\u043a\u043e\u043b\u043e 30 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/ddclient\/ddclient\" rel=\"noopener nofollow\">ddclient<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Perl<\/p>\n<\/td>\n<td>\n<p align=\"left\">3 553<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 API \u042f\u043d\u0434\u0435\u043a\u0441 PDD \u0431\u0435\u0437 AAAA [4]; \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f NIC.RU \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u0435\u0442\u043a\u0435 main, \u0432 \u0440\u0435\u043b\u0438\u0437\u0435 4.0.0 \u0435\u0433\u043e \u043d\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/qdm12\/ddns-updater\" rel=\"noopener nofollow\">qdm12\/ddns-updater<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Go<\/p>\n<\/td>\n<td>\n<p align=\"left\">3 218<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 \u0441\u0440\u0435\u0434\u0438 59 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/TimothyYe\/godns\" rel=\"noopener nofollow\">TimothyYe\/godns<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Go<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 779<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/troglobit\/inadyn\" rel=\"noopener nofollow\">troglobit\/inadyn<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">C<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 152<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u042f\u043d\u0434\u0435\u043a\u0441 PDD; \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 \u0441 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2025 \u0433\u043e\u0434\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/mholt\/caddy-dynamicdns\" rel=\"noopener nofollow\">mholt\/caddy-dynamicdns<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">Go<\/p>\n<\/td>\n<td>\n<p align=\"left\">370<\/p>\n<\/td>\n<td>\n<p align=\"left\">Selectel, Timeweb \u0438 NIC.RU \u0447\u0435\u0440\u0435\u0437 libdns, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u043c\u043e\u0434\u0443\u043b\u044c Caddy<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/openwrt\/packages\/tree\/master\/net\/ddns-scripts\" rel=\"noopener nofollow\">OpenWrt ddns-scripts<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">shell<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2014<\/p>\n<\/td>\n<td>\n<p align=\"left\">Beget<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/github.com\/sfadeev\/dddns-updater\" rel=\"noopener nofollow\">sfadeev\/dddns-updater<\/a><\/p>\n<\/td>\n<td>\n<p align=\"left\">C#<\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<td>\n<p align=\"left\">Beget \u0438 Timeweb, \u0442\u043e\u043b\u044c\u043a\u043e A<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0423 dddns-updater \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 REG.RU, \u043d\u043e \u043d\u0430 24 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code>service\/nop<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a API, \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 [5].<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0443\u0442 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b. \u042f \u043d\u0430\u0448\u0451\u043b \u043d\u0430 GitHub 13 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043f\u043e\u0434 REG.RU, Selectel, Beget, Timeweb \u0438 Yandex Cloud, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442 0 \u0434\u043e 5 \u0437\u0432\u0451\u0437\u0434. \u0412 \u0442\u0440\u0435\u043a\u0435\u0440\u0430\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0448\u0451\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0438, \u043f\u0440\u043e Timeweb \u0432 ddns-updater [6], \u0438 \u0442\u043e\u0442 \u0431\u0435\u0437 \u0440\u0435\u0430\u043a\u0446\u0438\u0439. \u0421\u043f\u0440\u043e\u0441 \u0435\u0441\u0442\u044c, \u043d\u043e \u043e\u043d \u0440\u0430\u0437\u0434\u0440\u043e\u0431\u043b\u0435\u043d, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0438\u0448\u0435\u0442 \u0441\u0435\u0431\u0435 \u0441\u0432\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<h2>\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 API<\/h2>\n<h3>REG.RU \u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432 API \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432<\/h3>\n<p>REG.API 2 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 [7]. \u0410 DDNS \u043d\u0443\u0436\u0435\u043d \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0445\u043e\u0434\u0438\u0442\u044c \u0432 API \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 VPS \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432 REG.RU \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 dnspatch \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>proxy<\/code>:<\/p>\n<pre><code>[[instance.provider]]type     = \"regru\"username = \"my-login\"password = \"${REGRU_PASSWORD}\"zone     = \"example.ru\"rr_name  = \"home\"proxy    = \"${PROXY_URL}\"   # \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, socks5:\/\/user:pass@203.0.113.5:1080<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u044b <code>socks5<\/code>, <code>socks5h<\/code>, <code>http<\/code> \u0438 <code>https<\/code>. Retriever\u2019\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0437\u043d\u0430\u044e\u0442 \u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0445\u043e\u0434\u044f\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <code>HTTP_PROXY<\/code>\/<code>HTTPS_PROXY<\/code> \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0442. \u0418\u043d\u0430\u0447\u0435 \u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u0435\u0440\u043d\u0443\u043b \u0431\u044b \u0430\u0434\u0440\u0435\u0441 VPS, \u0438 \u0432 DNS \u043f\u043e\u043f\u0430\u043b \u0431\u044b \u043e\u043d. \u041b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0438\u0437 URL \u043f\u0440\u043e\u043a\u0441\u0438 dnspatch \u043d\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u043d\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445, \u043d\u0438 \u0432 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0412\u043e\u0442 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0445\u0435\u043c\u0435 \u043f\u0440\u043e\u043a\u0441\u0438:<\/p>\n<pre><code class=\"bash\">$ REGRU_PASSWORD=x PROXY_URL='sock5:\/\/user:s3cret@203.0.113.5:1080' dnspatch --config dnspatch.toml --check-configdnspatch: error: instance \"home\": provider \"regru\": proxy: scheme must be one of socks5, socks5h, http or https, or the word \"direct\" for no proxy<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043c\u0435\u043d\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 API \u043d\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u0430 \u00ab\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c\u00bb. dnspatch \u0447\u0438\u0442\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u043e\u043d\u044b (<code>zone\/get_resource_records<\/code>), \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u0443\u044e (<code>zone\/add_alias<\/code> \u0434\u043b\u044f A, <code>zone\/add_aaaa<\/code> \u0434\u043b\u044f AAAA) \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e (<code>zone\/remove_record<\/code>). \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u044b\u0431\u0440\u0430\u043d \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u044f \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u0430\u0434\u0440\u0435\u0441\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u043f\u0430\u0434\u0451\u0442 \u043c\u0435\u0436\u0434\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c, \u0432 \u0437\u043e\u043d\u0435 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0434\u0432\u0435 \u0437\u0430\u043f\u0438\u0441\u0438. \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0446\u0438\u043a\u043b\u0435 dnspatch \u043d\u0430\u0439\u0434\u0451\u0442 \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u043d\u0443\u0436\u043d\u0443\u044e \u0438 \u0443\u0434\u0430\u043b\u0438\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043d\u0438 \u043e\u0434\u043d\u0430 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, dnspatch \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442 \u0438 \u043f\u0438\u0448\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443. \u0422\u0430\u043a\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u0435 \u043e\u043d, \u0438 \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c, \u043e\u043d \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442. TTL \u0447\u0435\u0440\u0435\u0437 API \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f, \u0432 REG.RU \u043e\u043d \u043e\u0434\u0438\u043d \u043d\u0430 \u0432\u0441\u044e \u0437\u043e\u043d\u0443.<\/p>\n<p>\u041f\u0430\u0440\u043e\u043b\u044c \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u0435\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a REG.API. \u041e\u0442\u0432\u0435\u0442 307 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b \u0431\u044b \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u0432\u0430\u043b \u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b dnspatch \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430\u043c \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442.<\/p>\n<h3>Selectel \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b \u0441\u0442\u0430\u0440\u044b\u0439 API<\/h3>\n<p>Selectel \u0432\u044b\u0432\u043e\u0434\u0438\u043b \u0441\u0442\u0430\u0440\u044b\u0439 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0438\u0437 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u044d\u0442\u0430\u043f\u0430\u043c [8]. \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043d\u0451\u043c \u0434\u043e\u043c\u0435\u043d\u044b \u043d\u0435\u043b\u044c\u0437\u044f \u0441 1 \u043c\u0430\u0440\u0442\u0430 2025 \u0433\u043e\u0434\u0430, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0441 1 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2026-\u0433\u043e. API <code>domains\/v1<\/code> \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d 1 \u043c\u0430\u044f 2026-\u0433\u043e, \u0430 NS-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u044b 1 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 2026 \u0433\u043e\u0434\u0430. \u0421\u043a\u0440\u0438\u043f\u0442 tonytkachenko\/selectel-ddns [9] \u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0432 <code>api.selectel.ru\/domains\/v1\/<\/code>. \u041a\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 cron \u0438 \u0437\u0430\u0431\u044b\u043b, \u0441 \u0444\u0435\u0432\u0440\u0430\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0431\u0435\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 DNS, \u0438 cron \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0438\u043b.<\/p>\n<p>\u041d\u043e\u0432\u044b\u0439 API \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>domains\/v2<\/code>, \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u043d\u0451\u043c \u0438\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 Keystone (OpenStack Identity). \u0414\u043b\u044f dnspatch \u043d\u0443\u0436\u0435\u043d \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0435\u0436\u0438\u0442 \u0437\u043e\u043d\u0430:<\/p>\n<pre><code>[provider.selectel]type         = \"selectel\"account_id   = \"123456\"                 # \u043d\u043e\u043c\u0435\u0440 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 Selectelusername     = \"dnspatch\"               # \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044cpassword     = \"${SELECTEL_PASSWORD}\"project_name = \"my-project\"zone         = \"example.ru\"rr_name      = \"home\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>dnspatch \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u043e\u043a\u0435\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c <code>POST \/identity\/v3\/auth\/tokens<\/code> (\u0441\u0430\u043c \u0442\u043e\u043a\u0435\u043d \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 <code>X-Subject-Token<\/code>), \u043a\u0435\u0448\u0438\u0440\u0443\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443 \u0434\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f. \u041d\u0430 401 \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u0412\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0438 \u0442\u0438\u043f\u0430 \u0432 Selectel \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c rrset, \u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432 DNS \u0434\u0432\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e, \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442. TTL \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 60 \u0441\u0435\u043a\u0443\u043d\u0434), \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0439.<\/p>\n<h3>Yandex Cloud \u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0438\u0437 \u043a\u043b\u044e\u0447\u0430, JWT \u0438 IAM-\u0442\u043e\u043a\u0435\u043d\u0430<\/h3>\n<p>\u0414\u043b\u044f Cloud DNS \u043d\u0443\u0436\u0435\u043d \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0441 \u0440\u043e\u043b\u044c\u044e <code>dns.editor<\/code> \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0437\u043e\u043d\u044b \u0438 \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 \u0432\u0438\u0434\u0435 JSON-\u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 <code>yc iam key create<\/code>. \u0418\u0437 \u043a\u043b\u044e\u0447\u0430 dnspatch \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 JWT, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 PS256, \u0441\u043e \u0441\u0440\u043e\u043a\u043e\u043c \u0436\u0438\u0437\u043d\u0438 \u0432 \u0447\u0430\u0441 (\u0431\u043e\u043b\u044c\u0448\u0435 IAM \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442), \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 IAM-\u0442\u043e\u043a\u0435\u043d \u0432 <code>iam.api.cloud.yandex.net\/iam\/v1\/tokens<\/code> \u0438 \u043a\u0435\u0448\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043a\u0435\u043d \u0434\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f. SDK \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<pre><code class=\"go\">signing := enc.EncodeToString(header) + \".\" + enc.EncodeToString(claims)sum := sha256.Sum256([]byte(signing))sig, err := rsa.SignPSS(rand.Reader, p.key, crypto.SHA256, sum[:],&amp;rsa.PSSOptions{SaltLength: rsa.PSSSaltLengthEqualsHash})if err != nil {return \"\", fmt.Errorf(\"signing JWT: %w\", err)}return signing + \".\" + enc.EncodeToString(sig), nil<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423 dnspatch \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0435 \u043f\u0440\u044f\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, BurntSushi\/toml \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0438 miekg\/dns \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 DNS. \u0421\u0430\u043c \u043a\u043b\u044e\u0447 \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u043c \u0447\u0435\u0440\u0435\u0437 <code>key = \"${file:\/run\/secrets\/yc_key.json}\"<\/code>.<\/p>\n<p>\u0412 \u0441\u0430\u043c\u043e\u043c DNS API \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0434\u0432\u0435 \u043c\u0435\u043b\u043e\u0447\u0438. TTL \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e 64-\u0431\u0438\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 API \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0432 JSON \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0438, \u0438 \u043f\u043e\u043b\u0435 \u0442\u0438\u043f\u0430 <code>int<\/code> \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0440\u0430\u0437\u0431\u043e\u0440\u0430. dnspatch \u0447\u0438\u0442\u0430\u0435\u0442 TTL \u043a\u0430\u043a <code>json.Number<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u0435 \u0444\u043e\u0440\u043c\u044b. \u0417\u0430\u043f\u0438\u0441\u044c \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c <code>upsertRecordSets<\/code>, \u0430 \u043e\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430 long-running operation. \u0415\u0441\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, dnspatch \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442, \u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0449\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0439.<\/p>\n<h2>\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d dnspatch<\/h2>\n<p>\u0412 dnspatch \u0442\u0440\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>retriever \u0443\u0437\u043d\u0430\u0451\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441;<\/p>\n<\/li>\n<li>\n<p>provider \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432 DNS;<\/p>\n<\/li>\n<li>\n<p>instance \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e retriever\u2019\u043e\u0432 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 provider\u2019\u0430\u043c\u0438 \u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>Instance\u2019\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u0439\u0442\u043e\u0432 \u0438 \u0437\u043e\u043d\u044b \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432. \u0412\u043e\u0442 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433. \u0412 \u043d\u0451\u043c \u0434\u0432\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 IPv4, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439, \u0437\u0430\u043f\u0438\u0441\u0438 <code>home<\/code> \u0438 <code>*.home<\/code> \u0432 REG.RU \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 \u043a\u043e\u0440\u0435\u043d\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u043e\u043d\u044b \u0432 Yandex Cloud:<\/p>\n<pre><code>interval = \"5m\"[retriever.v4]type   = \"ipify\"family = \"ipv4\"[retriever.v4-reserve]type   = \"icanhazip\"family = \"ipv4\"[provider.regru]type     = \"regru\"username = \"my-login\"password = \"${REGRU_PASSWORD}\"zone     = \"example.ru\"rr_name  = \"home\"proxy    = \"${PROXY_URL}\"[provider.yandexcloud]type    = \"yandexcloud\"key     = \"${file:.\/secrets\/yc_key.json}\"zone_id = \"dns1234567890abcdef\"rr_name = \"@\"[[instance]]name = \"home\"[[instance.retriever]]ref = \"v4\"[[instance.retriever]]ref = \"v4-reserve\"[[instance.provider]]ref = \"regru\"[[instance.provider]]ref     = \"regru\"rr_name = \"*.home\"[[instance.provider]]ref = \"yandexcloud\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<pre><code class=\"bash\">$ REGRU_PASSWORD=x PROXY_URL='socks5:\/\/user:pass@203.0.113.5:1080' dnspatch --config dnspatch.toml --check-configdnspatch: config OK: dnspatch.toml (1 instance(s))  home: interval=5m0s retrievers=[v4(ipv4), v4-reserve(ipv4)] providers=[regru(rr_name=home), regru(rr_name=*.home), yandexcloud]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><code>ref<\/code> \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u044f\u0434\u043e\u043c \u0441 <code>ref<\/code> \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442. \u0422\u0430\u043a \u043e\u0434\u0438\u043d \u0430\u043a\u043a\u0430\u0443\u043d\u0442 REG.RU \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 <code>home<\/code>, \u0438 <code>*.home<\/code>. <code>icanhazip<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 <code>ipify<\/code> \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u043b.<\/p>\n<h3>\u0414\u0432\u0430 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h3>\n<p>Retriever\u2019\u044b instance\u2019\u0430 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u041a\u0430\u043a\u043e\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u043d\u0443\u043b retriever, dnspatch \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u0430 \u043d\u0435 \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c. \u0414\u043b\u044f A \u0438 AAAA \u0432 \u043e\u0434\u043d\u043e\u043c instance\u2019\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 \u043e\u0434\u043d\u043e\u0433\u043e retriever\u2019\u0430 \u0441 <code>family = \"dual\"<\/code> (\u0435\u0433\u043e \u0443\u043c\u0435\u044e\u0442 <code>icanhazip<\/code>, <code>identme<\/code>, <code>ifconfigco<\/code>, <code>ipify<\/code> \u0438 <code>interface<\/code>) \u0438\u043b\u0438 \u0434\u0432\u0443\u0445, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0430 IPv4 \u0438 IPv6.<\/p>\n<p>Retriever <code>interface<\/code> \u0431\u0435\u0440\u0451\u0442 \u0430\u0434\u0440\u0435\u0441 \u0441 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0431\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u041e\u043d \u043d\u0443\u0436\u0435\u043d \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f IPv6. \u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 (DHCPv6-PD), \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u043d\u0435\u0433\u043e \u0443\u0436\u0435 \u0432\u0438\u0441\u0438\u0442 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435, \u0438 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043e \u043d\u0451\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435\u0437\u0430\u0447\u0435\u043c. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430, \u0430 loopback, link-local, \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u0435\u0442\u0438, ULA (fc00::\/7) \u0438 CGNAT (100.64.0.0\/10) \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u043e\u0440 \u043d\u0435 \u043f\u0440\u044b\u0433\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u0446\u0438\u043a\u043b\u0430\u043c\u0438. \u0421\u0443\u0437\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c:<\/p>\n<pre><code>[retriever.lan]type    = \"interface\"name    = \"eth0\"                 # \"wan\" \u0438\u043b\u0438 \"br-lan\" \u043d\u0430 OpenWrt, \"Ethernet\" \u043d\u0430 Windowsfamily  = \"ipv6\"network = \"2001:db8:1234::\/64\"   # \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0442\u0432\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 dnspatch \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 <code>netip.ParseAddr<\/code> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e. HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0448\u0438\u0431\u043a\u0438, \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0442\u0432\u0435\u0442, loopback \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0442\u043e\u0433\u043e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439 retriever\u2019\u0430 \u0438 \u0432 DNS \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442.<\/p>\n<h2>\u0421\u0442\u0440\u043e\u0433\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433<\/h2>\n<p>\u041e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u0440\u0430\u0437\u0443, \u0430 \u043a \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 dnspatch \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0438\u043c\u044f. \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u043a\u043e\u043d\u0444\u0438\u0433 \u0438\u0437 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0430 (\u043e\u043d \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438) \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432 \u043d\u0451\u043c \u0434\u0432\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438, <code>family = \"ip4\"<\/code> \u0443 retriever\u2019\u0430 \u0438 <code>pasword<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>password<\/code>:<\/p>\n<pre><code class=\"bash\">$ REGRU_PASSWORD=x dnspatch --config typo.toml --check-config; echo \"exit=$?\"dnspatch: error: instance \"home\": retriever \"ipify\": family: must be \"ipv4\", \"ipv6\" or \"dual\", got \"ip4\"instance \"home\": provider \"regru\": parameter \"password\" is requiredunknown parameter \"pasword\" (did you mean \"password\"?)exit=2<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041d\u0435\u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f dnspatch \u0442\u043e\u0436\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0438 \u043d\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0451 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0418\u043d\u0430\u0447\u0435 \u0434\u0435\u043c\u043e\u043d \u0441 \u043f\u0443\u0441\u0442\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0431\u044b \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u043b \u043e\u0442\u043a\u0430\u0437 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041e \u0442\u0430\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435 dnspatch \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0439, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043a\u0430\u0436\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f. <code>--check-config<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441 \u043a\u043e\u0434\u043e\u043c 0 \u0438\u043b\u0438 2, \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u0434\u0435\u043c\u043e\u043d. \u0415\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 <code>ExecStartPre<\/code> \u0443 systemd \u0438\u043b\u0438 \u0432 CI. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 CI \u0442\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 <code>examples\/<\/code>.<\/p>\n<h3>\u0421\u0435\u043a\u0440\u0435\u0442\u044b<\/h3>\n<p><code>${NAME}<\/code> \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0430 <code>${file:\/run\/secrets\/...}<\/code> \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0431\u0435\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438. \u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 <code>.env<\/code> \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0430 \u0438\u0445 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 <code>docker inspect<\/code> \u043b\u044e\u0431\u043e\u043c\u0443, \u0443 \u043a\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a Docker-\u0434\u0435\u043c\u043e\u043d\u0443. Secrets \u0432 Docker \u0438 Kubernetes \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442.<\/p>\n<h4>\u0421\u0431\u043e\u0438<\/h4>\n<ul>\n<li>\n<p>Provider\u2019\u044b \u043e\u0434\u043d\u043e\u0433\u043e instance\u2019\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e, \u0438 \u0443\u043f\u0430\u0432\u0448\u0438\u0439 \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c. \u041d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0442\u0432\u043e\u0434\u0438\u0442\u0441\u044f 30 \u0441\u0435\u043a\u0443\u043d\u0434.<\/p>\n<\/li>\n<li>\n<p>Provider \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043f\u0440\u0438\u043d\u044f\u043b.<\/p>\n<\/li>\n<li>\n<p>\u0423\u043f\u0430\u0432\u0448\u0438\u0439 provider \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0441 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c backoff \u0438 jitter. \u041f\u0435\u0440\u0432\u0430\u044f \u043f\u0430\u0443\u0437\u0430 \u0434\u043b\u0438\u0442\u0441\u044f \u043e\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0434\u043e \u0446\u0435\u043b\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430, \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0434\u043e 30 \u043c\u0438\u043d\u0443\u0442 (\u0438\u043b\u0438 \u0434\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d \u0434\u043b\u0438\u043d\u043d\u0435\u0435). Jitter \u0440\u0430\u0437\u0432\u043e\u0434\u0438\u0442 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 instance\u2019\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0446\u0438\u043a\u043b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432\u043e \u0432\u0441\u0435 provider\u2019\u044b, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d \u0442\u0430\u043c \u0443\u0436\u0435 \u0435\u0441\u0442\u044c. \u042d\u0442\u043e \u043e\u0434\u0438\u043d \u043b\u0438\u0448\u043d\u0438\u0439 \u0432\u044b\u0437\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e provider\u2019\u0430 \u0437\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a. \u0424\u0430\u0439\u043b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b. \u0412 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0431\u0435\u0437 volume \u043e\u043d \u0442\u0435\u0440\u044f\u043b\u0441\u044f \u0431\u044b \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0431\u044b\u043b \u0431\u044b \u043d\u0443\u0436\u0435\u043d, \u0430 \u0435\u0449\u0451 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u0431\u044b \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u043f\u0443\u0442\u0438, \u043f\u0440\u0430\u0432\u0430\u0445 \u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0417\u0430\u043f\u0438\u0441\u044c \u0443 provider\u2019\u043e\u0432 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u0430, \u0438 \u0435\u0441\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u0443\u0436\u0435 \u0432\u0435\u0440\u043d\u044b\u0439, \u0432 \u0437\u043e\u043d\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<h2>\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442<\/h2>\n<pre><code># dnspatch.toml[[instance]]name = \"home\"[[instance.retriever]]type = \"ipify\"[[instance.provider]]type     = \"regru\"username = \"my-login\"password = \"${REGRU_PASSWORD}\"zone     = \"example.ru\"rr_name  = \"home\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<pre><code class=\"bash\">echo 'REGRU_PASSWORD=...' &gt; .env &amp;&amp; chmod 600 .envchmod 644 dnspatch.toml   # \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 uid 65532 \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<pre><code class=\"yaml\"># compose.ymlservices:  dnspatch:    image: krimsn\/dnspatch:0.3.0    restart: unless-stopped    env_file: .env    volumes:      - .\/dnspatch.toml:\/etc\/dnspatch\/config.toml:ro    logging:      driver: json-file      options: {max-size: \"10m\", max-file: \"3\"}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<pre><code class=\"bash\">docker compose up -ddocker compose logs -f<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f REG.RU \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 API \u0430\u0434\u0440\u0435\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0439\u0434\u0443\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <code>proxy<\/code>, \u043a\u0430\u043a \u0432\u044b\u0448\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0442\u0435\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>docker compose run --rm dnspatch --check-config<\/code>.<\/p>\n<h2>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435<\/h2>\n<ul>\n<li>\n<p>\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0441\u043c\u0435\u043d\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0441\u0431\u043e\u044f\u0445.<\/p>\n<\/li>\n<li>\n<p>Health-check \u0438 \u043f\u0438\u043d\u0433\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 UI, \u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0431\u0443\u0434\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c<\/p>\n<\/li>\n<\/ul>\n<h2>\u0418\u0442\u043e\u0433\u0438<\/h2>\n<p>\u0423\u0437\u043d\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 API \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e. \u0421\u043b\u043e\u0436\u043d\u0435\u0435 \u0443\u0447\u0435\u0441\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e API. REG.RU \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, Selectel \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043b \u0441\u0442\u0430\u0440\u044b\u0439 API, \u0430 Yandex Cloud \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0438\u0437 \u043a\u043b\u044e\u0447\u0430, JWT \u0438 IAM-\u0442\u043e\u043a\u0435\u043d\u0430. \u0421\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0443\u0437\u043d\u0430\u0451\u0442 \u043e \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u0449\u0430\u0445, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f, \u0438 \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u043b\u0447\u0430.<\/p>\n<p>\u041a\u043e\u0434 dnspatch \u043e\u0442\u043a\u0440\u044b\u0442 \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 MIT \u0438 \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 GitHub: <a href=\"https:\/\/github.com\/KrimsN\/dnspatch\" rel=\"noopener nofollow\">https:\/\/github.com\/KrimsN\/dnspatch<\/a>. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a \u0438\u043b\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u043d\u0435\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0432 <a href=\"https:\/\/github.com\/KrimsN\/dnspatch\/issues\" rel=\"noopener nofollow\">issues<\/a>. \u0410 \u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0435 \u043d\u0430 GitHub.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e.<\/p>\n<h2>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h2>\n<ol>\n<li>\n<p>CNews, 7 \u043d\u043e\u044f\u0431\u0440\u044f 2024 \u0433\u043e\u0434\u0430. <a href=\"https:\/\/www.cnews.ru\/news\/top\/2024-11-07_dochka_roskomnadzora_porekomendovala\" rel=\"noopener nofollow\">\u0420\u043e\u0441\u043a\u043e\u043c\u043d\u0430\u0434\u0437\u043e\u0440 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Cloudflare \u043d\u0430 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438<\/a><\/p>\n<\/li>\n<li>\n<p>\u0411\u043b\u043e\u0433 Cloudflare, 26 \u0438\u044e\u043d\u044f 2025 \u0433\u043e\u0434\u0430. <a href=\"https:\/\/blog.cloudflare.com\/russian-internet-users-are-unable-to-access-the-open-internet\/\" rel=\"noopener nofollow\">Russian Internet users are unable to access the open Internet<\/a><\/p>\n<\/li>\n<li>\n<p>vc.ru. <a href=\"https:\/\/vc.ru\/legal\/2923008-obyazatelnaya-identifikatsiya-domenov-cherez-gosuslugi\" rel=\"noopener nofollow\">\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u00ab\u0413\u043e\u0441\u0443\u0441\u043b\u0443\u0433\u0438\u00bb: \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u0441 1 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f<\/a><\/p>\n<\/li>\n<li>\n<p>ddclient, issue #954. <a href=\"https:\/\/github.com\/ddclient\/ddclient\/issues\/954\" rel=\"noopener nofollow\">Migrate \u2018yandex\u2019 protocol from LegacyProtocol to Protocol (add AAAA support)<\/a><\/p>\n<\/li>\n<li>\n<p>sfadeev\/dddns-updater, \u043a\u043e\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 REG.RU. <a href=\"https:\/\/github.com\/sfadeev\/dddns-updater\/blob\/master\/DnsUpdater\/Services\/DnsProviders\/RegRuDnsProvider.cs\" rel=\"noopener nofollow\">RegRuDnsProvider.cs<\/a><\/p>\n<\/li>\n<li>\n<p>qdm12\/ddns-updater, issue #1153. <a href=\"https:\/\/github.com\/qdm12\/ddns-updater\/issues\/1153\" rel=\"noopener nofollow\">Feature request: Add support for Timeweb DNS provider<\/a><\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0440\u0430\u0432\u043a\u0430 REG.RU. <a href=\"https:\/\/help.reg.ru\/support\/partneram\/reg-api\/kakiye-ogranicheniya-yest-pri-rabote-s-reg-api\" rel=\"noopener nofollow\">\u041a\u0430\u043a\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0420\u0435\u0433.API<\/a><\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Selectel. <a href=\"https:\/\/docs.selectel.ru\/en\/dns-hosting\/about-dns\/\" rel=\"noopener nofollow\">General information about DNS hosting<\/a><\/p>\n<\/li>\n<li>\n<p>tonytkachenko\/selectel-ddns, \u0430\u0434\u0440\u0435\u0441 API \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430. <a href=\"https:\/\/github.com\/tonytkachenko\/selectel-ddns\/blob\/main\/.env.sample\" rel=\"noopener nofollow\">.env.sample<\/a><\/p>\n<\/li>\n<\/ol>\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\/1089494\/\">https:\/\/habr.com\/ru\/articles\/1089494\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u0435\u0440\u0432\u0435\u0440 \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u043c\u0430 \u0438\u043b\u0438 \u0432 \u0444\u0438\u043b\u0438\u0430\u043b\u0435, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441, \u0430 \u0434\u043e\u043c\u0435\u043d \u0432 \u0437\u043e\u043d\u0435 .ru \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 REG.RU, Selectel \u0438\u043b\u0438 Yandex Cloud. \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 DDNS-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u044d\u0442\u0438 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0438 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u043c\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438 \u043d\u0430 curl. \u041b\u043e\u043c\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043c\u043e\u043b\u0447\u0430. Selectel \u0432 2026 \u0433\u043e\u0434\u0443 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b \u0441\u0442\u0430\u0440\u044b\u0439 DNS API, \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043d\u0435\u0433\u043e \u0445\u043e\u0434\u0438\u043b\u0438, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438. \u042f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b API \u044d\u0442\u0438\u0445 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432, \u0441\u043e\u0431\u0440\u0430\u043b \u0438\u0445 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0430 Go DDNS-\u0434\u0435\u043c\u043e\u043d dnspatch, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0445 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442.\u041d\u0430\u0447\u043d\u0443 \u0441 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0440\u0435\u0448\u0430\u044e\u0442 \u0441\u0435\u0439\u0447\u0430\u0441: \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u0441\u043e\u0432\u0435\u0442, Cloudflare, \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438 \u0441 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430\u043c\u0438, \u0447\u0442\u043e \u0443\u043c\u0435\u044e\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 DDNS-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0438 \u0433\u0434\u0435 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b. \u0417\u0430\u0442\u0435\u043c \u0440\u0430\u0437\u0431\u0435\u0440\u0443 API REG.RU, Selectel \u0438 Yandex Cloud \u0438 \u0438\u0445 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d dnspatch, \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0438 \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0437\u0430 \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442.\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 Cloudflare\u0414\u043b\u044f self-hosted \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0437\u043e\u043d\u0443 \u0432 Cloudflare \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c favonia\/cloudflare-ddns (\u2b50 2,9 \u0442\u044b\u0441.) \u0438\u043b\u0438 timothymiller\/cloudflare-ddns (\u2b50 4,5 \u0442\u044b\u0441.). \u041e\u0431\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 Cloudflare. \u0414\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439 \u0443 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0432\u0435\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0438:\u0432 \u043d\u043e\u044f\u0431\u0440\u0435 2024 \u0433\u043e\u0434\u0430 \u0426\u041c\u0423 \u0421\u0421\u041e\u041f (\u0426\u0435\u043d\u0442\u0440 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u044c\u044e \u0441\u0432\u044f\u0437\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0434\u0432\u0435\u0434\u043e\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0420\u043e\u0441\u043a\u043e\u043c\u043d\u0430\u0434\u0437\u043e\u0440\u0443) \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c \u0441\u0430\u0439\u0442\u043e\u0432 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c TLS ECH \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 CDN [1];\u0441 9 \u0438\u044e\u043d\u044f 2025 \u0433\u043e\u0434\u0430 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u044e\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0437\u0430 Cloudflare, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0435 16 \u041a\u0411 \u043e\u0442\u0432\u0435\u0442\u0430 [2];\u0441 1 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430 \u043f\u043e 569-\u0424\u0417 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d \u0432 \u0437\u043e\u043d\u0430\u0445 .ru, .\u0440\u0444 \u0438 .su \u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e NS \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0413\u043e\u0441\u0443\u0441\u043b\u0443\u0433\u0438 [3].\u0417\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 Cloudflare, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0434\u0451\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u0441\u0430\u0439\u0442\u0430. \u0415\u0441\u043b\u0438 \u0432 Cloudflare \u043b\u0435\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e DNS, \u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0432\u0430\u0448 \u0430\u0434\u0440\u0435\u0441, \u0442\u0440\u0430\u0444\u0438\u043a \u0447\u0435\u0440\u0435\u0437 Cloudflare \u043d\u0435 \u0438\u0434\u0451\u0442. \u041d\u043e \u0435\u0441\u043b\u0438 \u0437\u043e\u043d\u0430 \u0443\u0436\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0433\u0434\u0435 \u043a\u0443\u043f\u043b\u0435\u043d \u0434\u043e\u043c\u0435\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443 REG.RU, \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0440\u0430\u0434\u0438 DDNS-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u043c\u0435\u043d\u0443 NS \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u043e\u0432\u044b\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u041f\u0440\u043e\u0449\u0435 \u0432\u0437\u044f\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u043c, \u0433\u0434\u0435 \u0437\u043e\u043d\u0430 \u0443\u0436\u0435 \u043b\u0435\u0436\u0438\u0442.\u0427\u0442\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 DDNS-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432. \u0417\u0432\u0451\u0437\u0434\u044b \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0430 24 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430.\u041a\u043b\u0438\u0435\u043d\u0442\u042f\u0437\u044b\u043a\u2b50\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0435 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0438jeessy2\/ddns-goGo17 366\u043d\u0435\u0442; \u043e\u043a\u043e\u043b\u043e 30 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0435ddclientPerl3 553\u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 API \u042f\u043d\u0434\u0435\u043a\u0441 PDD \u0431\u0435\u0437 AAAA [4]; \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f NIC.RU \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u0435\u0442\u043a\u0435 main, \u0432 \u0440\u0435\u043b\u0438\u0437\u0435 4.0.0 \u0435\u0433\u043e \u043d\u0435\u0442qdm12\/ddns-updaterGo3 218\u043d\u0435\u0442 \u0441\u0440\u0435\u0434\u0438 59 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432TimothyYe\/godnsGo1 779\u043d\u0435\u0442troglobit\/inadynC1 152\u042f\u043d\u0434\u0435\u043a\u0441 PDD; \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 \u0441 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2025 \u0433\u043e\u0434\u0430mholt\/caddy-dynamicdnsGo370Selectel, Timeweb \u0438 NIC.RU \u0447\u0435\u0440\u0435\u0437 libdns, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u043c\u043e\u0434\u0443\u043b\u044c CaddyOpenWrt ddns-scriptsshell\u2014Begetsfadeev\/dddns-updaterC#2Beget \u0438 Timeweb, \u0442\u043e\u043b\u044c\u043a\u043e A\u0423 dddns-updater \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 REG.RU, \u043d\u043e \u043d\u0430 24 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e service\/nop, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a API, \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 [5].\u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0443\u0442 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b. \u042f \u043d\u0430\u0448\u0451\u043b \u043d\u0430 GitHub 13 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043f\u043e\u0434 REG.RU, Selectel, Beget, Timeweb \u0438 Yandex Cloud, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442 0 \u0434\u043e 5 \u0437\u0432\u0451\u0437\u0434. \u0412 \u0442\u0440\u0435\u043a\u0435\u0440\u0430\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0448\u0451\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0438, \u043f\u0440\u043e Timeweb \u0432 ddns-updater [6], \u0438 \u0442\u043e\u0442 \u0431\u0435\u0437 \u0440\u0435\u0430\u043a\u0446\u0438\u0439. \u0421\u043f\u0440\u043e\u0441 \u0435\u0441\u0442\u044c, \u043d\u043e \u043e\u043d \u0440\u0430\u0437\u0434\u0440\u043e\u0431\u043b\u0435\u043d, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0438\u0448\u0435\u0442 \u0441\u0435\u0431\u0435 \u0441\u0432\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 APIREG.RU \u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432 API \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432REG.API 2 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 [7]. \u0410 DDNS \u043d\u0443\u0436\u0435\u043d \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0445\u043e\u0434\u0438\u0442\u044c \u0432 API \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 VPS \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432 REG.RU \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 dnspatch \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 proxy:[[instance.provider]]type     = &#171;regru&#187;username = &#171;my-login&#187;password = &#171;${REGRU_PASSWORD}&#187;zone     = &#171;example.ru&#187;rr_name  = &#171;home&#187;proxy    = &#171;${PROXY_URL}&#187;   # \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, socks5:\/\/user:pass@203.0.113.5:1080\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u044b socks5, socks5h, http \u0438 https. Retriever\u2019\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0437\u043d\u0430\u044e\u0442 \u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0445\u043e\u0434\u044f\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 HTTP_PROXY\/HTTPS_PROXY \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0442. \u0418\u043d\u0430\u0447\u0435 \u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u0435\u0440\u043d\u0443\u043b \u0431\u044b \u0430\u0434\u0440\u0435\u0441 VPS, \u0438 \u0432 DNS \u043f\u043e\u043f\u0430\u043b \u0431\u044b \u043e\u043d. \u041b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0438\u0437 URL \u043f\u0440\u043e\u043a\u0441\u0438 dnspatch \u043d\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u043d\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445, \u043d\u0438 \u0432 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0412\u043e\u0442 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0445\u0435\u043c\u0435 \u043f\u0440\u043e\u043a\u0441\u0438:$ REGRU_PASSWORD=x PROXY_URL=&#8217;sock5:\/\/user:s3cret@203.0.113.5:1080&#8242; dnspatch &#8212;config dnspatch.toml &#8212;check-configdnspatch: error: instance &#171;home&#187;: provider &#171;regru&#187;: proxy: scheme must be one of socks5, socks5h, http or https, or the word &#171;direct&#187; for no proxy\u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043c\u0435\u043d\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 API \u043d\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u0430 \u00ab\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c\u00bb. dnspatch \u0447\u0438\u0442\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u043e\u043d\u044b (zone\/get_resource_records), \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u0443\u044e (zone\/add_alias \u0434\u043b\u044f A, zone\/add_aaaa \u0434\u043b\u044f AAAA) \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e (zone\/remove_record). \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u044b\u0431\u0440\u0430\u043d \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u044f \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u0430\u0434\u0440\u0435\u0441\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u043f\u0430\u0434\u0451\u0442 \u043c\u0435\u0436\u0434\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c, \u0432 \u0437\u043e\u043d\u0435 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0434\u0432\u0435 \u0437\u0430\u043f\u0438\u0441\u0438. \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0446\u0438\u043a\u043b\u0435 dnspatch \u043d\u0430\u0439\u0434\u0451\u0442 \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u043d\u0443\u0436\u043d\u0443\u044e \u0438 \u0443\u0434\u0430\u043b\u0438\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043d\u0438 \u043e\u0434\u043d\u0430 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, dnspatch \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442 \u0438 \u043f\u0438\u0448\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443. \u0422\u0430\u043a\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u0435 \u043e\u043d, \u0438 \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c, \u043e\u043d \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442. TTL \u0447\u0435\u0440\u0435\u0437 API \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f, \u0432 REG.RU \u043e\u043d \u043e\u0434\u0438\u043d \u043d\u0430 \u0432\u0441\u044e \u0437\u043e\u043d\u0443.\u041f\u0430\u0440\u043e\u043b\u044c \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u0435\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a REG.API. \u041e\u0442\u0432\u0435\u0442 307 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b \u0431\u044b \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u0432\u0430\u043b \u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b dnspatch \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430\u043c \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442.Selectel \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b \u0441\u0442\u0430\u0440\u044b\u0439 APISelectel \u0432\u044b\u0432\u043e\u0434\u0438\u043b \u0441\u0442\u0430\u0440\u044b\u0439 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0438\u0437 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u044d\u0442\u0430\u043f\u0430\u043c [8]. \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043d\u0451\u043c \u0434\u043e\u043c\u0435\u043d\u044b \u043d\u0435\u043b\u044c\u0437\u044f \u0441 1 \u043c\u0430\u0440\u0442\u0430 2025 \u0433\u043e\u0434\u0430, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0441 1 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2026-\u0433\u043e. API domains\/v1 \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d 1 \u043c\u0430\u044f 2026-\u0433\u043e, \u0430 NS-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u044b 1 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 2026 \u0433\u043e\u0434\u0430. \u0421\u043a\u0440\u0438\u043f\u0442 tonytkachenko\/selectel-ddns [9] \u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0432 api.selectel.ru\/domains\/v1\/. \u041a\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 cron \u0438 \u0437\u0430\u0431\u044b\u043b, \u0441 \u0444\u0435\u0432\u0440\u0430\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0431\u0435\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 DNS, \u0438 cron \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0438\u043b.\u041d\u043e\u0432\u044b\u0439 API \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f domains\/v2, \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u043d\u0451\u043c \u0438\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 Keystone (OpenStack Identity). \u0414\u043b\u044f dnspatch \u043d\u0443\u0436\u0435\u043d \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0435\u0436\u0438\u0442 \u0437\u043e\u043d\u0430:[provider.selectel]type         = &#171;selectel&#187;account_id   = &#171;123456&#187;                 # \u043d\u043e\u043c\u0435\u0440 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 Selectelusername     = &#171;dnspatch&#187;               # \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044cpassword     = &#171;${SELECTEL_PASSWORD}&#187;project_name = &#171;my-project&#187;zone         = &#171;example.ru&#187;rr_name      = &#171;home&#187;dnspatch \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u043e\u043a\u0435\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c POST \/identity\/v3\/auth\/tokens (\u0441\u0430\u043c \u0442\u043e\u043a\u0435\u043d \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 X-Subject-Token), \u043a\u0435\u0448\u0438\u0440\u0443\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443 \u0434\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f. \u041d\u0430 401 \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u0412\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0438 \u0442\u0438\u043f\u0430 \u0432 Selectel \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c rrset, \u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432 DNS \u0434\u0432\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e, \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442. TTL \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 60 \u0441\u0435\u043a\u0443\u043d\u0434), \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0439.Yandex Cloud \u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0438\u0437 \u043a\u043b\u044e\u0447\u0430, JWT \u0438 IAM-\u0442\u043e\u043a\u0435\u043d\u0430\u0414\u043b\u044f Cloud DNS \u043d\u0443\u0436\u0435\u043d \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0441 \u0440\u043e\u043b\u044c\u044e dns.editor \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0437\u043e\u043d\u044b \u0438 \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 \u0432\u0438\u0434\u0435 JSON-\u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 yc iam key create. \u0418\u0437 \u043a\u043b\u044e\u0447\u0430 dnspatch \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 JWT, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 PS256, \u0441\u043e \u0441\u0440\u043e\u043a\u043e\u043c \u0436\u0438\u0437\u043d\u0438 \u0432 \u0447\u0430\u0441 (\u0431\u043e\u043b\u044c\u0448\u0435 IAM \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442), \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 IAM-\u0442\u043e\u043a\u0435\u043d \u0432 iam.api.cloud.yandex.net\/iam\/v1\/tokens \u0438 \u043a\u0435\u0448\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043a\u0435\u043d \u0434\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f. SDK \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:signing := enc.EncodeToString(header) + &#171;.&#187; + enc.EncodeToString(claims)sum := sha256.Sum256([]byte(signing))sig, err := rsa.SignPSS(rand.Reader, p.key, crypto.SHA256, sum[:],&amp;rsa.PSSOptions{SaltLength: rsa.PSSSaltLengthEqualsHash})if err != nil {return &#171;&#187;, fmt.Errorf(&#171;signing JWT: %w&#187;, err)}return signing + &#171;.&#187; + enc.EncodeToString(sig), nil\u0423 dnspatch \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0435 \u043f\u0440\u044f\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, BurntSushi\/toml \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0438 miekg\/dns \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 DNS. \u0421\u0430\u043c \u043a\u043b\u044e\u0447 \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u043c \u0447\u0435\u0440\u0435\u0437 key = &#171;${file:\/run\/secrets\/yc_key.json}&#187;.\u0412 \u0441\u0430\u043c\u043e\u043c DNS API \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0434\u0432\u0435 \u043c\u0435\u043b\u043e\u0447\u0438. TTL \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e 64-\u0431\u0438\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 API \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0432 JSON \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0438, \u0438 \u043f\u043e\u043b\u0435 \u0442\u0438\u043f\u0430 int \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0440\u0430\u0437\u0431\u043e\u0440\u0430. dnspatch \u0447\u0438\u0442\u0430\u0435\u0442 TTL \u043a\u0430\u043a json.Number, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u0435 \u0444\u043e\u0440\u043c\u044b. \u0417\u0430\u043f\u0438\u0441\u044c \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c upsertRecordSets, \u0430 \u043e\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430 long-running operation. \u0415\u0441\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, dnspatch \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442, \u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0449\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0439.\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d dnspatch\u0412 dnspatch \u0442\u0440\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438:retriever \u0443\u0437\u043d\u0430\u0451\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441;provider \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432 DNS;instance \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e retriever\u2019\u043e\u0432 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 provider\u2019\u0430\u043c\u0438 \u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c.Instance\u2019\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u0439\u0442\u043e\u0432 \u0438 \u0437\u043e\u043d\u044b \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432. \u0412\u043e\u0442 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433. \u0412 \u043d\u0451\u043c \u0434\u0432\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 IPv4, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439, \u0437\u0430\u043f\u0438\u0441\u0438 home \u0438 *.home \u0432 REG.RU \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 \u043a\u043e\u0440\u0435\u043d\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u043e\u043d\u044b \u0432 Yandex Cloud:interval = &#171;5m&#187;[retriever.v4]type   = &#171;ipify&#187;family = &#171;ipv4&#8243;[retriever.v4-reserve]type   = &#171;icanhazip&#187;family = &#171;ipv4&#8243;[provider.regru]type     = &#171;regru&#187;username = &#171;my-login&#187;password = &#171;${REGRU_PASSWORD}&#187;zone     = &#171;example.ru&#187;rr_name  = &#171;home&#187;proxy    = &#171;${PROXY_URL}&#187;[provider.yandexcloud]type    = &#171;yandexcloud&#187;key     = &#171;${file:.\/secrets\/yc_key.json}&#187;zone_id = &#171;dns1234567890abcdef&#187;rr_name = &#171;@&#187;[[instance]]name = &#171;home&#187;[[instance.retriever]]ref = &#171;v4&#8243;[[instance.retriever]]ref = &#171;v4-reserve&#187;[[instance.provider]]ref = &#171;regru&#187;[[instance.provider]]ref     = &#171;regru&#187;rr_name = &#171;*.home&#187;[[instance.provider]]ref = &#171;yandexcloud&#187;$ REGRU_PASSWORD=x PROXY_URL=&#8217;socks5:\/\/user:pass@203.0.113.5:1080&#8242; dnspatch &#8212;config dnspatch.toml &#8212;check-configdnspatch: config OK: dnspatch.toml (1 instance(s))  home: interval=5m0s retrievers=[v4(ipv4), v4-reserve(ipv4)] providers=[regru(rr_name=home), regru(rr_name=*.home), yandexcloud]ref \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u044f\u0434\u043e\u043c \u0441 ref \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442. \u0422\u0430\u043a \u043e\u0434\u0438\u043d \u0430\u043a\u043a\u0430\u0443\u043d\u0442 REG.RU \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 home, \u0438 *.home. icanhazip \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 ipify \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u043b.\u0414\u0432\u0430 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438Retriever\u2019\u044b instance\u2019\u0430 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u041a\u0430\u043a\u043e\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e&#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-497052","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497052","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=497052"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497052\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=497052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=497052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=497052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}