เชคเชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชตเซ‡เชฌเชธเชพเช‡เชŸเชจเซ‡ ESNI เชตเชกเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเซ€

เชนเซ‡เชฒเซ‹ เชนเซ‡เชฌเซเชฐ, เชฎเชพเชฐเซเช‚ เชจเชพเชฎ เช‡เชฒเซเชฏเชพ เช›เซ‡, เชนเซเช‚ Exness เชชเชฐ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชŸเซ€เชฎเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเซเช‚ เช›เซเช‚. เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชชเซเชฐเซ‹เชกเช•เซเชŸ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชŸเซ€เชฎเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชตเชพ เช•เซ‹เชฐ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เช˜เชŸเช•เซ‹เชจเซ‹ เชตเชฟเช•เชพเชธ เช…เชจเซ‡ เช…เชฎเชฒ เช•เชฐเซ€เช เช›เซ€เช.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เชนเซเช‚ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชตเซ‡เชฌเชธเชพเช‡เชŸเซเชธเชจเชพ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชฎเชพเช‚ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก SNI (ESNI) เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€เชจเซ‹ เช…เชฎเชฒ เช•เชฐเชตเชพเชจเซ‹ เชฎเชพเชฐเซ‹ เช…เชจเซเชญเชต เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚.

เชคเชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชตเซ‡เชฌเชธเชพเช‡เชŸเชจเซ‡ ESNI เชตเชกเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเซ€

เช† เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชตเซ‡เชฌเชธเชพเช‡เชŸ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชธเซเชฐเช•เซเชทเชพเชจเซเช‚ เชธเซเชคเชฐ เชตเชงเชพเชฐเชถเซ‡ เช…เชจเซ‡ เช•เช‚เชชเชจเซ€ เชฆเซเชตเชพเชฐเชพ เช…เชชเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ เช†เช‚เชคเชฐเชฟเช• เชธเซเชฐเช•เซเชทเชพ เชงเซ‹เชฐเชฃเซ‹เชจเซเช‚ เชชเชพเชฒเชจ เช•เชฐเชถเซ‡.

เชธเซŒ เชชเซเชฐเชฅเชฎ, เชนเซเช‚ เช เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช•เซ‡ เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€ เชชเซเชฐเชฎเชพเชฃเชฟเชค เชจเชฅเซ€ เช…เชจเซ‡ เชนเชœเซ เชชเชฃ เชกเซเชฐเชพเชซเซเชŸเชฎเชพเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ CloudFlare เช…เชจเซ‡ Mozilla เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชคเซ‡เชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเซ‡ เช›เซ‡ (เชฎเชพเช‚ เชกเซเชฐเชพเชซเซเชŸ01). เช†เชจเชพเชฅเซ€ เช…เชฎเชจเซ‡ เช†เชตเชพ เชชเซเชฐเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‡เชฐเชฃเชพ เชฎเชณเซ€.

เชธเชฟเชฆเซเชงเชพเช‚เชค เชเช• เชฌเซ€เชŸ

ESNI TLS 1.3 เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซเช‚ เชตเชฟเชธเซเชคเชฐเชฃ เช›เซ‡ เชœเซ‡ TLS เชนเซ‡เชจเซเชกเชถเซ‡เช• "เช•เซเชฒเชพเชฏเชจเซเชŸ เชนเซ‡เชฒเซ‹" เชธเช‚เชฆเซ‡เชถเชฎเชพเช‚ SNI เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. ESNI เชธเชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡ เช•เซเชฒเชพเชˆเชจเซเชŸ เชนเซ‡เชฒเซ‹ เช•เซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เชคเซ‡ เช…เชนเซ€เช‚ เช›เซ‡ (เชธเชพเชฎเชพเชจเซเชฏ SNIเชจเซ‡ เชฌเชฆเชฒเซ‡ เช†เชชเชฃเซ‡ ESNI เชœเซ‹เชˆเช เช›เซ€เช):

เชคเชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชตเซ‡เชฌเชธเชพเช‡เชŸเชจเซ‡ ESNI เชตเชกเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเซ€

 ESNI เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชคเซเชฐเชฃ เช˜เชŸเช•เซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

  • DNS; 
  • เช•เซเชฒเชพเชฏเช‚เชŸ เชธเชชเซ‹เชฐเซเชŸ;
  • เชธเชฐเซเชตเชฐ เชฌเชพเชœเซ เช†เชงเชพเชฐ.

