dpi_deep_packet_inspection_우회

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
dpi_deep_packet_inspection_우회 [2021/01/19 09:47] – [서비스등록 형식] koovdpi_deep_packet_inspection_우회 [2023/02/02 02:19] (현재) – [ISP체크] koov
줄 21: 줄 21:
  
 ===== notsodeep을 이용한 방법 ===== ===== notsodeep을 이용한 방법 =====
 +
 +<WRAP center round important 60%>
 +''notsodeep''은 업데이트가 중지된지 오래되어 현재는 정상적으로 우회되지 않는경우가 많다.
 +</WRAP>
 +
  
 참고: https://github.com/farukuzun/notsodeep 참고: https://github.com/farukuzun/notsodeep
줄 96: 줄 101:
 </WRAP> </WRAP>
  
-===== zapret을 이용한 방법 =====+===== zapret을 이용한 방법(추천) ===== 
 +<WRAP center round important 60%> 
 +''zapret''은 현재까지도 업데이트가 꾸준히 이루어지고 있으며 다양한 방법으로 우회시도를 하므로 ''goodbyedpi''와 더불어 아주 잘 동작하는 솔루션 중에 하나이다. 
 +</WRAP>
 링크 : https://github.com/bol-van/zapret 링크 : https://github.com/bol-van/zapret
-러시아어로 되어있음 
  
-==== zapret 프로젝를 clone받음 ==== +아래 내용은 ''debian 11''버전에서 테스트 되었습니다.
-<WRAP prewrap> +
-<code bash> +
-git clone https://github.com/bol-van/zapret +
-</code> +
-</WRAP>+
  
-==== 라이브러리 의존성 설치 ====+==== 필요 패키지 설치 ====
 <WRAP prewrap> <WRAP prewrap>
 <code bash> <code bash>
-apt install lsb-core libnetfilter-queue-dev ipset+root@dpi:~# apt install vim unzip git curl wget
 </code> </code>
 </WRAP> </WRAP>
  
-==== 바이너리 빌드 ====+==== zapret 프로젝트를 clone받음 ====
 <WRAP prewrap> <WRAP prewrap>
 <code bash> <code bash>
-cd zapret +root@dpi:~# git clone https://github.com/bol-van/zapret 
-cd nfq +Cloning into 'zapret'... 
-make +remote: Enumerating objects: 4171, done. 
-cd tpws +remote: Counting objects: 100% (782/782), done. 
-make+remote: Compressing objects: 100% (416/416), done. 
 +remote: Total 4171 (delta 370), reused 769 (delta 365), pack-reused 3389 
 +Receiving objects: 100% (4171/4171), 41.13 MiB | 8.24 MiB/s, done. 
 +Resolving deltas: 100% (2208/2208), done.
 </code> </code>
 </WRAP> </WRAP>
  
-==== 설치 ====+==== ISP체크 ==== 
 +일단 현재 본인의 ISP에서 차단을 우회하는 방식을 찾아야 한다. 
 +먼저 ''zapret'' 바이너리 실행파일을 설치한 이후 ''blockcheck.sh'' 로 차단방식을 찾아서 우회하는 방법을 알아낸다.
 <WRAP prewrap> <WRAP prewrap>
 <code bash> <code bash>
-sudo cp -r zapret /opt +root@dpi:~# cd zapret/ 
-cd /opt/zapret +root@dpi:~/zapret# ./install_bin.sh 
-sudo cp /opt/zapret/init.d/debian7/zapret /etc/init.d/ +x86_64 is OK 
-sudo /etc/init.d/zapret start +installing binaries ... 
-sudo /opt/zapret/nfq/nfqws --daemon --qnum=200 --wsize=4 --hostspell=HoSt --hostdot --host-tab --hostnospace ..+linking : ../binaries/x86_64/ip2net => /root/zapret/ip2net 
-</code> +linking : ../binaries/x86_64/mdig => /root/zapret/mdig 
-</WRAP>+linking : ../binaries/x86_64/nfqws => /root/zapret/nfq 
 +linking : ../binaries/x86_64/tpws =/root/zapret/tpws
  
-==== 실제 우회 규칙 적용하기 ==== 
  
