- PVSM.RU - https://www.pvsm.ru -

Rutracker включил eSNI. Конец эпохи DPI и конец блокировок

Rutracker включил eSNI. Конец эпохи DPI и конец блокировок - 1

Несмотря на желтый заголовок, дальше будет не желтая статья. Всех нас (я надеюсь именно здесь я наконец-таки смогу сказать от всего сообщества) уже достали действия Роскомнадзора. А так же его постоянное появление в рекомендованном на хабре. Поэтому эта новость вам понравится. Хоть что-то важное. Новость [1] кстати еще от декабря 2018.

Если в двух словах, сейчас основой эффективный способ DPI это проверка поля SNI в пакете. Чтобы не повторяться, я отправлю вас на статью [2] ValdikSS [3]. Не то, чтобы там вся информация, но основные моменты изложены верно. Добавлю только, что теперь оборудование оператора научилось вставлять https TLS 1.2 сертификат, который не проходит валидацию в браузере и имеет общее имя MGTS. (Даже не mgts.ru, ха-ха, то есть это даже не домен, не то, чтобы у них могло получиться создать его, со всеми этими Certificate Transparency [4], который создал Google.) Кроме того сейчас уже не понятно, заблокирован ли ip полностью. Т.е. все порты, например, как ping.pe/www.7-zip.org [5]. или вам отвечает DPI. Тут решение у сайтов только одно: постоянно менять ip адрес.

Rutracker имеет всего лишь три официальных зеркала (хотя можно создать свое, персональное, нужен лишь свой домен): rutracker.net [6] rutracker.nl [7] и rutrackerripnext.onion [8]. Все они имеют определенное отношение к Cloudflare (авторитативный DNS сервер от cloudflare или tor, а у rutracker.nl и ip от cloudflare bgp.he.net/ip/104.28.16.16 [9]):

root@kali:~# dig @8.8.8.8 IN SOA rutracker.nl && dig @8.8.8.8 IN A rutracker.nl

;; ANSWER SECTION:
rutracker.nl.		3599	IN	SOA	buck.ns.cloudflare.com. dns.cloudflare.com. 2031873434 10000 2400 604800 3600

;; ANSWER SECTION:
rutracker.nl.		231	IN	A	104.28.17.16
rutracker.nl.		231	IN	A	104.28.16.16

;; Query time: 22 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Sep 23 16:46:24 MSK 2019
;; MSG SIZE  rcvd: 73

Тем, кто читал статьи habr.com/ru/post/424857 [10] habr.com/ru/company/globalsign/blog/427563 [11] уже все понятно. Кстати, если у вас предубеждение перед cloudflare… Там вся идея была в том, что 35% все доменов в мире держат зону на авторитативных серверах cloudflare (en. wiki), кроме того какой-то процент еще и хостят там сервера. И если сразу везде активировать eSNI, то это будет существенно… Что и было сделано.

Но для тех, кто не читал: eSNI (encrypted Server Name Indication) по умолчанию работает на Cloudflare хостинге [12] (а именно любой _esni поддомен имеет запись TXT с ключом, которым шифруется SNI, хотя эти негодники из IETF уже успели изменить IN TXT запись на новый тип IN ESNI github.com/tlswg/draft-ietf-tls-esni/pull/144 [13]).

root@kali:~# dig @8.8.8.8 IN TXT _esni.rutracker.nl

; <<>> DiG 9.11.5-P4-5.1+b1-Debian <<>> @8.8.8.8 IN TXT _esni.rutracker.nl
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33017
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;_esni.rutracker.nl.		IN	TXT

;; ANSWER SECTION:
_esni.rutracker.nl.	3599	IN	TXT	"/wF+a004ACQAHQAgtyygbWc/bwQo5RPSszvuzK+0BIucwJhOLHZ0iCqrCjsAAhMBAQQAAAAAXYTNUAAAAABdjLZQAAA="

;; Query time: 42 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Sep 23 16:54:07 MSK 2019
;; MSG SIZE  rcvd: 152

Итак, как заставить его работать? Во-первых, работает eSNI только в Mozilla Firefox. В Chromium (а значит и Chrome) поддержка будет добавлена не скоро, да и работать оно не будет, поскольку Google будет использовать [14] IN ESNI запись, которая будет видимо поддерживаться только Google (ни cloudflare, ни Firefox это не поддерживают). Можете перейти по ссылкам и высказать свое фе гуглу и IETF. Нужен лишь google и/или github аккаунт.

