DPIをバイパスする自律的な方法と、IPアドレスによるサイトロックをバイパスする効果的な方法

ロシア連邦のプロバイダーは、ほとんどの場合、ディープトラフィック分析システム(DPI、ディープパケットインスペクション)を使用して、レジストリから禁止されているサイトをブロックします。 DPIには単一の標準はありません;接続のタイプと作業のタイプが異なるDPIソリューションのさまざまなサプライヤーからの実装が多数あります。

DPI接続には、パッシブとアクティブの2つの一般的なタイプがあります。

パッシブDPI

パッシブDPI-パッシブ光スプリッターを介して、またはユーザーからのトラフィックのミラーリングを使用して、(カットではなく)プロバイダーネットワークに並列に接続されたDPI。 このような接続は、DPIのパフォーマンスが不十分な場合にプロバイダーのネットワークの速度を低下させることはありません。そのため、大規模なプロバイダーで使用されています。 このタイプの接続を使用するDPIは、技術的には禁止コンテンツを要求する試みのみを検出できますが、それを停止することはできません。 この制限を回避し、禁止サイトへのアクセスをブロックするには、DPIは、要求されたリソース自体がそのような応答を送信したかのように、ブロックされたURLを要求する特別に細工されたHTTPパケットをユーザーに送信します(送信者のIPアドレスとTCPシーケンスが偽造されます)。 DPIは要求されたサイトよりもユーザーの近くに物理的に配置されているため、偽の応答はサイトからの実際の応答よりも速くユーザーのデバイスに到達します。

パッシブDPIパケットを特定してブロックする

偽のDPI生成パケットは、Wiresharkなどのトラフィックアナライザーによって簡単に検出されます。
ブロックされたサイトにアクセスしようとします:
Wireshark

まず、DPIからHTTPリダイレクトコード302を含むパッケージが送信され、次にサイトからの実際の応答が送信されます。 サイトからの応答は再送信と見なされ、オペレーティングシステムによって破棄されます。 ブラウザはDPIレスポンスで指定されたリンクをたどり、ロックページが表示されます。

DPIのパッケージをより詳細に検討してください。
画像

HTTP/1.1 302 Found
Connection: close
Location: http://warning.rt.ru/?id=17&st=0&dt=195.82.146.214&rs=http%3A%2F%2Frutracker.org%2F

DPI «Don't Fragment», Identification 1. «Don't Fragment», . DPI, , HTTP- 302, iptables, :
# iptables -A FORWARD -p tcp --sport 80 -m u32 --u32 "0x4=0x10000 && 0x60=0x7761726e && 0x64=0x696e672e && 0x68=0x72742e72" -m comment --comment "Rostelecom HTTP" -j DROP

? u32 iptables 4- . 0x4 2- Indentification, 1- Flags Fragment Offset.
0x60 (HTTP- Location).
Identification = 1, Flags = 0, Fragment Offset = 0, 0x60 = «warn», 0x64 = «ing.», 0x68 = «rt.ru», , .

HTTPS-, DPI TCP Reset-, Identification = 1 Flags = 0.

DPI

DPI — DPI, , . , DPI IP- , DPI . DPI , , , DPI , .

DPI , , , .

HTTP

HTTP- :
GET / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

HTTP-, , , , CRLF.
, .

HTTP/1.1 2014 . RFC 7230, HTTP- , ( ).
   Each header field consists of a case-insensitive field name followed
   by a colon (":"), optional leading whitespace, the field value, and
   optional trailing whitespace.

     header-field   = field-name ":" OWS field-value OWS

     field-name     = token
     field-value    = *( field-content / obs-fold )
     field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]
     field-vchar    = VCHAR / obs-text

     obs-fold       = CRLF 1*( SP / HTAB )
                    ; obsolete line folding

OWS — , SP — , HTAB — , CRLF — (\r\n).

, , -, :
GET / HTTP/1.1
hoSt:habrahabr.ru
user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding:           gzip, deflate, br
coNNecTion:	keep-alive      ←       

, - , , .

, RFC 2616, - , HTTP- , :
Clients SHOULD be tolerant in parsing the Status-Line and servers tolerant when parsing the Request-Line. In particular, they SHOULD accept any amount of SP or HT characters between fields, even though only a single SP is required.
-. - .

TCP

TCP SYN- SYN/ACK-. , , TCP- (TCP Window Size) — , . . MTU 1500, 1460 TCP-.
TCP- 1460, , .

TCP Window Size = 2 SYN/ACK- ( ), HTTP- :

1:
GE
2:
T / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive


HTTP TCP DPI

DPI .
URI, "Host: " . «Host» «hoSt» , .
DPI . DPI HTTP- , TCP- . DPI «» , TCP Window Size.

, DPI , . , DPI , . .

DPI

DPI Windows: GoodbyeDPI.
DPI, Host hoSt, Host, «» HTTP HTTPS- ( TCP Window Size), HTTP- .
, : , .

, , . :
goodbyedpi.exe -1 -a
, DPI .
-2 HTTPS-. , -3 -4 ( ).
, , Yota, HTTP, . -3 -a

IP

IP-, IP- , .
ReQrypt -: ReQrypt , ReQrypt IP- , , ReQrypt.

ReQrypt

NAT, ReQrypt . , .. NAT IP-.
«» NAT, ReQrypt TCP- , TTL = 3. NAT- , .

- , . IP- DNS, NNTP , - . - , . .

TL;DR

GoodbyeDPI — Windows, DPI. , .
Linux — zapret.

ReQrypt, IP-.

Blockcheck. DPI , , « DPI», GoodbyeDPI . , ReQrypt.

.

Source: https://habr.com/ru/post/J335436/


All Articles