{"id":501822,"date":"2026-11-05T17:39:42","date_gmt":"2026-11-05T14:39:42","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=501822"},"modified":"2026-11-05T17:39:42","modified_gmt":"2026-11-05T14:39:42","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=501822","title":{"rendered":"VPN \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d. \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0435 \u0432 \u043a\u0443\u0440\u0441\u0435"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>\u042f \u043d\u0430\u0447\u0430\u043b \u0441 OpenVPN \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439. \u041f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c Telegram-\u0431\u043e\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043e\u0432 \u043d\u0430 Linux \u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 VPN \u043d\u0430 Windows. \u041f\u043e \u0434\u043e\u0440\u043e\u0433\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u044b\u0435 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 TLS \u0431\u0435\u0437 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0441 \u043e\u0442\u043a\u0430\u0442\u043e\u043c \u0438 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0438 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c\u0438.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441 Connected \u0435\u0449\u0451 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u044b\u043c, \u0430 \u0441\u0430\u0439\u0442\u044b \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0438\u0441\u044c.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 VPN \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0443 \u0432\u0441\u0435\u0445, \u043a\u043e\u043c\u0443 \u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043e\u0441\u0442\u0443\u043f: \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u0442\u0430, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0438\u043b\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b Linux \u0438 PowerShell, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 OpenVPN, \u0432\u044b\u0434\u0430\u0447\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0447\u0435\u0440\u0435\u0437 Telegram \u0438 \u043a\u043e\u0434 TCP-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<p>\u042d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0420\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430, \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u044b, \u0438\u043c\u0435\u043d\u0430 \u0441\u0435\u043c\u0435\u0439\u043d\u044b\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b. <code>198.51.100.10<\/code> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 NL, <code>203.0.113.20<\/code> \u2014 Windows, \u0430 \u043f\u043e\u0440\u0442\u044b <code>5443<\/code>, <code>5444<\/code> \u0438 <code>15444<\/code> \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b. \u042d\u0442\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 <code>vpn-lab<\/code>, \u043f\u043e\u0434\u0441\u0435\u0442\u044f\u043c\u0438 <code>10.77.0.0\/24<\/code> \u0438 <code>10.78.0.0\/24<\/code> \u2014 \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430. \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0438\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043c\u043e\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435; \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0437\u0430\u043d\u043e\u0432\u043e \u043d\u0435 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u0441\u044f.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/3d\/1f\/22\/3d1f229e5bc3bb06edde0a9de8a1f5f0.png\" alt=\"\u0427\u0430\u043a \u041d\u043e\u0440\u0440\u0438\u0441, \u0420\u044d\u043c\u0431\u043e \u0438 \u0414\u0436\u043e\u043d \u041c\u0430\u043a\u043a\u043b\u0435\u0439\u043d \u0447\u0438\u043d\u044f\u0442 VPN\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/3d\/1f\/22\/3d1f229e5bc3bb06edde0a9de8a1f5f0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/3d\/1f\/22\/3d1f229e5bc3bb06edde0a9de8a1f5f0.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0427\u0430\u043a \u041d\u043e\u0440\u0440\u0438\u0441, \u0420\u044d\u043c\u0431\u043e \u0438 \u0414\u0436\u043e\u043d \u041c\u0430\u043a\u043a\u043b\u0435\u0439\u043d \u0447\u0438\u043d\u044f\u0442 VPN<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0425\u0443\u0434\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435: \u0441\u043e\u0441\u0442\u0430\u0432 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0439 \u0431\u0440\u0438\u0433\u0430\u0434\u044b \u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e VPN \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u0440\u043e\u043c\u043d\u0435\u0435.<\/em><\/p>\n<h3>\u0427\u0442\u043e \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e<\/h3>\n<p>\u041c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0431\u044b\u043b VPN \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430. \u041f\u043e\u0442\u043e\u043c \u2014 \u0435\u0449\u0451 \u0438 \u0434\u043b\u044f \u0431\u043b\u0438\u0437\u043a\u0438\u0445. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0447\u0435\u0440\u0435\u0437 Telegram \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043d\u0435 \u043c\u0435\u043d\u044f\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443 \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445.<\/p>\n<p>\u0422\u0430\u043a \u043a OpenVPN \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0441\u044f Telegram-\u0431\u043e\u0442. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u044f \u0441\u043e\u0437\u0434\u0430\u044e, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e \u0438 \u043e\u0442\u0437\u044b\u0432\u0430\u044e \u043f\u0440\u043e\u0444\u0438\u043b\u0438. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0434\u0432\u0430 VPS \u2014 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2014 \u0432 \u041d\u0438\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u0430\u0445. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u0442\u0430\u043a:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0423\u0437\u0435\u043b<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041e\u0421<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0420\u043e\u043b\u044c \u0432 VPN<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">NL<\/p>\n<\/td>\n<td>\n<p align=\"left\">Ubuntu 24.04<\/p>\n<\/td>\n<td>\n<p align=\"left\">4 vCPU, 4 \u0413\u0411 RAM, 40 \u0413\u0411 NVMe<\/p>\n<\/td>\n<td>\n<p align=\"left\">OpenVPN, \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b; Telegram-\u0431\u043e\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Windows<\/p>\n<\/td>\n<td>\n<p align=\"left\">Windows Server 2022<\/p>\n<\/td>\n<td>\n<p align=\"left\">2 vCPU, 4 \u0413\u0411 RAM, \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e 25 \u0413\u0411 NVMe<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0445\u043e\u0434 \u043a NL, \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 OpenVPN<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u041e\u0421, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0436\u0431 \u0441\u0440\u0430\u0437\u0443 \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438. \u041d\u043e\u0432\u044b\u0439 VPN \u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u043b \u0440\u044f\u0434\u043e\u043c \u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0445\u0435\u043c\u043e\u0439.<\/p>\n<p>\u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0445 \u043d\u0438\u0436\u0435 <code>BUE...<\/code> \u0438 <code>bue_...<\/code> \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0437\u0430\u0434\u0430\u0447, \u0441\u043b\u0443\u0436\u0431 \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u043e\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u041e\u043d\u0438 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 OpenVPN.<\/p>\n<h3>\u041a\u0430\u043a \u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h3>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/bc\/97\/8c\/bc978c3b329dd1e54482a504ecb3076f.png\" alt=\"\u0422\u0440\u0438 \u044d\u0442\u0430\u043f\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043c\u043e\u0435\u0433\u043e VPN\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/bc\/97\/8c\/bc978c3b329dd1e54482a504ecb3076f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/bc\/97\/8c\/bc978c3b329dd1e54482a504ecb3076f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0422\u0440\u0438 \u044d\u0442\u0430\u043f\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043c\u043e\u0435\u0433\u043e VPN<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439: <code>\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2192 OpenVPN \u043d\u0430 NL \u2192 NAT \u2192 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442<\/code>. Telegram-\u0431\u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 NL.<\/p>\n<p>\u041f\u043e\u0437\u0436\u0435 Windows \u0441\u0442\u0430\u043b\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430:<\/p>\n<p><code>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2192 TCP-\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a \u043d\u0430 Windows \u2192 OpenVPN \u043d\u0430 NL \u2192 NAT \u2192 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442<\/code>.<\/p>\n<p>\u041f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u043b VPN. \u041e\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b TCP-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b \u0431\u0430\u0439\u0442\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 OpenVPN \u043d\u0430 NL. \u0415\u0441\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c NL, \u044d\u0442\u043e\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0442\u043e\u0436\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0414\u0432\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0434\u0432\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 VPN.<\/p>\n<p>\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 Windows-\u043c\u0430\u0440\u0448\u0440\u0443\u0442:<\/p>\n<p><code>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2192 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 TCP-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Windows \u2192 OpenVPN \u043d\u0430 127.0.0.1 \u2192 TAP \u2192 WinNAT \u2192 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442<\/code>.<\/p>\n<p>\u0411\u043e\u0442 \u043d\u0430 NL \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c\u0438 Windows \u0447\u0435\u0440\u0435\u0437 SSH\/SFTP.<\/p>\n<p>\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0445\u0435\u043c\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0435 \u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 NL. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0434\u0430\u0447\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u0442\u0430 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430 NL. \u0423\u0436\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<h3>\u042d\u0442\u0430\u043f 1. \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u043d\u044e<\/h3>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0441\u0442\u0430\u043b <code>ovpn_make.sh<\/code>: \u043e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f OpenVPN \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u0435\u043d\u044e <code>\/vpn<\/code>, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0438 \u043e\u0442\u0437\u044b\u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0431\u043e\u0440 iOS, Android \u0438\u043b\u0438 Windows. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u043e\u0442\u0435.<\/p>\n<p>\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433, \u043a\u0430\u0442\u0430\u043b\u043e\u0433 Easy-RSA \u0438 \u043a\u043b\u044e\u0447 <code>tls-crypt<\/code>. Easy-RSA \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432: \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u0445, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0441\u0430\u043b\u0438\u0441\u044c \u0432\u043f\u043e\u043b\u043d\u0435 \u0437\u0435\u043c\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439: Easy-RSA \u043b\u0435\u0436\u0430\u043b \u0433\u043b\u0443\u0431\u0436\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e, \u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a <code>tls-crypt<\/code> \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/p>\n<p>\u0421\u0443\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e:<\/p>\n<pre><code class=\"bash\"># \u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0430.# \u042d\u0442\u043e \u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0431\u043e\u0440 \u00ab\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043f\u0430\u0432\u0448\u0435\u0433\u043e\u0441\u044f\u00bb \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430.CONF=\/etc\/openvpn\/server\/lab.confCONFDIR=$(dirname \"$CONF\")TC=$(awk '$1 == \"tls-crypt\" { print $2; exit }' \"$CONF\")if [ -n \"$TC\" ] &amp;&amp; [ \"${TC:0:1}\" != \/ ]; then    TC=\"$CONFDIR\/$TC\"fitest -r \"$TC\" || {    printf '%s\\n' '\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 tls-crypt' &gt;&amp;2    exit 1}<\/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>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043c\u043e\u0451\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u044d\u0442\u043e\u0433\u043e \u0445\u0432\u0430\u0442\u0430\u043b\u043e. \u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c \u0432\u0441\u0435\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 OpenVPN \u0442\u0430\u043a\u043e\u0439 <code>awk<\/code> \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f: \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0447\u0451\u0442\u0430.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0435\u0449\u0451 \u0432\u0430\u0436\u043d\u0435\u0435 \u0441\u0442\u0430\u043b\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u0418\u043d\u0430\u0447\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u043f\u043e\u0440\u0442\u043e\u043c \u0438\u043b\u0438 \u0446\u0435\u043d\u0442\u0440\u043e\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432.<\/p>\n<h3>\u042d\u0442\u0430\u043f 2. \u0418\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 Telegram<\/h3>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043e\u0431\u0449\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u044f \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0412 \u043c\u0435\u043d\u044e \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0438\u043c\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>work-laptop<\/code> \u0438\u043b\u0438 <code>home-phone<\/code>, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0437\u044b\u0432.<\/p>\n<p>\u0418\u043c\u044f \u0441\u0442\u0430\u043b\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0447\u0430\u0441\u0442\u044c\u044e \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u0438 <code>CN<\/code> \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. <code>CN<\/code>, \u0438\u043b\u0438 Common Name, \u2014 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0435. \u0423 \u043c\u0435\u043d\u044f \u043e\u043d \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0430 \u043d\u0435 \u0444\u0430\u043c\u0438\u043b\u0438\u044e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0438 \u043d\u0435 \u0442\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u043c\u0435\u043d\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"python\">import reimport unicodedatadef validate_ascii_name(value):    value = unicodedata.normalize(\"NFKD\", value.strip().lower())    value = \"\".join(c for c in value if not unicodedata.combining(c))    value = re.sub(r\"[\\s_]+\", \"-\", value)    value = re.sub(r\"-+\", \"-\", value).strip(\"-\")    if not re.fullmatch(r\"[a-z0-9-]{3,24}\", value):        raise ValueError(\"\u041d\u0443\u0436\u043d\u043e 3\u201324 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0446\u0438\u0444\u0440\u044b \u0438\u043b\u0438 \u0434\u0435\u0444\u0438\u0441\")    return value<\/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 \u043c\u043e\u0451\u043c \u043f\u043e\u043b\u043d\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u0435\u0441\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0440\u0443\u0441\u0441\u043a\u0438\u0445 \u0431\u0443\u043a\u0432. \u0417\u0434\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u0436\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c: \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u043e\u0435 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u043e\u0434\u0438\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440.<\/p>\n<p>\u0421\u0430\u043c\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u041d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u0438 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0438 PKI (\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432), \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u0430 \u043d\u0443\u0436\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435. \u0412 \u043d\u043e\u0432\u044b\u0445 Windows-\u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445 \u044d\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u044b \u0434\u0430\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0432 \u0441\u0442\u0430\u0440\u043e\u043c NL-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0435; \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435.<\/p>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e \u043d\u0438\u043a\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438<\/h4>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439: \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>@username<\/code>, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442. \u041d\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Telegram-\u0431\u043e\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 <code>sendDocument<\/code> \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442. \u0423 Telegram \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"https:\/\/core.telegram.org\/bots#how-are-bots-different-from-humans\" rel=\"noopener nofollow\">\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0432 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0431\u043e\u0442\u043e\u0432<\/a>.<\/p>\n<p>\u042f \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u043b\u0438\u0447\u043d\u0443\u044e Telegram-\u0441\u0435\u0441\u0441\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Telethon. \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441\u0430\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0431\u043e\u0442\u0430.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c ID. \u0412 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 \u043d\u0438\u0436\u0435 \u00ab\u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446\u00bb \u2014 \u044d\u0442\u043e \u043c\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0443\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f:<\/p>\n<ol>\n<li>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u0430 \u043e\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u043e\u0433\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0432 \u043b\u0438\u0447\u043d\u043e\u043c \u0447\u0430\u0442\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0435\u0441\u0441\u0438\u044f Telegram \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0430 \u043d\u0435 \u0431\u043e\u0442, \u043a\u0430\u043d\u0430\u043b \u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0424\u0430\u0439\u043b \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 <code>.ovpn<\/code>, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435.<\/p>\n<\/li>\n<\/ol>\n<p>\u041b\u0438\u043c\u0438\u0442 \u0432 \u043f\u044f\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043e\u043a \u0437\u0430 \u0447\u0430\u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 SQLite \u0438 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 Telegram <code>FloodWait<\/code> \u0442\u043e\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438.<\/p>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439; \u043e\u043d\u0430 \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e, \u0447\u0430\u0442\u044b \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b. \u042d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430: \u0441\u0430\u043c \u0444\u0430\u0439\u043b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 MTProto-\u0441\u0435\u0441\u0441\u0438\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u00ab\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c VPN\u00bb \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442. <a href=\"https:\/\/docs.telethon.dev\/en\/stable\/concepts\/sessions.html\" rel=\"noopener nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Telethon<\/a> \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0431\u0435\u0440\u0435\u0447\u044c \u0441\u0435\u0441\u0441\u0438\u0438.<\/p>\n<h4>\u041a\u0430\u043a \u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0443\u044e \u0432\u044b\u0434\u0430\u0447\u0443<\/h4>\n<p>\u0412 \u0440\u0430\u043d\u043d\u0435\u0439 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u0444\u0430\u0439\u043b \u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u0442, \u043a\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u043e\u0442\u043a\u0440\u044b\u043b \u0441\u0441\u044b\u043b\u043a\u0443. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u0431\u044b\u043b \u0431\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0434\u0430\u0447\u0443 \u044f \u0441\u0432\u044f\u0437\u0430\u043b \u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u043d\u0438\u043a\u043e\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e Telegram ID \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u043b\u0430 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<pre><code>\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 @username    -&gt; \u0431\u043e\u0442 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 24 \u0447\u0430\u0441\u0430    -&gt; \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \/start \u043f\u043e \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044e    -&gt; \u0431\u043e\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443 \u043d\u0438\u043a \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Telegram ID    -&gt; \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 5 \u043c\u0438\u043d\u0443\u0442    -&gt; \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e \u043f\u043e\u0433\u0430\u0448\u0430\u0435\u0442\u0441\u044f    -&gt; \u0444\u0430\u0439\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 chat_id<\/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 \u0431\u0430\u0437\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f SHA-256 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430. \u0422\u043e\u043a\u0435\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 24 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0431\u0430\u0439\u0442; \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 <code>BEGIN IMMEDIATE<\/code>, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u0432\u0435 \u0432\u044b\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0421\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043e\u0431\u0435\u0438\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438:<\/p>\n<pre><code class=\"python\">import hashlibimport secretsimport timedef make_grant(con, name, expected_username):    token = secrets.token_urlsafe(24)    digest = hashlib.sha256(token.encode()).hexdigest()    with con:        con.execute(            \"INSERT INTO vpn_grants(hash,name,expires,used,recipient) \"            \"VALUES(?,?,?,0,?)\",            (digest, name, time.time() + 86400, expected_username.lower()),        )    return tokendef consume_grant(con, presented_token, expected_username):    digest = hashlib.sha256(presented_token.encode()).hexdigest()    con.execute(\"BEGIN IMMEDIATE\")    try:        row = con.execute(            \"SELECT name FROM vpn_grants \"            \"WHERE hash=? AND used=0 AND expires&gt;? AND recipient=?\",            (digest, time.time(), expected_username.lower()),        ).fetchone()        if row:            con.execute(\"UPDATE vpn_grants SET used=1 WHERE hash=?\", (digest,))        con.commit()        return row    except Exception:        con.rollback()        raise<\/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>con<\/code> \u0437\u0434\u0435\u0441\u044c \u2014 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 <code>vpn_grants<\/code>. \u0414\u043b\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0445\u0435\u0448 \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0442\u043e\u043a\u0435\u043d\u0430; \u0432 \u043f\u043e\u043b\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430\u0442, \u043e\u0442\u0437\u044b\u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e, \u0430 \u043d\u0435 \u0432\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a <code>\/start<\/code>.<\/p>\n<p>\u041f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0447\u0435\u0440\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 API \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439 SQLite. \u0415\u0441\u043b\u0438 Telegram \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f, \u0431\u043e\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u043d\u0435\u0443\u0434\u0430\u0447\u0435 \u0438 \u043f\u0440\u043e\u0441\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443. \u042f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0451\u043b \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e, \u0430 \u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435.<\/p>\n<h4>\u041a\u0430\u043a \u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u043e\u0442\u0430<\/h4>\n<p>\u0418\u043c\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u043d\u0438\u043a \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438. \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043e\u0442\u0437\u044b\u0432\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0447\u0430\u0442\u0435 \u043d\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 shell-\u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u044b\u044f\u0432\u0438\u043b\u0430 \u043e\u0431\u0445\u043e\u0434: \u043a\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0437\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c \u043c\u043e\u0433\u043b\u043e \u0438\u0434\u0442\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u2014 \u043f\u043e\u043b\u043d\u043e\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0431\u0435\u0437 <code>shell=True<\/code>.<\/p>\n<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u0435\u043d \u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435:<\/p>\n<pre><code class=\"python\">import subprocessDIAGNOSTICS = {    \"uptime\": [\"uptime\"],    \"vpn-state\": [        \"systemctl\", \"show\", \"openvpn-server@lab.service\",        \"--property=ActiveState,SubState,NRestarts,ExecMainStatus\",    ],}def run_diagnostic(name):    if name not in DIAGNOSTICS:        raise ValueError(\"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\")    return subprocess.run(        DIAGNOSTICS[name], shell=False, check=True,        capture_output=True, text=True, timeout=10,    ).stdout<\/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>\u0421\u043e\u0441\u0442\u0430\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u0414\u0430\u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u0435\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f<\/h3>\n<p>\u0423 \u0431\u043e\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0442\u0440\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u0442\u0447\u0451\u0442\u0430:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041a\u043e\u043c\u0430\u043d\u0434\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>\/vpnstat<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d \u0441\u0435\u0439\u0447\u0430\u0441, \u0430\u0434\u0440\u0435\u0441\u0430 \u0442\u0443\u043d\u043d\u0435\u043b\u044f \u0438 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>\/vpnlog N<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c \u0438 \u0434\u043d\u044f\u043c \u0437\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>\/vpnsites N<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u0433\u0440\u0435\u0433\u0430\u0442\u044b DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e \u0434\u043e\u043c\u0435\u043d\u0430\u043c<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u0435\u0441\u0441\u0438\u0438 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0432 SQLite, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0435\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u0434\u043b\u0438\u043d\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0436\u0443\u0440\u043d\u0430\u043b\u0430. \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u0440\u0430 \u00ab\u0432\u0440\u0435\u043c\u044f \u2014 \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u00bb \u0437\u0430\u0449\u0438\u0449\u0430\u043b\u0430 \u043e\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f.<\/p>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0432\u044c\u044e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u0430\u0440\u0441\u0435\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b \u043b\u044e\u0431\u043e\u0435 <code>VERIFY OK: depth=N, CN=...<\/code> \u0437\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e. OpenVPN \u043f\u0438\u0448\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432.<\/p>\n<p>\u041d\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code>VERIFY OK: depth=1, CN=lab-caVERIFY OK: depth=0, CN=lab-phone<\/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>\u0421\u0442\u0430\u0440\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u0438 <code>lab-ca<\/code>, \u0438 <code>lab-phone<\/code>. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0446\u0435\u043d\u0442\u0440 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u0430 \u043d\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0412 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 OpenVPN \u0438\u043c\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0441 \u0443\u0440\u043e\u0432\u043d\u044f <code>cert_depth == 0<\/code>; \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/OpenVPN\/openvpn\/blob\/release\/2.6\/src\/openvpn\/ssl_verify.c\" rel=\"noopener nofollow\">\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432<\/a>. \u0414\u043b\u044f \u0443\u0447\u0451\u0442\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0441\u0435\u0441\u0441\u0438\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043b\u0438\u0431\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0440\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 <code>vpn_sessions_watch()<\/code> \u0435\u0449\u0451 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <code>depth=\\d+<\/code> \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0445\u0432\u043e\u0441\u0442\u0430 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435. \u0414\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0432 \u043f\u043b\u0430\u043d\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<h3>\u042d\u0442\u0430\u043f 3. \u041e\u0434\u0438\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u0448\u0442\u043e\u0440\u043c \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/h3>\n<p>\u0412 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0435 iPhone \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0435 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434. \u0412 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u043c \u0436\u0435 <code>CN<\/code> \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435. \u041f\u0440\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c <code>duplicate-cn<\/code> \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0434 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>\u042d\u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u0435\u0442\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u043b\u0438 \u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u043c\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u041f\u043e \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u043e\u043f\u044b\u0442\u043a\u0443.<\/p>\n<p>\u042f \u0432\u044b\u0431\u0440\u0430\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <code>duplicate-cn<\/code> \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u043e \u0431\u044b \u043e\u0431\u0449\u0443\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u043c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043e\u0442\u0437\u044b\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0436\u0435 \u0432\u044b\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0431\u0435\u043b \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f: \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u043b\u043e \u043e \u0448\u0442\u043e\u0440\u043c\u0435. \u0414\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u0436\u0430 \u044f \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u2014 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0437\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u0441 \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043d\u0430 \u0448\u0435\u0441\u0442\u044c \u0447\u0430\u0441\u043e\u0432. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0435\u0440\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0435\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430:<\/p>\n<pre><code class=\"bash\">sudo journalctl -u openvpn-server@lab.service \\  --since '15 minutes ago' \\  --until 'now' \\  --output=short-iso-precise --no-pager<\/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>\u0416\u0443\u0440\u043d\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0438\u043c\u0435\u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432. \u0412 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043e\u0431\u0435\u0437\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u0431\u043e\u044f. \u0410 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u0435\u043d \u043a\u0443\u0440\u0441\u043e\u0440 \u0436\u0443\u0440\u043d\u0430\u043b\u0430: \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0434\u0432\u0443\u0445\u0441\u043e\u0442 \u0441\u0442\u0440\u043e\u043a \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438\u0441\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f.<\/p>\n<h3>\u042d\u0442\u0430\u043f 4. \u041f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0430 OpenVPN \u0438 \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439<\/h3>\n<p>\u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u0435\u0436\u043d\u0438\u0445 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043e\u0442\u043e\u0437\u0432\u0430\u043d\u0430. \u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0441\u043c\u0435\u043d\u043e\u0439 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0435\u043b\u044c\u0437\u044f: \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0443.<\/p>\n<p>\u042f \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u043b \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442: \u043d\u043e\u0432\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b UDP- \u0438 TCP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0430 Windows \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c TCP-\u0432\u0445\u043e\u0434\u043e\u043c \u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 \u043d\u0430 NL.<\/p>\n<h4>\u041e\u0448\u0438\u0431\u043a\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430<\/h4>\n<p>\u0412 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0438\u043c\u044f \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0432 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u0424\u0430\u0439\u043b\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438, \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043b\u0438\u0441\u044c, \u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0431\u044b\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438. \u042f \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b \u043e\u0448\u0438\u0431\u043a\u0443 \u0434\u043e \u0432\u044b\u0434\u0430\u0447\u0438 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u043d\u043e \u0438 <code>subject<\/code>, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0438\u0436\u0435 \u0432\u044b\u0432\u043e\u0434\u044f\u0442 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0445\u0435\u0448 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438; \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043d\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"bash\">openssl x509 -in server.crt -noout \\  -subject -issuer -serial -dates -ext extendedKeyUsageopenssl x509 -in lab-phone.crt -noout \\  -subject -issuer -serial -dates -ext extendedKeyUsageopenssl verify -CAfile ca.crt -purpose sslserver server.crtopenssl verify -CAfile ca.crt -purpose sslclient lab-phone.crtopenssl pkey -in lab-phone.key -pubout -outform DER | openssl sha256openssl x509 -in lab-phone.crt -pubkey -noout \\  | openssl pkey -pubin -outform DER | openssl sha256<\/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>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0445\u0435\u0448\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0441\u0442\u044c: \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435.<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0440\u043e\u0439 NL-\u0432\u0435\u0442\u043a\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0438\u043c\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u043d\u043e \u043d\u0435\u0442 \u044f\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f CN, issuer, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430 \u043f\u043e\u0441\u043b\u0435 Easy-RSA. \u042d\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e; \u0438\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0432 \u043f\u043b\u0430\u043d\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f. Windows-\u0432\u0435\u0442\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 CA \u0438 CRL.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0442\u0437\u044b\u0432\u0430 \u2014 CRL. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c\u00bb \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<pre><code class=\"bash\">openssl crl -in crl.pem -noout -issuer -lastupdate -nextupdateopenssl crl -in crl.pem -noout -verify -CAfile ca.crtopenssl verify -CAfile ca.crt -CRLfile crl.pem \\  -crl_check -purpose sslclient lab-phone.crt<\/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<h4>\u041a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u044b\u043f\u0443\u0441\u043a \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0443\u0447\u0435\u0431\u043d\u043e\u0439 PKI<\/h4>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 Easy-RSA 3, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u0443\u044e \u0443\u0447\u0435\u0431\u043d\u0443\u044e PKI. \u0415\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>init-lab-pki.sh<\/code>, \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>bash init-lab-pki.sh<\/code>: \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0439 <code>exit 1<\/code> \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e SSH-\u0441\u0435\u0441\u0441\u0438\u044e. \u0417\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0432\u0435\u0440\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d. \u0412\u0441\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443.<\/p>\n<pre><code class=\"bash\"># Ubuntu 24.04; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 \u0441\u0442\u0435\u043d\u0434.sudo apt-get updatesudo apt-get install openvpn easy-rsa opensslumask 077LAB_PKI_DIR=\"$HOME\/vpn-lab-pki\"if [ -e \"$LAB_PKI_DIR\" ]; then    printf '%s\\n' '\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442; \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435' &gt;&amp;2    exit 1fimake-cadir \"$LAB_PKI_DIR\"cd \"$LAB_PKI_DIR\".\/easyrsa init-pki.\/easyrsa --req-cn='Lab VPN CA' build-ca.\/easyrsa --batch build-server-full lab-server nopass.\/easyrsa --batch build-client-full lab-phone nopass.\/easyrsa --batch gen-crlopenvpn --genkey secret tls-crypt.key<\/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>build-ca<\/code> \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432. \u0421\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0431\u0435\u0437 \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0430; \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u0440\u044b\u0442. \u0426\u0435\u043d\u0442\u0440 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c VPN-\u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 PKI \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/easy-rsa.readthedocs.io\/en\/latest\/\" rel=\"noopener nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Easy-RSA<\/a>.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430:<\/p>\n<pre><code class=\"bash\">openssl verify -CAfile pki\/ca.crt -purpose sslserver pki\/issued\/lab-server.crtopenssl verify -CAfile pki\/ca.crt -purpose sslclient pki\/issued\/lab-phone.crtopenssl crl -in pki\/crl.pem -noout -nextupdate<\/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>\u0417\u0430\u043c\u0435\u043d\u0430 CA \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445. \u0421\u0442\u0430\u0440\u044b\u0439 <code>.ovpn<\/code> \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439.<\/p>\n<h3>\u041a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438 OpenVPN \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b TLS, \u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b Connected. \u041d\u043e \u0441\u0430\u0439\u0442\u044b \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0438\u0441\u044c: DNS \u0438 HTTPS \u0437\u0430\u0432\u0438\u0441\u0430\u043b\u0438. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0443\u0436\u0435 \u043d\u0435 \u0432 \u0432\u044b\u0434\u0430\u0447\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u0430 \u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/d3\/5f\/90\/d35f90d2e8a5b1801334ff3f4a8b2d7a.png\" alt=\"\u041f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 TLS \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/d3\/5f\/90\/d35f90d2e8a5b1801334ff3f4a8b2d7a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/d3\/5f\/90\/d35f90d2e8a5b1801334ff3f4a8b2d7a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 TLS \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u042f \u0440\u0430\u0437\u0431\u0438\u043b \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443 \u043d\u0430 \u0443\u0447\u0430\u0441\u0442\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043c\u0435\u043d\u044f\u0442\u044c DNS, MTU, \u0448\u0438\u0444\u0440, \u043f\u043e\u0440\u0442 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0423\u0447\u0430\u0441\u0442\u043e\u043a<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041a\u0430\u043a\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u043d\u0435\u0448\u043d\u0438\u0439 TCP-\u0432\u0445\u043e\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u043f\u043e\u0440\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u043e\u0445\u043e\u0434\u0438\u0442 \u043b\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0434\u043e \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">OpenVPN TLS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0423\u0437\u043d\u0430\u043b\u0438 \u043b\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0442\u0443\u043d\u043d\u0435\u043b\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u044b\u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0430 \u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u044b\u0445\u043e\u0434 \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">Forwarding, NAT, \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u043e\u0436\u0435\u0442 \u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u043f\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">DNS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0430\u043f\u0440\u043e\u0441 \u043a \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c\u0443 \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043c\u0451\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">HTTPS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0430\u043f\u0440\u043e\u0441 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043b\u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u043d\u0435\u0448\u043d\u0438\u0439 IP, \u0441\u0430\u0439\u0442\u044b, \u0441\u043c\u0435\u043d\u0430 \u0441\u0435\u0442\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u043b\u0443\u0447\u0438\u043b \u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u0427\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b<\/h4>\n<p>\u041f\u0440\u044f\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u00abTLS \u0435\u0441\u0442\u044c, \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442\u00bb. \u0422\u043e\u0442 \u0436\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 VPN \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0435. \u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0447\u0435\u0440\u0435\u0437 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Wi-Fi \u0442\u043e\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0433 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c DNS \u0438 HTTPS.<\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u043b\u043e \u0441\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0434\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0443\u0442\u0438. \u041d\u043e \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e, \u0447\u0442\u043e \u0432\u0438\u043d\u043e\u0432\u0430\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0438\u043b\u0438 OpenVPN \u0432\u043e\u043e\u0431\u0449\u0435.<\/p>\n<p>\u041d\u0430 Windows \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 TCP-\u043e\u0442\u0432\u0435\u0442: \u043e\u043d \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u0441\u044f \u0441 \u0442\u0435\u043c \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0431\u0435\u0437 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043f\u043e\u0442\u0435\u0440\u044c PktMon \u0431\u044b\u043b \u043d\u0443\u043b\u0435\u0432\u044b\u043c. \u042d\u0442\u043e \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u043b\u043e \u043f\u043e\u0442\u0435\u0440\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u043a\u0430\u0445 \u043f\u0443\u0442\u0438. \u0417\u0430\u043c\u0435\u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u043e\u0440\u0442\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0441 <code>tls-crypt<\/code> \u043d\u0430 <code>tls-auth<\/code> \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u043b\u0438.<\/p>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043b \u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c: \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442\u0432\u0435\u0442 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u00ab\u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0438\u0437-\u0437\u0430 MTU\u00bb. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 MTU \u043d\u0435 \u0431\u044b\u043b\u043e \u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f.<\/p>\n<p>\u0414\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043d\u0438\u043c\u043e\u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\"># NL: \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u0441\u043e\u043a\u0435\u0442\u044b, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b.systemctl show openvpn-server@lab.service \\  --property=ActiveState,SubState,NRestarts,ExecMainStatussudo ss -lntupip -brief addressip route showsysctl net.ipv4.ip_forward<\/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>\u0410 \u043d\u0430 Windows \u2014 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0438 NAT:<\/p>\n<pre><code class=\"powershell\">Get-Service OpenVPNServiceGet-NetTCPConnection -State Listen |    Select-Object LocalAddress,LocalPort,OwningProcessGet-NetNatGet-NetIPInterface -AddressFamily IPv4 |    Select-Object InterfaceAlias,InterfaceIndex,Forwarding,ConnectionStateGet-NetRoute -DestinationPrefix '0.0.0.0\/0' |    Select-Object InterfaceIndex,NextHop,RouteMetric<\/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 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435. \u0412 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043e\u043f\u044b\u0442\u043e\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 Windows \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b \u043d\u0443\u0436\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b.<\/p>\n<h3>\u0417\u0430\u0447\u0435\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 TCP-\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a<\/h3>\n<p>\u041d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0432\u0445\u043e\u0434\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043f\u043e\u0440\u0446\u0438\u0438 TCP \u0438 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0431\u0430\u0439\u0442\u043e\u0432 \u0441 \u043f\u0430\u0443\u0437\u043e\u0439 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c OpenVPN keepalive \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c backend \u044d\u0442\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f. \u041f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 VPN. \u041e\u043d \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 OpenVPN <code>fragment<\/code>.<\/p>\n<p>TCP \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0431\u0430\u0439\u0442\u043e\u0432. \u0414\u0432\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 <code>sendall()<\/code> \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e\u0442, \u0447\u0442\u043e \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u0441\u0435\u0442\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u0440\u043e\u0432\u043d\u043e \u0434\u0432\u0430 IP-\u043f\u0430\u043a\u0435\u0442\u0430. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f \u043f\u043e\u043c\u043e\u0433\u043b\u043e \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u043f\u0443\u0442\u044f\u0445; \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043e\u0431\u0445\u043e\u0434\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u044f \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b.<\/p>\n<p>\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"python\">destination.sendall(data[:1])if len(data) &gt; 1:    if stop_event.wait(0.02):        return False    destination.sendall(data[1:])<\/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 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430 \u0431\u044b\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438. \u0415\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 HTTP- \u0438\u043b\u0438 SOCKS-\u043f\u0440\u043e\u043a\u0441\u0438: \u0430\u0434\u0440\u0435\u0441 backend \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u043b\u0441\u044f \u043c\u043e\u0435\u0439 \u0441\u0445\u0435\u043c\u043e\u0439.<\/p>\n<p>\u0416\u0443\u0440\u043d\u0430\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0442\u0438\u043f \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0431\u0430\u0439\u0442\u043e\u0432. \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438\u043b\u0438 \u043a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c.<\/p>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b keepalive \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430<\/h4>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043c\u043e\u0433\u043b\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438, \u043d\u043e \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u043b\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 OpenVPN keepalive. \u041d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u043c backend \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044c\u043d\u044b\u0435 <code>ping<\/code> \u0438 <code>ping-restart<\/code>; \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b keepalive \u0441\u0430\u043c\u043e\u0433\u043e TCP-\u0441\u043e\u043a\u0435\u0442\u0430.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430:<\/p>\n<pre><code># \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e OpenVPN backend, \u043d\u0435 \u043e\u0431\u0449\u0430\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 VPN.ping 0ping-restart 0push \"ping 0\"push \"ping-restart 0\"<\/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>\u042d\u0442\u043e \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e peer \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 OpenVPN. \u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u042f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b \u0435\u0433\u043e \u043a \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u044b.<\/p>\n<p>TCP-\u0441\u043e\u043a\u0435\u0442\u044b \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e:<\/p>\n<pre><code class=\"python\">sock.settimeout(5)sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)if os.name == \"nt\":    sock.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 60000, 10000))<\/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>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 Windows-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b TCP keepalive \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u041e\u043d\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 OpenVPN \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435.<\/p>\n<h3>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 IP \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441<\/h3>\n<p>\u041d\u0430 NL \u0431\u044b\u043b\u043e \u0434\u0432\u0430 IPv4. \u0412 UDP-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f <code>multihome<\/code>: \u043e\u0442\u0432\u0435\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0434\u0432\u0443\u0445 IP \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u043b\u043e \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 NAT.<\/p>\n<p>\u0414\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0433\u043e OpenVPN-\u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u044f \u044f\u0432\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441. \u0418\u043d\u0430\u0447\u0435 \u0432\u0445\u043e\u0434 \u043c\u043e\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 IP, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u0431\u044b \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u044b\u0445\u043e\u0434 \u0442\u043e\u0439 \u0436\u0435 \u043c\u0430\u0448\u0438\u043d\u044b.<\/p>\n<p>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430 SNAT \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430:<\/p>\n<pre><code class=\"bash\"># \u0422\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 iptables \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435.# ens3 \u0438 \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u043c\u0430\u0448\u0438\u043d\u044b.sudo iptables -t nat -C POSTROUTING \\  -s 10.77.0.0\/24 -o ens3 -j SNAT --to-source 198.51.100.10 \\  || sudo iptables -t nat -A POSTROUTING \\  -s 10.77.0.0\/24 -o ens3 -j SNAT --to-source 198.51.100.10<\/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\u0434\u043d\u043e\u0433\u043e SNAT \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430. \u041d\u0443\u0436\u043d\u044b \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u0430\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0437\u0438\u0442 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440\u0435, \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438. \u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 UFW \u0438\u043b\u0438 nftables \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0430\u043c\u0438; \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>\u0412 \u043c\u043e\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 NAT \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u0430 \u043f\u0440\u0435\u0436\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u043b\u0438\u0441\u044c. \u0414\u0432\u0430 IP \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043e\u0431\u0449\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439.<\/p>\n<h3>IPv6 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e<\/h3>\n<p>IPv4 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e \u0438\u0434\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 VPN, \u0430 IPv6 \u2014 \u043f\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e IPv4 \u043d\u0435 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043e\u0431\u0445\u043e\u0434 \u0442\u0443\u043d\u043d\u0435\u043b\u044f.<\/p>\n<p>\u0414\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0433\u043e NL-\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 IPv6 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0443\u043d\u043d\u0435\u043b\u044f: \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b IPv6-\u0430\u0434\u0440\u0435\u0441\u0430 \u0442\u0443\u043d\u043d\u0435\u043b\u044f, \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u043b \u0442\u0443\u0434\u0430 IPv6 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u043b <code>block-ipv6<\/code>. \u0417\u043d\u0430\u0447\u0438\u043c\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b:<\/p>\n<pre><code># \u0423\u0447\u0435\u0431\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0432\u043d\u0443\u0442\u0440\u0438 VPN.server-ipv6 fd42:77:77::\/64block-ipv6push \"block-ipv6\"push \"redirect-gateway def1 bypass-dhcp ipv6\"<\/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>\u042d\u0442\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0434\u043b\u044f IPv4-\u0432\u044b\u0445\u043e\u0434\u0430, \u0430 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e IPv6-\u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 <a href=\"https:\/\/openvpn.net\/community-docs\/community-articles\/openvpn-2-6-manual\/\" rel=\"noopener nofollow\">\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 OpenVPN 2.6<\/a>. \u0414\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0438\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u044d\u0442\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u0443 \u043e\u0434\u043d\u043e\u0433\u043e backend \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439.<\/p>\n<p>\u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0442\u0435\u0441\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e IPv6-\u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0442\u0443\u043d\u043d\u0435\u043b\u044c \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 IPv6 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0430 IPv4 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 Windows-\u043f\u0440\u043e\u0444\u0438\u043b\u044c \u044d\u0442\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h3>\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439<\/h3>\n<p>\u0414\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u044f \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b Python-\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a \u0432 Windows Task Scheduler \u2014 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 \u0437\u0430\u0434\u0430\u0447. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u043d\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432 \u044d\u0442\u043e\u043c \u043e\u043f\u044b\u0442\u0435.<\/p>\n<p>\u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043d\u0443\u0442\u043d\u044b\u0439 \u0441\u0442\u043e\u0440\u043e\u0436. \u041e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u043b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438. \u0415\u0441\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 IP \u0435\u0449\u0451 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432, \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0447\u0430\u0441.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u043b\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e PID \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044f. \u041e\u0434\u0438\u043d \u0441\u0442\u0430\u0442\u0443\u0441 <code>Ready<\/code> \u0443 \u0437\u0430\u0434\u0430\u0447\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442: \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<p>\u0414\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f:<\/p>\n<pre><code class=\"powershell\">Get-ScheduledTask -TaskName 'BUEOpenVPNEntry','BUEOpenVPNEntryWatch' |    Select-Object TaskName,StateGet-ScheduledTaskInfo -TaskName 'BUEOpenVPNEntryWatch' |    Select-Object LastRunTime,LastTaskResult,NextRunTime<\/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>\u041f\u043e\u043b\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u0442\u043e\u0439 \u043f\u0440\u0438\u0451\u043c\u043a\u0435 \u044f \u043d\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b. \u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u0431\u044b\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e; \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0441\u043b\u0435 reboot \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f.<\/p>\n<h3>\u042d\u0442\u0430\u043f 5. \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435, \u0443\u0434\u0430\u0447\u043d\u044b\u0439 \u0437\u0430\u043c\u0435\u0440 \u0438 \u043e\u0442\u043a\u0430\u0442<\/h3>\n<p>\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u043f\u0430\u0443\u0437\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u041f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430: \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043b\u0430 \u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0436\u0434\u0430\u0442\u044c.<\/p>\n<p>\u0412 \u043e\u0434\u043d\u043e\u043c \u0442\u0435\u0441\u0442\u0435 \u043d\u0430 iPhone \u0447\u0435\u0440\u0435\u0437 LTE \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b 10 \u041c\u0431\u0438\u0442\/\u0441 \u043d\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435, 18 \u041c\u0431\u0438\u0442\/\u0441 \u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0438 ping 126 \u043c\u0441. \u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f; \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u0434\u0440\u044f\u0434 \u0438 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0435\u0449\u0451 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c.<\/p>\n<p>\u0412\u0441\u043a\u043e\u0440\u0435 VPN \u0441\u043d\u043e\u0432\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0445\u043e\u0442\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 OpenVPN \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c\u0438. \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c.<\/p>\n<p>\u042f \u0432\u0435\u0440\u043d\u0443\u043b \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u0444\u0430\u0439\u043b \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0435\u0433\u043e SHA-256 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443. \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u043a\u043b\u044e\u0447\u0438, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 VPN \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0430\u0442\u0430 \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043d\u0430 LTE: \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441\u043d\u043e\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b. \u042d\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430. \u0422\u043e\u0447\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0442\u043a\u0430\u0437\u0430 \u0442\u0430\u043a\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u043d\u0438\u043c\u043e\u043a \u0444\u0430\u0439\u043b\u0430 \u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438:<\/p>\n<pre><code class=\"powershell\">$entryPath = 'C:\\vpn-lab\\vpn_tcp_entry.py'$stamp = (Get-Date).ToUniversalTime().ToString('yyyyMMddTHHmmssZ')$savedPath = \"$entryPath.before-$stamp\"Copy-Item -LiteralPath $entryPath -Destination $savedPath -ErrorAction StopGet-FileHash -LiteralPath $entryPath -Algorithm SHA256Get-FileHash -LiteralPath $savedPath -Algorithm SHA256<\/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\u043a\u0430\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0435\u0449\u0451 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a \u043d\u0435\u043c\u0443 \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0443\u0436\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442. \u041c\u0430\u0441\u0441\u043e\u0432\u044b\u0439 <code>taskkill<\/code> \u0432\u0441\u0435\u0445 Python-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0439\u0442\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u0443\u0436\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<\/p>\n<h3>\u042d\u0442\u0430\u043f 6. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 OpenVPN \u043d\u0430 Windows<\/h3>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 Windows \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 NL.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u0431\u044b\u043b\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041d\u0430 Windows \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 OpenVPN, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0434\u0430\u043f\u0442\u0435\u0440, PKI, \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 NAT.<\/p>\n<p>\u0414\u043e \u043f\u0438\u043b\u043e\u0442\u0430 \u0441\u0432\u043e\u0435\u0433\u043e OpenVPN \u0438 WinNAT \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0430 \u044d\u0442\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e. \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MSI OpenVPN Community \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 TAP-\u0430\u0434\u0430\u043f\u0442\u0435\u0440. \u0412 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f OpenVPN 2.7.8. \u0414\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 <code>windows-driver<\/code> <a href=\"https:\/\/openvpn.net\/community-docs\/community-articles\/openvpn-2-7-manual\/\" rel=\"noopener nofollow\">\u0443\u0434\u0430\u043b\u0435\u043d\u0430 \u0432 OpenVPN 2.7<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043b \u0435\u0451 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <code>disable-dco<\/code> \u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 TAP.<\/p>\n<p>\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0438 \u0434\u043b\u044f Windows \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0438 \u0441\u043b\u0443\u0436\u0431\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430; \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 <a href=\"https:\/\/openvpn.net\/community\/\" rel=\"noopener nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 OpenVPN Community<\/a>. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u044b \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u044b \u0432 <a href=\"https:\/\/openvpn.net\/community-docs\/running-openvpn-as-a-windows-service\/\" rel=\"noopener nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Windows service<\/a>.<\/p>\n<h4>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u0441\u0435\u0442\u0438<\/h4>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0437 PowerShell \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430:<\/p>\n<pre><code class=\"powershell\">$vpnExe = 'C:\\Program Files\\OpenVPN\\bin\\openvpn.exe'$sslExe = 'C:\\Program Files\\OpenVPN\\bin\\openssl.exe'foreach ($binary in @($vpnExe, $sslExe)) {    if ((Get-AuthenticodeSignature -LiteralPath $binary).Status -ne 'Valid') {        throw \"\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c: $binary\"    }}&amp; $vpnExe --versionGet-NetAdapter | Select-Object Name,InterfaceDescription,Status,ifIndexGet-NetIPAddress -AddressFamily IPv4 |    Select-Object InterfaceAlias,IPAddress,PrefixLengthGet-NetNatGet-NetRoute -DestinationPrefix '0.0.0.0\/0'<\/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>\u0421\u043a\u0440\u0438\u043f\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0438\u043b\u043e\u0442\u0430 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u043d\u044f\u0442\u043e\u043c \u043f\u043e\u0440\u0442\u0435, \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c NAT, \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c OpenVPN \u0438\u043b\u0438 \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u043f\u0440\u0435\u0436\u043d\u0435\u0433\u043e \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430. \u041e\u043d \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u00ab\u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c\u00bb \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0446\u0435\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0443\u0448\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430.<\/p>\n<h4>\u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438 \u043f\u0440\u0430\u0432\u0430<\/h4>\n<p>Windows \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 NTFS-\u043f\u0440\u0430\u0432\u0430, \u0430 \u043d\u0435 Linux-\u0440\u0435\u0436\u0438\u043c\u044b <code>600<\/code> \u0438 <code>700<\/code>. \u0414\u043b\u044f \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441\u043c\u044b\u0441\u043b \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"powershell\">$vpnRoot = 'C:\\vpn-lab\\windows-openvpn'if (Test-Path -LiteralPath $vpnRoot) {    throw '\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442; \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c'}New-Item -ItemType Directory -Path $vpnRoot -ErrorAction Stop | Out-Null# SID \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430 Windows: SYSTEM \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 Administrators.icacls.exe $vpnRoot \/inheritance:rif ($LASTEXITCODE -ne 0) { throw '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435' }icacls.exe $vpnRoot \/grant:r '*S-1-5-18:(OI)(CI)F' '*S-1-5-32-544:(OI)(CI)F'if ($LASTEXITCODE -ne 0) { throw '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u0440\u0430\u0432\u0430' }foreach ($name in @('pki','clients','logs','snapshots','setup')) {    New-Item -ItemType Directory -Path (Join-Path $vpnRoot $name) |        Out-Null}<\/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>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0435\u0449\u0451 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 ACL \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u044b\u043f\u0443\u0441\u043a.<\/p>\n<p>\u0421\u043b\u0443\u0436\u0431\u0435 OpenVPN \u043d\u0443\u0436\u043d\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, CA-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, CRL \u0438 <code>tls-crypt<\/code>, \u043d\u043e \u043d\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0438 \u043d\u0435 \u043a\u043b\u044e\u0447\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u0423 \u043c\u0435\u043d\u044f \u0441\u043b\u0443\u0436\u0431\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043e\u0442 <code>NT SERVICE\\OpenVPNService<\/code>. \u0415\u0439 \u0431\u044b\u043b\u0438 \u0432\u044b\u0434\u0430\u043d\u044b \u0447\u0442\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432. \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0439 PKI \u0440\u0430\u0441\u043a\u0440\u044b\u043b\u043e \u0431\u044b \u043b\u0438\u0448\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0438.<\/p>\n<h4>\u0427\u0442\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043b\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f Windows PKI<\/h4>\n<p>\u0414\u043b\u044f \u043f\u0438\u043b\u043e\u0442\u0430 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 CA \u0438 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 X.509:<\/p>\n<pre><code>[ ca_extensions ]basicConstraints = critical,CA:TRUE,pathlen:0keyUsage = critical,keyCertSign,cRLSignsubjectKeyIdentifier = hashauthorityKeyIdentifier = keyid:always[ server_extensions ]basicConstraints = critical,CA:FALSEkeyUsage = critical,digitalSignature,keyEnciphermentextendedKeyUsage = serverAuthsubjectKeyIdentifier = hashauthorityKeyIdentifier = keyid,issuer[ client_extensions ]basicConstraints = critical,CA:FALSEkeyUsage = critical,digitalSignatureextendedKeyUsage = clientAuthsubjectKeyIdentifier = hashauthorityKeyIdentifier = keyid,issuer<\/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>CA \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b 1095 \u0434\u043d\u0435\u0439, \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u2014 365 \u0434\u043d\u0435\u0439, CRL \u2014 30 \u0434\u043d\u0435\u0439. \u042d\u0442\u0438 \u0441\u0440\u043e\u043a\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443 \u043f\u0438\u043b\u043e\u0442\u043d\u043e\u043c\u0443 \u0432\u044b\u043f\u0443\u0441\u043a\u0443, \u0430 \u043d\u0435 \u043a\u043e \u0432\u0441\u0435\u043c \u043d\u044b\u043d\u0435\u0448\u043d\u0438\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 CRL \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u0441\u0440\u043e\u043a\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430: \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0442\u0437\u044b\u0432\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u043e\u043b\u0433\u043e \u0434\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c Windows-\u043f\u0438\u043b\u043e\u0442\u0435 \u043a\u043b\u044e\u0447 CA \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0431\u0435\u0437 \u043f\u0430\u0440\u043e\u043b\u044f \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0443\u0437\u043b\u0435. \u0414\u043e\u0441\u0442\u0443\u043f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u043b\u0441\u044f NTFS-\u043f\u0440\u0430\u0432\u0430\u043c\u0438; \u0441\u043b\u0443\u0436\u0431\u0435 OpenVPN \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430 CA \u043d\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c. \u0414\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430 CA \u043d\u0443\u0436\u043d\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u0412 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 CA \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 Windows.<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u044b OpenSSL \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430, \u0435\u0441\u043b\u0438 <code>openssl.cnf<\/code> \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u0430\u0437\u0443 CA, \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0438 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432\u044b\u0448\u0435:<\/p>\n<pre><code class=\"powershell\"># \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u043c \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c pki, \u0430 \u043d\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 CA.$ssl = 'C:\\Program Files\\OpenVPN\\bin\\openssl.exe'&amp; $ssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out ca.key&amp; $ssl req -new -x509 -key ca.key -sha256 -days 1095 `    -config openssl.cnf -extensions ca_extensions -out ca.crt&amp; $ssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out server.key&amp; $ssl req -new -key server.key -subj '\/CN=lab-windows-server' `    -config openssl.cnf -out server.csr&amp; $ssl ca -batch -notext -config openssl.cnf `    -extensions server_extensions -in server.csr -out server.crt&amp; $ssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out lab-phone.key&amp; $ssl req -new -key lab-phone.key -subj '\/CN=lab-phone' `    -config openssl.cnf -out lab-phone.csr&amp; $ssl ca -batch -notext -config openssl.cnf `    -extensions client_extensions -in lab-phone.csr -out lab-phone.crt&amp; $ssl ca -batch -config openssl.cnf -gencrl -out crl.pem&amp; $ssl verify -CAfile ca.crt -CRLfile crl.pem -crl_check `    -purpose sslserver server.crt&amp; $ssl verify -CAfile ca.crt -CRLfile crl.pem -crl_check `    -purpose sslclient lab-phone.crt<\/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>\u041c\u043e\u0439 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0436\u0443\u0440\u043d\u0430\u043b. \u041f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u044b\u0448\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0432\u044b\u043f\u0443\u0441\u043a; \u0437\u0430\u043f\u0443\u0441\u043a \u0438\u0445 \u043f\u043e\u0432\u0435\u0440\u0445 \u0447\u0443\u0436\u043e\u0433\u043e <code>index.txt<\/code> \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 PKI-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 CA, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043a \u0441\u0442\u0430\u0442\u044c\u0435. \u041a\u043b\u044e\u0447 <code>tls-crypt<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e:<\/p>\n<pre><code class=\"powershell\">&amp; 'C:\\Program Files\\OpenVPN\\bin\\openvpn.exe' `    --genkey secret 'C:\\vpn-lab\\windows-openvpn\\pki\\tls-crypt.key'<\/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<h4>OpenVPN, \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0438 WinNAT<\/h4>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 OpenVPN \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 loopback. \u041e\u0431\u0435\u0437\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 <code>server.ovpn<\/code>:<\/p>\n<pre><code>local 127.0.0.1port 15444proto tcp-serverdev tundev-node Lab-OpenVPNdisable-dcotopology subnetserver 10.78.0.0 255.255.255.0dh noneca C:\/vpn-lab\/windows-openvpn\/pki\/ca.crtcert C:\/vpn-lab\/windows-openvpn\/pki\/server.crtkey C:\/vpn-lab\/windows-openvpn\/pki\/server.keycrl-verify C:\/vpn-lab\/windows-openvpn\/pki\/crl.pemtls-crypt C:\/vpn-lab\/windows-openvpn\/pki\/tls-crypt.keyverify-client-cert requireremote-cert-tls clienttls-version-min 1.2data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305auth SHA256allow-compression nopush \"redirect-gateway def1 bypass-dhcp\"push \"dhcp-option DNS 1.1.1.1\"tcp-nodelaypersist-keypersist-tunmax-clients 2tun-mtu 1400ip-win32 netshstatus C:\/vpn-lab\/windows-openvpn\/logs\/server-status.log 10status-version 3log-append C:\/vpn-lab\/windows-openvpn\/logs\/server.logverb 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<p>\u0417\u0434\u0435\u0441\u044c <code>max-clients 2<\/code> \u2014 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u0438\u043b\u043e\u0442\u0430; \u0441\u0435\u043c\u0435\u0439\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u043b\u0441\u044f. <code>tun-mtu 1400<\/code> \u2014 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0438\u043b\u043e\u0442\u0430, \u0430 \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043f\u0440\u0435\u0436\u043d\u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044f. \u041f\u0440\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u043c GCM \u0441\u0442\u0440\u043e\u043a\u0430 <code>auth SHA256<\/code> \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 HMAC \u043a\u0430\u043d\u0430\u043b\u0443 \u0434\u0430\u043d\u043d\u044b\u0445: \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0430\u043c AEAD-\u0448\u0438\u0444\u0440.<\/p>\n<p>\u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 Windows-\u0432\u0445\u043e\u0434 <code>203.0.113.20:5444<\/code>, \u0430 \u043d\u0435 \u043d\u0430 loopback. \u0412 \u043d\u0451\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f <code>remote-cert-tls server<\/code>, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430, \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0448\u0438\u0444\u0440\u044b \u0438 \u0437\u0430\u043f\u0440\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u044f. \u0411\u043b\u043e\u043a\u0438 CA, \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0438 <code>tls-crypt<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440; \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435\u0442.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e TAP \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f IPv4 forwarding \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f WinNAT. \u0412 \u0443\u0447\u0435\u0431\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435:<\/p>\n<pre><code class=\"powershell\"># \u0418\u043c\u0435\u043d\u0430 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0441 Get-NetAdapter \/ Get-NetIPAddress.$tapIndex = (Get-NetAdapter -Name 'Lab-OpenVPN' -ErrorAction Stop).ifIndex$wanIndex = (Get-NetIPAddress -IPAddress '203.0.113.20' -ErrorAction Stop).InterfaceIndexif (Get-NetNat -Name 'Lab-OpenVPN-NAT' -ErrorAction SilentlyContinue) {    throw 'NAT \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442; \u043d\u0443\u0436\u043d\u0430 \u0441\u0432\u0435\u0440\u043a\u0430'}if (@(Get-NetNat).Count -ne 0) {    throw '\u041d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 NAT; \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430'}Set-NetIPInterface -InterfaceIndex $tapIndex -AddressFamily IPv4 -Forwarding EnabledSet-NetIPInterface -InterfaceIndex $wanIndex -AddressFamily IPv4 -Forwarding EnabledNew-NetNat -Name 'Lab-OpenVPN-NAT' -InternalIPInterfaceAddressPrefix '10.78.0.0\/24'<\/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>\u0421\u043c\u044b\u0441\u043b <code>New-NetNat<\/code> \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 <a href=\"https:\/\/learn.microsoft.com\/en-us\/powershell\/module\/netnat\/new-netnat?view=windowsserver2025-ps\" rel=\"noopener nofollow\">Microsoft Learn<\/a>. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043d\u043e \u043d\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440\u0430.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 Windows \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 VPN \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438.<\/p>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430 Windows \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a TCP<\/h4>\n<p>\u041d\u043e\u0432\u044b\u0439 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b TLS \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u043b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u043d\u043e \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0437\u0430\u0432\u0438\u0441\u0430\u043b\u0430. \u041d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c TCP \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0442\u0432\u0435\u0442 \u0431\u0435\u0437 ACK. WinNAT \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u0435\u0430\u043d\u0441\u044b.<\/p>\n<p>\u042f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u0435\u0436\u0434\u0443 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043f\u043e\u0440\u0442\u043e\u043c Windows \u0438 OpenVPN \u043d\u0430 <code>127.0.0.1<\/code>. Backend \u0432 \u0435\u0433\u043e \u043a\u043e\u0434\u0435 \u0436\u0451\u0441\u0442\u043a\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043a loopback. \u0412\u0435\u0441\u044c VPN-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0432\u044b\u0445\u043e\u0434 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043d\u0430 Windows, \u0431\u0435\u0437 \u0441\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u0434\u043e NL.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0438\u043b\u043e\u0442\u043d\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0430 \u043e\u043a\u043e\u043b\u043e 52,8 \u041c\u0411 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0438 2,2 \u041c\u0411 \u043e\u0431\u0440\u0430\u0442\u043d\u043e; \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 NAT-\u0441\u0435\u0430\u043d\u0441\u044b \u0441 Windows-\u0430\u0434\u0440\u0435\u0441\u043e\u043c. \u042d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c. \u041f\u0440\u0438\u0447\u0438\u043d\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043e\u0434\u043d\u0438\u043c \u044d\u0442\u0438\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435\u043c \u0435\u0449\u0451 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0438\u0441\u044c.<\/p>\n<h3>\u041a\u0430\u043a \u044f \u0443\u0441\u043a\u043e\u0440\u0438\u043b \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438 \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u0440\u044f\u043b<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u0441 \u0440\u0430\u043d\u043d\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u0432 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 Windows-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u043e\u0448\u043b\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438 \u0441\u0435\u043a\u0443\u043d\u0434 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 16 \u041a\u0438\u0411.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0440\u043e\u0433 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u043e\u0442\u043e\u043a \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043d\u0438\u043c\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0443 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0449\u0451 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043b.<\/p>\n<p>\u0412 <code>local_tcp_entry.py<\/code> \u044d\u0442\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"python\">def forward(self, data, destination, transferred, elapsed):    if elapsed &gt;= self.warmup_seconds and transferred &gt;= self.warmup_bytes:        destination.sendall(data)        return True    destination.sendall(data[:1])    if len(data) &gt; 1:        if self.stop.wait(self.delay):            return False        destination.sendall(data[1:])    return True<\/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 \u0446\u0438\u043a\u043b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 <code>transferred<\/code> \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432:<\/p>\n<pre><code class=\"python\">transferred = sent if origin is client else receiveddestination = backend if origin is client else clientif not self.forward(data, destination, transferred,                    time.monotonic() - started):    returnif origin is client:    sent += len(data)else:    received += len(data)<\/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>\u041f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430, \u043f\u0440\u0438\u043d\u044f\u0442\u0430\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a. \u041e\u043d\u043e \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c OpenVPN. \u041d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u043f\u0443\u0442\u0438 \u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<p>\u0421\u043e\u043a\u0435\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 <code>TCP_NODELAY<\/code>; \u043d\u0430 OpenVPN \u044f \u0432\u043a\u043b\u044e\u0447\u0438\u043b <code>tcp-nodelay<\/code>. \u041e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u043e\u0441\u0435\u043c\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439. \u0412\u044b\u0445\u043e\u0434 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044b\u0439 \u0441\u043b\u043e\u0442 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043a\u0435\u0442\u044b \u0432 <code>finally<\/code>.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043d\u0430 \u0443\u0447\u0435\u0431\u043d\u043e\u043c Windows-\u0443\u0437\u043b\u0435 \u0441 \u0443\u0436\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c OpenVPN \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"powershell\">&amp; 'C:\\Program Files\\Python312\\python.exe' `    'C:\\vpn-lab\\windows-openvpn\\setup\\local_tcp_entry.py' `    --listen-ip '203.0.113.20' --listen-port 5444 --backend-port 15444 `    --log 'C:\\vpn-lab\\windows-openvpn\\logs\\entry.log'<\/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 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u043b\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u0430 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0435\u043b \u043e\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e PowerShell. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0443\u0436\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0438 \u043f\u043e\u0440\u0442\u043e\u043c; \u0441\u0430\u043c OpenVPN \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043d\u0430 loopback.<\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a <code>local_tcp_entry.py<\/code> \u0438 \u0442\u0440\u0438 \u0442\u0435\u0441\u0442\u0430 <code>test_local_tcp_entry.py<\/code> \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043a \u0441\u0442\u0430\u0442\u044c\u0435. \u0418\u0445 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u044f\u0434\u043e\u043c; \u0437\u0430\u043f\u0443\u0441\u043a \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u2014 <code>python -m unittest -v test_local_tcp_entry.py<\/code>. \u0422\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 loopback \u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430. \u041a \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 VPN \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<h4>\u0422\u0440\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438<\/h4>\n<p>\u0412\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043a\u043e \u043f\u043e \u043e\u0448\u0438\u0431\u043a\u0435 \u0441\u043c\u0435\u0448\u0430\u0442\u044c:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u043c\u0435\u043d \u043d\u0430 Windows: \u043f\u043e 8 \u041c\u0438\u0411 \u0432 \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0441\u0442\u0430\u0440\u044b\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043f\u0430\u0443\u0437\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">8,059 \u0441, \u043e\u043a\u043e\u043b\u043e 16,65 \u041c\u0431\u0438\u0442\/\u0441 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0430\u043a\u043e\u0439 \u0436\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u043c\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u044d\u0442\u0430\u043f<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,111 \u0441, \u043e\u043a\u043e\u043b\u043e 1204,41 \u041c\u0431\u0438\u0442\/\u0441 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u043e\u0441\u044c; \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0430\u0441\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Ping \u0441 Windows \u0434\u043e iPhone \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0443\u043d\u043d\u0435\u043b\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">8 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0438\u0437 8, \u0441\u0440\u0435\u0434\u043d\u0435\u0435 75,5 \u043c\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0420\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0432 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041c\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043c\u0435\u0440 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u043a\u043e\u043b\u043e 10 \u041c\u0431\u0438\u0442\/\u0441 \u0432\u043d\u0438\u0437, 20 \u041c\u0431\u0438\u0442\/\u0441 \u0432\u0432\u0435\u0440\u0445, ping 80 \u043c\u0441, jitter 9 \u043c\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">Windows-\u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0434\u0430\u0432\u0430\u043b \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441 \u044d\u0442\u0438\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0432 \u0442\u043e\u043c \u0442\u0435\u0441\u0442\u0435<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>1204 \u041c\u0431\u0438\u0442\/\u0441 \u0437\u0434\u0435\u0441\u044c \u2014 loopback, \u0430 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 LTE. \u0421\u0440\u0435\u0434\u043d\u0438\u0435 75,5 \u043c\u0441 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0443\u043d\u043d\u0435\u043b\u044f \u0442\u043e\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430 ping \u0434\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Speedtest.<\/p>\n<p>\u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 20 \u041c\u0431\u0438\u0442\/\u0441 \u043d\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435. \u0422\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 10 \u041c\u0431\u0438\u0442\/\u0441 \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433, \u043d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.<\/p>\n<h3>\u041a\u0430\u043a \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0441 \u0444\u043e\u043d\u043e\u0432\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c iPhone<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e VPN \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0443\u0445\u043e\u0434\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0432 \u0444\u043e\u043d. \u0412 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043e\u043f\u044b\u0442\u0435 \u0440\u0435\u0447\u044c \u0448\u043b\u0430 \u043e\u0431 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 \u0434\u0432\u0435\u2013\u043f\u044f\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u2014 \u0438 \u043d\u0430 Wi-Fi, \u0438 \u043d\u0430 LTE. \u041f\u0440\u0438\u0447\u0438\u043d\u0443 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0442 \u043e\u043f\u044b\u0442 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b; \u043e\u0434\u0438\u043d Speedtest \u0435\u0451 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442.<\/p>\n<p>\u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 Battery Saver \u0432 OpenVPN Connect \u0443\u0436\u0435 \u0431\u044b\u043b \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0441\u043e\u0432\u0435\u0442 \u00ab\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044e \u0431\u0430\u0442\u0430\u0440\u0435\u0438\u00bb \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0441\u0451 \u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c. \u041f\u043e <a href=\"https:\/\/openvpn.net\/connect-docs\/app-settings-ios\/\" rel=\"noopener nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 OpenVPN Connect \u0434\u043b\u044f iOS<\/a>, Battery Saver \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435, \u0430 Seamless Tunnel \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0430\u0443\u0437\u044b \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. Seamless Tunnel \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u0435\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u043f\u044b\u0442: \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442, \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 Wi-Fi \u2192 LTE \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u042f \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u044d\u0442\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u0451\u043c\u043a\u0435 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e Speedtest \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u043e\u043c.<\/p>\n<h3>\u041d\u043e\u0432\u044b\u0435 \u0441\u0435\u043c\u0435\u0439\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438, \u0430 \u043c\u0435\u043d\u044e \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u043e \u0441\u0442\u0430\u0440\u044b\u0435<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0438\u043b\u043e\u0442\u0430 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0434\u043b\u044f Windows \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u043c\u0435\u0439\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0441 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438. \u0421\u0442\u0430\u0440\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 NL \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b.<\/p>\n<p>\u041f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043d\u043e\u0432\u044b\u0439 Windows-\u0444\u0430\u0439\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0438\u0437 <code>\/vpn<\/code> \u2014 \u043d\u0435\u0442. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0431\u044b\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0430 \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 NL.<\/p>\n<p>\u042f \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e: \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0441\u0442\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 Windows-\u043f\u0440\u043e\u0444\u0438\u043b\u0438. \u0414\u043b\u044f NL \u0441\u0434\u0435\u043b\u0430\u043b \u044f\u0432\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b, AmneziaWG \u0432\u044b\u043d\u0435\u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439. \u0421\u0442\u0430\u0440\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0431\u0435\u0437 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043c\u043e\u043b\u0447\u0430 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f Windows-\u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u0442\u0430\u043b \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e. \u0417\u0430\u0442\u0435\u043c \u044f \u043e\u0442\u043a\u0440\u044b\u043b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u043c \u0441\u0432\u043e\u0438\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u043c Telegram-\u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c: \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0432\u043e\u0451\u043c \u043b\u0438\u0447\u043d\u043e\u043c \u0447\u0430\u0442\u0435. \u0427\u0438\u0441\u043b\u043e\u0432\u043e\u0439 ID \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u043d\u0438\u043a\u0430.<\/p>\n<p>\u0423 \u0431\u043e\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043c\u0430\u0448\u0438\u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438: \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0448\u044c <code>\/vpn<\/code> \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2014 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c \u0444\u0430\u0439\u043b \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0410\u0442\u0442\u0440\u0430\u043a\u0446\u0438\u043e\u043d \u0437\u0430\u043a\u0440\u044b\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u043d\u044e.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432 \u043f\u0440\u0438\u0451\u043c\u043a\u0443 \u0432\u043e\u0448\u0451\u043b \u0432\u0435\u0441\u044c \u043f\u0443\u0442\u044c: \u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e \u0434\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u0418\u0441\u043f\u0440\u0430\u0432\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, \u0435\u0441\u043b\u0438 \u0431\u043e\u0442 \u0432\u044b\u0434\u0430\u0451\u0442 \u0444\u0430\u0439\u043b \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0445\u0435\u043c\u044b.<\/p>\n<h4>\u041a\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f Windows-\u043f\u0440\u043e\u0444\u0438\u043b\u044c<\/h4>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a:<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043b\u0438\u0447\u043d\u044b\u0439 \u0447\u0430\u0442 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0439 ID \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0411\u0435\u0440\u0451\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0435 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0436\u0443\u0440\u043d\u0430\u043b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u043d\u043e\u0432\u043e\u0435 \u0438\u043c\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 Windows \u0447\u0435\u0440\u0435\u0437 SSH.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0435\u0437 SFTP \u0441\u043e \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043a\u043b\u044e\u0447\u0430 SSH-\u0443\u0437\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0432\u0435\u0440\u044f\u0435\u0442 SHA-256 \u0444\u0430\u0439\u043b\u0430, \u0446\u0435\u043d\u0442\u0440 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438 \u0441\u0440\u043e\u043a CRL, \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c: \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0443\u0436\u0435 \u0432\u044b\u043f\u0443\u0449\u0435\u043d, \u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0435 \u0434\u043e\u0448\u043b\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u0435\u043d\u044e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0438\u043c\u0435\u043d\u0438. \u041e\u043d \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 Windows-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u0443\u0437\u0435\u043b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u0438 \u0445\u0435\u0448 CA. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0435 \u0432\u044b\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0438\u0437 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 PKI. \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<h4>\u041e\u0442\u0437\u044b\u0432 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u0440\u0430\u0437\u0440\u044b\u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438<\/h4>\n<p>\u0423 \u043e\u0442\u0437\u044b\u0432\u0430 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0442\u044c \u0432 \u043e\u0434\u0438\u043d:<\/p>\n<ul>\n<li>\n<p>\u043d\u043e\u0432\u044b\u0439 \u0432\u0445\u043e\u0434 \u043f\u043e \u043e\u0442\u043e\u0437\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p>\u0443\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0430, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u043c. \u041c\u043e\u0439 Windows-\u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 management interface OpenVPN \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c. \u041e\u043d \u0441\u043b\u0443\u0448\u0430\u0435\u0442 loopback, \u0430 \u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0412 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u0435\u0441\u0442\u044c <code>status 3<\/code> \u0438 <code>kill<\/code> \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e CN; \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0435 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u044b.<\/p>\n<p>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f: \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0430. \u042d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0433\u043e\u0432\u043e\u0440\u0435\u043d\u043e \u0432 <a href=\"https:\/\/openvpn.net\/community-docs\/management-interface.html\" rel=\"noopener nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 management interface<\/a>.<\/p>\n<p>\u0412 Linux-\u0443\u0447\u0435\u0431\u043d\u043e\u0439 PKI \u043e\u0442\u0437\u044b\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">cd \"$HOME\/vpn-lab-pki\".\/easyrsa --batch revoke lab-phone.\/easyrsa --batch gen-crlopenssl crl -in pki\/crl.pem -noout -verify -CAfile pki\/ca.crtopenssl crl -in pki\/crl.pem -noout -nextupdate<\/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>\u0417\u0430\u0442\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 CRL \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 \u043f\u043e \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c\u0443 <code>crl-verify<\/code>, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u043f\u0440\u0435\u0436\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438 \u043f\u0440\u0430\u0432\u0430 \u0447\u0442\u0435\u043d\u0438\u044f. \u0421\u0430\u043c \u0432\u044b\u043f\u0443\u0441\u043a \u0444\u0430\u0439\u043b\u0430 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 CA \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0435\u0441\u043b\u0438 \u0442\u043e\u0442 \u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0443\u0442\u044c.<\/p>\n<p>\u041f\u0440\u0438\u0451\u043c\u043a\u0430 \u043e\u0442\u0437\u044b\u0432\u0430 \u2014 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0432\u0445\u043e\u0434\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u043a\u0430\u0437; \u043f\u0440\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438. \u0414\u043b\u044f Windows-\u043c\u0435\u043d\u044e \u044d\u0442\u043e\u0442 \u0446\u0438\u043a\u043b \u0431\u044b\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d; \u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u0435\u0433\u043e \u043a\u0430\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e, \u0431\u043e\u0442 \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u0430\u0440\u0445\u0438\u0432\u0435, \u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f: \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0449\u0438.<\/p>\n<h3>AmneziaWG \u0438 Cloak \u0432 \u043d\u044b\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/h3>\n<p>\u041d\u0430 NL \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442 AmneziaWG. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0435\u0440\u0441\u0438\u0438 <code>3.1.20260812<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443 3.1.<\/p>\n<p>AmneziaWG \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 WireGuard \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u0423 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0435\u0441\u0442\u044c <a href=\"https:\/\/docs.amnezia.org\/documentation\/amnezia-wg\/\" rel=\"noopener nofollow\">\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 3.1<\/a>. \u0414\u043b\u044f \u043c\u043e\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f: \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 UDP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 TCP-\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430 OpenVPN.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0435\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u043b\u044e\u0447\u0435\u0439:<\/p>\n<pre><code class=\"bash\">awg --versioncat \/sys\/module\/amneziawg\/versionip link show awg0systemctl show awg-quick@awg0.service bue-awg-nat.service \\  --property=Id,ActiveState,SubState,NRestarts<\/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>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>\/awg<\/code> \u0432 \u0431\u043e\u0442\u0435 \u0432\u044b\u0434\u0430\u0451\u0442 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 <code>.conf<\/code>. \u041e\u043d\u0430 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 peer, \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0438 \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0432\u044b\u0434\u0430\u0447\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u043e\u0435 \u0438\u043c\u044f, \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0444\u0430\u0439\u043b\u0430, \u043f\u0440\u0430\u0432\u0430 <code>600<\/code>, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u0412 Telegram \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043d\u0438\u043c\u043e\u043a \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u0439\u0442\u043e\u0432. \u0414\u043e\u0441\u0442\u0443\u043f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u043c\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c\u0438 \u0432 \u043b\u0438\u0447\u043d\u043e\u043c \u0447\u0430\u0442\u0435.<\/p>\n<p>\u0412\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: \u043e\u043d\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 AmneziaWG.<\/p>\n<p>\u041d\u0430 NL \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <code>cloak-server<\/code>: \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 TCP-\u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044c. Cloak \u2014 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0442\u0440\u0430\u0444\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438; \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"https:\/\/github.com\/cbeuw\/Cloak\" rel=\"noopener nofollow\">\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>. \u0412 \u043c\u043e\u0435\u0439 \u0441\u0445\u0435\u043c\u0435 \u044d\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442; \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 Windows VPN \u043e\u0442 \u043d\u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u0430 Cloak \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043e\u0434\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 <code>ProxyBook<\/code> \u0438 <code>StreamTimeout<\/code> 300 \u0441\u0435\u043a\u0443\u043d\u0434. \u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 AmneziaWG \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0441\u0435\u043a\u0446\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 peer, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0438. \u042d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0430 \u043d\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f.<\/p>\n<h3>\u0427\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 DNS-\u043e\u0442\u0447\u0451\u0442\u044b \u0431\u043e\u0442\u0430<\/h3>\n<p>\u0414\u043b\u044f <code>\/vpnsites<\/code> \u0432 \u043a\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 dnsmasq: \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 DNS \u0432\u043d\u0443\u0442\u0440\u0438 VPN, \u0435\u0433\u043e \u0442\u0443\u043d\u043d\u0435\u043b\u044c\u043d\u044b\u0439 IP \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c, \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0434\u043d\u044f\u043c. \u041f\u043e\u0437\u0436\u0435 \u0432 \u043e\u0442\u0447\u0451\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0441\u0432\u0451\u0440\u0442\u043a\u0430 \u0444\u043e\u043d\u043e\u0432\u044b\u0445 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044e.<\/p>\n<p>\u0421\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0443\u0447\u0435\u0431\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0435\u0442\u0438:<\/p>\n<pre><code>interface=tun-labbind-dynamiclisten-address=10.77.0.1no-resolvserver=1.1.1.1server=8.8.8.8domain-neededbogus-privcache-size=1000log-querieslog-facility=\/var\/log\/vpn-lab-dns.log<\/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>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u043b\u0443\u0436\u0431\u0443:<\/p>\n<pre><code class=\"bash\">sudo dnsmasq --testsudo ss -lntup<\/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>\u0417\u0434\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e DNS \u043d\u0435 \u0441\u0442\u0430\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u0441\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442\u044c \u0443\u0447\u0435\u0431\u043d\u043e\u043c\u0443 \u0442\u0443\u043d\u043d\u0435\u043b\u044e. \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 <a href=\"https:\/\/thekelleys.org.uk\/dnsmasq\/docs\/dnsmasq-man.html\" rel=\"noopener nofollow\">\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 dnsmasq<\/a>.<\/p>\n<p>\u0423 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0431\u044b\u043b\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c: <code>bind-dynamic<\/code> \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432\u0430\u043b \u0441 <code>bind-interfaces<\/code> \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 dnsmasq. \u042d\u0442\u043e \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043e \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 <code>dnsmasq --test<\/code> \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u043e\u043b\u0435\u0437\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e.<\/p>\n<p>DNS-\u043e\u0442\u0447\u0451\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043e\u043c\u0435\u043d\u043e\u0432. \u041e\u043d \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 HTTPS URL, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0430\u0439\u0442. \u0417\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0433 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u041a\u0435\u0448 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c DoH \u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0436\u0443\u0440\u043d\u0430\u043b.<\/p>\n<p>\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e DNS \u0438 DoT \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u0445 53 \u0438 853 \u043d\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u0447\u0451\u0442 \u0432 \u043f\u043e\u043b\u043d\u044b\u0439 \u0443\u0447\u0451\u0442 \u0441\u0430\u0439\u0442\u043e\u0432: DoH \u043c\u043e\u0436\u0435\u0442 \u0438\u0434\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 HTTPS. \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 DNS-\u043e\u0442\u0432\u0435\u0442\u0430 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0441\u0430\u0439\u0442\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440. \u0415\u0451 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u044f\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u041d\u0430 NL \u0435\u0441\u0442\u044c status- \u0438 DNS-\u0436\u0443\u0440\u043d\u0430\u043b\u044b. \u0423 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u043e\u0445\u0432\u0430\u0442: DNS-\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u0440\u0430\u0432\u0435\u043d \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 Windows-\u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u043e\u0442\u0447\u0451\u0442\u0430 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u0430 NL. \u0422\u0430\u043a\u043e\u0439 \u0443\u0447\u0451\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438. \u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u00ab\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u0443\u044e\u00bb \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c.<\/p>\n<h3>\u0427\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0435\u0439\u0447\u0430\u0441<\/h3>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439, \u0434\u0432\u0443\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 Telegram:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">VPN \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u0432\u044b\u0434\u0430\u0447\u0430 \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u0442\u0430 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0423 \u0432\u0441\u0435\u0445 \u043c\u043e\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0435\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 Windows VPN<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 TCP-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u2192 OpenVPN \u2192 TAP \u2192 WinNAT<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 Windows \u0438 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 NL<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">OpenVPN \u043d\u0430 NL<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u0440\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0441 UDP- \u0438 TCP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438 \u0432\u0445\u043e\u0434\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 Linux-\u0443\u0437\u0435\u043b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Telegram-\u0431\u043e\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u0435\u043d\u044e Windows-\u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u043e\u0442\u0437\u044b\u0432; \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Windows \u043f\u043e SSH\/SFTP<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0431\u0435\u0437 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0420\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0436\u0443\u0440\u043d\u0430\u043b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 CRL<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0434\u0438\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u0432\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 Telegram ID \u0438 \u043b\u0438\u0447\u043d\u044b\u0435 \u0447\u0430\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438\u0437 \u043e\u0431\u043e\u0438\u0445 \u043c\u043e\u0438\u0445 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">AmneziaWG \u043d\u0430 NL<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 UDP-\u043a\u043e\u043d\u0442\u0443\u0440, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0438 \u0432\u044b\u0434\u0430\u0447\u0430 \u0447\u0435\u0440\u0435\u0437 <code>\/awg<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0415\u0441\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f; \u043a\u043d\u043e\u043f\u043a\u0430 \u043e\u0442\u0434\u0430\u0451\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b NL<\/p>\n<\/td>\n<td>\n<p align=\"left\">Cloak, status-\u0436\u0443\u0440\u043d\u0430\u043b\u044b, \u0441\u0431\u043e\u0440 DNS-\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u044b \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e Windows-\u043f\u0443\u0442\u0438<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041d\u0430 NL \u0442\u0440\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 OpenVPN-\u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 TLS \u043d\u0435 \u043d\u0438\u0436\u0435 1.2, <code>tls-crypt<\/code>, CRL, <code>AES-256-GCM:AES-128-GCM<\/code> \u0438 \u0437\u0430\u043f\u0440\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u044f. \u0412 \u0444\u0430\u0439\u043b\u0430\u0445 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c <code>auth SHA512<\/code>. \u041f\u0440\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u043c GCM \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0430\u043c AEAD-\u0448\u0438\u0444\u0440, \u0447\u0442\u043e \u043f\u043e\u044f\u0441\u043d\u044f\u0435\u0442 <a href=\"https:\/\/openvpn.net\/community-docs\/community-articles\/openvpn-2-6-manual\/\" rel=\"noopener nofollow\">\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e OpenVPN<\/a>. UDP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>multihome<\/code>, \u0430 \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 <code>keepalive 10 120<\/code>. \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 TCP-\u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 IPv6; \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <code>keepalive<\/code> \u0432 \u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0435 \u043d\u0435\u0442.<\/p>\n<p>OpenVPN-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043d\u0430 NL \u0431\u044b\u043b\u0438 <code>active\/running<\/code>, \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0432 \u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430\u0445. \u0420\u0430\u0431\u043e\u0442\u0430\u043b \u0431\u043e\u0442; \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430 \u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0441\u043e\u0432\u043f\u0430\u043b\u0438 \u0441 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. Windows-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u0434\u0432\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0438 NAT-\u0441\u0435\u0430\u043d\u0441\u044b.<\/p>\n<p>\u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439. \u041d\u0430 NL Git blob-\u0445\u0435\u0448\u0438 \u0442\u0440\u0451\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u044b\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u044b \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f:<\/p>\n<pre><code class=\"bash\">git hash-object \/opt\/bue\/core\/bue_brain.pygit hash-object \/opt\/bue\/core\/bue_vpn.pygit hash-object \/opt\/bue\/core\/bue_windows_vpn.py<\/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>\u0425\u0435\u0448\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044e. \u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438\u0437 \u0431\u043e\u0442\u0430, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0430\u0439\u0442.<\/p>\n<p>\u0414\u043b\u044f AmneziaWG <code>active\/exited<\/code> \u0443 <code>awg-quick<\/code> \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. OpenVPN \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u043f\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c \u0438 \u0441\u043b\u0443\u0448\u0430\u044e\u0449\u0438\u043c \u0441\u043e\u043a\u0435\u0442\u0430\u043c. \u041f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u0448\u0442\u0430\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0443 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0440\u0430\u0437\u043d\u044b\u0435; \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<h3>\u0422\u0440\u0438 \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u0438 \u043f\u043e \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0448\u0435\u0441\u0442\u044c \u0442\u044b\u0441\u044f\u0447 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u043e\u0432<\/h3>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u043e. \u0422\u0440\u0438 \u043d\u0443\u0436\u043d\u044b\u0445 OpenVPN-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438, \u0430 \u0442\u0440\u0438 \u0434\u0440\u0443\u0433\u0438\u0445, \u0441\u0442\u0430\u0440\u044b\u0445 unit \u0431\u044b\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u043e\u043a\u043e\u043b\u043e 25,3 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432. \u041f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0441\u0432\u0435\u0440\u043a\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0432\u044b\u0440\u043e\u0441\u043b\u0438 \u0434\u043e 26 173\u201326 174. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0432\u0438\u0434\u043d\u0430 \u2014 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b; \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0438\u0441\u0447\u0435\u0437\u043b\u0438 \u0438 \u043d\u0443\u0436\u043d\u044b \u043b\u0438 \u0435\u0449\u0451 \u043f\u0440\u0435\u0436\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0430 \u0441\u043b\u0443\u0436\u0431, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e.<\/p>\n<p>\u041d\u0430 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u0434\u0438\u0441\u043a\u0435 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u043a\u043e\u043b\u043e 6,1 \u0413\u0438\u0411 \u043f\u0440\u0438 \u043e\u0431\u0449\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435 40 \u0413\u0438\u0411 \u0438 \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u0438 84%. \u041e\u0431\u0449\u0438\u0439 <code>systemd-journal<\/code> \u0437\u0430\u043d\u0438\u043c\u0430\u043b 1,1 \u0413\u0438\u0411. \u041f\u0440\u0438\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0436\u0443\u0440\u043d\u0430\u043b \u0442\u0440\u0451\u043c \u043f\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441\u043b\u0443\u0436\u0431\u0430\u043c \u0431\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0442\u0430\u043a\u043e\u0439 \u0434\u0435\u0444\u0435\u043a\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"bash\">systemctl list-units --all 'openvpn*' --no-pagersystemctl list-unit-files 'openvpn*' --no-pagersystemctl show \\  openvpn-server@bue.service openvpn@bue.service openvpn@server.service \\  --property=Id,ActiveState,SubState,UnitFileState,NRestarts,ExecMainStatussudo journalctl -u openvpn-server@bue.service -n 8 --no-pagersudo journalctl -u openvpn@bue.service -n 8 --no-pagersudo journalctl -u openvpn@server.service -n 8 --no-pagerjournalctl --disk-usagedf -h \/<\/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>\u042d\u0442\u0438 \u0442\u0440\u0438 \u0438\u043c\u0435\u043d\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u044b\u043c \u0441\u043b\u0443\u0436\u0431\u0430\u043c \u043c\u043e\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u0423 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0442\u0435 \u0436\u0435 \u0438\u043c\u0435\u043d\u0430 \u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0443\u0436\u043d\u044b\u0439 VPN. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u2014 \u0441\u0432\u0435\u0440\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u0435\u0436\u043d\u0438\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0435\u0439, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0440\u0435\u0448\u0438\u0442\u044c: \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0438\u043b\u0438 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 unit \u0438\u0437 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<p>\u0422\u0440\u0438 \u0441\u0442\u0430\u0440\u044b\u0445 unit \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u043e\u043b\u0433\u043e\u043c. \u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e: \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u0441\u0442\u0430\u0440\u0442\u043e\u0432.<\/p>\n<h3>\u041a\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u0451\u043c\u043a\u0430 VPN<\/h3>\n<p>\u0414\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043e\u0434\u043d\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0412 \u043d\u0435\u0439 \u0442\u0440\u0438 \u0447\u0430\u0441\u0442\u0438: \u0432\u044b\u043f\u0443\u0441\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0441\u0435\u0442\u044c \u0438 \u043e\u0442\u0437\u044b\u0432.<\/p>\n<h4>\u0412\u044b\u043f\u0443\u0441\u043a \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430<\/h4>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u043c\u044f, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0439 CA \u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0443\u0442\u044c \u0432 \u0431\u043e\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 <code>.ovpn<\/code> \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043c\u0435\u043d\u044e \u043e\u0442\u0434\u0430\u0451\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e.<\/p>\n<p>\u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043d\u043e\u0432\u044b\u0439. \u0421\u0442\u0430\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c: \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u043c\u043e\u0433\u0443\u0442 \u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e CA \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442.<\/p>\n<h4>\u0421\u0435\u0442\u044c \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435<\/h4>\n<p>\u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0441\u0435\u0442\u044c, \u0432\u0440\u0435\u043c\u044f \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u041f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 VPN \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435. \u041e\u0434\u0438\u043d \u0438\u0437 \u043c\u043e\u0438\u0445 \u0440\u0430\u043d\u043d\u0438\u0445 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 Wi-Fi-\u0442\u0435\u0441\u0442\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0432 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 VPN \u0440\u043e\u0443\u0442\u0435\u0440\u0430. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0428\u0430\u0433<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041a\u0440\u0438\u0442\u0435\u0440\u0438\u0439<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u043d\u0435\u0448\u043d\u0438\u0439 IPv4<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">IPv6<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u043b\u0438\u0431\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">DNS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u043c\u0435\u043d\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c; \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e IP \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">HTTPS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0430\u0439\u0442\u044b, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0444\u0430\u0439\u043b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043f\u044f\u0442\u0438 \u043c\u0438\u043d\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0442\u0435\u0441\u0442\u0435; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u043e\u0432\u0442\u043e\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u00ab\u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438\u00bb<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">Wi-Fi \u2192 LTE \u2192 Wi-Fi \u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u044d\u043a\u0440\u0430\u043d\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u043e\u0442 \u0436\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043c\u0435\u0440\u043e\u0432 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 VPN<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u2014 \u043c\u043e\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043f\u0440\u0438\u0451\u043c\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code class=\"bash\"># \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0438 HTTPS \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442.curl -4 --fail --silent --show-error --max-time 15 \\  https:\/\/1.1.1.1\/cdn-cgi\/trace# \u041f\u0440\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 IPv6 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0430\u0437, \u0430 \u043d\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430.curl -6 --fail --silent --show-error --max-time 15 \\  https:\/\/cloudflare.com\/cdn-cgi\/trace# DNS \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f DNS-\u0443\u0442\u0435\u0447\u0435\u043a.getent ahosts example.com<\/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 Windows \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e <code>curl<\/code>, \u0430 \u043d\u0435 \u0441\u0442\u0430\u0440\u043e\u0433\u043e PowerShell-\u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430:<\/p>\n<pre><code class=\"powershell\">curl.exe -4 --fail --silent --show-error --max-time 15 `    https:\/\/1.1.1.1\/cdn-cgi\/tracecurl.exe -6 --fail --silent --show-error --max-time 15 `    https:\/\/cloudflare.com\/cdn-cgi\/traceResolve-DnsName example.comGet-DnsClientServerAddress -AddressFamily IPv4<\/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 <code>trace<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0421\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 IPv4 \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 DNS \u0438\u043b\u0438 \u0447\u0442\u043e \u0432\u0435\u0441\u044c IPv6 \u0442\u043e\u0436\u0435 \u0437\u0430\u0449\u0438\u0449\u0451\u043d. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 DNS \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u0437\u0430 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u043e\u043c \u043b\u0438\u0431\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0442\u0435\u0441\u0442 \u0443\u0442\u0435\u0447\u0435\u043a \u0441 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c \u0435\u0433\u043e \u043e\u0445\u0432\u0430\u0442\u0430.<\/p>\n<p>\u041d\u0430 iPhone \u0442\u0443 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0430\u0434\u0440\u0435\u0441\u0430 \u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u043c \u043d\u0443\u0436\u043d\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435. \u0412 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0440\u0430\u043d\u043d\u0438\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u043c IP \u043e\u0442\u043a\u0440\u044b\u043b\u0430\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f VPN-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u043c\u0438. \u0411\u0435\u0437 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0437\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0443\u043d\u043d\u0435\u043b\u044f.<\/p>\n<h4>\u041e\u0442\u0437\u044b\u0432 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/h4>\n<p>\u041d\u0443\u0436\u043d\u043e \u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439 CRL, \u043e\u0442\u043a\u0430\u0437 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0436\u043d\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438. \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c: \u043e\u0442\u0437\u044b\u0432 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438\u0448\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445.<\/p>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438\u0437 Telegram-\u043c\u0435\u043d\u044e \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u0442\u043e\u0442 \u043e\u043f\u044b\u0442. \u041a\u0430\u043a \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435: \u043a\u043e\u043f\u0438\u044f <code>.ovpn<\/code> \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<h3>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430: \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435<\/h3>\n<p>\u0412 \u043f\u043b\u0430\u043d\u0435 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u0440\u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 OpenVPN unit, \u0441\u0432\u0435\u0440\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0442\u0430\u0440\u0442\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439 <code>\/vpnlog<\/code> \u0438 \u043e\u0445\u0432\u0430\u0442 \u043d\u0443\u0436\u043d\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0435\u0440\u0442 \u0448\u0442\u043e\u0440\u043c\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e: CN, issuer, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0435\u0434\u0438\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043f\u0440\u0438\u0451\u043c\u043a\u0438 \u043d\u043e\u0432\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439: \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0441\u0435\u0442\u0438, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0444\u043e\u043d iPhone \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 IPv6.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c Windows firewall, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u043e\u0440\u0442\u0430\u043c \u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044e \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438 \u0438 CRL, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u044b\u043f\u0443\u0441\u043a \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Windows CRL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435. \u0412 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0435\u0449\u0451 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e.<\/p>\n<p>\u0414\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043e\u0442\u043a\u0430\u0442. \u041d\u043e\u0432\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u0438\u043b\u0438 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0435\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445.<\/p>\n<h3>\u041a \u0447\u0435\u043c\u0443 \u044f \u043f\u0440\u0438\u0448\u0451\u043b<\/h3>\n<p>\u042f \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043c\u0435\u043d\u044e. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u043c\u043e\u0439 \u0432\u044b\u0434\u0430\u0447\u0435\u0439, \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 OpenVPN-\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 Windows \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 NL. Windows \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, Telegram \u0441\u043b\u0443\u0436\u0438\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438: \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u0430\u0434\u0440\u0435\u0441 \u0442\u0443\u043d\u043d\u0435\u043b\u044f, TCP-\u043f\u043e\u0442\u043e\u043a, DNS, NAT, \u0432\u043d\u0435\u0448\u043d\u0438\u0439 IP \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u041e\u043d \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u0435\u0433\u043e.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u0435, \u043a\u043e\u043c\u0443 \u044f \u0432\u044b\u0434\u0430\u043b \u043f\u0440\u043e\u0444\u0438\u043b\u0438, \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f VPN. \u041d\u043e\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u0442\u0430; \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. Windows \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u0430 \u043d\u0430 NL \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u043b\u043d\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/h3>\n<p>\u041d\u0438\u0436\u0435 \u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e Windows-\u0443\u0437\u043b\u0430. TCP-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438 \u0435\u0433\u043e \u0442\u0435\u0441\u0442 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435. PKI-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0441\u0442\u043e\u0439 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433; \u043e\u043d \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e CA \u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 OpenVPN.<\/p>\n<details class=\"spoiler\">\n<summary>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 TCP-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u2014 local_tcp_entry.py<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">\"\"\"TCP entry for a Windows-local OpenVPN backend; never connects to NL.\"\"\"import argparseimport ipaddressimport loggingimport logging.handlersimport osimport selectimport signalimport socketimport threadingimport timeclass Entry:    def __init__(self, address, backend_port, delay=0.02,                 warmup_seconds=10.0, warmup_bytes=16384):        self.address = address        self.backend = ('127.0.0.1', backend_port)        self.delay = delay        self.warmup_seconds = warmup_seconds        self.warmup_bytes = warmup_bytes        self.stop = threading.Event()        self.slots = threading.BoundedSemaphore(8)        self.listener = None        self.ready = threading.Event()    @staticmethod    def prepare(sock):        sock.settimeout(5)        sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)        sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)        if os.name == 'nt':            sock.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 60000, 10000))    def forward(self, data, destination, transferred, elapsed):        # Keep the complete startup exchange protected in each direction.        # Both thresholds must pass before removing per-block waits.        if elapsed &gt;= self.warmup_seconds and transferred &gt;= self.warmup_bytes:            destination.sendall(data)            return True        destination.sendall(data[:1])        if len(data) &gt; 1:            if self.stop.wait(self.delay):                return False            destination.sendall(data[1:])        return True    def connection(self, client):        backend = None        sent = received = 0        started = last_activity = time.monotonic()        try:            self.prepare(client)            backend = socket.create_connection(self.backend, timeout=5)            self.prepare(backend)            while not self.stop.is_set():                now = time.monotonic()                if (received == 0 and now - started &gt; 15) or now - last_activity &gt; 7200:                    break                readable, _, _ = select.select([client, backend], [], [], 0.5)                for origin in readable:                    data = origin.recv(65536)                    if not data:                        return                    transferred = sent if origin is client else received                    if not self.forward(data, backend if origin is client else client,                                        transferred, time.monotonic() - started):                        return                    last_activity = time.monotonic()                    if origin is client:                        sent += len(data)                    else:                        received += len(data)        except (OSError, ValueError) as error:            logging.info('Connection ended: %s', type(error).__name__)        finally:            client.close()            if backend is not None:                backend.close()            self.slots.release()            logging.info('Connection bytes sent=%d received=%d', sent, received)    def run(self):        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:            self.listener = sock            if os.name == 'nt':                sock.setsockopt(socket.SOL_SOCKET, socket.SO_EXCLUSIVEADDRUSE, 1)            sock.bind(self.address)            sock.listen(8)            sock.settimeout(0.5)            self.ready.set()            logging.info('Windows-local VPN entry started')            try:                while not self.stop.is_set():                    try:                        client, _ = sock.accept()                    except socket.timeout:                        continue                    if not self.slots.acquire(blocking=False):                        client.close()                        continue                    threading.Thread(target=self.connection, args=(client,), daemon=True).start()            finally:                self.stop.set()def main():    parser = argparse.ArgumentParser()    parser.add_argument('--listen-ip', required=True)    parser.add_argument('--listen-port', type=int, default=5444)    parser.add_argument('--backend-port', type=int, default=15444)    parser.add_argument('--log', required=True)    args = parser.parse_args()    address = ipaddress.IPv4Address(args.listen_ip)    if address.is_unspecified or address.is_multicast or address.is_loopback:        parser.error('An assigned external Windows IPv4 is required')    if not 1024 &lt;= args.listen_port &lt;= 65535 or not 1024 &lt;= args.backend_port &lt;= 65535:        parser.error('Ports must be between 1024 and 65535')    handler = logging.handlers.RotatingFileHandler(        args.log, maxBytes=1024 * 1024, backupCount=3, encoding='utf-8')    logging.basicConfig(level=logging.INFO, handlers=[handler],                        format='%(asctime)s %(levelname)s %(message)s')    entry = Entry((str(address), args.listen_port), args.backend_port)    signal.signal(signal.SIGINT, lambda *_: entry.stop.set())    signal.signal(signal.SIGTERM, lambda *_: entry.stop.set())    entry.run()if __name__ == '__main__':    main()<\/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<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0422\u0440\u0438 \u0442\u0435\u0441\u0442\u0430 TCP-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u2014 test_local_tcp_entry.py<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">\"\"\"End-to-end byte preservation in both directions over real loopback TCP.\"\"\"import socketimport threadingimport unittestfrom unittest.mock import Mockfrom local_tcp_entry import Entrydef receive_exact(sock, size):    chunks = []    while size:        chunk = sock.recv(min(size, 65536))        if not chunk:            raise AssertionError('Premature EOF')        chunks.append(chunk)        size -= len(chunk)    return b''.join(chunks)class LocalEntryTest(unittest.TestCase):    def test_binary_roundtrip_and_shutdown(self):        self.roundtrip(512, {})    def test_fast_path_large_binary_roundtrip(self):        self.roundtrip(32768, {'warmup_seconds': 0, 'warmup_bytes': 0})    def test_full_startup_is_protected_and_bulk_has_no_wait(self):        entry = Entry(('127.0.0.1', 0), 1)        entry.stop = Mock()        entry.stop.wait.return_value = False        for transferred, elapsed in ((2048, 20), (1000000, 1)):            destination = Mock()            self.assertTrue(entry.forward(b'hello', destination, transferred, elapsed))            self.assertEqual([c.args[0] for c in destination.sendall.call_args_list], [b'h', b'ello'])        entry.stop.reset_mock()        destination = Mock()        self.assertTrue(entry.forward(b'hello', destination, 1000000, 20))        destination.sendall.assert_called_once_with(b'hello')        entry.stop.wait.assert_not_called()    def roundtrip(self, blocks, settings):        request = bytes(range(256)) * blocks        response = request[::-1]        failures = []        with socket.socket() as backend:            backend.bind(('127.0.0.1', 0))            backend.listen(1)            backend.settimeout(5)            def serve():                try:                    with backend.accept()[0] as peer:                        peer.settimeout(5)                        self.assertEqual(receive_exact(peer, len(request)), request)                        peer.sendall(response)                except Exception as error:                    failures.append(error)            server_thread = threading.Thread(target=serve)            server_thread.start()            entry = Entry(('127.0.0.1', 0), backend.getsockname()[1], **settings)            entry_thread = threading.Thread(target=entry.run)            entry_thread.start()            try:                self.assertTrue(entry.ready.wait(3))                self.assertEqual(entry.backend[0], '127.0.0.1')                with socket.create_connection(entry.listener.getsockname(), timeout=5) as client:                    client.sendall(request)                    self.assertEqual(receive_exact(client, len(response)), response)            finally:                entry.stop.set()                entry_thread.join(3)                server_thread.join(3)            self.assertFalse(entry_thread.is_alive())            self.assertFalse(server_thread.is_alive())            self.assertEqual(failures, [])if __name__ == '__main__':    unittest.main()<\/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<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u043f\u0443\u0441\u043a \u0443\u0447\u0435\u0431\u043d\u043e\u0439 PKI \u043d\u0430 Windows \u2014 New-LabPki.ps1<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"powershell\"># \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f PKI \u043f\u0438\u043b\u043e\u0442\u0430. \u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440.[CmdletBinding()]param(    [string]$Root = 'C:\\vpn-lab\\windows-openvpn',    [string]$OpenSsl = 'C:\\Program Files\\OpenVPN\\bin\\openssl.exe',    [string]$OpenVpn = 'C:\\Program Files\\OpenVPN\\bin\\openvpn.exe')$ErrorActionPreference = 'Stop'$ProgressPreference = 'SilentlyContinue'foreach ($binary in @($OpenSsl, $OpenVpn)) {    if (!(Test-Path -LiteralPath $binary -PathType Leaf)) { throw \"MissingBinary: $binary\" }    if ((Get-AuthenticodeSignature -LiteralPath $binary).Status -ne 'Valid') {        throw \"BinarySignatureInvalid: $binary\"    }}$pki = Join-Path $Root 'pki'if (!(Test-Path -LiteralPath $pki -PathType Container)) { throw 'PrivatePilotRootMissing' }if (@(Get-ChildItem -LiteralPath $pki -Force).Count -ne 0) { throw 'PkiNotEmptyInspectBeforeRetry' }$acl = Get-Acl -LiteralPath $Rootif (!$acl.AreAccessRulesProtected) { throw 'RootAclMustBeProtected' }foreach ($rule in $acl.Access) {    $sid = $rule.IdentityReference.Translate([Security.Principal.SecurityIdentifier]).Value    if ($rule.AccessControlType -eq 'Allow' -and $sid -notin @('S-1-5-18','S-1-5-32-544')) {        throw 'UnexpectedPrincipalInPrivateRootAcl'    }}function Write-NewAscii([string]$Path, [string]$Text) {    # CreateNew \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0441 \u0437\u0430\u0442\u0451\u0440\u0442\u044b\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438.    $stream = [IO.File]::Open($Path, [IO.FileMode]::CreateNew, [IO.FileAccess]::Write)    try {        $bytes = [Text.Encoding]::ASCII.GetBytes($Text.Replace(\"`r`n\", \"`n\"))        $stream.Write($bytes, 0, $bytes.Length)    } finally { $stream.Dispose() }}function Invoke-Crypto([string[]]$CryptoArgs) {    # \u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u043f\u0438\u0448\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0432 stderr. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435.    $prior = $ErrorActionPreference    $ErrorActionPreference = 'Continue'    try { &amp; $OpenSsl @CryptoArgs &gt;&gt; (Join-Path $Root 'logs\\pki-build.log') 2&gt;&amp;1; $code = $LASTEXITCODE }    finally { $ErrorActionPreference = $prior }    if ($code -ne 0) { throw \"OpenSslFailed: $code (see private pki-build.log)\" }}$path = $pki.Replace('\\','\/')$config = @\"[ ca ]default_ca = pilot_ca[ pilot_ca ]dir = $pathdatabase = `$dir\/index.txtnew_certs_dir = `$dir\/issuedcertificate = `$dir\/ca.crtprivate_key = `$dir\/ca.keyserial = `$dir\/serialcrlnumber = `$dir\/crlnumberdefault_md = sha256default_days = 365default_crl_days = 30policy = pilot_policyunique_subject = yescopy_extensions = none[ pilot_policy ]commonName = supplied[ req ]distinguished_name = req_dnprompt = no[ req_dn ]CN = Lab Windows VPN CA[ ca_extensions ]basicConstraints = critical,CA:TRUE,pathlen:0keyUsage = critical,keyCertSign,cRLSignsubjectKeyIdentifier = hashauthorityKeyIdentifier = keyid:always[ server_extensions ]basicConstraints = critical,CA:FALSEkeyUsage = critical,digitalSignature,keyEnciphermentextendedKeyUsage = serverAuthsubjectKeyIdentifier = hashauthorityKeyIdentifier = keyid,issuer[ client_extensions ]basicConstraints = critical,CA:FALSEkeyUsage = critical,digitalSignatureextendedKeyUsage = clientAuthsubjectKeyIdentifier = hashauthorityKeyIdentifier = keyid,issuer\"@New-Item -ItemType Directory -Path (Join-Path $pki 'issued') | Out-NullWrite-NewAscii (Join-Path $pki 'openssl.cnf') $configWrite-NewAscii (Join-Path $pki 'index.txt') ''Write-NewAscii (Join-Path $pki 'serial') \"1000`n\"Write-NewAscii (Join-Path $pki 'crlnumber') \"1000`n\"$cfg = Join-Path $pki 'openssl.cnf'Push-Location $pkitry {    Invoke-Crypto -CryptoArgs @('genpkey','-algorithm','RSA','-pkeyopt','rsa_keygen_bits:3072','-out','ca.key')    Invoke-Crypto -CryptoArgs @('req','-new','-x509','-key','ca.key','-sha256','-days','1095','-config',$cfg,'-extensions','ca_extensions','-out','ca.crt')    foreach ($entry in @(@('server','lab-windows-server','server_extensions'),@('client','lab-phone','client_extensions'))) {        $name = $entry[0]        Invoke-Crypto -CryptoArgs @('genpkey','-algorithm','RSA','-pkeyopt','rsa_keygen_bits:3072','-out',\"$name.key\")        Invoke-Crypto -CryptoArgs @('req','-new','-key',\"$name.key\",'-subj',('\/CN='+$entry[1]),'-config',$cfg,'-out',\"$name.csr\")        Invoke-Crypto -CryptoArgs @('ca','-batch','-notext','-config',$cfg,'-extensions',$entry[2],'-in',\"$name.csr\",'-out',\"$name.crt\")    }    Invoke-Crypto -CryptoArgs @('ca','-batch','-config',$cfg,'-gencrl','-out','crl.pem')    Invoke-Crypto -CryptoArgs @('verify','-CAfile','ca.crt','-CRLfile','crl.pem','-crl_check','-purpose','sslserver','server.crt')    Invoke-Crypto -CryptoArgs @('verify','-CAfile','ca.crt','-CRLfile','crl.pem','-crl_check','-purpose','sslclient','client.crt')    &amp; $OpenVpn --genkey secret (Join-Path $pki 'tls-crypt.key')    if ($LASTEXITCODE -ne 0) { throw 'TlsCryptGenerationFailed' }    Write-NewAscii (Join-Path $pki 'generation-complete.json') ('{\"client\":\"lab-phone\",\"server\":\"lab-windows-server\",\"profiles\":1}')    [pscustomobject]@{Pki='Ready';ClientCertificates=1;PrivateMaterialPrinted=$false} | ConvertTo-Json -Compress} finally { Pop-Location }<\/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<\/div>\n<\/details>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438. \u0414\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435!<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1104028\/\">https:\/\/habr.com\/ru\/articles\/1104028\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u042f \u043d\u0430\u0447\u0430\u043b \u0441 OpenVPN \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439. \u041f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c Telegram-\u0431\u043e\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043e\u0432 \u043d\u0430 Linux \u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 VPN \u043d\u0430 Windows. \u041f\u043e \u0434\u043e\u0440\u043e\u0433\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u044b\u0435 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 TLS \u0431\u0435\u0437 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0441 \u043e\u0442\u043a\u0430\u0442\u043e\u043c \u0438 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0438 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c\u0438.\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441 Connected \u0435\u0449\u0451 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u044b\u043c, \u0430 \u0441\u0430\u0439\u0442\u044b \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0438\u0441\u044c.\u0421\u0435\u0439\u0447\u0430\u0441 VPN \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0443 \u0432\u0441\u0435\u0445, \u043a\u043e\u043c\u0443 \u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043e\u0441\u0442\u0443\u043f: \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u0442\u0430, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0438\u043b\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b Linux \u0438 PowerShell, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 OpenVPN, \u0432\u044b\u0434\u0430\u0447\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0447\u0435\u0440\u0435\u0437 Telegram \u0438 \u043a\u043e\u0434 TCP-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.\u042d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0420\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430, \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u044b, \u0438\u043c\u0435\u043d\u0430 \u0441\u0435\u043c\u0435\u0439\u043d\u044b\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b. 198.51.100.10 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 NL, 203.0.113.20 \u2014 Windows, \u0430 \u043f\u043e\u0440\u0442\u044b 5443, 5444 \u0438 15444 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b. \u042d\u0442\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 vpn-lab, \u043f\u043e\u0434\u0441\u0435\u0442\u044f\u043c\u0438 10.77.0.0\/24 \u0438 10.78.0.0\/24 \u2014 \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430. \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0438\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043c\u043e\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435; \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0437\u0430\u043d\u043e\u0432\u043e \u043d\u0435 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u0441\u044f.\u0427\u0430\u043a \u041d\u043e\u0440\u0440\u0438\u0441, \u0420\u044d\u043c\u0431\u043e \u0438 \u0414\u0436\u043e\u043d \u041c\u0430\u043a\u043a\u043b\u0435\u0439\u043d \u0447\u0438\u043d\u044f\u0442 VPN\u0425\u0443\u0434\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435: \u0441\u043e\u0441\u0442\u0430\u0432 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0439 \u0431\u0440\u0438\u0433\u0430\u0434\u044b \u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e VPN \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u0440\u043e\u043c\u043d\u0435\u0435.\u0427\u0442\u043e \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e\u041c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0431\u044b\u043b VPN \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430. \u041f\u043e\u0442\u043e\u043c \u2014 \u0435\u0449\u0451 \u0438 \u0434\u043b\u044f \u0431\u043b\u0438\u0437\u043a\u0438\u0445. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0447\u0435\u0440\u0435\u0437 Telegram \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043d\u0435 \u043c\u0435\u043d\u044f\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443 \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445.\u0422\u0430\u043a \u043a OpenVPN \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0441\u044f Telegram-\u0431\u043e\u0442. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u044f \u0441\u043e\u0437\u0434\u0430\u044e, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e \u0438 \u043e\u0442\u0437\u044b\u0432\u0430\u044e \u043f\u0440\u043e\u0444\u0438\u043b\u0438. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.\u0423 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0434\u0432\u0430 VPS \u2014 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2014 \u0432 \u041d\u0438\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u0430\u0445. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u0442\u0430\u043a:\u0423\u0437\u0435\u043b\u041e\u0421\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435\u0420\u043e\u043b\u044c \u0432 VPNNLUbuntu 24.044 vCPU, 4 \u0413\u0411 RAM, 40 \u0413\u0411 NVMeOpenVPN, \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b; Telegram-\u0431\u043e\u0442WindowsWindows Server 20222 vCPU, 4 \u0413\u0411 RAM, \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e 25 \u0413\u0411 NVMe\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0445\u043e\u0434 \u043a NL, \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 OpenVPN\u041d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u041e\u0421, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0436\u0431 \u0441\u0440\u0430\u0437\u0443 \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438. \u041d\u043e\u0432\u044b\u0439 VPN \u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u043b \u0440\u044f\u0434\u043e\u043c \u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0445\u0435\u043c\u043e\u0439.\u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0445 \u043d\u0438\u0436\u0435 BUE&#8230; \u0438 bue_&#8230; \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0437\u0430\u0434\u0430\u0447, \u0441\u043b\u0443\u0436\u0431 \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u043e\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u041e\u043d\u0438 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 OpenVPN.\u041a\u0430\u043a \u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u0422\u0440\u0438 \u044d\u0442\u0430\u043f\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043c\u043e\u0435\u0433\u043e VPN\u041f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439: \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2192 OpenVPN \u043d\u0430 NL \u2192 NAT \u2192 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. Telegram-\u0431\u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 NL.\u041f\u043e\u0437\u0436\u0435 Windows \u0441\u0442\u0430\u043b\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430:\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2192 TCP-\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a \u043d\u0430 Windows \u2192 OpenVPN \u043d\u0430 NL \u2192 NAT \u2192 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442.\u041f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u043b VPN. \u041e\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b TCP-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b \u0431\u0430\u0439\u0442\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 OpenVPN \u043d\u0430 NL. \u0415\u0441\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c NL, \u044d\u0442\u043e\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0442\u043e\u0436\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0414\u0432\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0434\u0432\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 VPN.\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 Windows-\u043c\u0430\u0440\u0448\u0440\u0443\u0442:\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2192 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 TCP-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Windows \u2192 OpenVPN \u043d\u0430 127.0.0.1 \u2192 TAP \u2192 WinNAT \u2192 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442.\u0411\u043e\u0442 \u043d\u0430 NL \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c\u0438 Windows \u0447\u0435\u0440\u0435\u0437 SSH\/SFTP.\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0445\u0435\u043c\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0435 \u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 NL. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0434\u0430\u0447\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u0442\u0430 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430 NL. \u0423\u0436\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.\u042d\u0442\u0430\u043f 1. \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u043d\u044e\u041f\u0435\u0440\u0432\u044b\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0441\u0442\u0430\u043b ovpn_make.sh: \u043e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f OpenVPN \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u0435\u043d\u044e \/vpn, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0438 \u043e\u0442\u0437\u044b\u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0431\u043e\u0440 iOS, Android \u0438\u043b\u0438 Windows. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u043e\u0442\u0435.\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433, \u043a\u0430\u0442\u0430\u043b\u043e\u0433 Easy-RSA \u0438 \u043a\u043b\u044e\u0447 tls-crypt. Easy-RSA \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432: \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u0445, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.\u041f\u0435\u0440\u0432\u044b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0441\u0430\u043b\u0438\u0441\u044c \u0432\u043f\u043e\u043b\u043d\u0435 \u0437\u0435\u043c\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439: Easy-RSA \u043b\u0435\u0436\u0430\u043b \u0433\u043b\u0443\u0431\u0436\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e, \u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a tls-crypt \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.\u0421\u0443\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e:# \u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0430.# \u042d\u0442\u043e \u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0431\u043e\u0440 \u00ab\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043f\u0430\u0432\u0448\u0435\u0433\u043e\u0441\u044f\u00bb \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430.CONF=\/etc\/openvpn\/server\/lab.confCONFDIR=$(dirname &#171;$CONF&#187;)TC=$(awk &#8216;$1 == &#171;tls-crypt&#187; { print $2; exit }&#8217; &#171;$CONF&#187;)if [ -n &#171;$TC&#187; ] &amp;&amp; [ &#171;${TC:0:1}&#187; != \/ ]; then    TC=&#187;$CONFDIR\/$TC&#187;fitest -r &#171;$TC&#187; || {    printf &#8216;%s\\n&#8217; &#8216;\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 tls-crypt&#8217; &gt;&amp;2    exit 1}\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043c\u043e\u0451\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u044d\u0442\u043e\u0433\u043e \u0445\u0432\u0430\u0442\u0430\u043b\u043e. \u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c \u0432\u0441\u0435\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 OpenVPN \u0442\u0430\u043a\u043e\u0439 awk \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f: \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0447\u0451\u0442\u0430.\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0435\u0449\u0451 \u0432\u0430\u0436\u043d\u0435\u0435 \u0441\u0442\u0430\u043b\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u0418\u043d\u0430\u0447\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u043f\u043e\u0440\u0442\u043e\u043c \u0438\u043b\u0438 \u0446\u0435\u043d\u0442\u0440\u043e\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432.\u042d\u0442\u0430\u043f 2. \u0418\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 Telegram\u0412\u043c\u0435\u0441\u0442\u043e \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043e\u0431\u0449\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u044f \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0412 \u043c\u0435\u043d\u044e \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0438\u043c\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 work-laptop \u0438\u043b\u0438 home-phone, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0437\u044b\u0432.\u0418\u043c\u044f \u0441\u0442\u0430\u043b\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0447\u0430\u0441\u0442\u044c\u044e \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u0438 CN \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. CN, \u0438\u043b\u0438 Common Name, \u2014 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0435. \u0423 \u043c\u0435\u043d\u044f \u043e\u043d \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0430 \u043d\u0435 \u0444\u0430\u043c\u0438\u043b\u0438\u044e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0438 \u043d\u0435 \u0442\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u043c\u0435\u043d\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u0442\u0430\u043a:import reimport unicodedatadef validate_ascii_name(value):    value = unicodedata.normalize(&#171;NFKD&#187;, value.strip().lower())    value = &#171;&#187;.join(c for c in value if not unicodedata.combining(c))    value = re.sub(r&#187;[\\s_]+&#187;, &#171;-&#171;, value)    value = re.sub(r&#187;-+&#187;, &#171;-&#171;, value).strip(&#171;-&#171;)    if not re.fullmatch(r&#187;[a-z0-9-]{3,24}&#187;, value):        raise ValueError(&#171;\u041d\u0443\u0436\u043d\u043e 3\u201324 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0446\u0438\u0444\u0440\u044b \u0438\u043b\u0438 \u0434\u0435\u0444\u0438\u0441&#187;)    return value\u0412 \u043c\u043e\u0451\u043c \u043f\u043e\u043b\u043d\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u0435\u0441\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0440\u0443\u0441\u0441\u043a\u0438\u0445 \u0431\u0443\u043a\u0432. \u0417\u0434\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u0436\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c: \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u043e\u0435 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u043e\u0434\u0438\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440.\u0421\u0430\u043c\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u041d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u0438 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0438 PKI (\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432), \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u0430 \u043d\u0443\u0436\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435. \u0412 \u043d\u043e\u0432\u044b\u0445 Windows-\u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445 \u044d\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u044b \u0434\u0430\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0432 \u0441\u0442\u0430\u0440\u043e\u043c NL-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0435; \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435.\u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e \u043d\u0438\u043a\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439: \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0443\u043a\u0430\u0437\u0430\u0442\u044c @username, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442. \u041d\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Telegram-\u0431\u043e\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 sendDocument \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442. \u0423 Telegram \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0432 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0431\u043e\u0442\u043e\u0432.\u042f \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u043b\u0438\u0447\u043d\u0443\u044e Telegram-\u0441\u0435\u0441\u0441\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Telethon. \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441\u0430\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0431\u043e\u0442\u0430.\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c ID. \u0412 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 \u043d\u0438\u0436\u0435 \u00ab\u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446\u00bb \u2014 \u044d\u0442\u043e \u043c\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0443\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f:\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u0430 \u043e\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u043e\u0433\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0432 \u043b\u0438\u0447\u043d\u043e\u043c \u0447\u0430\u0442\u0435.\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f.\u0421\u0435\u0441\u0441\u0438\u044f Telegram \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443.\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0430 \u043d\u0435 \u0431\u043e\u0442, \u043a\u0430\u043d\u0430\u043b \u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u0430.\u0424\u0430\u0439\u043b \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 .ovpn, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435.\u041b\u0438\u043c\u0438\u0442 \u0432 \u043f\u044f\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043e\u043a \u0437\u0430 \u0447\u0430\u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 SQLite \u0438 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 Telegram FloodWait \u0442\u043e\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438.\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439; \u043e\u043d\u0430 \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e, \u0447\u0430\u0442\u044b \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b. \u042d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430: \u0441\u0430\u043c \u0444\u0430\u0439\u043b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 MTProto-\u0441\u0435\u0441\u0441\u0438\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u00ab\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c VPN\u00bb \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Telethon \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0431\u0435\u0440\u0435\u0447\u044c \u0441\u0435\u0441\u0441\u0438\u0438.\u041a\u0430\u043a \u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0443\u044e \u0432\u044b\u0434\u0430\u0447\u0443\u0412 \u0440\u0430\u043d\u043d\u0435\u0439 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u0444\u0430\u0439\u043b \u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u0442, \u043a\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u043e\u0442\u043a\u0440\u044b\u043b \u0441\u0441\u044b\u043b\u043a\u0443. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u0431\u044b\u043b \u0431\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0434\u0430\u0447\u0443 \u044f \u0441\u0432\u044f\u0437\u0430\u043b \u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u043d\u0438\u043a\u043e\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e Telegram ID \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c.\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u043b\u0430 \u0442\u0430\u043a\u043e\u0439:\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 @username    -&gt; \u0431\u043e\u0442 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 24 \u0447\u0430\u0441\u0430    -&gt; \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \/start \u043f\u043e \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044e    -&gt; \u0431\u043e\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443 \u043d\u0438\u043a \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Telegram ID    -&gt; \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 5 \u043c\u0438\u043d\u0443\u0442    -&gt; \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e \u043f\u043e\u0433\u0430\u0448\u0430\u0435\u0442\u0441\u044f    -&gt; \u0444\u0430\u0439\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 chat_id\u0412 \u0431\u0430\u0437\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f SHA-256 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430. \u0422\u043e\u043a\u0435\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 24 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0431\u0430\u0439\u0442; \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 BEGIN IMMEDIATE, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u0432\u0435 \u0432\u044b\u0434\u0430\u0447\u0438.\u0421\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043e\u0431\u0435\u0438\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438:import hashlibimport secretsimport timedef make_grant(con, name, expected_username):    token = secrets.token_urlsafe(24)    digest = hashlib.sha256(token.encode()).hexdigest()    with con:        con.execute(            &#171;INSERT INTO vpn_grants(hash,name,expires,used,recipient) &#187;            &#171;VALUES(?,?,?,0,?)&#187;,            (digest, name, time.time() + 86400, expected_username.lower()),        )    return tokendef consume_grant(con, presented_token, expected_username):    digest = hashlib.sha256(presented_token.encode()).hexdigest()    con.execute(&#171;BEGIN IMMEDIATE&#187;)    try:        row = con.execute(            &#171;SELECT&#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-501822","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/501822","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=501822"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/501822\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=501822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=501822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=501822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}