DNS

เชคเชฎเชพเชฐเซ‡ เชฌเซ‡ DNS เชฐเซ‡เช•เซ‹เชฐเซเชก เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ - Aเช…เชจเซ‡ TXT (TXT เชฐเซ‡เช•เซ‹เชฐเซเชกเชฎเชพเช‚ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เช›เซ‡ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸ SNI เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡) - เชจเซ€เชšเซ‡ เชœเซเช“. เชตเชงเซเชฎเชพเช‚, เชคเซเชฏเชพเช‚ เช†เชงเชพเชฐ เชนเซ‹เชตเซ‹ เชœเซ‹เชˆเช DoH (HTTPS เชชเชฐ DNS) เช•เชพเชฐเชฃ เช•เซ‡ เช‰เชชเชฒเชฌเซเชง เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ (เชจเซ€เชšเซ‡ เชœเซเช“) DoH เชตเช—เชฐ ESNI เชธเชชเซ‹เชฐเซเชŸเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเชคเชพ เชจเชฅเซ€. เช† เชคเชพเชฐเซเช•เชฟเช• เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ ESNI เช เชธเช‚เชธเชพเชงเชจเชจเชพ เชจเชพเชฎเชจเซเช‚ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชœเซ‡ เช…เชฎเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เชเชŸเชฒเซ‡ เช•เซ‡, UDP เชชเชฐ DNS เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชจเซ‹ เช•เซ‹เชˆ เช…เชฐเซเชฅ เชจเชฅเซ€. เชตเชงเซเชฎเชพเช‚, เช‰เชชเชฏเซ‹เช— DNSSEC เชคเชฎเชจเซ‡ เช† เชฆเซƒเชถเซเชฏเชฎเชพเช‚ เช•เซ‡เชถ เชเซ‡เชฐเซ€ เชนเซเชฎเชฒเชพเช“ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชนเชพเชฒเชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ เช•เซ‡เชŸเชฒเชพเช• DoH เชชเซเชฐเชฆเชพเชคเชพเช“, เชคเซ‡เชฎเชจเซ€ เชตเชšเซเชšเซ‡:

เชฎเซ‡เช˜เชซเซเชฒเซ‡เชฐ เชœเชพเชนเซ‡เชฐ เช•เชฐเซ‡ เช›เซ‡ (เชšเซ‡เช• เชฎเชพเชฏ เชฌเซเชฐเชพเช‰เชเชฐ โ†’ เชเชจเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก SNI โ†’ เชตเชงเซ เชœเชพเชฃเซ‹) เช•เซ‡ เชคเซ‡เชฎเชจเชพ เชธเชฐเซเชตเชฐเซเชธ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ ESNI เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡ DNS เชฎเชพเช‚ CloudFlare เชธเชฐเซเชตเชฐเซเชธ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชฌเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชก เช›เซ‡ - A เช…เชจเซ‡ TXT. เชจเซ€เชšเซ‡เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เช…เชฎเซ‡ Google DNS (HTTPS เชชเชฐ): 

ะ เชชเซเชฐเชตเซ‡เชถ:

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 เช…เชจเซ‡ DoH เชธเชชเซ‹เชฐเซเชŸเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเช•เซเชฐเชฟเชฏ เช•เชฐเชตเซเช‚ เชคเซ‡ เช…เช‚เช—เซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“ เช…เชนเซ€เช‚ เช›เซ‡. เชฌเซเชฐเชพเช‰เชเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เชฅเชฏเชพ เชชเช›เซ€, เช†เชชเชฃเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เชœเซ‹เชตเซเช‚ เชœเซ‹เชˆเช:

เชคเชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชตเซ‡เชฌเชธเชพเช‡เชŸเชจเซ‡ ESNI เชตเชกเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเซ€

เช•เชกเซ€ เชฌเซเชฐเชพเช‰เชเชฐ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡.

เช…เชฒเชฌเชคเซเชค, 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 เชตเชกเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเซ€

