ESNI เจจเจพเจฒ เจคเฉเจนเจพเจกเฉ€ เจœเจจเจคเจ• เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจเจพ เจนเฉˆ

เจนเฉˆเจฒเฉ‹ เจนเฉˆเจฌเจฐ, เจฎเฉ‡เจฐเจพ เจจเจพเจฎ เจ‡เจฒเจฟเจ† เจนเฉˆ, เจฎเฉˆเจ‚ Exness 'เจคเฉ‡ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจŸเฉ€เจฎ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจฎเฉ‚เจฒ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเจ•เจธเจฟเจค เจ…เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจธเจพเจกเฉ€ เจ‰เจคเจชเจพเจฆ เจตเจฟเจ•เจพเจธ เจŸเฉ€เจฎเจพเจ‚ เจตเจฐเจคเจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจœเจจเจคเจ• เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸเจพเจ‚ เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจเจจเจ•เฉเจฐเจฟเจชเจŸเจก SNI (ESNI) เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจ†เจชเจฃเฉ‡ เจ…เจจเฉเจญเจต เจจเฉ‚เฉฐ เจธเจพเจ‚เจเจพ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพเฅค

ESNI เจจเจพเจฒ เจคเฉเจนเจพเจกเฉ€ เจœเจจเจคเจ• เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจเจพ เจนเฉˆ

เจ‡เจธ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจœเจจเจคเจ• เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเฉ‡ เจชเฉฑเจงเจฐ เจจเฉ‚เฉฐ เจตเจงเจพเจเจ—เฉ€ เจ…เจคเฉ‡ เจ•เฉฐเจชเจจเฉ€ เจฆเฉเจ†เจฐเจพ เจ…เจชเจฃเจพเจ เจ—เจ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเฉ‡เจ—เฉ€เฅค

เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉˆเจ‚ เจ‡เจน เจฆเฉฑเจธเจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพ เจ•เจฟ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจฎเจฟเจ†เจฐเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจ…เจœเฉ‡ เจตเฉ€ เจกเจฐเจพเจซเจŸ เจตเจฟเฉฑเจš เจนเฉˆ, เจชเจฐ CloudFlare เจ…เจคเฉ‡ Mozilla เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เจธเจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเฉ‡ เจนเจจ (เจตเจฟเฉฑเจš เจกเจฐเจพเจซเจŸ01). เจ‡เจธ เจจเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ…เจœเจฟเจนเฉ‡ เจชเฉเจฐเจฏเฉ‹เจ— เจฒเจˆ เจชเฉเจฐเฉ‡เจฐเจฟเจค เจ•เฉ€เจคเจพเฅค

เจฅเจฟเจŠเจฐเฉ€ เจฆเจพ เจ•เฉเจ เจนเจฟเฉฑเจธเจพ

เจˆ.เจเฉฑเจธ.เจเฉฑเจจ.เจ†เจˆ 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 เจชเฉเจฐเจฆเจพเจคเจพ, เจ‰เจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจตเจฟเฉฑเจš:

CloudFlare เจเจฒเจพเจจ (เจฎเฉ‡เจฐเจพ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจšเฉˆเฉฑเจ• เจ•เจฐเฉ‹ โ†’ เจเจจเจ•เฉเจฐเจฟเจชเจŸเจก 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, เจ†เจฆเจฟ เจฆเฉเจ†เจฐเจพ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจน OpenSSL/BoringSSL เจฆเฉเจ†เจฐเจพ TLS เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจœเฉ‹ เจ…เจงเจฟเจ•เจพเจฐเจค เจคเฉŒเจฐ 'เจคเฉ‡ ESNI เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ‡เจธ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเจพ เจซเจฐเฉฐเจŸ-เจเจ‚เจก เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ (ESNI เจฐเจฟเจตเจฐเจธ เจชเฉเจฐเฉŒเจ•เจธเฉ€) เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ, เจœเฉ‹ ESNI เจจเจพเจฒ TLS 1.3 เจธเจฎเจพเจชเจคเฉ€ เจ…เจคเฉ‡ เจ…เฉฑเจชเจธเจŸเจฐเฉ€เจฎ เจฒเจˆ เจชเฉเจฐเฉŒเจ•เจธเฉ€ HTTP(S) เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเฉ‡เจ—เจพ, เจœเฉ‹ ESNI เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจฎเฉเฉฑเจ– เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเฉ‡ เจฌเจฟเจจเจพเจ‚, เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจฎเฉŒเจœเฉ‚เจฆ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ - เจญเจพเจต, เจฎเฉŒเจœเฉ‚เจฆเจพ เจตเฉˆเจฌ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจœเฉ‹ ESNI เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค 

เจธเจชเจธเจผเจŸเจคเจพ เจฒเจˆ, เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจนเฉˆ:

ESNI เจจเจพเจฒ เจคเฉเจนเจพเจกเฉ€ เจœเจจเจคเจ• เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจเจพ เจนเฉˆ

เจฎเฉˆเจ‚ เจจเฉ‹เจŸ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจจเฉ‚เฉฐ ESNI เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚, ESNI เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ—เจพเจนเจ•เจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจจ เจฒเจˆ, TLS เจ•เจจเฉˆเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจจเจพเจฒ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจจเจพเจฒ เจนเฉ€, เจ…เฉฑเจชเจธเจŸเฉเจฐเฉ€เจฎ เจจเจพเจฒ เจธเฉฐเจšเจพเจฐ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจœเจพเจ‚ เจคเจพเจ‚ HTTP เจœเจพเจ‚ HTTPS เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจฟเจธเจฆเจพ TLS เจธเฉฐเจธเจ•เจฐเจฃ 1.3 เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจนเฉˆ (เจœเฉ‡เจ•เจฐ เจ…เฉฑเจชเจธเจŸเฉเจฐเฉ€เจฎ 1.3 เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ)เฅค เจ‡เจน เจธเจ•เฉ€เจฎ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจฒเจšเจ•เจคเจพ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค

'เจคเฉ‡ ESNI เจธเจนเจพเจ‡เจคเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ go เจ…เจธเฉ€เจ‚ เจคเฉ‹เจ‚ เจ‰เจงเจพเจฐ เจฒเจฟเจ† เจนเฉˆ CloudFlare. เจฎเฉˆเจ‚ เจคเฉเจฐเฉฐเจค เจจเฉ‹เจŸ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพ เจ•เจฟ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš เจ•เจพเจซเจผเฉ€ เจ—เฉˆเจฐ-เจฎเจพเจฎเฉ‚เจฒเฉ€ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจฎเจฟเจ†เจฐเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจธเจผเจพเจฎเจฒ เจนเจจ crypto/tls เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ "เจชเฉˆเจšเจฟเฉฐเจ—" เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ—เฉ‚เจฐเฉ‹เจŸ เจตเจฟเจงเจพเจจ เจธเจญเจพ เจฆเฉ‡ เจ…เฉฑเจ—เฉ‡.

ESNI เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจตเจฐเจคเฉ€เจ†เจ‚ esnitool (เจ•เจฒเจพเจ‰เจกเจซเจฒเฉ‡เจ…เจฐ เจฆเฉ€ เจฆเจฟเจฎเจพเจ— เจฆเฉ€ เจ‰เจชเจœ เจตเฉ€)เฅค เจ‡เจน เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ SNI เจ‡เจจเจ•เฉเจฐเจฟเจชเจธเจผเจจ/เจกเจฟเจ•เฉเจฐเจฟเจชเจธเจผเจจ เจฒเจˆ เจตเจฐเจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค
เจ…เจธเฉ€เจ‚ เจฒเฉ€เจจเจ•เจธ (เจกเฉ‡เจฌเฉ€เจ…เจจ, เจ…เจฒเจชเจพเจˆเจจ) เจ…เจคเฉ‡ เจฎเฉˆเจ•เฉ‹เจธ 'เจคเฉ‡ เจ—เฉ‹ 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 Mem RSS

ESNI เจจเจพเจฒ เจคเฉเจนเจพเจกเฉ€ เจœเจจเจคเจ• เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจเจพ เจนเฉˆ

เจคเฉเจฒเจจเจพ เจฒเจˆ, TLS (HTTP เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ) เจธเจฎเจพเจชเจคเฉ€ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ‰เจธเฉ‡ เจเจจเจœเฉ€เจจเฉˆเจ•เจธ เจ…เจชเจธเจŸเฉเจฐเฉ€เจฎ เจฒเจˆ 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