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