рдирдорд╕реНрддреЗ Habr, рдореЗрд░реЛ рдирд╛рдо Ilya рд╣реЛ, рдо Exness рдорд╛ рдкреНрд▓реЗрдЯрдлрд░реНрдо рдЯреЛрд▓реАрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫреБред рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЙрддреНрдкрд╛рджрди рд╡рд┐рдХрд╛рд╕ рдЯреЛрд▓реАрд╣рд░реВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдореБрдЦреНрдп рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдШрдЯрдХрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдЫреМрдВред
рдпрд╕ рд▓реЗрдЦрдорд╛, рдо рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯрд╣рд░реВрдХреЛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдорд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб SNI (ESNI) рдкреНрд░рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред
рдпрд╕ рдкреНрд░рд╡рд┐рдзрд┐рдХреЛ рдкреНрд░рдпреЛрдЧрд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рд╕реНрддрд░ рдмрдврд╛рдЙрдиреЗрдЫ рд░ рдХрдореНрдкрдиреАрд▓реЗ рдЕрдкрдирд╛рдПрдХреЛ рдЖрдиреНрддрд░рд┐рдХ рд╕реБрд░рдХреНрд╖рд╛ рдорд╛рдкрджрдгреНрдбрд╣рд░реВрдХреЛ рдкрд╛рд▓рдирд╛ рдЧрд░реНрджрдЫред
рд╕рдмреИрднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдо рдпреЛ рдХреБрд░рд╛ рдмрддрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреА рдорд╛рдирдХреАрдХреГрдд рдЫреИрди рд░ рдЕрдЭреИ рдорд╕реНрдпреМрджрд╛рдорд╛ рдЫ, рддрд░ рдХреНрд▓рд╛рдЙрдбрдлреНрд▓реЗрдпрд░ рд░ рдореЛрдЬрд┐рд▓рд╛рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдпрд╕рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ (рдорд╛
рдмрд┐рдЯ рд╕рд┐рджреНрдзрд╛рдиреНрдд
ESNI TLS 1.3 рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛ рдЬрд╕рд▓реЗ TLS рд╣реНрдпрд╛рдиреНрдбрд╢реЗрдХ "рдХреНрд▓рд╛рдпрдиреНрдЯ рд╣реЗрд▓реЛ" рд╕рдиреНрджреЗрд╢рдорд╛ SNI рдЗрдиреНрдХреНрд░рд┐рдкреНрд╢рдирд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрд╣рд╛рдБ ESNI рд╕рдорд░реНрдердирдХреЛ рд╕рд╛рде рдЧреНрд░рд╛рд╣рдХ рдирдорд╕реНрдХрд╛рд░ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ (рд╕рд╛рдорд╛рдиреНрдп SNI рдХреЛ рд╕рдЯреНрдЯрд╛ рд╣рд╛рдореА ESNI рджреЗрдЦреНрдЫреМрдВ):
ESNI рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓рд╛рдИ рддреАрди рдШрдЯрдХ рдЪрд╛рд╣рд┐рдиреНрдЫ:
- DNS;
- рдЧреНрд░рд╛рд╣рдХ рд╕рдорд░реНрдерди;
- рд╕рд░реНрднрд░ рд╕рд╛рдЗрдб рд╕рдорд░реНрдердиред
DNS
рддрдкрд╛рдИрдВрд▓реЗ рджреБрдИ DNS рд░реЗрдХрд░реНрдбрд╣рд░реВ рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ - Aрд░ TXT (TXT рд░реЗрдХрд░реНрдбрд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЮреНрдЬреА рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдЬрд╕рдХреЛ рд╕рд╛рде рдЧреНрд░рд╛рд╣рдХрд▓реЗ SNI рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫ) - рддрд▓ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рд╕рд╛рдереИ, рддреНрдпрд╣рд╛рдБ рд╕рдорд░реНрдерди рд╣реБрдиреБрдкрд░реНрдЫ DoH (HTTPS рдорд╛ DNS) рдХрд┐рдирднрдиреЗ рдЙрдкрд▓рдмреНрдз рдХреНрд▓рд╛рдЗрдиреНрдЯрд╣рд░реВ (рддрд▓ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН) DoH рдмрд┐рдирд╛ ESNI рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдЧрд░реНрджреИрдирдиреНред рдпреЛ рддрд╛рд░реНрдХрд┐рдХ рдЫ, рдХрд┐рдирдХрд┐ ESNI рд▓реЗ рд╣рд╛рдореАрд▓реЗ рдкрд╣реБрдБрдЪ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рд╕реНрд░реЛрддрдХреЛ рдирд╛рдордХреЛ рдЗрдиреНрдХреНрд░рд┐рдкреНрд╢рдирд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрдЫ, рдЕрд░реНрдерд╛рддреН, UDP рдорд╛ DNS рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдХреБрдиреИ рдЕрд░реНрде рдЫреИрдиред рдпрд╕рдмрд╛рд╣реЗрдХ, рдкреНрд░рдпреЛрдЧ
рд╣рд╛рд▓ рдЙрдкрд▓рдмреНрдз рдЫ
CloudFlare
╨Р рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐:
curl 'https://dns.google.com/resolve?name=www.cloudflare.com&type=A'
-s -H 'accept: application/dns+json'
{
"Status": 0,
"TC": false,
"RD": true,
"RA": true,
"AD": true,
"CD": false,
"Question": [
{
"name": "www.cloudflare.com.",
"type": 1
}
],
"Answer": [
{
"name": "www.cloudflare.com.",
"type": 1,
"TTL": 257,
"data": "104.17.210.9"
},
{
"name": "www.cloudflare.com.",
"type": 1,
"TTL": 257,
"data": "104.17.209.9"
}
]
}
TXT рд░реЗрдХрд░реНрдб, рдЕрдиреБрд░реЛрдз рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЕрдиреБрд╕рд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ _esni.FQDN:
curl 'https://dns.google.com/resolve?name=_esni.www.cloudflare.com&type=TXT'
-s -H 'accept: application/dns+json'
{
"Status": 0,
"TC": false,
"RD": true,
"RA": true,
"AD": true,
"CD": false,
"Question": [
{
"name": "_esni.www.cloudflare.com.",
"type": 16
}
],
"Answer": [
{
"name": "_esni.www.cloudflare.com.",
"type": 16,
"TTL": 1799,
"data": ""/wEUgUKlACQAHQAg9SiAYQ9aUseUZr47HYHvF5jkt3aZ5802eAMJPhRz1QgAAhMBAQQAAAAAXtUmAAAAAABe3Q8AAAA=""
}
],
"Comment": "Response from 2400:cb00:2049:1::a29f:209."
}
рддреНрдпрд╕реЛрднрдП, DNS рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдпрдмрд╛рдЯ, рд╣рд╛рдореАрд▓реЗ DoH рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ (рдкреНрд░рд╛рдердорд┐рдХрддрд╛ DNSSEC рд╕рдБрдЧ) рд░ рджреБрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реНред
рдЧреНрд░рд╛рд╣рдХ рд╕рдорд░реНрдерди
рдпрджрд┐ рд╣рд╛рдореА рдмреНрд░рд╛рдЙрдЬрд░рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддреНрдпрд╕ рд╕рдордпрдорд╛
рдЕрд╡рд╢реНрдп рдкрдирд┐, ESNI рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрди TLS 1.3 рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреБрдкрд░реНрдЫ, рдХрд┐рдирдХрд┐ ESNI TLS 1.3 рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛред
ESNI рд╕рдорд░реНрдердирдХреЛ рд╕рд╛рде рдмреНрдпрд╛рдХрдЗрдиреНрдб рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреЗ рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рд▓рд╛рдЧреВ рдЧрд░реНрдпреМрдВ go, рддрд░ рдкрдЫрд┐ рдердкред
рд╕рд░реНрднрд░ рд╕рд╛рдЗрдб рд╕рдорд░реНрдерди
рд╣рд╛рд▓, ESNI рд▓рд╛рдИ nginx/apache, рдЖрджрд┐ рдЬрд╕реНрддрд╛ рд╡реЗрдм рд╕рд░реНрднрд░рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдЫреИрди, рдХрд┐рдирдХрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ TLS рд╕рдБрдЧ OpenSSL/BoringSSL рдорд╛рд░реНрдлрдд рдХрд╛рдо рдЧрд░реНрдЫрдиреН, рдЬрд╕рд▓реЗ ESNI рд▓рд╛рдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдкрдорд╛ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред
рддрд╕рд░реНрде, рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдЖрдлреНрдиреИ рдлреНрд░рдиреНрдЯ-рдПрдиреНрдб рдХрдореНрдкреЛрдиреЗрдиреНрдЯ (ESNI рд░рд┐рднрд░реНрд╕ рдкреНрд░реЛрдХреНрд╕реА) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНтАНрдпреМрдВ, рдЬрд╕рд▓реЗ ESNI рд╕рдБрдЧ TLS 1.3 рд╕рдорд╛рдкреНрддрд┐рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ рд░ рдЕрдкрд╕реНрдЯреНрд░реАрдордорд╛ рдкреНрд░реЛрдХреНрд╕реА HTTP(S) рдЯреНрд░рд╛рдлрд┐рдХ, рдЬрд╕рд▓реЗ ESNI рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред рдпрд╕рд▓реЗ рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреАрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрд╡рд╕реНрдерд┐рдд рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдореБрдЦреНрдп рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдирдЧрд░реА - рддреНрдпреЛ рд╣реЛ, ESNI рд╕рдорд░реНрдерди рдирдЧрд░реНрдиреЗ рд╣рд╛рд▓рдХреЛ рд╡реЗрдм рд╕рд░реНрднрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред
рд╕реНрдкрд╖реНрдЯрддрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдЫ:
рдо рдиреЛрдЯ рдЧрд░реНрдЫреБ рдХрд┐ рдкреНрд░реЛрдХреНрд╕реА ESNI рдмрд┐рдирд╛ рдиреИ TLS рдЬрдбрд╛рди рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛рдХреЛ рд╕рд╛рде рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, ESNI рдмрд┐рдирд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиред рд╕рд╛рдереИ, рдЕрдкрд╕реНрдЯреНрд░реАрдордХреЛ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдкреНрд░реЛрдЯреЛрдХрд▓ рдпрд╛ рдд HTTP рд╡рд╛ HTTPS рд╣реБрди рд╕рдХреНрдЫ TLS рд╕рдВрд╕реНрдХрд░рдг 1.3 рднрдиреНрджрд╛ рдХрдо (рдпрджрд┐ рдЕрдкрд╕реНрдЯреНрд░реАрдорд▓реЗ 1.3 рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрди)ред рдпреЛ рдпреЛрдЬрдирд╛рд▓реЗ рдЕрдзрд┐рдХрддрдо рд▓рдЪрд┐рд▓реЛрдкрди рджрд┐рдиреНрдЫред
рдорд╛ ESNI рд╕рдорд░реНрдерди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди go рдмрд╛рдЯ рдЛрдг рд▓рд┐рдПрдХрд╛ рдЫреМрдВ
ESNI рдХреБрдЮреНрдЬреАрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ
рд╣рд╛рдореАрд▓реЗ рд▓рд┐рдирдХреНрд╕ (рдбреЗрдмрд┐рдпрди, рдЕрд▓реНрдкрд╛рдЗрди) рд░ MacOS рдорд╛ go 1.13 рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдирд┐рд░реНрдорд╛рдг рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдпреМрдВред
рдкрд░рд┐рдЪрд╛рд▓рди рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдмрд╛рд░реЗ рдХреЗрд╣реА рд╢рдмреНрджрд╣рд░реВ
ESNI рд░рд┐рднрд░реНрд╕ рдкреНрд░реЛрдХреНрд╕реАрд▓реЗ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдврд╛рдБрдЪрд╛рдорд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдЬрд╕реНрддреИ rps, рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╡рд┐рд▓рдореНрдмрддрд╛ рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдбрд╣рд░реВ, рдЕрд╕рдлрд▓/рд╕рдлрд▓ TLS рд╣реНрдпрд╛рдиреНрдбрд╕реЗрдХрд╣рд░реВ рд░ TLS рд╣реНрдпрд╛рдиреНрдбрд╢реЗрдХ рдЕрд╡рдзрд┐ред рдкрд╣рд┐рд▓реЛ рдирдЬрд░рдорд╛, рдкреНрд░реЛрдХреНрд╕реАрд▓реЗ рдХрд╕рд░реА рдЯреНрд░рд╛рдлрд┐рдХ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдЫ рднрдиреЗрд░ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдпреЛ рдкрд░реНрдпрд╛рдкреНрдд рджреЗрдЦрд┐рдиреНрдЫред
рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЕрдШрд┐ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдкрдирд┐ рдЧрд░реНрдпреМрдВред рддрд▓рдХрд╛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ:
wrk -t50 -c1000 -d360s 'https://esni-rev-proxy.npw:443' --timeout 15s
Running 6m test @ https://esni-rev-proxy.npw:443
50 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.77s 1.21s 7.20s 65.43%
Req/Sec 13.78 8.84 140.00 83.70%
206357 requests in 6.00m, 6.08GB read
Requests/sec: 573.07
Transfer/sec: 17.28MB
рд╣рд╛рдореАрд▓реЗ ESNI рд░рд┐рднрд░реНрд╕ рдкреНрд░реЛрдХреНрд╕реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░ рдмрд┐рдирд╛ рдпреЛрдЬрдирд╛рдХреЛ рддреБрд▓рдирд╛ рдЧрд░реНрди рд╡рд┐рд╢реБрджреНрдз рдЧреБрдгрд╛рддреНрдордХ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдпреМрдВред рдордзреНрдпрд╡рд░реНрддреА рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдорд╛ "рд╣рд╕реНрддрдХреНрд╖реЗрдк" рд╣рдЯрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ "рдЦрдиреНрдпрд╛рдпреМрдВ"ред
рддреНрдпрд╕реЛрднрдП, ESNI рд╕рдорд░реНрдерди рд░ HTTP рдмрд╛рдЯ рдЕрдкрд╕реНрдЯреНрд░реАрдордорд╛ рдкреНрд░реЛрдХреНрд╕реА рдЧрд░реНрджреИ, рд╣рд╛рдореАрд▓реЗ ESNI рд░рд┐рднрд░реНрд╕ рдкреНрд░реЛрдХреНрд╕реАрдХреЛ рдФрд╕рдд CPU/RAM рдЦрдкрддрдХреЛ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рд▓рдЧрднрдЧ ~550 rps рдкрд╛рдпреМрдВ:
- 80% CPU рдЙрдкрдпреЛрдЧ (4 vCPU, 4 GB RAM рд╣реЛрд╕реНрдЯ, Linux)
- 130 MB рдореЗрдо RSS
рддреБрд▓рдирд╛рдХреЛ рд▓рд╛рдЧрд┐, TLS (HTTP рдкреНрд░реЛрдЯреЛрдХрд▓) рдмрд┐рдирд╛ рдиреИ рдЙрд╣реА nginx рдЕрдкрд╕реНрдЯреНрд░реАрдордХреЛ рд▓рд╛рдЧрд┐ RPS ~ 1100 рд╣реЛ:
wrk -t50 -c1000 -d360s 'http://lb.npw:80' тАУ-timeout 15s
Running 6m test @ http://lb.npw:80
50 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.11s 2.30s 15.00s 90.94%
Req/Sec 23.25 13.55 282.00 79.25%
393093 requests in 6.00m, 11.35GB read
Socket errors: connect 0, read 0, write 0, timeout 9555
Non-2xx or 3xx responses: 8111
Requests/sec: 1091.62
Transfer/sec: 32.27MB
рдЯрд╛рдЗрдордЖрдЙрдЯрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рд▓реЗ рддреНрдпрд╣рд╛рдБ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдЕрднрд╛рд╡ рд░рд╣реЗрдХреЛ рд╕рдВрдХреЗрдд рдЧрд░реНрдЫ (рд╣рд╛рдореАрд▓реЗ 4 vCPUs, 4 GB RAM рд╣реЛрд╕реНрдЯрд╣рд░реВ, Linux рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ), рд░ рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╕рдореНрднрд╛рд╡рд┐рдд RPS рдЙрдЪреНрдЪ рдЫ (рд╣рд╛рдореАрд▓реЗ рдердк рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реНрд░реЛрддрд╣рд░реВрдорд╛ 2700 RPS рд╕рдореНрдордХреЛ рддрдереНрдпрд╛рдЩреНрдХ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдХрд╛ рдЫреМрдВ)ред
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛, рдо рдиреЛрдЯ рдЧрд░реНрдЫреБ рдХрд┐ ESNI рдкреНрд░рд╡рд┐рдзрд┐ рдПрдХрджрдо рдЖрд╢рд╛рдЬрдирдХ рджреЗрдЦрд┐рдиреНрдЫред рддреНрдпрд╣рд╛рдБ рдЕрдЭреИ рдзреЗрд░реИ рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрдирд╣рд░реВ рдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ESNI рдХреБрдЮреНрдЬреАрд╣рд░реВ DNS рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рд░ ESNI рдХреБрдЮреНрдЬреАрд╣рд░реВ рдШреБрдорд╛рдЙрдиреЗ рдореБрджреНрджрд╛рд╣рд░реВ - рдпреА рдореБрджреНрджрд╛рд╣рд░реВ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдЫрд▓рдлрд▓ рднрдЗрд░рд╣реЗрдХреЛ рдЫ, рд░ ESNI рдорд╕реНрдпреМрджрд╛рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (рд▓реЗрдЦреНрдиреЗ рд╕рдордпрдорд╛) рдкрд╣рд┐рд▓реЗ рдиреИ рдЫред
рд╕реНрд░реЛрдд: www.habr.com