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.



.



All Articles