-  * ''iptables.txt''를 살펴보면 다양한 방법들이 제시되어 있음 +### 본인의 ISP에서 차단/우회 되는 방식을 체크한다
-    * https://raw.githubusercontent.com/bol-van/zapret/master/iptables.txt +root@dpi:~/zapret# ./blockcheck.sh 
-  iptables 명령에 대한 설명은 다음 문서를 참조 +... 
-    * [[https://terzeron.com/confluence/pages/viewpage.action?pageId=34734096|iptables 명령 소개]]+SUMMARY 
 +ipv4 xvideos.com curl_test_http tpws --hostcase 
 +ipv4 xvideos.com curl_test_http : nfqws --hostcase 
 +ipv4 xvideos.com curl_test_https_tls12 : working without bypass
  
-=== window size 축소 === +press enter to continue
-  * ''TCP window size''를 줄이면 HTTP 요청이 여러 개의 TCP 세그먼트로 나뉘어 전송되기 때문에 DPI를 우회할 수 있음 (DPI 시스템에 따라 가능할 수도 있고 아닐 수도 있음) +
-<WRAP prewrap> +
-<code bash> +
-sudo nfqws +
-iptables -t raw -I PREROUTING -p tcp --sport 80 --tcp-flags SYN,ACK SYN,ACK -j NFQUEUE --queue-num 200 --queue-bypass +
-iptables -t raw -I PREROUTING -p tcp --sport 80 --tcp-flags SYN,ACK SYN,ACK -m set --match-set zapret src -j NFQUEUE --queue-num 200 --queue-bypass+
 </code> </code>
 </WRAP> </WRAP>
  
-=== Host: 헤더 항목 변경 === +체크가 될때 사이트 주소는 본인 ISP에서 warning으로 차단되는 사이트 아무거나 넣어주면 된다. 
-  ''Host:'' 헤더 항목의 름을 ''host:'' 로 변경하면 DPI를 우회할 수 있음 (DPI 시스템에 따라 가능할 수도 있고 아닐 수도 있음) +위 테스트는 ''xvideos.com''으로 테스트 한 결과다. ''SUMMARY''에 나온대로 ''%%tpws --hostcase%%''나 ''%%nfqws --hostcase%%''방식을 이용하면 우회가 가능하다.
-<WRAP prewrap> +
-<code bash> +
-sudo nfqws +
-iptables -t mangle -I POSTROUTING -p tcp --dport 80 -j NFQUEUE --queue-num 200 --queue-bypass +
-iptables -t mangle -I POSTROUTING -p tcp --dport 80 -m set --match-set zapret dst -j NFQUEUE --queue-num 200 --queue-bypass +
-iptables -t mangle -I POSTROUTING -p tcp --dport 80 -m set --match-set zapret dst -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:5 -j NFQUEUE --queue-num 200 --queue-bypass +
-</code> +
-</WRAP>+
  
-=== TPROXY 사용하는 방법 === +==== 설치 ==== 
-<WRAP prewrap> +이후 이전 과정에서 확인한 우회 방식으로 설치를 진행한다.
-<code bash> +
-sysctl -w net.ipv4.ip_forward=1 +
-iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +
-  +
-ip -f inet rule add fwmark 1 lookup 100 +
-ip -f inet route add local default dev lo table 100 +
-  +
-# prevent loop +
-iptables  -t filter -I INPUT -p tcp --dport 1188  -j REJECT +
-iptables  -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j MARK --set-mark 1 +
-iptables  -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 1188 +
-  +
-iptables  -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -m set --match-set zapret dst -j MARK --set-mark 1 +
-iptables  -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -m mark --mark 0x1/0x1 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 1188 +
-</code> +
-</WRAP>+
  
-=== DNAT 사용하는 방법 === 
 <WRAP prewrap> <WRAP prewrap>
 <code bash> <code bash>
-run tpws as user "tpws"its required to avoid loops. +root@dpi:~/zapret# ./install_easy.sh
-sudo -u twps +
-sysctl -w net.ipv4.conf.eth1.route_localnet=1 +
-iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:1188 +
-iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to 127.0.0.1:1188+
 </code> </code>
 </WRAP> </WRAP>
  
 +이후 해당 사이트로 우회 접근 되는지 확인해보도록 한다.
  
  
  
  • dpi_deep_packet_inspection_우회.1611049632.txt.gz
  • 마지막으로 수정됨: 2021/01/19 09:47
  • 저자 koov