เชนเซเช‚ เชจเซ‹เช‚เชงเซเช‚ เช›เซเช‚ เช•เซ‡ เชชเซเชฐเซ‹เช•เซเชธเซ€เชจเซ‡ ESNI เชตเช—เชฐ TLS เช•เชจเซ‡เช•เซเชถเชจเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชธเชพเชฅเซ‡ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€, เชœเซ‡เชฅเซ€ ESNI เชตเช—เชฐเชจเชพ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ. เช‰เชชเชฐเชพเช‚เชค, เช…เชชเชธเซเชŸเซเชฐเซ€เชฎ เชธเชพเชฅเซ‡เชจเซ‹ เช•เซ‹เชฎเซเชฏเซเชจเชฟเช•เซ‡เชถเชจ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ 1.3 เช•เชฐเชคเชพ เช“เช›เชพ TLS เชตเชฐเซเชเชจ เชธเชพเชฅเซ‡ HTTP เช…เชฅเชตเชพ HTTPS เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ (เชœเซ‹ เช…เชชเชธเซเชŸเซเชฐเซ€เชฎ 1.3เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซเช‚ เชจเชฅเซ€). เช† เชฏเซ‹เชœเชจเชพ เชฎเชนเชคเซเชคเชฎ เชธเซเช—เชฎเชคเชพ เช†เชชเซ‡ เช›เซ‡.

เชชเชฐ ESNI เชธเชชเซ‹เชฐเซเชŸเชจเซ‹ เช…เชฎเชฒ go เช…เชฎเซ‡ เชชเชพเชธเซ‡เชฅเซ€ เช‰เชงเชพเชฐ เชฒเซ€เชงเซ‡เชฒ เช›เซ‡ เชฎเซ‡เช˜เชซเซเชฒเซ‡เชฐ. เชนเซเช‚ เชคเชฐเชค เชœ เชจเซ‹เช‚เชงเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช•เซ‡ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชชเซ‹เชคเซ‡ เชœ เชคเชฆเซเชฆเชจ เชฌเชฟเชจ-เชคเซเชšเซเช› เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชพเช‚ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชถเชพเชฎเซ‡เชฒ เช›เซ‡ เช•เซเชฐเชฟเชชเซเชŸเซ‹/tls เช…เชจเซ‡ เชคเซ‡เชฅเซ€ "เชชเซ‡เชšเชฟเช‚เช—" เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช—เชฐเซ‹เชŸ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชชเชนเซ‡เชฒเชพเช‚.

ESNI เช•เซ€ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เชนเชคเซ‹ esnitool (เช•เซเชฒเชพเช‰เชกเชซเซเชฒเซ‡เชฐเชจเซเช‚ เชชเชฃ เชฎเช—เชœเชจเซ€ เช‰เชชเชœ เช›เซ‡). เช† เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— SNI เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ/เชกเชฟเช•เซเชฐเชฟเชชเซเชถเชจ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡.
เช…เชฎเซ‡ Linux (Debian, Alpine) เช…เชจเซ‡ MacOS เชชเชฐ เช—เซ‹ 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 เชเชฎเชฌเซ€ เชฎเซ‡เชฎ เช†เชฐเชเชธเชเชธ

เชคเชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชตเซ‡เชฌเชธเชพเช‡เชŸเชจเซ‡ ESNI เชตเชกเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเซ€

เชธเชฐเช–เชพเชฎเชฃเซ€ เชฎเชพเชŸเซ‡, 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 เชŸเซ‡เช•เชจเซ‹เชฒเซ‹เชœเซ€ เชคเชฆเซเชฆเชจ เช†เชถเชพเชธเซเชชเชฆ เชฒเชพเช—เซ‡ เช›เซ‡. เชนเชœเซ€ เชชเชฃ เช˜เชฃเชพ เช–เซเชฒเซเชฒเชพ เชชเซเชฐเชถเซเชจเซ‹ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, DNS เชฎเชพเช‚ เชธเชพเชฐเซเชตเชœเชจเชฟเช• ESNI เช•เซ€เชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ ESNI เช•เซ€เชจเซ‡ เชซเซ‡เชฐเชตเชตเชพเชจเชพ เชฎเซเชฆเซเชฆเชพเช“ - เช† เชฎเซเชฆเซเชฆเชพเช“ เชชเชฐ เชธเช•เซเชฐเชฟเชฏเชชเชฃเซ‡ เชšเชฐเซเชšเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซ€ เช›เซ‡, เช…เชจเซ‡ ESNI เชกเซเชฐเชพเชซเซเชŸเชจเซเช‚ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃ (เชฒเซ‡เช–เชจ เชธเชฎเชฏเซ‡) เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช›เซ‡. 7.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