{"id":446470,"date":"2025-01-30T21:00:58","date_gmt":"2025-01-30T21:00:58","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=446470"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2025-01-30T21:00:58","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=446470","title":{"rendered":"<span>\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0442\u0440\u0430\u0444\u0438\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e HAProxy, \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0430 443 \u043f\u043e\u0440\u0442\u0443<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/872080\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u043f\u0440\u043e \u0441\u043e\u0432\u043c\u0435\u0449\u0435\u043d\u0438\u0435  Vless, WebSocket \u0438 ssh \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 443 \u0441\u0438\u043b\u0430\u043c\u0438 HAProxy. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e HAProxy, \u0434\u043e\u0431\u0430\u0432\u0438\u043c GeoIP \u0441\u043f\u0438\u0441\u043a\u0438 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u043b\u0438\u0447\u043d\u044b\u0439 DOH \u0441\u0438\u043b\u0430\u043c\u0438 AdGuardHome \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u0441 WebSocket \u0438 \u0441\u0430\u0439\u0442\u0430\u043c\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c openconnect vpn.<\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f 3 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u043d\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043c\u0435\u043d mydomain.com \u0438\u043b\u0438 my.domain.com \u0438 \u0434\u0432\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u043b\u044f VLESS \u0438 OCServ, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c 1.mydomain.com ( my1.domain.com )  \u0438 2.mydomain.com ( my2.domain.com ) \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u043e\u043c\u0435\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0442\u0435\u0445\u0434\u043e\u043c\u0435\u043d\u044b \u0445\u043e\u0441\u0442\u0435\u0440\u0430, \u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043b\u0438\u0448\u044c \u0410 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 IP \u0441\u0435\u0440\u0432\u0435\u0440\u0430. <\/p>\n<p>HAProxy \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 TCP \u0434\u043b\u044f 443 \u043f\u043e\u0440\u0442\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 SNI, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b \u043f\u043e\u0439\u0434\u0443\u0442 \u043d\u0430 \u0441\u0432\u043e\u0438 backend \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0430 \u0432\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0443\u0439\u0434\u0435\u0442 \u043d\u0430 http frontend, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0443\u0442\u0438 (\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 HAProxy, XUI \u043f\u0430\u043d\u0435\u043b\u044c, WebSocket&#8217;s \u0432 \u043b\u0438\u0446\u0435 wstunnel \u0438 DOH \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u043f\u043e\u0437\u0436\u0435) \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0439\u0434\u0435\u0442 \u043d\u0430 default_backend \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0430\u0439\u0442.<\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442 root, \u0442\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043c ctrl+c ctrl+v, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443:<br \/>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 <code>apt update &amp;&amp; apt upgrade -y<\/code> <br \/>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u044b <code>apt install ocserv haproxy unzip netcat-traditional socat htop unbound unbound-anchor seccomp<\/code> <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0437\u0430\u0449\u0438\u0442\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c IPv6 \u0438 \u0432\u043d\u0435\u0441\u0435\u043c \u043f\u0440\u0430\u0432\u043a\u0438 \u0432 sysctl.conf, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043f\u043e\u0441\u043b\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>sysctl -p<\/code><br \/><code>nano \/etc\/sysctl.conf<\/code> <\/p>\n<pre><code># \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 IP-\u0441\u043f\u0443\u0444\u0438\u043d\u0433\u0430 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1  # \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b ICMP net.ipv4.icmp_echo_ignore_broadcasts = 1  # \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043f\u043b\u043e\u0445\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 icmp net.ipv4.icmp_ignore_bogus_error_responses = 1  # \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 net.ipv4.conf.all.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv6.conf.default.accept_source_route = 0  # \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c exec shield \u044f\u0434\u0440\u0430 kernel.randomize_va_space = 1  # \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c SYN \u0430\u0442\u0430\u043a\u0438 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 2048 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 5  # \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0440\u0441\u0438\u0430\u043d\u0441\u043a\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b net.ipv4.conf.all.log_martians = 1 net.ipv4.icmp_ignore_bogus_error_responses = 1  # \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0  # \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f ICMP net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv6.conf.default.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.default.secure_redirects = 0  # Disabled IPv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1<\/code><\/pre>\n<p>\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 ssh \u0438 http\/s<br \/><code>ufw allow 22\/tcp<\/code><br \/><code>ufw allow 80,443\/tcp<\/code><br \/>\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0435\u0440\u0432\u043e\u043b<br \/><code>ufw enable<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c unbound \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u0430 (\u0448\u0430\u0433 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c)<br \/>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c systemd resolved <br \/><code>systemctl stop systemd-resolved.service<\/code> <br \/>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u043c DNSStubListener<br \/><code>sh -c 'echo DNSStubListener=no' &gt;&gt; \/etc\/systemd\/resolved.conf<\/code> <br \/>\u0423\u0434\u0430\u043b\u0438\u043c resolv.conf<br \/><code>rm -f \/etc\/resolv.conf<\/code> <br \/>\u041f\u0440\u043e\u043f\u0438\u0448\u0435\u043c localhost \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u0432\u0435\u0442\u0447\u0438\u043a\u0430 DNS<br \/><code>echo 'nameserver 127.0.0.1' &gt;&gt; \/etc\/resolv.conf<\/code> <br \/>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c systemd resoved<br \/><code>systemctl start systemd-resolved.service<\/code><br \/>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c unbound:<br \/>\u0421\u043a\u0430\u0447\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0445 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432<br \/><code>curl -o \/etc\/unbound\/root.hints https:\/\/www.internic.net\/domain\/named.cache<\/code><br \/>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0445 DNS<\/p>\n<pre><code>echo '#!\/bin\/sh curl -o \/etc\/unbound\/root.hints https:\/\/www.internic.net\/domain\/named.cache' &gt; \/etc\/cron.daily\/root_hints<\/code><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c<br \/><code>chmod 700 \/etc\/cron.daily\/root_hints<\/code> <br \/> \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043b\u044e\u0447 DNSSEC \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438<br \/><code>unbound-anchor -a \/etc\/unbound\/root.key<\/code> <br \/>\u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0434\u043b\u044f root.hints root.key<br \/><code>chown unbound:unbound \/etc\/unbound\/root.hints<\/code> <br \/><code>chown unbound:unbound \/etc\/unbound\/root.key<\/code> <br \/>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<br \/><code>nano \/etc\/unbound\/unbound.conf.d\/dns.conf<\/code>  \u0438 \u0432\u043d\u0435\u0441\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>server: port: 53 verbosity: 0 num-threads: 1 outgoing-range: 512 num-queries-per-thread: 1024 msg-cache-size: 512m  rrset-cache-size: 64m cache-max-ttl: 21600 cache-min-ttl: 2600 infra-host-ttl: 60 infra-lame-ttl: 120  interface: 127.0.0.1  outgoing-interface: $IP  access-control: 127.0.0.1\/8 allow_snoop  root-hints: \"\/etc\/unbound\/root.hints\"  username: unbound  directory: \"\/etc\/unbound\" logfile: \"\/var\/log\/unbound.log\" log-time-ascii: yes use-syslog: no  do-not-query-localhost: no qname-minimisation: yes minimal-responses: yes prefetch: yes use-caps-for-id: yes rrset-roundrobin: yes  hide-identity: yes hide-version: yes  so-rcvbuf: 4m so-sndbuf: 4m  do-ip4: yes do-ip6: no do-udp: yes do-tcp: yes deny-any: yes<\/code><\/pre>\n<p>\u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 do-not-query-localhost: no \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 localhost \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, num-threads: 1 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043a\u043e\u043b-\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 (\u043f\u043e \u044f\u0434\u0440\u0430\u043c), interface: 127.0.0.1 \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 localhost \u0441 \u043f\u043e\u0440\u0442\u043e\u043c 53, outgoing-interface: $IP \u0433\u0434\u0435 $IP \u044d\u0442\u043e IPv4 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>ip a<\/code>  \u0438\u043b\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u0445\u043e\u0441\u0442\u0435\u0440\u0430, \u0430 access-control: 127.0.0.1\/8 allow_snoop \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u0441 localhost \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<\/div>\n<\/details>\n<h2>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 HAProxy <\/h2>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442 acme \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432<br \/>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 haproxy<br \/><code>adduser root haproxy<\/code><br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f acme<br \/><code>mkdir \/usr\/local\/share\/acme.sh\/<\/code><br \/>\u0421\u043a\u0430\u0447\u0430\u0435\u043c acme.sh <br \/><code>git clone https:\/\/github.com\/acmesh-official\/acme.sh.git<\/code><br \/>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 acme <br \/><code>cd acme.sh\/<\/code> <br \/>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e<br \/><code>.\/acme.sh --install --no-cron --no-profile --home \/usr\/local\/share\/acme.sh<\/code> <br \/>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0438\u043c\u043b\u0438\u043d\u043a \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 <br \/><code>ln -s \/usr\/local\/share\/acme.sh\/acme.sh \/usr\/local\/bin\/<\/code> <br \/>\u0414\u0430\u0434\u0438\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a<br \/><code>chmod 755 \/usr\/local\/share\/acme.sh\/<\/code> <br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 HAProxy<br \/><code>mkdir \/etc\/haproxy\/certs<\/code> <br \/>\u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f<br \/><code>chown haproxy:haproxy \/etc\/haproxy\/certs<\/code> <br \/>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u0440\u0430\u0432\u0430 <br \/><code>chmod 770 \/etc\/haproxy\/certs<\/code> <br \/>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e acme \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c default \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0434\u0430\u0447\u0438 youremail@example.com  \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u043d\u0430 \u0441\u0432\u043e\u044e \u043f\u043e\u0447\u0442\u0443<br \/><code>acme.sh --set-default-ca --server letsencrypt --register-account -m youremail@example.com<\/code> <br \/>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u0438\u0434\u0430 &#171;ACCOUNT_THUMBPRINT &#8216;diosrg8siojgiodsjhosdijhoisdfjsd&#8217; &#187; \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0435 \u043e\u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e HAProxy \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432.<br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043b\u044e\u0447\u0438 DH,  <strong><em>\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f!<\/em><\/strong>  <br \/><code>openssl dhparam -out \/etc\/haproxy\/dh4096.pem 4096<\/code><br \/>\u041e\u0447\u0438\u0441\u0442\u0438\u043c \u0434\u0435\u0444\u043e\u043b\u0442\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e<br \/><code>echo '' &gt; \/etc\/haproxy\/haproxy.cfg<\/code><br \/>\u041e\u0442\u043a\u0440\u043e\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433<br \/><code>nano \/etc\/haproxy\/haproxy.cfg<\/code><br \/> \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>global         log \/dev\/log    local0         log \/dev\/log    local1 notice         chroot \/var\/lib\/haproxy         stats socket \/var\/run\/haproxy\/admin.sock level admin mode 660         setenv ACCOUNT_THUMBPRINT 'diosrg8siojgiodsjhosdijhoisdfjsd' # \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 acme         stats timeout 30s         user    haproxy         group   haproxy         daemon         ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305         ssl-default-bind-options prefer-client-ciphers no-tls-tickets ssl-min-ver TLSv1.2         ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305         ssl-default-server-options no-tls-tickets ssl-min-ver TLSv1.2         ssl-dh-param-file \/etc\/haproxy\/dh4096.pem       # \u0422\u044e\u043d\u0438\u043d\u0433 http\/2 \u0434\u043b\u044f WebSocket         tune.h2.initial-window-size 536870912 # \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.fe.max-concurrent-streams 512 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043b-\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.fe.glitches-threshold 1024 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u043e\u0440\u043e\u0433 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b-\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a.         tune.h2.be.max-concurrent-streams 512 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043b-\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.be.glitches-threshold 1024 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u043e\u0440\u043e\u0433 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b-\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 backend \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0445.          defaults        log global        mode http        option httplog        option dontlognull        timeout connect 40s        timeout client  1m        timeout server  1m        timeout tunnel 1h        timeout http-request 30s        errorfile 400 \/etc\/haproxy\/errors\/400.http        errorfile 403 \/etc\/haproxy\/errors\/403.http        errorfile 408 \/etc\/haproxy\/errors\/408.http        errorfile 500 \/etc\/haproxy\/errors\/500.http        errorfile 502 \/etc\/haproxy\/errors\/502.http        errorfile 503 \/etc\/haproxy\/errors\/503.http        errorfile 504 \/etc\/haproxy\/errors\/504.http #------------------------------------------- resolvers dnsserver         nameserver ns1 127.0.0.1:53         nameserver ns2 127.0.0.53:53         parse-resolv-conf         resolve_retries       3         timeout resolve       1s         timeout retry         1s         hold other           30s         hold refused         30s         hold nx              30s         hold timeout         30s         hold valid           10s         hold obsolete        30s #------------------------------------------ frontend stats         mode http         bind 127.0.0.1:58080         stats enable         stats uri \/stats         stats realm Haproxy\\ Statistics         stats refresh 10s         stats auth sdvhsis3w:opsdiv90-ikps         stats show-legends         stats hide-version #------------------------------------------ frontend http         bind *:80         mode http         http-request reject if { req.hdr(user-agent) -m len le 32 }         http-request reject if { req.hdr(user-agent) -m sub evil }          http-request return status 200 content-type text\/plain lf-string \"%[path,field(-1,\/)].${ACCOUNT_THUMBPRINT}\\n\" if { path_beg '\/.well-known\/acme-challenge\/' }          http-request redirect scheme https unless { ssl_fc }  frontend tcp         bind *:443 # ssl passthrough         mode tcp         option tcplog         tcp-request inspect-delay 6s        # \u0417\u0430\u0449\u0438\u0442\u0438\u043c \u043e\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438, \u0435\u0441\u043b\u0438 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u0437\u0430 10\u0441\u0435\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u043e \u0431\u043e\u043b\u0435\u0435 30 \u0441\u043e\u0435\u0434\u0438\u0435\u043d\u043d\u0438\u0439, \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0437\u0430\u043a\u0440\u043e\u0435\u043c \u0432\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f       # \u041d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0447\u0442\u043e WsTunnel \u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c --connection-min-idle &lt;n&gt; \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435       # \u0423 VLESS \u0442\u0430\u043a \u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043b\u0435\u043a\u0441\u043e\u0440, \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435       # \u041c\u043e\u0436\u0435\u0442 \u0442\u0430\u043a \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0435\u0441\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u0440\u0435\u0448\u0430\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u044e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443.        # \u0414\u043b\u044f \u0441\u0435\u0431\u044f \u044f \u0432\u044b\u0432\u0435\u043b \u0447\u0442\u043e 30 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u0435\u0441\u043b\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u043c\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442 \u0441\u0432\u0435\u0442         stick-table type ip size 1m expire 10s store conn_cur         tcp-request content track-sc0 src         tcp-request content reject if { sc_conn_cur(0) gt 30 }          tcp-request content capture req.ssl_sni len 10         tcp-request content accept if { req_ssl_hello_type 1 } or !{ req_ssl_hello_type 1 }          use_backend tcp-ssh if !{ req.ssl_hello_type 1 } { payload(0,7) -m bin 5353482d322e30 } or !{ req.ssl_hello_type 1 } { req.len 0 } # \u042f \u0431\u044b \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b, \u0432\u044b \u043b\u0435\u0448\u0438\u0442\u0435\u0441\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0435\u0441\u043b\u0438 haproxy \u0443\u043f\u0430\u0434\u0435\u0442          default_backend tcp_to_https  frontend https         bind 127.0.0.1:444 accept-proxy ssl crt \/etc\/haproxy\/certs alpn h2,http\/1.1 strict-sni         http-request reject if { req.hdr(user-agent) -m sub evil }         http-request reject if { path -m sub \/. }          http-response set-header Strict-Transport-Security \"max-age=16000000; includeSubDomains; preload;\" # \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c HSTS          use_backend http_stats if { ssl_fc_sni -i mydomain.com } { path_beg \/ha-stats-secret-path\/ }  #-&gt;-----tcp-backend-------------------------- backend tcp_to_https         mode tcp         server https 127.0.0.1:444 send-proxy-v2-ssl-cn check port 444 backend tcp-ssh         mode tcp         option http-keep-alive         timeout http-keep-alive 30s         server ssh 127.0.0.1:22 check port 22 #-&gt;-&gt;---http-backend------------------------- backend http_stats         mode http         http-request replace-path \/ha-stats-secret-path(\/)?(.*) \/\\2         server stats 127.0.0.1:58080<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 <br \/><code>haproxy -f \/etc\/haproxy\/haproxy.cfg -c<\/code><br \/>\u0415\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435\u0442, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c<br \/><code>systemctl start haproxy<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0434\u043b\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u0434\u043b\u044f \u044d\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<br \/><code>acme.sh --issue -d mydomain.com --stateless<\/code><br \/>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, HAProxy \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 LE \u0438 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u0438 \u043f\u0443\u0442\u044c \u043a \u043d\u0435\u043c\u0443, \u043d\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 &#171;\u0433\u043e\u0440\u044f\u0447\u0443\u044e&#187;<\/p>\n<pre><code>DEPLOY_HAPROXY_HOT_UPDATE=yes \\ DEPLOY_HAPROXY_STATS_SOCKET=\/var\/run\/haproxy\/admin.sock \\ DEPLOY_HAPROXY_PEM_PATH=\/etc\/haproxy\/certs \\ acme.sh --deploy -d mydomain.com --deploy-hook haproxy<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 mydomain.com, \u0435\u0441\u043b\u0438 \u0441\u0430\u0439\u0442 \u043e\u0442\u043a\u0440\u044b\u043b\u0441\u044f \u043a\u0430\u043a https \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043b\u044f \u0432\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u0435\u0441\u043b\u0438 \u0441\u0430\u0439\u0442 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u043b\u0441\u044f \u043a\u0430\u043a https, \u043f\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 503 \u043e\u0448\u0438\u0431\u043a\u0430, \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.<br \/><code>systemctl restart haproxy<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c GeoIP \u0441\u043f\u0438\u0441\u043a\u0438 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d \u0438 \u043a\u043e\u043d\u0442\u0438\u043d\u0435\u043d\u0442\u043e\u0432.<br \/>\u041d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u043d\u0430\u0448\u0435\u043b \u043d\u0430 github \u0441\u043f\u0438\u0441\u043a\u0438 GeoIP, \u0441\u043a\u0430\u0436\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0443 <a href=\"https:\/\/github.com\/Loyalsoldier\/geoip\" rel=\"noopener noreferrer nofollow\">Loyalsoldier <\/a>\u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0433\u043e \u0432 continent_code \u0438 country_iso_code.<br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f GeoIP \u0441\u043f\u0438\u0441\u043a\u043e\u0432<br \/><code>mkdir \/etc\/haproxy\/geoip<\/code> .<br \/><code>mkdir \/etc\/haproxy\/acl<\/code> .<br \/><code>mkdir \/etc\/haproxy\/script<\/code> .<br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \/etc\/haproxy\/script<br \/><code>nano \/etc\/haproxy\/script\/geoip.sh<\/code><br \/>\u0421\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code>#!\/bin\/bash # https:\/\/github.com\/Loyalsoldier\/geoip\/blob\/release\/GeoLite2-Country-Locations-en.csv  GEOIP_ACL=\"\/etc\/haproxy\/geoip\" GEOIP_TEMP=\"\/tmp\"   function DownloadDB () {         # \u041e\u0447\u0438\u0441\u0442\u0438\u043c \u0441\u0442\u0430\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b:         rm -rf  $GEOIP_TEMP\/{*.csv,*.zip}          curl -o $GEOIP_TEMP\/geip_csv.zip https:\/\/raw.githubusercontent.com\/Loyalsoldier\/geoip\/release\/GeoLite2-Country-CSV.zip &amp;&amp; \\         unzip -j $GEOIP_TEMP\/geip_csv.zip -d $GEOIP_TEMP \"*IPv4.csv\" \"*en.csv\"          # \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c csv:         find $GEOIP_TEMP -depth -type f -name '*IPv4.csv' -exec mv {} $GEOIP_TEMP\/ips.csv \\;         find $GEOIP_TEMP -depth -type f -name '*en.csv' -exec mv {} $GEOIP_TEMP\/countres.csv \\; }  function CreateAcl () {         if [ ! -d $GEOIP_ACL ]; then                 mkdir -p $GEOIP_ACL         fi          while read line; do                 COUNTRY_CODE=$(echo $line | cut -d, -f5)                 COUNTRY_ID=$(echo $line | cut -d, -f1)                  CONTINENT_CODE=$(echo $line | cut -d, -f3)                 CONTINENT_ID=$(echo $line | cut -d, -f1)                  # \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043f\u0438\u0441\u043a\u0438                 cat $GEOIP_TEMP\/ips.csv | grep $COUNTRY_ID | cut -d, -f1 &gt; $GEOIP_ACL\/$COUNTRY_CODE.list                 cat $GEOIP_TEMP\/ips.csv | grep $CONTINENT_ID | cut -d, -f1 &gt; $GEOIP_ACL\/$CONTINENT_CODE.acl         done &lt;$GEOIP_TEMP\/countres.csv }  DownloadDB CreateAcl systemctl restart haproxy<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0438\u043c\u0435\u044f \u0441\u043f\u0438\u0441\u043a\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \/etc\/haproxy\/geoip \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438, <strong><em>\u043f\u0440\u043e\u0448\u0443 \u0443\u0447\u0435\u0441\u0442\u044c \u0447\u0442\u043e \u0441\u043f\u0438\u0441\u043a\u0438 GeoIP \u043d\u0435 \u0442\u043e\u0447\u043d\u044b\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u044f!<br \/><\/em><\/strong><br \/>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &#8216;\u0438\u043b\u0438&#8217; \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 http frontend \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u0441\u043b\u0435<br \/><em>http-request reject<\/em> <em>if { req.hdr(user-agent) -m sub evil }<\/em> <\/p>\n<pre><code>     # \u0417\u0430\u0431\u043b\u043e\u0447\u0438\u043c \u0410\u0444\u0440\u0438\u043a\u0443, \u0410\u0437\u0438\u044e, \u042e\u0436\u043d\u0443\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443, \u041e\u043a\u0435\u0430\u043d\u0438\u044e, \u0415\u0432\u0440\u043e\u043f\u0443 \u0438 \u0421\u0435\u0432\u0435\u0440\u043d\u0443\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443 \u043d\u0435 \u0431\u043b\u043e\u0447\u0438\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 ACME         http-request reject if { src -f \/etc\/haproxy\/geoip\/AF.acl } || { src -f \/etc\/haproxy\/geoip\/AS.acl } || { src -f \/etc\/haproxy\/geoip\/AN.acl } || { src -f \/etc\/haproxy\/geoip\/OC.acl } || { src -f \/etc\/haproxy\/geoip\/SA.acl }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0441\u0435\u043a\u0446\u0438\u044e TCP frontend \u043f\u043e\u0441\u043b\u0435 <em>tcp-request inspect-delay 6s<\/em> <\/p>\n<pre><code>      # \u0417\u0430\u0431\u043b\u043e\u0447\u0438\u043c \u0410\u0444\u0440\u0438\u043a\u0443, \u0410\u0437\u0438\u044e, \u042e\u0436\u043d\u0443\u044e\/\u0421\u0435\u0432\u0435\u0440\u043d\u0443\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443, \u041e\u043a\u0435\u0430\u043d\u0438\u044e \u0438 \u0410\u043d\u0442\u0430\u0440\u043a\u0442\u0438\u043a\u0443         tcp-request connection reject if { src -f \/etc\/haproxy\/geoip\/AF.acl } || { src -f \/etc\/haproxy\/geoip\/AS.acl } || { src -f \/etc\/haproxy\/geoip\/AN.acl } || { src -f \/etc\/haproxy\/geoip\/OC.acl } || { src -f \/etc\/haproxy\/geoip\/SA.acl } || { src -f \/etc\/haproxy\/geoip\/NA.acl }<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 https frontend \u043f\u043e\u0441\u043b\u0435 <em>http-request reject<\/em> <em>if { path -m sub \/. }<\/em><\/p>\n<pre><code>http-request deny deny_status 403 if !{ src -f \/etc\/haproxy\/geoip\/RU.list }<\/code><\/pre>\n<p>\u0423\u0447\u0442\u0438\u0442\u0435 \u0447\u0442\u043e \u0432\u0430\u0448\u0435\u0433\u043e IP \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0438 \u0432\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a https, \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u0445 \u0432\u044b\u0448\u0435 \u043d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0438\u0445 mylist.acl \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \/etc\/haproxy\/acl \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0432 \u0441\u043f\u0438\u0441\u043a\u0438 \u043d\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/p>\n<pre><code>http-request deny deny_status 403 if !{ src -f \/etc\/haproxy\/geoip\/RU.list } || !{ src -f \/etc\/haproxy\/mylist.acl }<\/code><\/pre>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 || \u043e\u043d \u0436\u0435 \u0438\u043b\u0438, \u0442.\u0435. \u0435\u0441\u043b\u0438 \u0432\u0430\u0448 IP \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0442\u044f-\u0431\u044b \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u0440\u0430\u0432\u0438\u043b, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f. <strong>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u0435\u043b\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c<\/strong>.<\/p>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>connection\u00a0<\/strong>\u0432 TCP frontend \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u0440\u0430\u043d\u043d\u0435\u0439 \u0442\u043e\u0447\u043a\u0435, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b, \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <strong>content <\/strong>\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u043f\u0438\u0448\u0435\u0442 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b \u0438 \u0441\u0431\u0440\u043e\u0441\u0438\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0443, \u0432 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 HAProxy \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u041f\u0440\u0430\u0432\u0438\u043b\u0430 <strong>connection\u00a0 <\/strong>\u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0434 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 <strong>content.<\/strong><br \/>\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u044b\u0432\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432.<\/p>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>silent-drop<\/strong> \u0432 http frontend \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0442\u0438\u0445\u043e\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0431\u0435\u0437 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <strong>deny<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u043e\u0442\u0432\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043e \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f &#171;\u0442\u0438\u0445\u043e\u0435 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043b\u044e\u0431\u044b\u0435 \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440\u044b \u0441 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043c\u0435\u0436\u0434\u0443 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u0447\u0430\u0441\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u043d\u0435 \u0437\u043d\u0430\u044f, \u0447\u0442\u043e \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e.&#187; \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <strong>deny<\/strong>, \u044f \u0436\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u0434\u043b\u044f IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 <strong>deny<\/strong>, \u0430 \u0434\u043b\u044f user-agent \u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0439 &#171;\/.&#187; <strong>silent-drop.<\/p>\n<p><\/strong>\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <code>http-request reject if { req.hdr(user-agent) -m len le 32 }<\/code> \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 frontend https &#8212; \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c DOH. <\/p>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f GeoIP<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>global         log \/dev\/log    local0         log \/dev\/log    local1 notice         chroot \/var\/lib\/haproxy         stats socket \/var\/run\/haproxy\/admin.sock level admin mode 660         setenv ACCOUNT_THUMBPRINT 'diosrg8siojgiodsjhosdijhoisdfjsd' # \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 acme         stats timeout 30s         user    haproxy         group   haproxy         daemon         ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305         ssl-default-bind-options prefer-client-ciphers no-tls-tickets ssl-min-ver TLSv1.2         ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305         ssl-default-server-options no-tls-tickets ssl-min-ver TLSv1.2         ssl-dh-param-file \/etc\/haproxy\/dh4096.pem       # \u0422\u044e\u043d\u0438\u043d\u0433 http\/2 \u0434\u043b\u044f WebSocket         tune.h2.initial-window-size 536870912 # \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.fe.max-concurrent-streams 512 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043b-\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.fe.glitches-threshold 1024 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u043e\u0440\u043e\u0433 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b-\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a.         tune.h2.be.max-concurrent-streams 512 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043b-\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.be.glitches-threshold 1024 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u043e\u0440\u043e\u0433 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b-\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 backend \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0445.          defaults        log global        mode http        option httplog        option dontlognull        timeout connect 40s        timeout client  1m        timeout server  1m        timeout tunnel 1h        timeout http-request 30s        errorfile 400 \/etc\/haproxy\/errors\/400.http        errorfile 403 \/etc\/haproxy\/errors\/403.http        errorfile 408 \/etc\/haproxy\/errors\/408.http        errorfile 500 \/etc\/haproxy\/errors\/500.http        errorfile 502 \/etc\/haproxy\/errors\/502.http        errorfile 503 \/etc\/haproxy\/errors\/503.http        errorfile 504 \/etc\/haproxy\/errors\/504.http #------------------------------------------- resolvers dnsserver         nameserver ns1 127.0.0.1:53         nameserver ns2 127.0.0.53:53         parse-resolv-conf         resolve_retries       3         timeout resolve       1s         timeout retry         1s         hold other           30s         hold refused         30s         hold nx              30s         hold timeout         30s         hold valid           10s         hold obsolete        30s #------------------------------------------ frontend stats         mode http         bind 127.0.0.1:58080         stats enable         stats uri \/stats         stats realm Haproxy\\ Statistics         stats refresh 10s         stats auth sdvhsis3w:opsdiv90-ikps         stats show-legends         stats hide-version #------------------------------------------ frontend http         bind *:80         mode http         http-request reject if { req.hdr(user-agent) -m len le 32 }         http-request reject if { req.hdr(user-agent) -m sub evil }         # \u0417\u0430\u0449\u0438\u0442\u0438\u043c \u043e\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438         # \u0415\u0441\u043b\u0438 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 1m \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0431\u043e\u043b\u0435\u0435 10 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c 429 Too Many Requests         stick-table type ip size 100k expire 2m store http_req_rate(30s)         http-request track-sc0 src         # \u041e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c         http-request deny deny_status content-type text\/html lf-string \"&lt;p&gt;Per our policy, you are limited to 10 requests per minute, but you have exceeded that limit with %[sc_http_req_rate(0)] requests per minute.&lt;\/p&gt;\" if { sc_http_req_rate(0) gt 30 }        # \u0417\u0430\u0431\u043b\u043e\u0447\u0438\u043c \u0410\u0444\u0440\u0438\u043a\u0443, \u0410\u0437\u0438\u044e, \u042e\u0436\u043d\u0443\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443, \u041e\u043a\u0435\u0430\u043d\u0438\u044e, \u0415\u0432\u0440\u043e\u043f\u0443 \u0438 \u0421\u0435\u0432\u0435\u0440\u043d\u0443\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443 \u043d\u0435 \u0431\u043b\u043e\u0447\u0438\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 ACME         http-request deny deny_status 403 if { src -f \/etc\/haproxy\/geoip\/AF.acl } || { src -f \/etc\/haproxy\/geoip\/AS.acl } || { src -f \/etc\/haproxy\/geoip\/AN.acl } || { src -f \/etc\/haproxy\/geoip\/OC.acl } || { src -f \/etc\/haproxy\/geoip\/SA.acl }           http-request return status 200 content-type text\/plain lf-string \"%[path,field(-1,\/)].${ACCOUNT_THUMBPRINT}\\n\" if { path_beg '\/.well-known\/acme-challenge\/' }         http-request redirect scheme https unless { ssl_fc }  frontend tcp         bind *:443 # ssl passthrough         mode tcp         option tcplog         tcp-request inspect-delay 6s        # \u0417\u0430\u0431\u043b\u043e\u0447\u0438\u043c \u0410\u0444\u0440\u0438\u043a\u0443, \u0410\u0437\u0438\u044e, \u042e\u0436\u043d\u0443\u044e\/\u0421\u0435\u0432\u0435\u0440\u043d\u0443\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443, \u041e\u043a\u0435\u0430\u043d\u0438\u044e \u0438 \u0410\u043d\u0442\u0430\u0440\u043a\u0442\u0438\u043a\u0443         tcp-request connection reject if { src -f \/etc\/haproxy\/geoip\/AF.acl } || { src -f \/etc\/haproxy\/geoip\/AS.acl } || { src -f \/etc\/haproxy\/geoip\/AN.acl } || { src -f \/etc\/haproxy\/geoip\/OC.acl } || { src -f \/etc\/haproxy\/geoip\/SA.acl } || { src -f \/etc\/haproxy\/geoip\/NA.acl }       # \u0417\u0430\u0449\u0438\u0442\u0438\u043c \u043e\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438, \u0435\u0441\u043b\u0438 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u0437\u0430 10\u0441\u0435\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u043e \u0431\u043e\u043b\u0435\u0435 30 \u0441\u043e\u0435\u0434\u0438\u0435\u043d\u043d\u0438\u0439, \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0437\u0430\u043a\u0440\u043e\u0435\u043c \u0432\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f      # \u041d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0447\u0442\u043e WsTunnel \u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c --connection-min-idle &lt;n&gt; \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435      # \u0423 VLESS \u0442\u0430\u043a \u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043b\u0435\u043a\u0441\u043e\u0440, \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435      # \u041c\u043e\u0436\u0435\u0442 \u0442\u0430\u043a \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0435\u0441\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u0440\u0435\u0448\u0430\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u044e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443.       # \u0414\u043b\u044f \u0441\u0435\u0431\u044f \u044f \u0432\u044b\u0432\u0435\u043b \u0447\u0442\u043e 30 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u0435\u0441\u043b\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u043c\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442 \u0441\u0432\u0435\u0442         stick-table type ip size 1m expire 10s store conn_cur         tcp-request content track-sc0 src         tcp-request content reject if { sc_conn_cur(0) gt 30 }          tcp-request content capture req.ssl_sni len 10         tcp-request content accept if { req_ssl_hello_type 1 } or !{ req_ssl_hello_type 1 }          use_backend tcp-ssh if !{ req.ssl_hello_type 1 } { payload(0,7) -m bin 5353482d322e30 } or !{ req.ssl_hello_type 1 } { req.len 0 } # \u042f \u0431\u044b \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b, \u0432\u044b \u043b\u0435\u0448\u0438\u0442\u0435\u0441\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0435\u0441\u043b\u0438 haproxy \u0443\u043f\u0430\u0434\u0435\u0442          default_backend tcp_to_https  frontend https         bind 127.0.0.1:444 accept-proxy ssl crt \/etc\/haproxy\/certs alpn h2,http\/1.1 strict-sni         http-request reject if { req.hdr(user-agent) -m sub evil }         http-request reject if { path -m sub \/. }       # \u0417\u0430\u0449\u0438\u0442\u0438\u043c \u043e\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c WsTunnel (\u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a)      # \u0415\u0441\u043b\u0438 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 30\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0431\u043e\u043b\u0435\u0435 30 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c 429 Too Many Requests         stick-table type ip size 100k expire 2m store http_req_rate(30s)         http-request track-sc0 src      # \u041e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043e \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043b-\u0432\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432         http-request deny deny_status content-type text\/html lf-string \"&lt;p&gt;Per our policy, you are limited to 30 requests per 30s, but you have exceeded that limit with %[sc_http_req_rate(0)] requests per 30s.&lt;\/p&gt;\" if { sc_http_req_rate(0) gt 30 }      # GeoIP \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u0440\u043e\u043c\u0435 RU \u0438 \u0431\u0435\u043b\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 (\u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f content-type \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441 \u0438\u0445 IP \u0432\u044b\u0432\u0435\u0441\u0442\u0438 IP \u0430\u0434\u0440\u0435\u0441.)      # \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 IP \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a         http-request deny deny_status 403 if !{ src -f \/etc\/haproxy\/geoip\/RU.list } || !{ src -f \/etc\/haproxy\/mylist.acl }          http-response set-header Strict-Transport-Security \"max-age=16000000; includeSubDomains; preload;\" # \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c HSTS          use_backend http_stats if { ssl_fc_sni -i mydomain.com } { path_beg \/ha-stats-secret-path\/ }  #-&gt;-----tcp-backend-------------------------- backend tcp_to_https         mode tcp         server https 127.0.0.1:444 send-proxy-v2-ssl-cn check port 444 backend tcp-ssh         mode tcp         option http-keep-alive         timeout http-keep-alive 30s         server ssh 127.0.0.1:22 check port 22 #-&gt;-&gt;---http-backend------------------------- backend http_stats         mode http         http-request replace-path \/ha-stats-secret-path(\/)?(.*) \/\\2         server stats 127.0.0.1:58080 <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h2>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/h2>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0441 OpenConnect<br \/>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0430\u0440\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u043d\u0430\u0447\u043d\u0435\u043c \u0441 post-hook-oc.sh<br \/>\u0420\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0440\u044f\u0434\u043e\u043c \u0441 acme.sh \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 .acme.sh<br \/>\u043d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 root \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c<br \/><code>nano .acme.sh\/post-hook-oc.sh<\/code><\/p>\n<pre><code>#!\/bin\/sh cp \/root\/.acme.sh\/1.mydomain.com_ecc\/fullchan.cer \/etc\/ocserv\/fullchan.cer cp \/root\/.acme.sh\/1.mydomain.com_ecc\/1.mydomain.com.key \/etc\/ocserv\/key.pem systemctl restart ocserv<\/code><\/pre>\n<p>\u0418 \u0432\u0442\u043e\u0440\u043e\u0439 hook-renew \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u043f\u0435\u0440\u0432\u043e\u043c\u0443<br \/><code>nano .acme.sh\/hook-renew-oc.sh<\/code> <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c\u0438<br \/><code>chmod 700 .acme.sh\/post-hook-oc.sh &amp;&amp; chmod 700 .acme.sh\/hook-renew-oc.sh<\/code><\/p>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441<br \/><code>acme.sh --issue -d 1.mydomain.com --stateless --post-hook \/root\/.acme.sh\/post-hook-oc.sh --renew-hook \/root\/.acme.sh\/hook-renew-oc.sh<\/code> <br \/>\u0414\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f ocserv \u0432 \/etc\/ocserv, \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043e\u043d \u043e\u0431\u043d\u043e\u0432\u0438\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442  \/etc\/ocserv \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0441\u0435\u0440\u0432\u0438\u0441.<\/p>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e OCServ<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code># \u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0434\u043a\u043b: https:\/\/1.mydomain.com\/?my-secret-path # cd \/etc\/ocserv &gt; ocpasswd username # \u0438\u043c\u044f tun device = ocserv socket-file = ocserv.sock chroot-dir = \/var\/lib\/ocserv #pid-file = \/var\/run\/ocserv.pid  #mtu = 1420 #\u0431\u0443\u0444\u0435\u0440 mtu #output-buffer = 10  # \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0431\u0430\u0439\u0442\/\u0441\u0435\u043a #rx-data-per-sec = 40000 #tx-data-per-sec = 40000  # \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, 1 basic, 2 info, 3 debug, 4 http, 8 sensitive, 9 TLS, default 0 \u043e\u043d \u0436\u0435 2 log-level = 2  # \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u043a\u0441\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b listen-proxy-proto = true  # \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u043a\u043b, \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c 'true' \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c apt install seccomp, \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c ~2% (ocserv \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u043d \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u043e\u043f\u0446\u0438\u0435\u0439) isolate-workers = false  # \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b-\u0432\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u0430 rate-limit-ms = 100  # keepalive \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c timeout server \u0438 timeout client \u043d\u0430 haproxy, \u0443 \u043c\u0435\u043d\u044f 1 \u043c\u0438\u043d\u0443\u0442\u0430, \u0443\u0441\u0442 \u0432 40 \u0441\u0435\u043a keepalive = 40  # \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0435\u0440\u0435\u0437 PAM \u0441 gid \u0432\u044b\u0448\u0435 3000 #auth = \"pam[gid-min=3000]\"  # \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b auth = \"plain[passwd=\/etc\/ocserv\/ocpasswd]\"  # \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 auth-timeout = 240  # \u0432\u0440\u0435\u043c\u044f  \u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 min-reauth-time = 300  # \u0411\u043b\u043e\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 10\u0431\u0430\u043b\u043b\u043e\u0432 = 1 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 max-ban-score = 80 # \u0432\u0440\u0435\u043c\u044f \u0441\u0431\u043e\u0440\u043e\u0441\u0430 \u0431\u0430\u043b\u043b\u043e\u0432 ban-reset-time = 1200  # \u0423\u0441\u0442 \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u0443\u043a\u0438, \u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0435\u0437 \u043f\u0430\u0440\u043e\u043b\u044f, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0432\u0430\u043b\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0440\u043e\u0443\u043c\u0438\u043d\u0433\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0442\u044f\u043c\u0438 cookie-timeout = 600 # \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043c \u0440\u043e\u0443\u043c\u0438\u043d\u0433 deny-roaming = false  # \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043a\u0443\u043a\u0438, \u0432\u0432\u043e\u0434 \u043f\u0430\u0440\u043e\u043b\u044f 1 \u0440\u0430\u0437 #persistent-cookies = true  # \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a\u043b\u044e\u0447\u0430 rekey-time = 172800  # \u043c\u0435\u0442\u043e\u0434 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, ssl \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u043e\u0435, new-tunnel \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 ssl rekey-method = ssl  # \u0421\u043b\u0443\u0448\u0430\u0435\u043c \u043d\u0430 localhost listen-host = 127.0.0.1  # \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0434\u043b\u044f UDP. \u041d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043c\u044b \u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043d\u0430 firewall #udp-listen-host = $IPADDR  # \u041d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 tcp-port = 29999  # \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u044f UDP #udp-port = 443  run-as-user = ocserv run-as-group = ocserv  # LE \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. #server-cert = \/etc\/letsencrypt\/live\/my.domain.ru\/fullchain.pem #server-key = \/etc\/letsencrypt\/live\/my.domain.ru\/privkey.pem  # acme \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. server-cert = \/etc\/ocserv\/fullchain.cer server-key = \/etc\/ocserv\/1.mydomain.com.key  # banner = \"Server\" #pre-login-banner = \"Welcome\"  # \u041c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 max-clients = 32  # \u0418 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 (\u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043b\u043e\u0433\u0438\u043d\u043e\u043c), 0 - \u0431\u0435\u0437\u043b\u0438\u043c\u0438\u0442\u043d\u043e max-same-clients = 2  # \u0432\u0430\u0448 \u0434\u043e\u043c\u0435\u043d \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 1.mydomain.com default-domain = 1.mydomain.com  # \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c ipv4-network = 10.12.14.0 ipv4-netmask = 255.255.255.0 # \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e #ipv4-network = 10.12.14.0\/24  # \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u0442\u0435\u0447\u043a\u0443 DNS, \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c true # \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0440\u0438 \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 tunnel-all-dns = false  # DNS-\u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u044b. # \u0418\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e dns = 8.8.8.8 dns = 1.1.1.1  # \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c: \u043a\u0430\u043a\u0438\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b IP \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 VPN route = 10.12.14.0\/255.255.255.0 # route = 192.168.0.0\/255.255.0.0 # route = fef4:db8:1000:1001::\/64  # default = \u0432\u0441\u0435 # route = default  # \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f # no-route = 192.168.5.0\/255.255.255.0  # \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 ip \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e predictable-ips = true  # \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044e\u0437\u0435\u0440\u043e\u0432 \u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f #config-per-user = \/etc\/ocserv\/config-per-user\/ #config-per-group = \/etc\/ocserv\/config-per-group\/  # \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c true \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u043e\u0442 Cisco cisco-client-compat = true  # \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0443 camouflage = true  camouflage_secret = \"my-secret-path\" camouflage_realm = \"Admin Panel\"  # \u0434\u043b\u044f \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 Prometheus #use-occtl = true  # \u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432 \u0422\u0413 \u0438\u043b\u0438 log \u0444\u0430\u0439\u043b #connect-script = \/usr\/bin\/myscript #disconnect-script = \/usr\/bin\/myscript  # host-update \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 #host-update-script = \/usr\/bin\/myhostnamescript  # \u0414\u043b\u044f DTLS #Dead peer detection in seconds #dpd = 90  # Dead peer detection for mobile clients #mobile-dpd = 1800  # DTLS \u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u0440\u0438\u0448\u0435\u043b UDP \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 (\u0441\u0435\u043a) \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 tls #switch-to-tcp-timeout = 25  # \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 mtu #try-mtu-discovery = false  # HTTP headers included-http-headers = Strict-Transport-Security: max-age=31536000 ; includeSubDomains included-http-headers = X-Frame-Options: deny included-http-headers = X-Content-Type-Options: nosniff included-http-headers = Content-Security-Policy: default-src 'none' included-http-headers = X-Permitted-Cross-Domain-Policies: none included-http-headers = Referrer-Policy: no-referrer included-http-headers = Clear-Site-Data: \"cache\",\"cookies\",\"storage\" included-http-headers = Cross-Origin-Embedder-Policy: require-corp included-http-headers = Cross-Origin-Opener-Policy: same-origin included-http-headers = Cross-Origin-Resource-Policy: same-origin included-http-headers = X-XSS-Protection: 0 included-http-headers = Pragma: no-cache included-http-headers = Cache-control: no-store, no-cache<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 <br \/><code>systemctl start ocserv<\/code> <br \/>\u0418 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0435\u0433\u043e<br \/><code>systemctl status ocserv<\/code> <br \/>\u0415\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<br \/>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \/etc\/ocserv <code>cd \/etc\/ocserv<\/code> <br \/>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c <code>ocpasswd nameuser<\/code>  \u0434\u0432\u0430\u0436\u0434\u044b \u0432\u0432\u0435\u0434\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441<br \/><code>systemctl restart ocserv<\/code> <br \/>\u0421\u0435\u0440\u0432\u0438\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c localhost \u0438 \u043f\u043e\u0440\u0442 29999 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 tcp \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, udp \u0438 DTLS \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c.<\/p>\n<p>\u041f\u0440\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0435\u0442\u0438, \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0444\u043e\u0440\u0432\u0430\u0440\u0434 \u0442\u0440\u0430\u0444\u0438\u043a\u0430. \u041a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c ocserv \u0432 HAProxy \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 TCP frontend \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 <em>tcp-request content accept if { req_ssl_hello_type 1 } or !{ req_ssl_hello_type 1 }<\/em><br \/><code>use_backend ocserv { req.ssl_sni -i 1.mydomain.com }<\/code> <br \/>\u0418 \u0434\u043e\u0431\u0430\u0432\u0438\u043c backend <\/p>\n<pre><code>backend ocserv         mode tcp         server s1 127.0.0.1:29999 send-proxy check port 29999<\/code><\/pre>\n<p>\u0418 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c HAProxy \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439  <code>systemctl restart haproxy<\/code> <br \/>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0447\u0442\u043e HAProxy \u0437\u0430\u043f\u0443\u0449\u0435\u043d  <code>systemctl status haproxy<\/code> <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0430\u0434\u0440\u0435\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a (\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u043b : \u043d\u0430 [:] \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0441\u044b\u043b\u043a\u043e\u0439) https[:]\/\/1.mydomain.com\/?my-secret-path<br \/>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0432\u0431\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448 \u0434\u043e\u043c\u0435\u043d \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u043e, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f basic \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f http, \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. <\/p>\n<p>\u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 X-UI<br \/>\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c docker <br \/>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442<br \/><code>curl -fsSL https:\/\/get.docker.com -o get-docker.sh &amp;&amp; sh get-docker.sh<\/code><br \/>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0437\u0430\u043f\u0443\u0441\u043a docker \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>docker ps<\/code> <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c X-UI<br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c x-ui <code>mkdir \/root\/x-ui<\/code> <br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c docker compose \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c<br \/><code>nano \/root\/x-ui\/docker-compose.yml<\/code><\/p>\n<pre><code>--- services:   xui:     image: alireza7\/x-ui     container_name: x-ui     hostname: $yourhostname     volumes:       - $PWD\/db\/:\/etc\/x-ui\/       - $PWD\/cert\/:\/root\/cert\/     environment:       XRAY_VMESS_AEAD_FORCED: \"false\"     tty: true     network_mode: host     restart: unless-stopped<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 <br \/><code>docker compose up -d<\/code> <br \/>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0430\u043d\u0435\u043b\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 54321 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043c \u044d\u0442\u043e<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f \u043f\u0430\u043d\u0435\u043b\u0438<br \/>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c post \u0438 renew \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432\u0441\u0435 \u0448\u0430\u0433\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0438\u0437 ocserv, \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435<br \/><code>nano .acme.sh\/post-hook-xui.sh <\/code><\/p>\n<pre><code>#!\/bin\/sh cp \/root\/.acme.sh\/2.mydomain.com_ecc\/fullchain.cer \/root\/x-ui\/cert\/cert.pem cp \/root\/.acme.sh\/2.mydomain.com_ecc\/2.mydomain.com.key \/root\/x-ui\/cert\/key.pem cd \/root\/x-ui &amp;&amp; docker compose down &amp;&amp; docker compose up -d<\/code><\/pre>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441<br \/><code>acme.sh --issue -d 2.mydomain.com --stateless --post-hook \/root\/.acme.sh\/post-hook-xui.sh --renew-hook \/root\/.acme.sh\/hook-renew-xui.sh<\/code> <\/p>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c HAProxy \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0430\u0434\u043c\u0438\u043d \u043f\u0430\u043d\u0435\u043b\u044c \u0432 https frontend \u043f\u043e\u0441\u043b\u0435 <em>use_backend http_stats<\/em><br \/><code>use_backend http_xui if { ssl_fc_sni -i 2.mydomain.com } { path_beg \/xui\/ } || { path \/xui }<br \/><\/code> <br \/>\u041d\u0430\u043f\u0438\u0448\u0435\u043c backend<\/p>\n<pre><code>backend http_xui         mode http         option httpchk GET \/xui\/         option forwardfor if-none         http-response set-header X-Content-Type-Options nosniff         http-response set-header X-XSS-Protection 1;mode=block         http-response set-header X-Frame-Options SAMEORIGIN         http-request add-header X-Real-Ip %[src]         http-request set-header Host %[req.hdr(Host)]         http-request set-header X-Forwarded-For %[src]         http-request set-header X-Forwarded-Host %[req.hdr(host)]         server s1 127.0.0.1:54321 check<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c haproxy. <br \/>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c <em>mydomain.com\/xui <\/em>\u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043e\u0442\u043a\u0440\u044b\u043b\u0430\u0441\u044c \u043f\u0430\u043d\u0435\u043b\u044c, \u0432\u0441\u0435 \u043e\u043a \u0437\u043d\u0430\u0447\u0438\u0442, \u043f\u0430\u043d\u0435\u043b\u044c \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0435\u0444\u043e\u043b\u0442\u044b\u0439 \u043f\u043e\u0440\u0442, \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u043d\u0430 50000 \u0438 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u0443\u0442\u044c \u043d\u0430 \/my-secret-path2\/ \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e HAProxy.<\/p>\n<p>\u0418\u0437\u043c\u0435\u043d\u0438\u043c <code>use_backend http_xui if { ssl_fc_sni -i 2.mydomain.com }<\/code>  \u043d\u0430  <code>use_backend http_xui if { ssl_fc_sni -i 2.mydomain.com } { path_beg \/my-secret-path2\/ }<\/code> <\/p>\n<p>\u0418 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c backend <\/p>\n<pre><code>backend http_xui         mode http         option httpchk GET \/my-secret-path2\/xui\/         option forwardfor if-none         http-response set-header X-Content-Type-Options nosniff         http-response set-header X-XSS-Protection 1;mode=block         http-response set-header X-Frame-Options SAMEORIGIN         http-request add-header X-Real-Ip %[src]         http-request set-header Host %[req.hdr(Host)]         http-request set-header X-Forwarded-For %[src]         http-request set-header X-Forwarded-Host %[req.hdr(host)]         server s1 127.0.0.1:50000 check<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c haproxy \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c X-UI \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <em>mydomain.com\/my-secret-path2\/xui <\/em>\u0435\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u043b\u0430\u0441\u044c \u0430\u0434\u043c\u0438\u043d \u043f\u0430\u043d\u0435\u043b\u044c \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0441\u0435 \u043e\u043a.<br \/>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c VLESS, \u0434\u0435\u0444\u043e\u043b\u0442\u044b\u0439 \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 \u043f\u0430\u043d\u0435\u043b\u0438 <code>admin<\/code> <\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b VLESS \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0435\u043c\u0443 \u043f\u043e\u0440\u0442 50001, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 TCP (RAW), \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 PROXY Protocol, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0435 External Proxy, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c TLS, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 sni \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 2.mydomain.com, \u0448\u0438\u0444\u0440\u044b auto, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0439\u0442\u0435 uTLS \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e firefox, \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 <code>\/root\/cert\/cert.pem<\/code> \u0438 \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0430 <code>\/root\/cert\/key.pem<\/code> , \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c Sniffing, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443, \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 HAProxy<\/p>\n<p>\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 TCP frontend \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0434 ocserv<br \/><code>use_backend vless if { req.ssl_sni -i 2.mydomain.com}<\/code> <br \/>\u0414\u043e\u0431\u0430\u0432\u0438\u043c backend vless<\/p>\n<pre><code>backend vless         mode tcp         timeout tunnel 1h         server s1 127.0.0.1:50001 send-proxy check port 50001<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c HAProxy, \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441 \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u043e QR \u043a\u043e\u0434\u0443 \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u044f \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c nekobox) \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0435 \u0435\u0433\u043e, \u0441\u0430\u0439\u0442\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0442\u0440\u0430\u0444\u0438\u043a \u0438\u0434\u0435\u0442, \u0430 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0433\u043e\u0440\u0438\u0442 \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439, \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0441\u0435 \u043e\u043a.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 DNS over HTTPS<br \/>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <br \/><code>mkdir \/root\/adh\/<\/code> <br \/>\u041d\u0430\u043f\u0438\u0448\u0435\u043c docker compose <\/p>\n<pre><code>--- services:   adguardhome:     image: adguard\/adguardhome     container_name: adguardhome     volumes:       - .\/cert:\/opt\/adguardhome\/cert       - .\/conf:\/opt\/adguardhome\/conf       - .\/work:\/opt\/adguardhome\/work       - .\/log:\/var\/log\/AdGuardHome     restart: unless-stopped     network_mode: host<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e <br \/><code>mkdir \/root\/adh\/conf<\/code><br \/><code>nano \/root\/adh\/conf\/AdGuardHome.yaml<\/code> <\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>http:   pprof:     port: 6060     enabled: false   address: 0.0.0.0:30000   session_ttl: 720h users:   - name: demo     password: $2y$10$9ho8XPNKtOBVRlfgQV8CFOVCOsFVpjXAHZRzICh0PDBA.dsaCbioO auth_attempts: 5 block_auth_min: 15 http_proxy: \"\" language: \"\" theme: auto dns:   bind_hosts:     - 127.0.0.2   port: 53   anonymize_client_ip: false   ratelimit: 20   ratelimit_subnet_len_ipv4: 24   ratelimit_subnet_len_ipv6: 56   ratelimit_whitelist: []   refuse_any: true   upstream_dns:     - 127.0.0.1   upstream_dns_file: \"\"   bootstrap_dns:     - 9.9.9.10     - 149.112.112.10     - 2620:fe::10     - 2620:fe::fe:10   fallback_dns: []   upstream_mode: load_balance   fastest_timeout: 1s   allowed_clients: []   disallowed_clients: []   blocked_hosts:     - version.bind     - id.server     - hostname.bind   trusted_proxies:     - 127.0.0.0\/8     - ::1\/128   cache_size: 4194304   cache_ttl_min: 0   cache_ttl_max: 0   cache_optimistic: false   bogus_nxdomain: []   aaaa_disabled: false   enable_dnssec: false   edns_client_subnet:     custom_ip: \"\"     enabled: false     use_custom: false   max_goroutines: 300   handle_ddr: true   ipset: []   ipset_file: \"\"   bootstrap_prefer_ipv6: false   upstream_timeout: 10s   private_networks: []   use_private_ptr_resolvers: true   local_ptr_upstreams: []   use_dns64: false   dns64_prefixes: []   serve_http3: false   use_http3_upstreams: false   serve_plain_dns: true   hostsfile_enabled: true tls:   enabled: false   server_name: \"\"   force_https: false   port_https: 0   port_dns_over_tls: 0   port_dns_over_quic: 0   port_dnscrypt: 0   dnscrypt_config_file: \"\"   allow_unencrypted_doh: true   certificate_chain: \"\"   private_key: \"\"   certificate_path: \"\"   private_key_path: \"\"   strict_sni_check: false querylog:   dir_path: \"\"   ignored: []   interval: 2160h   size_memory: 1000   enabled: true   file_enabled: true statistics:   dir_path: \"\"   ignored: []   interval: 24h   enabled: true filters:   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_1_Russian\/filter.txt     name: Ru filter     id: 1736931102   - enabled: false     url: https:\/\/raw.githubusercontent.com\/rebelion76\/bankiru_plus_adblock_list\/master\/bankiru_plus.txt     name: bankiru_plus     id: 1736931124   - enabled: false     url: https:\/\/raw.githubusercontent.com\/deathbybandaid\/piholeparser\/master\/Subscribable-Lists\/CountryCodesLists\/Russia.txt     name: \u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 RU     id: 1736931125   - enabled: false     url: https:\/\/easylist-downloads.adblockplus.org\/ruadlist.txt     name: ruadlist     id: 1736931126   - enabled: false     url: https:\/\/raw.githubusercontent.com\/deathbybandaid\/piholeparser\/master\/Subscribable-Lists\/ParsedBlacklists\/RU-AdList.txt     name: RU-AdList     id: 1736931127   - enabled: false     url: https:\/\/easylist-downloads.adblockplus.org\/cntblock.txt     name: RU Adlist Counters     id: 1736931128   - enabled: false     url: https:\/\/gist.githubusercontent.com\/drewpayment\/4a316423f7ff7df9dce63a041c478486\/raw\/6a509d262d7dd687c645349be3fc6217c0764768\/AdGuard%2520Russian%2520filter%2520-%2520Rules.txt     name: AdGuard Russian filter     id: 1736931118   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_1.txt     name: AdGuard DNS filter     id: 1   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_2.txt     name: AdAway Default Blocklist     id: 2   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_4.txt     name: Dan Pollock's List     id: 1736931097   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_30.txt     name: Phishing URL Blocklist (PhishTank and OpenPhish)     id: 1736931098   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_50.txt     name: uBlock\u2080 filters \u2013 Badware risks     id: 1736931099   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_33.txt     name: Steven Black's List     id: 1736931100   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_59.txt     name: AdGuard DNS Popup Hosts filter     id: 1736931101   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_3_Spyware\/filter.txt     name: Spyware     id: 1736931103   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_17_TrackParam\/filter.txt     name: Trackers     id: 1736931104   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_15_DnsFilter\/filter.txt     name: Ad Guard filter     id: 1736931107   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_11_Mobile\/filter.txt     name: Mobile     id: 1736931108   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_21_Annoyances_Other\/filter.txt     name: \u0420\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b     id: 1736931109   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_22_Annoyances_Widgets\/filter.txt     name: Widgets     id: 1736931110   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_20_Annoyances_MobileApp\/filter.txt     name: Widgets_Mobile     id: 1736931111   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_19_Annoyances_Popups\/filter.txt     name: \u0412\u0441\u043f\u043b\u044b\u0432\u0430\u0439\u043a\u0438 \u0441\u0430\u0439\u0442\u044b     id: 1736931112   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_23.txt     name: Windows Spy list     id: 1736931113   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_8.txt     name: nocoin     id: 1736931114   - enabled: false     url: https:\/\/blocklistproject.github.io\/Lists\/smart-tv.txt     name: smart-tv     id: 1736931115   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_49.txt     name: HaGeZi's Ultimate Blocklist     id: 1736931116   - enabled: false     url: https:\/\/adguardteam.github.io\/HostlistsRegistry\/assets\/filter_27.txt     name: OISD Blocklist Big     id: 1736931117   - enabled: false     url: https:\/\/raw.githubusercontent.com\/hant0508\/uBlock-filters\/master\/filters.txt     name: uBlock-filters     id: 1736931119   - enabled: false     url: https:\/\/raw.githubusercontent.com\/AdguardTeam\/FiltersRegistry\/master\/filters\/filter_10_Useful\/filter.txt     name: AdguardTeam     id: 1736931120   - enabled: false     url: https:\/\/filters.adtidy.org\/extension\/chromium-mv3\/filters\/24.txt     name: AdGuard Quick Fixes filter MV3     id: 1736931121   - enabled: false     url: https:\/\/gitlab.com\/eyeo\/anti-cv\/abp-filters-anti-cv\/-\/raw\/master\/russian.txt     name: Russian anti-cv     id: 1736931122   - enabled: false     url: https:\/\/filters.adtidy.org\/extension\/ublock\/filters\/1_optimized.txt     name: ublock optimized     id: 1736931123 whitelist_filters: [] user_rules: [] dhcp:   enabled: false   interface_name: \"\"   local_domain_name: lan   dhcpv4:     gateway_ip: \"\"     subnet_mask: \"\"     range_start: \"\"     range_end: \"\"     lease_duration: 86400     icmp_timeout_msec: 1000     options: []   dhcpv6:     range_start: \"\"     lease_duration: 86400     ra_slaac_only: false     ra_allow_slaac: false filtering:   blocking_ipv4: \"\"   blocking_ipv6: \"\"   blocked_services:     schedule:       time_zone: Local     ids: []   protection_disabled_until: null   safe_search:     enabled: false     bing: true     duckduckgo: true     ecosia: true     google: true     pixabay: true     yandex: true     youtube: true   blocking_mode: default   parental_block_host: family-block.dns.adguard.com   safebrowsing_block_host: standard-block.dns.adguard.com   rewrites: []   safe_fs_patterns:     - \/opt\/AdGuardHome\/userfilters\/*   safebrowsing_cache_size: 1048576   safesearch_cache_size: 1048576   parental_cache_size: 1048576   cache_time: 30   filters_update_interval: 24   blocked_response_ttl: 10   filtering_enabled: true   parental_enabled: false   safebrowsing_enabled: false   protection_enabled: true clients:   runtime_sources:     whois: true     arp: true     rdns: true     dhcp: true     hosts: true   persistent: [] log:   enabled: true   file: \"\"   max_backups: 0   max_size: 100   max_age: 3   compress: false   local_time: false   verbose: false os:   group: \"\"   user: \"\"   rlimit_nofile: 0 schema_version: 29<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043d\u0435\u043b\u0438 \u043d\u0435\u0442, \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c <code>demo<\/code> <br \/>\u0414\u043e\u0431\u0430\u0432\u0438\u043c dns-query \u0432 HAProxy<br \/>\u041f\u043e\u0434 use_backend http_xui \u0434\u043e\u0431\u0430\u0432\u0438\u043c <br \/><code>use_backend dns_query if { ssl_fc_sni -i mydomain.com } { path_beg \/dns-query\/ } || { path \/dns-query }<\/code> <br \/>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c backend<\/p>\n<pre><code>backend dns_query         mode http         option httpchk         option forwardfor if-none         http-response set-header X-Content-Type-Options nosniff         http-response set-header X-XSS-Protection 1;mode=block         http-response set-header X-Frame-Options SAMEORIGIN         http-request add-header X-Real-Ip %[src]         http-request set-header Host %[req.hdr(Host)]         http-request set-header X-Forwarded-For %[src]         http-request set-header X-Forwarded-Host %[req.hdr(host)]         server doh 127.0.0.1:30000<\/code><\/pre>\n<p>\u0418 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c haproxy<br \/>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043b\u044e\u0431\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 DoH \u0430\u0434\u0440\u0435\u0441 htpps[:]\/\/<em>mydomain.com\/dns-query <\/em>\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0435\u0441\u043b\u0438 \u0434\u0430 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0437\u0430\u0449\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 <\/p>\n<p>\u041f\u043e\u0434 use_backend  \u0434\u043e\u0431\u0430\u0432\u0438\u043c <code>default_backend http_adh <\/code> <br \/>\u0418 \u0434\u043e\u0431\u0430\u0432\u0438\u043c backend \u043f\u043e\u0434 <code>backend dns_query<\/code><\/p>\n<pre><code>backend http_adh         mode http         server adh 127.0.0.1:30000<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u0434\u043e\u043c\u0435\u043d\u0443 <em>mydomain.com<\/em> \u0438 \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0441\u044f \u043f\u0430\u043d\u0435\u043b\u044c, \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c <strong>demo, <\/strong>\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<strong> mydevice \u043d\u0430 <\/strong>\u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b, \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 DNS \u0432\u043d\u0438\u0437\u0443 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430 <em>https[:]\/\/mydomain.com\/dns-query\/mydevice<\/em> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0435\u0441\u043b\u0438 \u0434\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0437\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0435. \u0423\u0431\u0435\u0440\u0435\u043c <code>default_backend http_adh<\/code>  \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c <code>backend http_adh<\/code> , \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c haproxy.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c Wstunnel \u044f \u043f\u043e\u0434\u044b\u043c\u0443 \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0438\u0441 socks5, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043d\u0443\u0436\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e. <br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0432 etc:<code>mkdir \/etc\/wstunnel<\/code>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043d\u0435\u0435:<code>cd \/etc\/wstunnel<\/code>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0440\u0435\u043b\u0438\u0437 wstunnel:<code>wget https:\/\/github.com\/erebe\/wstunnel\/releases\/download\/v10.1.8\/wstunnel_10.1.8_linux_amd64.tar.gz<\/code><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 wstunnel:<br \/><code>adduser --system wstunnel<\/code><br \/>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0433\u0440\u0443\u043f\u043f\u0443:<br \/><code>addgroup wstunnel<\/code><br \/>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0443:<br \/><code>usermod -aG wstunnel wstunnel<\/code><\/p>\n<p>\u0420\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u043c\u00a0<code>tar -xvf wstunnel_10.1.8_linux_amd64.tar.gz<\/code><br \/>\u0423 \u043d\u0430\u0441 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0444\u0430\u0439\u043b \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b wstunnel, \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<br \/><code>chown wstunnel:wstunnel .\/wstunnel<\/code><br \/>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c<br \/><code>chmod 700 .\/wstunnel<\/code>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043f\u0438\u0448\u0435\u043c systemd-\u044e\u043d\u0438\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430\u0448\u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439<code>sudo nano \/etc\/systemd\/system\/wstunnel-socks.service<\/code>  \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:  <\/p>\n<pre><code>[Unit] Description=Start &amp; Check Wstunnel socks5 After=network.target After=haproxy.service  [Service] WorkingDirectory=\/etc\/wstunnel PIDFile=\/etc\/wstunnel\/wstunnel-socks5.pid ExecStart=\/etc\/wstunnel\/wstunnel server -r ws-socks-secret-path ws:\/\/127.0.0.1:40001 --websocket-ping-frequency-sec 20 Restart=always RestartSec=10 User=wstunnel Group=wstunnel  [Install] WantedBy=multi-user.target<\/code><\/pre>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0443\u043d\u043d\u0435\u043b\u044f, \u043f\u043e\u0440\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b, \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b \u0441 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438. <br \/><code>nano \/etc\/wstunnel\/check-all-wstunnel.sh<\/code><br \/>\u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c <br \/><code>chmod 700 \/etc\/wstunnel\/check-all-wstunnel.sh<\/code><\/p>\n<pre><code>#!\/bin\/bash  # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441 \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u043b\u043e\u0433\u0435 export TZ=Europe\/Moscow # \u0426\u0435\u043b\u044c \u0434\u043b\u044f \u043f\u0438\u043d\u0433\u0430 TARGET=\"127.0.0.1\" # \u041c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u0440\u0442\u043e\u0432 PORTS=(40001) # \u041c\u0430\u0441\u0441\u0438\u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 SERVICES=(\"wstunnel-socks5-run.service\") # \u0414\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0440\u0442 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438   # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 check_tunnel() {     local port=$1     local service=$2     # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 netcat     if ! nc -z $TARGET $port; then         echo \"$(date '+%Y-%m-%d %H:%M:%S') \u0421\u0435\u0440\u0432\u0438\u0441 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 $port \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442... \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a $service\" &gt;&gt; \/var\/log\/wstunnel-chk.log         systemctl restart $service     else         echo \"$(date '+%Y-%m-%d %H:%M:%S') \u0421\u0435\u0440\u0432\u0438\u0441 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 $port \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\"     fi }  # \u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 for i in \"${!PORTS[@]}\"; do     check_tunnel ${PORTS[$i]} ${SERVICES[$i]} done<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0432 cron \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043a\u0430\u0436\u0434\u044b\u0435 5 \u043c\u0438\u043d<br \/><code>crontab -e<\/code><br \/><em>*\/5 * * * * \/etc\/wstunnel\/check-*<\/em>.sh<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 HAProxy <br \/><code>use_backend ws-socks if { ssl_fc_sni -i mydomain.com } { path \/ws-socks-secret-path } || { path_beg \/ws-socks-secret-path\/ }<\/code> <\/p>\n<p>\u0418 \u0440\u0430\u0437\u0434\u0435\u043b backend<\/p>\n<pre><code>backend ws-socks         mode http         option http-keep-alive         timeout http-keep-alive 25s         timeout tunnel 1h         server s1 127.0.0.1:40001 check<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c HAProxy.<\/p>\n<p>\u041d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c Wstunnel, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 windows<br \/>\u0412 \u043f\u0430\u043f\u043a\u0435 \u0441 \u0444\u0430\u0439\u043b\u043e\u043c wstunnel \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u0444\u0430\u0439\u043b start.cmd \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c<br \/><code>wstunnel client -P<\/code> <code>ws-socks-secret-path -L socks5:\/\/127.0.0.1:1080 wss:\/\/mydomain.com:443 -\u0441 7 --tls-verify-certificate --websocket-ping-frequency-sec 20<\/code> <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 socks5 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 127.0.0.1 \u0438 \u043f\u043e\u0440\u0442\u0430 1080 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 dns. <\/p>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u0441 \u043a\u043e\u0442\u0438\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u0434 <code>use_backend<\/code> \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 https backend<br \/><code>default_backend cats<\/code><\/p>\n<p>\u0418 \u0441\u0435\u043a\u0446\u0438\u044e backend<\/p>\n<pre><code>backend cats         mode http         option httpchk         option forwardfor if-none         http-response set-header X-Content-Type-Options nosniff         http-response set-header X-XSS-Protection 1;mode=block         http-response set-header X-Frame-Options SAMEORIGIN         http-request add-header X-Real-Ip %[src]         http-request set-header Host %[req.hdr(Host)]         http-request set-header X-Forwarded-For %[src]         http-request set-header X-Forwarded-Host %[req.hdr(host)]         server s1 127.0.0.1:[\u0432\u0430\u0448 \u043f\u043e\u0440\u0442 \u0441\u0430\u0439\u0442\u0430]<\/code><\/pre>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 GeoIP \u0432 HAProxy, \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u043f\u0438\u0441\u043a\u0438, \u0437\u0430\u0449\u0438\u0442\u0438\u043b\u0438 \u043d\u0430\u0448\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b-\u0432\u0430 \u0431\u043e\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0438\u043d\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0438\u0445 frontend &#8216;\u043e\u0432, \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c OCServ, VLESS, \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0441 \u0441\u0430\u0439\u0442\u0430\u043c\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b ssh \u043d\u0430 443 \u043f\u043e\u0440\u0442.<\/p>\n<p>\u041f\u043e\u043b\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f HAProxy <\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>global         log \/dev\/log    local0         log \/dev\/log    local1 notice         chroot \/var\/lib\/haproxy         stats socket \/var\/run\/haproxy\/admin.sock level admin mode 660         setenv ACCOUNT_THUMBPRINT 'diosrg8siojgiodsjhosdijhoisdfjsd' # \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 acme         stats timeout 30s         user    haproxy         group   haproxy         daemon         ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305         ssl-default-bind-options prefer-client-ciphers no-tls-tickets ssl-min-ver TLSv1.2         ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305         ssl-default-server-options no-tls-tickets ssl-min-ver TLSv1.2         ssl-dh-param-file \/etc\/haproxy\/dh4096.pem       # \u0422\u044e\u043d\u0438\u043d\u0433 http\/2 \u0434\u043b\u044f WebSocket         tune.h2.initial-window-size 536870912 # \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.fe.max-concurrent-streams 512 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043b-\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.fe.glitches-threshold 1024 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u043e\u0440\u043e\u0433 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b-\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a.         tune.h2.be.max-concurrent-streams 512 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043b-\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.be.glitches-threshold 1024 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u043e\u0440\u043e\u0433 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b-\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 backend \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0445.          defaults        log global        mode http        option httplog        option dontlognull        timeout connect 40s        timeout client  1m        timeout server  1m        timeout tunnel 1h        timeout http-request 30s        errorfile 400 \/etc\/haproxy\/errors\/400.http        errorfile 403 \/etc\/haproxy\/errors\/403.http        errorfile 408 \/etc\/haproxy\/errors\/408.http        errorfile 500 \/etc\/haproxy\/errors\/500.http        errorfile 502 \/etc\/haproxy\/errors\/502.http        errorfile 503 \/etc\/haproxy\/errors\/503.http        errorfile 504 \/etc\/haproxy\/errors\/504.http #------------------------------------------- resolvers dnsserver         nameserver ns1 127.0.0.1:53         nameserver ns2 127.0.0.53:53         parse-resolv-conf         resolve_retries       3         timeout resolve       1s         timeout retry         1s         hold other           30s         hold refused         30s         hold nx              30s         hold timeout         30s         hold valid           10s         hold obsolete        30s #------------------------------------------ frontend stats         mode http         bind 127.0.0.1:58080         stats enable         stats uri \/stats         stats realm Haproxy\\ Statistics         stats refresh 10s         stats auth sdvhsis3w:opsdiv90-ikps         stats show-legends         stats hide-version #------------------------------------------ frontend http         bind *:80         mode http         http-request reject if { req.hdr(user-agent) -m len le 32 }         http-request reject if { req.hdr(user-agent) -m sub evil }         # \u0417\u0430\u0449\u0438\u0442\u0438\u043c \u043e\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438         # \u0415\u0441\u043b\u0438 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 1m \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0431\u043e\u043b\u0435\u0435 10 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c 429 Too Many Requests         stick-table type ip size 100k expire 2m store http_req_rate(30s)         http-request track-sc0 src         # \u041e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c         http-request deny deny_status content-type text\/html lf-string \"&lt;p&gt;Per our policy, you are limited to 10 requests per minute, but you have exceeded that limit with %[sc_http_req_rate(0)] requests per minute.&lt;\/p&gt;\" if { sc_http_req_rate(0) gt 30 }        # \u0417\u0430\u0431\u043b\u043e\u0447\u0438\u043c \u0410\u0444\u0440\u0438\u043a\u0443, \u0410\u0437\u0438\u044e, \u042e\u0436\u043d\u0443\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443, \u041e\u043a\u0435\u0430\u043d\u0438\u044e, \u0415\u0432\u0440\u043e\u043f\u0443 \u0438 \u0421\u0435\u0432\u0435\u0440\u043d\u0443\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443 \u043d\u0435 \u0431\u043b\u043e\u0447\u0438\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 ACME         http-request deny deny_status 403 if { src -f \/etc\/haproxy\/geoip\/AF.acl } || { src -f \/etc\/haproxy\/geoip\/AS.acl } || { src -f \/etc\/haproxy\/geoip\/AN.acl } || { src -f \/etc\/haproxy\/geoip\/OC.acl } || { src -f \/etc\/haproxy\/geoip\/SA.acl }           http-request return status 200 content-type text\/plain lf-string \"%[path,field(-1,\/)].${ACCOUNT_THUMBPRINT}\\n\" if { path_beg '\/.well-known\/acme-challenge\/' }         http-request redirect scheme https unless { ssl_fc }  frontend tcp         bind *:443 # ssl passthrough         mode tcp         option tcplog         tcp-request inspect-delay 6s        # \u0417\u0430\u0431\u043b\u043e\u0447\u0438\u043c \u0410\u0444\u0440\u0438\u043a\u0443, \u0410\u0437\u0438\u044e, \u042e\u0436\u043d\u0443\u044e\/\u0421\u0435\u0432\u0435\u0440\u043d\u0443\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443, \u041e\u043a\u0435\u0430\u043d\u0438\u044e \u0438 \u0410\u043d\u0442\u0430\u0440\u043a\u0442\u0438\u043a\u0443         tcp-request connection reject if { src -f \/etc\/haproxy\/geoip\/AF.acl } || { src -f \/etc\/haproxy\/geoip\/AS.acl } || { src -f \/etc\/haproxy\/geoip\/AN.acl } || { src -f \/etc\/haproxy\/geoip\/OC.acl } || { src -f \/etc\/haproxy\/geoip\/SA.acl } || { src -f \/etc\/haproxy\/geoip\/NA.acl }       # \u0417\u0430\u0449\u0438\u0442\u0438\u043c \u043e\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438, \u0435\u0441\u043b\u0438 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u0437\u0430 10\u0441\u0435\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u043e \u0431\u043e\u043b\u0435\u0435 30 \u0441\u043e\u0435\u0434\u0438\u0435\u043d\u043d\u0438\u0439, \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0437\u0430\u043a\u0440\u043e\u0435\u043c \u0432\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f      # \u041d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0447\u0442\u043e WsTunnel \u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c --connection-min-idle &lt;n&gt; \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435      # \u0423 VLESS \u0442\u0430\u043a \u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043b\u0435\u043a\u0441\u043e\u0440, \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435      # \u041c\u043e\u0436\u0435\u0442 \u0442\u0430\u043a \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0435\u0441\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u0440\u0435\u0448\u0430\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u044e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443.       # \u0414\u043b\u044f \u0441\u0435\u0431\u044f \u044f \u0432\u044b\u0432\u0435\u043b \u0447\u0442\u043e 30 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u0435\u0441\u043b\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u043c\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442 \u0441\u0432\u0435\u0442         stick-table type ip size 1m expire 10s store conn_cur         tcp-request content track-sc0 src         tcp-request content reject if { sc_conn_cur(0) gt 30 }          tcp-request content capture req.ssl_sni len 10         tcp-request content accept if { req_ssl_hello_type 1 } or !{ req_ssl_hello_type 1 }          use_backend tcp-ssh if !{ req.ssl_hello_type 1 } { payload(0,7) -m bin 5353482d322e30 } or !{ req.ssl_hello_type 1 } { req.len 0 } # \u042f \u0431\u044b \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b, \u0432\u044b \u043b\u0435\u0448\u0438\u0442\u0435\u0441\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0435\u0441\u043b\u0438 haproxy \u0443\u043f\u0430\u0434\u0435\u0442         use_backend ocserv if { req.ssl_sni -i 1.mydomain.com }          use_backend vless if { req.ssl_sni -i 2.mydomain.com }           default_backend tcp_to_https  frontend https         bind 127.0.0.1:444 accept-proxy ssl crt \/etc\/haproxy\/certs alpn h2,http\/1.1 strict-sni         http-request reject if { req.hdr(user-agent) -m sub evil }         http-request reject if { path -m sub \/. }       # \u0417\u0430\u0449\u0438\u0442\u0438\u043c \u043e\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c WsTunnel (\u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a)      # \u0415\u0441\u043b\u0438 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 30\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0431\u043e\u043b\u0435\u0435 30 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c 429 Too Many Requests         stick-table type ip size 100k expire 2m store http_req_rate(30s)         http-request track-sc0 src      # \u041e\u0442\u043a\u043b\u043e\u043d\u0438\u043c \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043e \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043b-\u0432\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432         http-request deny deny_status content-type text\/html lf-string \"&lt;p&gt;Per our policy, you are limited to 30 requests per 30s, but you have exceeded that limit with %[sc_http_req_rate(0)] requests per 30s.&lt;\/p&gt;\" if { sc_http_req_rate(0) gt 30 }      # GeoIP \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u0441\u0435\u0445 \u043a\u0440\u043e\u043c\u0435 RU \u0438 \u0431\u0435\u043b\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 (\u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f content-type \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441 \u0438\u0445 IP \u0432\u044b\u0432\u0435\u0441\u0442\u0438 IP \u0430\u0434\u0440\u0435\u0441.)      # \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 IP \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e        # http-request deny deny_status 403 if !{ src -f \/etc\/haproxy\/geoip\/RU.list } || !{ src -f \/etc\/haproxy\/mylist.acl }          http-response set-header Strict-Transport-Security \"max-age=16000000; includeSubDomains; preload;\" # \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c HSTS          use_backend http_stats if { ssl_fc_sni -i mydomain.com } { path_beg \/ha-stats-secret-path\/ }         use_backend http_xui if { ssl_fc_sni -i 2.mydomain.com } { path_beg \/my-secret-path2\/ }         use_backend dns_query if { ssl_fc_sni -i mydomain.com } { path_beg \/dns-query\/ } || { path \/dns-query }         use_backend ws-socks if { ssl_fc_sni -i mydomain.com } { path \/ws-socks-secret-path } || { path_beg \/ws-socks-secret-path\/ }        # default_backend http_adh # \u043f\u0430\u043d\u0435\u043b\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 AdGuardHome        # default_backend cats # \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430 \u043e\u0431\u043c\u0430\u043d\u043a\u0438 #-&gt;-----tcp-backend-------------------------- backend tcp_to_https         mode tcp         server https 127.0.0.1:444 send-proxy-v2-ssl-cn check port 444 backend tcp-ssh         mode tcp         option http-keep-alive         timeout http-keep-alive 30s         server ssh 127.0.0.1:22 check port 22 backend ocserv         mode tcp         server s1 127.0.0.1:29999 send-proxy check port 29999 backend vless         mode tcp         timeout tunnel 1h         server s1 127.0.0.1:50001 send-proxy check port 50001 #-&gt;-&gt;---http-backend------------------------- backend http_stats         mode http         http-request replace-path \/ha-stats-secret-path(\/)?(.*) \/\\2         server stats 127.0.0.1:58080 backend http_xui         mode http         option httpchk GET \/xui\/         option forwardfor if-none         http-response set-header X-Content-Type-Options nosniff         http-response set-header X-XSS-Protection 1;mode=block         http-response set-header X-Frame-Options SAMEORIGIN         http-request add-header X-Real-Ip %[src]         http-request set-header Host %[req.hdr(Host)]         http-request set-header X-Forwarded-For %[src]         http-request set-header X-Forwarded-Host %[req.hdr(host)]         server s1 127.0.0.1:54321 check backend dns_query         mode http         option httpchk         option forwardfor if-none         http-response set-header X-Content-Type-Options nosniff         http-response set-header X-XSS-Protection 1;mode=block         http-response set-header X-Frame-Options SAMEORIGIN         http-request add-header X-Real-Ip %[src]         http-request set-header Host %[req.hdr(Host)]         http-request set-header X-Forwarded-For %[src]         http-request set-header X-Forwarded-Host %[req.hdr(host)]         server doh 127.0.0.1:30000 #backend http_adh #        mode http #        server adh 127.0.0.1:30000 backend ws-socks         mode http         option http-keep-alive         timeout http-keep-alive 25s         timeout tunnel 1h         server s1 127.0.0.1:40001 check  #\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u0441\u0435\u043a\u0446\u0438\u044e backend cats \u0434\u043b\u044f \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0438<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e OCServ \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \/etc\/sysctl.conf \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443<br \/><code>net.ipv4.ip_forward = 1<br \/><\/code>\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e <code>sysctl -p<\/code><\/p>\n<p>\u0412\u043d\u0435\u0441\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \/etc\/default\/ufw<br \/>\u0418\u0437\u043c\u0435\u043d\u0438\u043c DEFAULT_FORWARD_POLICY=&#187;DROP&#187; \u043d\u0430 DEFAULT_FORWARD_POLICY=&#187;ACCEPT&#187;<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c NAT  \u0432 \/etc\/ufw\/before.rules \u043f\u0435\u0440\u0435\u0434 *filter<\/p>\n<pre><code>*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.13.14.0\/24 -o eth0 -j MASQUERADE COMMIT<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c <code>ufw disable<\/code> \u0438 <code>ufw enable<\/code><\/p>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/877566\/\"> https:\/\/habr.com\/ru\/articles\/877566\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/872080\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u043f\u0440\u043e \u0441\u043e\u0432\u043c\u0435\u0449\u0435\u043d\u0438\u0435  Vless, WebSocket \u0438 ssh \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 443 \u0441\u0438\u043b\u0430\u043c\u0438 HAProxy. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e HAProxy, \u0434\u043e\u0431\u0430\u0432\u0438\u043c GeoIP \u0441\u043f\u0438\u0441\u043a\u0438 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u043b\u0438\u0447\u043d\u044b\u0439 DOH \u0441\u0438\u043b\u0430\u043c\u0438 AdGuardHome \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u0441 WebSocket \u0438 \u0441\u0430\u0439\u0442\u0430\u043c\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c openconnect vpn.<\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f 3 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u043d\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043c\u0435\u043d mydomain.com \u0438\u043b\u0438 my.domain.com \u0438 \u0434\u0432\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u043b\u044f VLESS \u0438 OCServ, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c 1.mydomain.com ( my1.domain.com )  \u0438 2.mydomain.com ( my2.domain.com ) \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u043e\u043c\u0435\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0442\u0435\u0445\u0434\u043e\u043c\u0435\u043d\u044b \u0445\u043e\u0441\u0442\u0435\u0440\u0430, \u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043b\u0438\u0448\u044c \u0410 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 IP \u0441\u0435\u0440\u0432\u0435\u0440\u0430. <\/p>\n<p>HAProxy \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 TCP \u0434\u043b\u044f 443 \u043f\u043e\u0440\u0442\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 SNI, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u044b \u043f\u043e\u0439\u0434\u0443\u0442 \u043d\u0430 \u0441\u0432\u043e\u0438 backend \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0430 \u0432\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0443\u0439\u0434\u0435\u0442 \u043d\u0430 http frontend, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0443\u0442\u0438 (\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 HAProxy, XUI \u043f\u0430\u043d\u0435\u043b\u044c, WebSocket&#8217;s \u0432 \u043b\u0438\u0446\u0435 wstunnel \u0438 DOH \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u043f\u043e\u0437\u0436\u0435) \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0439\u0434\u0435\u0442 \u043d\u0430 default_backend \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0430\u0439\u0442.<\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442 root, \u0442\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043c ctrl+c ctrl+v, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443:<br \/>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 <code>apt update &amp;&amp; apt upgrade -y<\/code> <br \/>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u044b <code>apt install ocserv haproxy unzip netcat-traditional socat htop unbound unbound-anchor seccomp<\/code> <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0437\u0430\u0449\u0438\u0442\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c IPv6 \u0438 \u0432\u043d\u0435\u0441\u0435\u043c \u043f\u0440\u0430\u0432\u043a\u0438 \u0432 sysctl.conf, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043f\u043e\u0441\u043b\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>sysctl -p<\/code><br \/><code>nano \/etc\/sysctl.conf<\/code> <\/p>\n<pre><code># \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 IP-\u0441\u043f\u0443\u0444\u0438\u043d\u0433\u0430 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1  # \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b ICMP net.ipv4.icmp_echo_ignore_broadcasts = 1  # \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043f\u043b\u043e\u0445\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 icmp net.ipv4.icmp_ignore_bogus_error_responses = 1  # \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 net.ipv4.conf.all.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv6.conf.default.accept_source_route = 0  # \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c exec shield \u044f\u0434\u0440\u0430 kernel.randomize_va_space = 1  # \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c SYN \u0430\u0442\u0430\u043a\u0438 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 2048 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 5  # \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0440\u0441\u0438\u0430\u043d\u0441\u043a\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b net.ipv4.conf.all.log_martians = 1 net.ipv4.icmp_ignore_bogus_error_responses = 1  # \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0  # \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f ICMP net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv6.conf.default.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.default.secure_redirects = 0  # Disabled IPv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1<\/code><\/pre>\n<p>\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 ssh \u0438 http\/s<br \/><code>ufw allow 22\/tcp<\/code><br \/><code>ufw allow 80,443\/tcp<\/code><br \/>\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0435\u0440\u0432\u043e\u043b<br \/><code>ufw enable<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c unbound \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u0430 (\u0448\u0430\u0433 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c)<br \/>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c systemd resolved <br \/><code>systemctl stop systemd-resolved.service<\/code> <br \/>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u043c DNSStubListener<br \/><code>sh -c 'echo DNSStubListener=no' &gt;&gt; \/etc\/systemd\/resolved.conf<\/code> <br \/>\u0423\u0434\u0430\u043b\u0438\u043c resolv.conf<br \/><code>rm -f \/etc\/resolv.conf<\/code> <br \/>\u041f\u0440\u043e\u043f\u0438\u0448\u0435\u043c localhost \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u0432\u0435\u0442\u0447\u0438\u043a\u0430 DNS<br \/><code>echo 'nameserver 127.0.0.1' &gt;&gt; \/etc\/resolv.conf<\/code> <br \/>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c systemd resoved<br \/><code>systemctl start systemd-resolved.service<\/code><br \/>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c unbound:<br \/>\u0421\u043a\u0430\u0447\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0445 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432<br \/><code>curl -o \/etc\/unbound\/root.hints https:\/\/www.internic.net\/domain\/named.cache<\/code><br \/>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0445 DNS<\/p>\n<pre><code>echo '#!\/bin\/sh curl -o \/etc\/unbound\/root.hints https:\/\/www.internic.net\/domain\/named.cache' &gt; \/etc\/cron.daily\/root_hints<\/code><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c<br \/><code>chmod 700 \/etc\/cron.daily\/root_hints<\/code> <br \/> \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043b\u044e\u0447 DNSSEC \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438<br \/><code>unbound-anchor -a \/etc\/unbound\/root.key<\/code> <br \/>\u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0434\u043b\u044f root.hints root.key<br \/><code>chown unbound:unbound \/etc\/unbound\/root.hints<\/code> <br \/><code>chown unbound:unbound \/etc\/unbound\/root.key<\/code> <br \/>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<br \/><code>nano \/etc\/unbound\/unbound.conf.d\/dns.conf<\/code>  \u0438 \u0432\u043d\u0435\u0441\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>server: port: 53 verbosity: 0 num-threads: 1 outgoing-range: 512 num-queries-per-thread: 1024 msg-cache-size: 512m  rrset-cache-size: 64m cache-max-ttl: 21600 cache-min-ttl: 2600 infra-host-ttl: 60 infra-lame-ttl: 120  interface: 127.0.0.1  outgoing-interface: $IP  access-control: 127.0.0.1\/8 allow_snoop  root-hints: \"\/etc\/unbound\/root.hints\"  username: unbound  directory: \"\/etc\/unbound\" logfile: \"\/var\/log\/unbound.log\" log-time-ascii: yes use-syslog: no  do-not-query-localhost: no qname-minimisation: yes minimal-responses: yes prefetch: yes use-caps-for-id: yes rrset-roundrobin: yes  hide-identity: yes hide-version: yes  so-rcvbuf: 4m so-sndbuf: 4m  do-ip4: yes do-ip6: no do-udp: yes do-tcp: yes deny-any: yes<\/code><\/pre>\n<p>\u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 do-not-query-localhost: no \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 localhost \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, num-threads: 1 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043a\u043e\u043b-\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 (\u043f\u043e \u044f\u0434\u0440\u0430\u043c), interface: 127.0.0.1 \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 localhost \u0441 \u043f\u043e\u0440\u0442\u043e\u043c 53, outgoing-interface: $IP \u0433\u0434\u0435 $IP \u044d\u0442\u043e IPv4 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>ip a<\/code>  \u0438\u043b\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u0445\u043e\u0441\u0442\u0435\u0440\u0430, \u0430 access-control: 127.0.0.1\/8 allow_snoop \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u0441 localhost \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<\/div>\n<\/details>\n<h2>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 HAProxy <\/h2>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442 acme \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432<br \/>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 haproxy<br \/><code>adduser root haproxy<\/code><br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f acme<br \/><code>mkdir \/usr\/local\/share\/acme.sh\/<\/code><br \/>\u0421\u043a\u0430\u0447\u0430\u0435\u043c acme.sh <br \/><code>git clone https:\/\/github.com\/acmesh-official\/acme.sh.git<\/code><br \/>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 acme <br \/><code>cd acme.sh\/<\/code> <br \/>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e<br \/><code>.\/acme.sh --install --no-cron --no-profile --home \/usr\/local\/share\/acme.sh<\/code> <br \/>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0438\u043c\u043b\u0438\u043d\u043a \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 <br \/><code>ln -s \/usr\/local\/share\/acme.sh\/acme.sh \/usr\/local\/bin\/<\/code> <br \/>\u0414\u0430\u0434\u0438\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a<br \/><code>chmod 755 \/usr\/local\/share\/acme.sh\/<\/code> <br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 HAProxy<br \/><code>mkdir \/etc\/haproxy\/certs<\/code> <br \/>\u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f<br \/><code>chown haproxy:haproxy \/etc\/haproxy\/certs<\/code> <br \/>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u0440\u0430\u0432\u0430 <br \/><code>chmod 770 \/etc\/haproxy\/certs<\/code> <br \/>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e acme \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c default \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0434\u0430\u0447\u0438 youremail@example.com  \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u043d\u0430 \u0441\u0432\u043e\u044e \u043f\u043e\u0447\u0442\u0443<br \/><code>acme.sh --set-default-ca --server letsencrypt --register-account -m youremail@example.com<\/code> <br \/>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u0438\u0434\u0430 &#171;ACCOUNT_THUMBPRINT &#8216;diosrg8siojgiodsjhosdijhoisdfjsd&#8217; &#187; \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0435 \u043e\u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e HAProxy \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432.<br \/>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043b\u044e\u0447\u0438 DH,  <strong><em>\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f!<\/em><\/strong>  <br \/><code>openssl dhparam -out \/etc\/haproxy\/dh4096.pem 4096<\/code><br \/>\u041e\u0447\u0438\u0441\u0442\u0438\u043c \u0434\u0435\u0444\u043e\u043b\u0442\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e<br \/><code>echo '' &gt; \/etc\/haproxy\/haproxy.cfg<\/code><br \/>\u041e\u0442\u043a\u0440\u043e\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433<br \/><code>nano \/etc\/haproxy\/haproxy.cfg<\/code><br \/> \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>global         log \/dev\/log    local0         log \/dev\/log    local1 notice         chroot \/var\/lib\/haproxy         stats socket \/var\/run\/haproxy\/admin.sock level admin mode 660         setenv ACCOUNT_THUMBPRINT 'diosrg8siojgiodsjhosdijhoisdfjsd' # \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 acme         stats timeout 30s         user    haproxy         group   haproxy         daemon         ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305         ssl-default-bind-options prefer-client-ciphers no-tls-tickets ssl-min-ver TLSv1.2         ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305         ssl-default-server-options no-tls-tickets ssl-min-ver TLSv1.2         ssl-dh-param-file \/etc\/haproxy\/dh4096.pem       # \u0422\u044e\u043d\u0438\u043d\u0433 http\/2 \u0434\u043b\u044f WebSocket         tune.h2.initial-window-size 536870912 # \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.fe.max-concurrent-streams 512 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043b-\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.fe.glitches-threshold 1024 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u043e\u0440\u043e\u0433 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b-\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a.         tune.h2.be.max-concurrent-streams 512 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043a\u043e\u043b-\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.         tune.h2.be.glitches-threshold 1024 # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u043e\u0440\u043e\u0433 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b-\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 backend \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0445.          defaults        log global        mode http        option httplog        option dontlognull        timeout connect 40s        timeout client  1m        timeout server  1m        timeout tunnel 1h        timeout http-request 30s        errorfile 400 \/etc\/haproxy\/errors\/400.http        errorfile 403 \/etc\/haproxy\/errors\/403.http        errorfile 408 \/etc\/haproxy\/errors\/408.http        errorfile 500 \/etc\/haproxy\/errors\/500.http        errorfile 502 \/etc\/haproxy\/errors\/502.http        errorfile 503 \/etc\/haproxy\/errors\/503.http        errorfile 504 \/etc\/haproxy\/errors\/504.http #------------------------------------------- resolvers dnsserver         nameserver ns1 127.0.0.1:53         nameserver ns2 127.0.0.53:53         parse-resolv-conf         resolve_retries       3         timeout resolve       1s         timeout retry         1s         hold other           30s         hold refused         30s         hold nx            <\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-446470","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/446470","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=446470"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/446470\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=446470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=446470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=446470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}