Кратенькая инструкция: в firefox в about:config меняете network.security.esni.enabled на true. Для работы eSNI желательна работа (на самом деле она не нужна, но есть проблема: в windows сложно сделать такой запрос (IN TXT) асинхронно bugzilla.mozilla.org/show_bug.cgi?id=1500289 [15]) DNS over HTTPS, так как публичный ключ для шифрования sni берётся с поддомена _esni.example.com IN TXT, так что желателен зашифрованный транспорт dns, чтобы большое око Саурона провайдера не увидело этого. Для этого network.trr.mode выставляете в 2 (или 3, чтобы был только TRR), а network.trr.uri выставляете в mozilla.cloudflare-dns.com/dns-query [16]

Можно еще прописать network.trr.bootstrapAddress, иначе resolve самого mozilla.cloudflare-dns.com [17] будет происходить через системный resolver и лишь дальше установлена DoH сессия с DNS, что вызывает проблемы, если сразу запустить Firefox (Можно поставить 1.0.0.1, 1.1.1.1 2606:4700:4700::1111 или 2606:4700:4700::1001 или что там будет у dig mozilla.cloudflare-dns.com [18]. (А там не обязательно эти адреса, но и любые из динамического облака cloudflare.)) Подробнее про trr resolver: github.com/bagder/TRRprefs [19]

Дальше нужно проверить, что все заработало)) Заходите на cloudflare.com/ssl/encrypted-sni [20] и нажимаете на Check My Browser

Вот после этого заходите, например, на rutracker.nl [21], заблокированный РКН (2-6-20/ 2019-04-25-699-АИ от 29.05.2019 от налоговой службы). И… все работает! Небольшой бонус: реализация для Android ровно такая же, так что там тоже всё работает. К сожалению нативная работа DNS over TLS в Android 9 не дает насладится eSNI, нужен TRR внутри браузера. Увы и ах. Опять таки высказываем свое фе, не стесняемся. bugzilla.mozilla.org/show_bug.cgi?id=1542754 [22]

Будем надеяться, что это уничтожит в ближайшее время DPI и Нумерационному совету (NRO [23]) RIR не придется выносить ноту протеста РФ. Ничего хорошего не будет, если они попробуют отозвать Автономные Системы у крупных операторов РФ, как это недавно обсуждалось.

Также слудует сказать, что отсутствующее поле SNI может [24] заставить некторые DPI сбоить и т.д. Впрочем на МГТС это работает.

Автор: Balling

Источник [25]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/dns-2/331012

Ссылки в тексте:

[1] Новость : https://rutracker.nl/forum/viewtopic.php?t=5633157

[2] статью: https://habr.com/ru/post/335436/

[3] ValdikSS: https://habr.com/ru/users/valdikss/

[4] Certificate Transparency: https://habr.com/ru/post/269729/

[5] ping.pe/www.7-zip.org: http://ping.pe/www.7-zip.org

[6] rutracker.net: https://rutracker.net/

[7] rutracker.nl: https://rutracker.nl/

[8] rutrackerripnext.onion: http://rutrackerripnext.onion/

[9] bgp.he.net/ip/104.28.16.16: https://bgp.he.net/ip/104.28.16.16

[10] habr.com/ru/post/424857: https://habr.com/ru/post/424857/

[11] habr.com/ru/company/globalsign/blog/427563: https://habr.com/ru/company/globalsign/blog/427563/

[12] хостинге: https://www.reg.ru/?rlink=reflink-717

[13] github.com/tlswg/draft-ietf-tls-esni/pull/144: https://github.com/tlswg/draft-ietf-tls-esni/pull/144

[14] будет использовать: https://bugs.chromium.org/p/boringssl/issues/detail?id=275#c_ts1568219378

[15] bugzilla.mozilla.org/show_bug.cgi?id=1500289: https://bugzilla.mozilla.org/show_bug.cgi?id=1500289

[16] mozilla.cloudflare-dns.com/dns-query: https://mozilla.cloudflare-dns.com/dns-query

[17] mozilla.cloudflare-dns.com: https://mozilla.cloudflare-dns.com

[18] mozilla.cloudflare-dns.com: http://mozilla.cloudflare-dns.com

[19] github.com/bagder/TRRprefs: https://github.com/bagder/TRRprefs

[20] cloudflare.com/ssl/encrypted-sni: https://cloudflare.com/ssl/encrypted-sni/

[21] rutracker.nl: https://rutracker.nl

[22] bugzilla.mozilla.org/show_bug.cgi?id=1542754: https://bugzilla.mozilla.org/show_bug.cgi?id=1542754

[23] NRO: https://en.wikipedia.org/wiki/Regional_Internet_registry#Number_Resource_Organization

[24] может: https://github.com/net4people/bbs/issues/10#issuecomment-532035677

[25] Источник: https://habr.com/ru/post/468603/?utm_source=habrahabr&utm_medium=rss&utm_campaign=468603