Top Related Projects
GoodbyeDPI — Deep Packet Inspection circumvention utility (for Windows)
Powerful and extensible proxy server with anti-censorship functionality
WinDivert: Windows Packet Divert
Quick Overview
Zapret is an open-source project aimed at circumventing internet censorship and blocking in various countries, particularly in Russia. It provides a set of tools and techniques to bypass Deep Packet Inspection (DPI) systems and access restricted websites and services.
Pros
- Offers multiple methods for bypassing internet censorship
- Actively maintained and updated to counter new blocking techniques
- Supports various operating systems, including Linux, Windows, and Android
- Provides detailed documentation and setup instructions
Cons
- Requires some technical knowledge to set up and configure
- May not work with all types of internet censorship or blocking methods
- Could potentially be detected or blocked by advanced censorship systems
- May impact internet speed or performance in some cases
Getting Started
To get started with Zapret, follow these steps:
-
Clone the repository:
git clone https://github.com/bol-van/zapret.git
-
Navigate to the project directory:
cd zapret
-
Run the installation script (for Linux):
sudo ./install.sh
-
Configure the settings in the
config
file according to your needs. -
Start the service:
sudo systemctl start zapret
For more detailed instructions and configuration options, refer to the project's documentation on GitHub.
Competitor Comparisons
GoodbyeDPI — Deep Packet Inspection circumvention utility (for Windows)
Pros of GoodbyeDPI
- Simpler setup and usage, especially for Windows users
- Focuses specifically on DPI circumvention techniques
- Lightweight and efficient implementation
Cons of GoodbyeDPI
- Limited to Windows operating systems
- Less flexible configuration options
- Narrower scope of features compared to zapret
Code Comparison
zapret:
iptables -t mangle -A POSTROUTING -p tcp -m multiport --dports 80,443 -j NFQUEUE --queue-num 200 --queue-bypass
GoodbyeDPI:
int dpi_desync_fooling_mode = 2;
int dpi_desync_fooling_http_size = 21;
Summary
zapret is a more comprehensive tool for bypassing internet censorship, offering support for multiple operating systems and a wider range of features. It provides greater flexibility in configuration but may require more technical knowledge to set up and use effectively.
GoodbyeDPI, on the other hand, is a simpler, Windows-specific solution that focuses solely on DPI circumvention. It's easier to use for less technical users but lacks the broader functionality and cross-platform support of zapret.
The code comparison highlights the different approaches: zapret uses iptables rules for traffic manipulation, while GoodbyeDPI employs specific DPI fooling techniques implemented in C.
Powerful and extensible proxy server with anti-censorship functionality
Pros of PowerTunnel
- Cross-platform support (Windows, macOS, Linux, Android)
- User-friendly GUI for easy configuration
- Built-in DNS over HTTPS support
Cons of PowerTunnel
- Less advanced traffic manipulation techniques
- Limited to HTTP/HTTPS protocols
- Smaller community and fewer contributors
Code Comparison
PowerTunnel (Java):
public class PowerTunnel {
public static void main(String[] args) {
HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
.withPort(8085)
.withFiltersSource(new HttpFiltersSourceAdapter() {
// ... filtering logic
})
.start();
}
}
zapret (C):
int main(int argc, char **argv)
{
parse_options(argc, argv);
init_tproxy();
init_nfq();
// ... main loop and packet processing
return 0;
}
PowerTunnel uses Java and focuses on HTTP proxy implementation, while zapret is written in C and operates at a lower network level, providing more advanced traffic manipulation capabilities. zapret offers more flexibility and power for bypassing restrictions but requires more technical expertise to set up and use compared to PowerTunnel's user-friendly approach.
WinDivert: Windows Packet Divert
Pros of WinDivert
- Cross-platform compatibility (Windows support)
- More comprehensive network packet manipulation capabilities
- Well-documented API with extensive examples
Cons of WinDivert
- Limited to Windows operating systems
- Requires kernel-mode driver installation
- May have higher performance overhead for simple filtering tasks
Code Comparison
WinDivert:
HANDLE handle = WinDivertOpen("tcp.DstPort == 80", WINDIVERT_LAYER_NETWORK, 0, 0);
if (handle == INVALID_HANDLE_VALUE)
{
// Error handling
}
zapret:
./ipset/create_ipset.sh
./nfqws/nfqws -L /tmp/ipset/zapret-hosts-ipv4.txt -p 80,443 -D
Summary
WinDivert offers more comprehensive packet manipulation on Windows, while zapret focuses on Linux-based traffic filtering and censorship circumvention. WinDivert provides a C API for low-level network operations, whereas zapret utilizes shell scripts and existing Linux tools. The choice between them depends on the target operating system and specific use case requirements.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
zapret v69.8
ÐÐÐÐÐÐÐÐ, оÑÑеÑегайÑеÑÑ Ð¼Ð¾Ñенников
zapret ÑвлÑеÑÑÑ ÑвободнÑм и open source. ÐÑÑкий, кÑо понÑÐ¶Ð´Ð°ÐµÑ Ð²Ð°Ñ ÑкаÑиваÑÑ zapret ÑолÑко Ñ ÐµÐ³Ð¾ ÑеÑÑÑÑа, ÑÑебÑÐµÑ ÑдалиÑÑ ÑÑÑлки, видео, ÑайлÑ, обоÑновÑÐ²Ð°Ñ ÑÑи ÑÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ð²ÑоÑÑкими пÑавами, Ñам наÑÑÑÐ°ÐµÑ Ð»Ð¸ÑензиÑ.
Multilanguage README
- ÐаÑем ÑÑо нÑжно
- ÐÑÑÑÑÑй ÑÑаÑÑ
- Ðак ÑÑо ÑабоÑаеÑ
- ЧÑо ÑейÑÐ°Ñ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð² РоÑÑии
- Ðак ÑÑо ÑеализоваÑÑ Ð½Ð° пÑакÑике в ÑиÑÑеме linux
- Ðогда ÑÑо ÑабоÑаÑÑ Ð½Ðµ бÑдеÑ
- nfqws
- ÐТÐÐÐ ÐÐСÐÐХРÐÐÐÐÐЦÐÐ DPI
- ФÐÐÐÐ
- TCP СÐÐÐÐÐТÐЦÐЯ
- ÐÐÐ ÐÐРЫТÐÐ SEQUENCE NUMBERS
- СÐÐЦÐФÐЧÐСÐÐÐ Ð ÐÐÐÐЫ IPV6
- ÐÐÐÐÐÐÐÐ ÐÐÐÐÐÐ ÐÐТÐÐÐÐ ÐÐСÐÐХРÐÐÐÐÐЦÐÐ
- Ð ÐÐÐЦÐЯ DPI ÐÐ ÐТÐÐТ СÐÐ ÐÐÐ Ð
- Ð ÐÐÐÐ SYNACK
- Ð ÐÐÐÐ SYNDATA
- ÐÐРТУÐÐЬÐЫРÐÐШÐÐЫ
- CONNTRACK
- Ð ÐÐССÐÐÐÐÐÐÐ
- ÐÐÐÐÐÐ ÐÐÐ UDP
- IP ФРÐÐÐÐÐТÐЦÐЯ
- ÐÐÐÐÐСТÐÐÐÐЫРСТРÐТÐÐÐÐ
- IPTABLES ÐÐЯ NFQWS
- NFTABLES ÐÐЯ NFQWS
- FLOW OFFLOADING
- tpws
- СпоÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑпиÑка заблокиÑованнÑÑ IP
- ip2net
- mdig
- ФилÑÑÑаÑÐ¸Ñ Ð¿Ð¾ именам доменов
- Режим ÑилÑÑÑаÑии autohostlist
- ÐÑовеÑка пÑовайдеÑа
- ÐÑÐ±Ð¾Ñ Ð¿Ð°ÑамеÑÑов
- ÐÑикÑÑÑивание к ÑиÑÑеме ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑаеÑволом или Ñвоей ÑиÑÑеме запÑÑка
- ÐаÑÐ¸Ð°Ð½Ñ custom
- ÐÑоÑÑÐ°Ñ ÑÑÑановка
- ÐÑоÑÑÐ°Ñ ÑÑÑановка на openwrt
- УÑÑановка на openwrt в Ñежиме оÑÑÑой Ð½ÐµÑ Ð²Ð°Ñки меÑÑа на диÑке
- Android
- ÐобилÑнÑе Ð¼Ð¾Ð´ÐµÐ¼Ñ Ð¸ ÑоÑÑеÑÑ huawei
- FreeBSD, OpenBSD, MacOS
- Windows
- ÐÑÑгие пÑоÑивки
- ÐÐ±Ñ Ð¾Ð´ блокиÑовки ÑеÑез ÑÑоÑонний Ñ Ð¾ÑÑ
- ÐоÑÐµÐ¼Ñ ÑÑÐ¾Ð¸Ñ Ð²Ð»Ð¾Ð¶Ð¸ÑÑÑÑ Ð² покÑÐ¿ÐºÑ VPS
- ÐоддеÑжаÑÑ ÑазÑабоÑÑика
ÐаÑем ÑÑо нÑжно
ÐвÑономное ÑÑедÑÑво пÑоÑиводейÑÑÐ²Ð¸Ñ DPI, коÑоÑое не ÑÑебÑÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¸Ñ -либо ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑеÑвеÑов. ÐÐ¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð¾Ð±Ð¾Ð¹Ñи блокиÑовки или замедление ÑайÑов http(s), ÑигнаÑÑÑнÑй анализ tcp и udp пÑоÑоколов, напÑÐ¸Ð¼ÐµÑ Ñ ÑелÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки VPN.
ÐÑÐ¾ÐµÐºÑ Ð½Ð°Ñелен пÑежде вÑего на маломоÑнÑе embedded ÑÑÑÑойÑÑва - ÑоÑÑеÑÑ, ÑабоÑаÑÑие под openwrt. ÐоддеÑживаÑÑÑÑ ÑÑадиÑионнÑе Linux ÑиÑÑемÑ, FreeBSD, OpenBSD, ÑаÑÑиÑно MacOS. РнекоÑоÑÑÑ ÑлÑÑаÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð° ÑамоÑÑоÑÑелÑÐ½Ð°Ñ Ð¿ÑикÑÑÑка ÑеÑÐµÐ½Ð¸Ñ Ðº ÑазлиÑнÑм пÑоÑивкам.
ÐолÑÑÐ°Ñ ÑаÑÑÑ ÑÑнкÑионала ÑабоÑÐ°ÐµÑ Ð½Ð° windows.
ÐÑÑÑÑÑй ÑÑаÑÑ
Ðак ÑÑо ÑабоÑаеÑ
Ð Ñамом пÑоÑÑейÑем ÑлÑÑае Ð²Ñ Ð¸Ð¼ÐµÐµÑе дело Ñ Ð¿Ð°ÑÑивнÑм DPI. ÐаÑÑивнÑй DPI Ð¼Ð¾Ð¶ÐµÑ ÑиÑаÑÑ ÑÑаÑик из поÑока, Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð½Ð¶ÐµÐºÑиÑÑ Ñвои пакеÑÑ, но не Ð¼Ð¾Ð¶ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑ Ð¿ÑÐ¾Ñ Ð¾Ð´ÑÑие пакеÑÑ. ÐÑли запÑÐ¾Ñ "Ð¿Ð»Ð¾Ñ Ð¾Ð¹", паÑÑивнÑй DPI инжекÑÐ¸Ñ Ð¿Ð°ÐºÐµÑ RST, опÑионалÑно дополнÑÑ ÐµÐ³Ð¾ пакеÑом http redirect. ÐÑли Ñейк Ð¿Ð°ÐºÐµÑ Ð¸Ð½Ð¶ÐµÐºÑиÑÑÑ ÑолÑко Ð´Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñа, в ÑÑом ÑлÑÑае можно обойÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼Ð¸ iptables Ð´Ð»Ñ Ð´Ñопа RST и/или ÑедиÑекÑа на заглÑÑÐºÑ Ð¿Ð¾ опÑеделеннÑм ÑÑловиÑм, коÑоÑÑе нÑжно подбиÑаÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пÑовайдеÑа индивидÑалÑно. Так Ð¼Ñ Ð¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ поÑледÑÑÐ²Ð¸Ñ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑиггеÑа запÑеÑа. ÐÑли паÑÑивнÑй DPI напÑавлÑÐµÑ Ð¿Ð°ÐºÐµÑ RST в Ñом ÑиÑле и ÑеÑвеÑÑ, Ñо Ð²Ñ Ð½Ð¸Ñего Ñ ÑÑим не ÑможеÑе ÑделаÑÑ. ÐаÑа задаÑа - не допÑÑÑиÑÑ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑиггеÑа запÑеÑа. Ðдними iptables Ñже не обойдеÑеÑÑ. ÐÑÐ¾Ñ Ð¿ÑÐ¾ÐµÐºÑ Ð½Ð°Ñелен именно на пÑедоÑвÑаÑение ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑеÑа, а не ликвидаÑÐ¸Ñ ÐµÐ³Ð¾ поÑледÑÑвий.
ÐкÑивнÑй DPI ÑÑавиÑÑÑ Ð² ÑазÑез пÑовода и Ð¼Ð¾Ð¶ÐµÑ Ð´ÑопаÑÑ Ð¿Ð°ÐºÐµÑÑ Ð¿Ð¾ лÑбÑм кÑиÑеÑиÑм, в Ñом ÑиÑле ÑаÑпознаваÑÑ TCP поÑоки и блокиÑоваÑÑ Ð»ÑбÑе пакеÑÑ, пÑинадлежаÑие поÑокÑ.
Ðак не допÑÑÑиÑÑ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑиггеÑа запÑеÑа ? ÐоÑлаÑÑ Ñо, на ÑÑо DPI не ÑаÑÑÑиÑÑÐ²Ð°ÐµÑ Ð¸ ÑÑо Ð»Ð¾Ð¼Ð°ÐµÑ ÐµÐ¼Ñ Ð°Ð»Ð³Ð¾ÑиÑм ÑаÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑоÑов и Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовки.
ÐекоÑоÑÑе DPI не могÑÑ ÑаÑпознаÑÑ http запÑоÑ, еÑли он Ñазделен на TCP ÑегменÑÑ. ÐапÑимеÑ, запÑоÑ
вида GET / HTTP/1.1\r\nHost: kinozal.tv......
Ð¼Ñ Ð¿Ð¾ÑÑлаем 2 ÑаÑÑÑми : ÑнаÑала Ð¸Ð´ÐµÑ GET
, заÑем / HTTP/1.1\r\nHost: kinozal.tv.....
. ÐÑÑгие DPI ÑпоÑÑкаÑÑÑÑ, когда
заголовок Host:
пиÑеÑÑÑ Ð² дÑÑгом ÑегиÑÑÑе : напÑимеÑ,host:
. Ðое-где ÑабоÑÐ°ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ дополниÑелÑного пÑобела
поÑле меÑода : GET /
=> GET /
или добавление ÑоÑки в конÑе имени Ñ
оÑÑа : Host: kinozal.tv.
СÑÑеÑÑвÑÐµÑ Ð¸ более пÑодвинÑÑÐ°Ñ Ð¼Ð°Ð³Ð¸Ñ, напÑÐ°Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð½Ð° пÑеодоление DPI на пакеÑном ÑÑовне.
ÐодÑобнее пÑо DPI:
https://habr.com/ru/post/335436 или https://web.archive.org/web/20230331233644/https://habr.com/ru/post/335436/
https://geneva.cs.umd.edu/papers/geneva_ccs19.pdf
ЧÑо ÑейÑÐ°Ñ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð² РоÑÑии
РанÑÑе, до внедÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÑемеÑÑнÑÑ ÑиÑÑем ТСÐУ, иÑполÑзовалÑÑ Ð·Ð¾Ð¾Ð¿Ð°Ñк ÑазлиÑнÑÑ DPI Ñ Ð¿ÑовайдеÑов. Ðакие-Ñо бÑли акÑивнÑми, какие-Ñо паÑÑивнÑми. СейÑÐ°Ñ Ð²ÑÐµÐ¼Ñ Ð¿ÑоÑÑÑÑ iptables оконÑаÑелÑно ÑÑло. Ðезде акÑивнÑй DPI ТСÐУ, но кое-где могÑÑ Ð¾ÑÑаваÑÑÑÑ Ð½ÐµÐ²ÑклÑÑеннÑми дополниÑелÑнÑе ÑÑаÑÑе DPI из зоопаÑка. Ð ÑÑом ÑлÑÑае пÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¾Ð±Ñ Ð¾Ð´Ð¸ÑÑ ÑÑÐ°Ð·Ñ Ð½ÐµÑколÑко DPI. ÐÑе болÑÑе ÑÑановиÑÑÑ Ð²Ð½ÐµÑееÑÑÑовÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовок, о коÑоÑÑÑ Ð²Ñ ÑзнаеÑе ÑолÑко по ÑакÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпноÑÑи Ñего-либо, в ÑпиÑÐºÐ°Ñ ÑÑого неÑ. ÐÑименÑÑÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки некоÑоÑÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð² ip адÑеÑов (авÑономнÑй Ð¾Ð±Ñ Ð¾Ð´ невозможен) и пÑоÑоколов (VPN). Ðа некоÑоÑÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ñ IP иÑполÑзÑеÑÑÑ Ð±Ð¾Ð»ÐµÐµ ÑÑÑогий ÑилÑÑÑ, ÑаÑпознаÑÑий попÑÑки обмана ÑеÑез ÑегменÑаÑиÑ. Ðолжно бÑÑÑ ÑÑо ÑвÑзано Ñ Ð½ÐµÐºÐ¾ÑоÑÑми ÑеÑвиÑами, коÑоÑÑе пÑÑаÑÑÑÑ Ñаким обÑазом обманÑÑÑ DPI.
Ðак ÑÑо ÑеализоваÑÑ Ð½Ð° пÑакÑике в ÑиÑÑеме linux
ÐÑли кÑаÑко, Ñо ваÑианÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ клаÑÑиÑиÑиÑоваÑÑ Ð¿Ð¾ ÑледÑÑÑей ÑÑ ÐµÐ¼Ðµ :
- ÐаÑÑивнÑй DPI, не оÑпÑавлÑÑÑий RST ÑеÑвеÑÑ. ÐомогÑÑ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑалÑно наÑÑÑаиваемÑе под пÑовайдеÑа ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ iptables. Ðа rutracker в Ñазделе "Ð¾Ð±Ñ Ð¾Ð´ блокиÑовок - дÑÑгие ÑпоÑобÑ" по ÑÑÐ¾Ð¼Ñ Ð²Ð¾Ð¿ÑоÑÑ ÑÑÑеÑÑвÑÐµÑ Ð¾ÑделÑÐ½Ð°Ñ Ñема. Рданном пÑоекÑе не ÑаÑÑмаÑÑиваеÑÑÑ. ÐÑли Ð²Ñ Ð½Ðµ допÑÑÑиÑе ÑÑабаÑÑвание ÑÑиггеÑа запÑеÑа, Ñо и не пÑидеÑÑÑ Ð±Ð¾ÑоÑÑÑÑ Ñ ÐµÐ³Ð¾ поÑледÑÑвиÑми.
- ÐодиÑикаÑÐ¸Ñ TCP ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° ÑÑовне поÑока. РеализÑеÑÑÑ ÑеÑез proxy или transparent proxy.
- ÐодиÑикаÑÐ¸Ñ TCP ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° ÑÑовне пакеÑов. РеализÑеÑÑÑ ÑеÑез обÑабоÑÑик оÑеÑеди NFQUEUE и raw ÑокеÑÑ.
ÐÐ»Ñ Ð²Ð°ÑианÑов 2 и 3 ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ tpws и nfqws ÑооÑвеÑÑÑвенно. ЧÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ ÑабоÑали, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ Ð¸Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ Ñ Ð½ÑжнÑми паÑамеÑÑами и пеÑенапÑавиÑÑ Ð½Ð° Ð½Ð¸Ñ Ð¾Ð¿ÑеделеннÑй ÑÑаÑик ÑÑедÑÑвами iptables или nftables.
Ðогда ÑÑо ÑабоÑаÑÑ Ð½Ðµ бÑдеÑ
- ÐÑли подменÑеÑÑÑ DNS. С ÑÑой пÑоблемой легко ÑпÑавиÑÑÑÑ.
- ÐÑли блокиÑовка оÑÑÑеÑÑвлÑеÑÑÑ Ð¿Ð¾ IP.
- ÐÑли Ñоединение пÑÐ¾Ñ Ð¾Ð´Ð¸Ñ ÑеÑез ÑилÑÑÑ, ÑпоÑобнÑй ÑеконÑÑÑÑиÑоваÑÑ TCP Ñоединение, и коÑоÑÑй ÑледÑÐµÑ Ð²Ñем ÑÑандаÑÑам. ÐапÑимеÑ, Ð½Ð°Ñ Ð·Ð°Ð²Ð¾ÑаÑиваÑÑ Ð½Ð° squid. Соединение Ð¸Ð´ÐµÑ ÑеÑез полноÑеннÑй ÑÑек tcpip опеÑаÑионной ÑиÑÑемÑ, ÑÑагменÑаÑÐ¸Ñ Ð¾ÑÐ¿Ð°Ð´Ð°ÐµÑ ÑÑÐ°Ð·Ñ ÐºÐ°Ðº ÑÑедÑÑво Ð¾Ð±Ñ Ð¾Ð´Ð°. Squid пÑавилÑнÑй, он вÑе Ð½Ð°Ð¹Ð´ÐµÑ ÐºÐ°Ðº надо, обманÑваÑÑ ÐµÐ³Ð¾ беÑполезно. ÐÐ. ÐавоÑаÑиваÑÑ Ð½Ð° squid могÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸ÑÑ Ñебе лиÑÑ Ð½ÐµÐ±Ð¾Ð»ÑÑие пÑовайдеÑÑ, поÑколÑÐºÑ ÑÑо оÑÐµÐ½Ñ ÑеÑÑÑÑоемко. ÐолÑÑие компании обÑÑно иÑполÑзÑÑÑ DPI, коÑоÑÑй ÑаÑÑÑиÑан на гоÑаздо болÑÑÑÑ Ð¿ÑопÑÑкнÑÑ ÑпоÑобноÑÑÑ. ÐÐ¾Ð¶ÐµÑ Ð¿ÑименÑÑÑÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸ÑованнÑй Ð¿Ð¾Ð´Ñ Ð¾Ð´, когда на DPI завоÑаÑиваÑÑ ÑолÑко IP из "Ð¿Ð»Ð¾Ñ Ð¾Ð³Ð¾" ÑпиÑка, и далÑÑе Ñже DPI ÑеÑÐ°ÐµÑ Ð¿ÑопÑÑкаÑÑ Ð¸Ð»Ð¸ неÑ. Так можно ÑнизиÑÑ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð½Ð° DPI в деÑÑÑки, еÑли не ÑоÑни Ñаз, а ÑледоваÑелÑно не покÑпаÑÑ Ð¾ÑÐµÐ½Ñ Ð´Ð¾Ñогие ÑеÑениÑ, обойдÑÑÑ Ñем-Ñо ÑÑÑеÑÑвенно более деÑевÑм. Ðелкие пÑовайдеÑÑ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÐºÑпаÑÑ ÑÑлÑÐ³Ñ ÑилÑÑÑаÑии Ñ Ð²ÑÑеÑÑоÑÑÐ¸Ñ , ÑÑÐ¾Ð±Ñ Ñамим не моÑоÑиÑÑÑÑ, и они Ñже бÑдÑÑ Ð¿ÑименÑÑÑ DPI.
nfqws
ÐÑа пÑогÑамма - модиÑикаÑÐ¾Ñ Ð¿Ð°ÐºÐµÑов и обÑабоÑÑик оÑеÑеди NFQUEUE. ÐÐ»Ñ BSD ÑиÑÑем ÑÑÑеÑÑвÑÐµÑ Ð°Ð´Ð°Ð¿ÑиÑованнÑй ваÑÐ¸Ð°Ð½Ñ - dvtws, ÑобиÑаемÑй из ÑÐµÑ Ð¶Ðµ иÑÑ Ð¾Ð´Ð½Ð¸ÐºÐ¾Ð² (Ñм. докÑменÑаÑÐ¸Ñ BSD).
@<config_file>|$<config_file> ; ÑиÑаÑÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ Ð¸Ð· Ñайла. опÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ Ð¿ÐµÑвой. оÑÑалÑнÑе опÑии игноÑиÑÑÑÑÑÑ.
--debug=0|1 ; 1=вÑводиÑÑ Ð¾ÑладоÑнÑе ÑообÑениÑ
--dry-run ; пÑовеÑиÑÑ Ð¾Ð¿Ñии командной ÑÑÑоки и вÑйÑи. код 0 - ÑÑпеÑÐ½Ð°Ñ Ð¿ÑовеÑка.
--comment ; лÑбой ÑекÑÑ (игноÑиÑÑеÑÑÑ)
--daemon ; демонизиÑоваÑÑ Ð¿ÑогÑ
--pidfile=<file> ; ÑоÑ
ÑаниÑÑ PID в Ñайл
--user=<username> ; менÑÑÑ uid пÑоÑеÑÑа
--uid=uid[:gid] ; менÑÑÑ uid пÑоÑеÑÑа
--qnum=N ; Ð½Ð¾Ð¼ÐµÑ Ð¾ÑеÑеди N
--bind-fix4 ; пÑÑаÑÑÑÑ ÑеÑиÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð½ÐµÐ²ÐµÑного вÑбоÑа иÑÑ
одÑÑего инÑеÑÑейÑа Ð´Ð»Ñ ÑгенеÑиÑованнÑÑ
ipv4 пакеÑов
--bind-fix6 ; пÑÑаÑÑÑÑ ÑеÑиÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð½ÐµÐ²ÐµÑного вÑбоÑа иÑÑ
одÑÑего инÑеÑÑейÑа Ð´Ð»Ñ ÑгенеÑиÑованнÑÑ
ipv6 пакеÑов
--wsize=<winsize>[:<scale_factor>] ; менÑÑÑ tcp window size на ÑказаннÑй ÑÐ°Ð·Ð¼ÐµÑ Ð² SYN,ACK. еÑли не задан scale_factor, Ñо он не менÑеÑÑÑ (ÑÑÑаÑело !)
--wssize=<winsize>[:<scale_factor>] ; менÑÑÑ tcp window size на ÑказаннÑй ÑÐ°Ð·Ð¼ÐµÑ Ð² иÑÑ
одÑÑиÑ
пакеÑаÑ
. scale_factor по ÑмолÑÐ°Ð½Ð¸Ñ 0. (Ñм. conntrack !)
--wssize-cutoff=[n|d|s]N ; изменÑÑÑ server window size в иÑÑ
одÑÑиÑ
пакеÑаÑ
(n), пакеÑаÑ
даннÑÑ
(d), оÑноÑиÑелÑнÑÑ
sequence (s) по номеÑÑ Ð¼ÐµÐ½ÑÑе N
--ctrack-timeouts=S:E:F[:U] ; ÑаймаÑÑÑ Ð²Ð½ÑÑÑеннего conntrack в ÑоÑÑоÑниÑÑ
SYN, ESTABLISHED, FIN, ÑаймаÑÑ udp. по ÑмолÑÐ°Ð½Ð¸Ñ 60:300:60:60
--hostcase ; менÑÑÑ ÑегиÑÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° "Host:" по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð° "host:".
--hostnospace ; ÑбÑаÑÑ Ð¿Ñобел поÑле "Host:" и пеÑемеÑÑиÑÑ ÐµÐ³Ð¾ в ÐºÐ¾Ð½ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ "User-Agent:" Ð´Ð»Ñ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ð¸Ð½Ñ Ð¿Ð°ÐºÐµÑа
--methodeol ; добавиÑÑ Ð¿ÐµÑевод ÑÑÑоки в unix ÑÑиле ('\n') пеÑед меÑодом и ÑбÑаÑÑ Ð¿Ñобел из Host: : "GET / ... Host: domain.com" => "\nGET / ... Host:domain.com"
--hostspell=HoST ; ÑоÑное напиÑание заголовка Host (можно "HOST" или "HoSt"). авÑомаÑом вклÑÑÐ°ÐµÑ --hostcase
--domcase ; домен поÑле Host: ÑделаÑÑ Ñаким : TeSt.cOm
--dpi-desync=[<mode0>,]<mode>[,<mode2] ; аÑака по деÑинÑ
ÑонизаÑии DPI. mode : synack syndata fake fakeknown rst rstack hopbyhop destopt ipfrag1 multisplit multidisorder fakedsplit fakeddisorder ipfrag2 udplen tamper
--dpi-desync-fwmark=<int|0xHEX> ; Ð±Ð¸Ñ fwmark Ð´Ð»Ñ Ð¿Ð¾Ð¼ÐµÑки деÑинÑ
ÑонизиÑÑÑÑиÑ
пакеÑов, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ повÑоÑно не падали в оÑеÑедÑ. default = 0x40000000
--dpi-desync-ttl=<int> ; ÑÑÑановиÑÑ ttl Ð´Ð»Ñ Ð´ÐµÑинÑ
ÑонизиÑÑÑÑиÑ
пакеÑов
--dpi-desync-ttl6=<int> ; ÑÑÑановиÑÑ ipv6 hop limit Ð´Ð»Ñ Ð´ÐµÑинÑ
ÑонизиÑÑÑÑиÑ
пакеÑов. еÑли не Ñказано, иÑполÑзÑеÑÑÑ Ð·Ð½Ð°Ñение ttl
--dpi-desync-autottl=[<delta>[:<min>[-<max>]]] ; Ñежим auto ttl Ð´Ð»Ñ ipv4 и ipv6. по ÑмолÑаниÑ: 1:3-20. delta=0 оÑклÑÑÐ°ÐµÑ ÑÑнкÑиÑ.
--dpi-desync-autottl6=[<delta>[:<min>[-<max>]]] ; пеÑеопÑеделение пÑедÑдÑÑего паÑамеÑÑа Ð´Ð»Ñ ipv6
--dpi-desync-fooling=<fooling> ; дополниÑелÑнÑе меÑодики как ÑделаÑÑ, ÑÑÐ¾Ð±Ñ ÑейковÑй Ð¿Ð°ÐºÐµÑ Ð½Ðµ доÑел до ÑеÑвеÑа. none md5sig badseq badsum datanoack hopbyhop hopbyhop2
--dpi-desync-repeats=<N> ; поÑÑлаÑÑ ÐºÐ°Ð¶Ð´Ñй генеÑиÑÑемÑй в nfqws Ð¿Ð°ÐºÐµÑ N Ñаз (не влиÑÐµÑ Ð½Ð° оÑÑалÑнÑе пакеÑÑ)
--dpi-desync-skip-nosni=0|1 ; 1(default)=не пÑименÑÑÑ dpi desync Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑов без hostname в SNI, в ÑаÑÑноÑÑи Ð´Ð»Ñ ESNI
--dpi-desync-split-pos=N|-N|marker+N|marker-N ; ÑпиÑок ÑеÑез запÑÑÑÑ Ð¼Ð°ÑкеÑов Ð´Ð»Ñ tcp ÑегменÑаÑии в ÑежимаÑ
split и disorder
--dpi-desync-split-seqovl=N|-N|marker+N|marker-N ; единиÑнÑй маÑкеÑ, опÑеделÑÑÑий велиÑÐ¸Ð½Ñ Ð¿ÐµÑекÑÑÑÐ¸Ñ sequence в ÑежимаÑ
split и disorder. Ð´Ð»Ñ split поддеÑживаеÑÑÑ ÑолÑко положиÑелÑное ÑиÑло.
--dpi-desync-split-seqovl-pattern=<filename>|0xHEX ; Ñем заполнÑÑÑ ÑейковÑÑ ÑаÑÑÑ overlap
--dpi-desync-fakedsplit-pattern=<filename>|0xHEX ; Ñем заполнÑÑÑ Ñейки в fakedsplit/fakeddisorder
--dpi-desync-badseq-increment=<int|0xHEX> ; инкÑÐµÐ¼ÐµÐ½Ñ sequence number Ð´Ð»Ñ badseq. по ÑмолÑÐ°Ð½Ð¸Ñ -10000
--dpi-desync-badack-increment=<int|0xHEX> ; инкÑÐµÐ¼ÐµÐ½Ñ ack sequence number Ð´Ð»Ñ badseq. по ÑмолÑÐ°Ð½Ð¸Ñ -66000
--dpi-desync-any-protocol=0|1 ; 0(default)=ÑабоÑаÑÑ ÑолÑко по http request и tls clienthello 1=по вÑем непÑÑÑÑм пакеÑам даннÑÑ
--dpi-desync-fake-http=<filename>|0xHEX ; Ñайл, ÑодеÑжаÑий ÑейковÑй http запÑÐ¾Ñ Ð´Ð»Ñ dpi-desync=fake, на Ð·Ð°Ð¼ÐµÐ½Ñ ÑÑандаÑÑÐ½Ð¾Ð¼Ñ www.iana.org
--dpi-desync-fake-tls=<filename>|0xHEX ; Ñайл, ÑодеÑжаÑий ÑейковÑй tls clienthello Ð´Ð»Ñ dpi-desync=fake, на Ð·Ð°Ð¼ÐµÐ½Ñ ÑÑандаÑÑномÑ
--dpi-desync-fake-unknown=<filename>|0xHEX ; Ñайл, ÑодеÑжаÑий ÑейковÑй пейлоад неизвеÑÑного пÑоÑокола Ð´Ð»Ñ dpi-desync=fake, на Ð·Ð°Ð¼ÐµÐ½Ñ ÑÑандаÑÑнÑм нÑлÑм 256 байÑ
--dpi-desync-fake-syndata=<filename>|0xHEX ; Ñайл, ÑодеÑжаÑий ÑейковÑй пейлоад пакеÑа SYN Ð´Ð»Ñ Ñежима деÑинÑ
ÑонизаÑии syndata
--dpi-desync-fake-quic=<filename>|0xHEX ; Ñайл, ÑодеÑжаÑий ÑейковÑй QUIC Initial
--dpi-desync-fake-dht=<filename>|0xHEX ; Ñайл, ÑодеÑжаÑий ÑейковÑй пейлоад DHT пÑоÑокола Ð´Ð»Ñ dpi-desync=fake, на Ð·Ð°Ð¼ÐµÐ½Ñ ÑÑандаÑÑнÑм нÑлÑм 64 байÑ
--dpi-desync-fake-unknown-udp=<filename>|0xHEX ; Ñайл, ÑодеÑжаÑий ÑейковÑй пейлоад неизвеÑÑного udp пÑоÑокола Ð´Ð»Ñ dpi-desync=fake, на Ð·Ð°Ð¼ÐµÐ½Ñ ÑÑандаÑÑнÑм нÑлÑм 64 байÑ
--dpi-desync-udplen-increment=<int> ; наÑколÑко ÑвелиÑиваÑÑ Ð´Ð»Ð¸Ð½Ñ udp пейлоада в Ñежиме udplen
--dpi-desync-udplen-pattern=<filename>|0xHEX ; Ñем добиваÑÑ udp Ð¿Ð°ÐºÐµÑ Ð² Ñежиме udplen. по ÑмолÑÐ°Ð½Ð¸Ñ - нÑли
--dpi-desync-start=[n|d|s]N ; пÑименÑÑÑ dpi desync ÑолÑко в иÑÑ
одÑÑиÑ
пакеÑаÑ
(n), пакеÑаÑ
даннÑÑ
(d), оÑноÑиÑелÑнÑÑ
sequence (s) по номеÑÑ Ð±Ð¾Ð»ÑÑе или Ñавно N
--dpi-desync-cutoff=[n|d|s]N ; пÑименÑÑÑ dpi desync ÑолÑко в иÑÑ
одÑÑиÑ
пакеÑаÑ
(n), пакеÑаÑ
даннÑÑ
(d), оÑноÑиÑелÑнÑÑ
sequence (s) по номеÑÑ Ð¼ÐµÐ½ÑÑе N
--hostlist=<filename> ; дейÑÑвоваÑÑ ÑолÑко над доменами, вÑ
одÑÑими в ÑпиÑок из filename. Ð¿Ð¾Ð´Ð´Ð¾Ð¼ÐµÐ½Ñ Ð°Ð²ÑомаÑиÑеÑки ÑÑиÑÑваÑÑÑÑ.
; в Ñайле должен бÑÑÑ Ñ
оÑÑ Ð½Ð° каждой ÑÑÑоке.
; ÑпиÑок ÑиÑаеÑÑÑ Ð¿Ñи ÑÑаÑÑе и Ñ
ÑаниÑÑÑ Ð² памÑÑи в виде иеÑаÑÑ
иÑеÑкой ÑÑÑÑкÑÑÑÑ Ð´Ð»Ñ Ð±ÑÑÑÑого поиÑка.
; пÑи изменении вÑемени модиÑикаÑии Ñайла он пеÑеÑиÑÑваеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки по необÑ
одимоÑÑи
; ÑпиÑок Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½ в gzip. ÑоÑÐ¼Ð°Ñ Ð°Ð²ÑомаÑиÑеÑки ÑаÑпознаеÑÑÑ Ð¸ ÑазжимаеÑÑÑ
; ÑпиÑков Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво. пÑÑÑой обÑий лиÑÑ = его оÑÑÑÑÑÑвие
; Ñ
оÑÑÑ Ð¸Ð·Ð²Ð»ÐµÐºÐ°ÑÑÑÑ Ð¸Ð· Host: Ñ
едеÑа обÑÑнÑÑ
http запÑоÑов и из SNI в TLS ClientHello.
--hostlist-domains=<domain_list> ; ÑикÑиÑованнÑй ÑпиÑок доменов ÑеÑез зÑпÑÑÑÑ. можно иÑполÑзоваÑÑ # в наÑале Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑделÑнÑÑ
доменов.
--hostlist-exclude=<filename> ; не пÑименÑÑÑ Ð´ÑÑение к доменам из лиÑÑа. Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво лиÑÑов. ÑÑ
ема аналогиÑна include лиÑÑам.
--hostlist-exclude-domains=<domain_list> ; ÑикÑиÑованнÑй ÑпиÑок доменов ÑеÑез зÑпÑÑÑÑ. можно иÑполÑзоваÑÑ # в наÑале Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑделÑнÑÑ
доменов.
--hostlist-auto=<filename> ; обнаÑÑживаÑÑ Ð°Ð²ÑомаÑиÑеÑки блокиÑовки и заполнÑÑÑ Ð°Ð²ÑомаÑиÑеÑкий hostlist (ÑÑебÑÐµÑ Ð¿ÐµÑенапÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ
одÑÑего ÑÑаÑика)
--hostlist-auto-fail-threshold=<int> ; ÑколÑко Ñаз нÑжно обнаÑÑжиÑÑ ÑиÑÑаÑиÑ, поÑ
ожÑÑ Ð½Ð° блокиÑовкÑ, ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ñ
оÑÑ Ð² лиÑÑ (по ÑмолÑаниÑ: 3)
--hostlist-auto-fail-time=<int> ; вÑе ÑÑи ÑиÑÑаÑии Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð² пÑеделаÑ
Ñказанного колиÑеÑÑва ÑекÑнд (по ÑмолÑаниÑ: 60)
--hostlist-auto-retrans-threshold=<int> ; ÑколÑко ÑеÑÑанÑмиÑÑий запÑоÑа ÑÑиÑаÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовкой (по ÑмолÑаниÑ: 3)
--hostlist-auto-debug=<logfile> ; лог положиÑелÑнÑÑ
ÑеÑений по autohostlist. позволÑÐµÑ ÑазобÑаÑÑÑÑ Ð¿Ð¾ÑÐµÐ¼Ñ Ñам поÑвлÑÑÑÑÑ Ñ
оÑÑÑ.
--new ; наÑало новой ÑÑÑаÑегии (новÑй пÑоÑилÑ)
--skip ; не иÑполÑзоваÑÑ ÑÑÐ¾Ñ Ð¿ÑоÑÐ¸Ð»Ñ . полезно Ð´Ð»Ñ Ð²Ñеменной деакÑиваÑии пÑоÑÐ¸Ð»Ñ Ð±ÐµÐ· ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов.
--filter-l3=ipv4|ipv6 ; ÑилÑÑÑ Ð²ÐµÑÑии ip Ð´Ð»Ñ ÑекÑÑей ÑÑÑаÑегии
--filter-tcp=[~]port1[-port2]|* ; ÑилÑÑÑ Ð¿Ð¾ÑÑов tcp Ð´Ð»Ñ ÑекÑÑей ÑÑÑаÑегии. ~ ознаÑÐ°ÐµÑ Ð¸Ð½Ð²ÐµÑÑиÑ. ÑÑÑановка ÑилÑÑÑа tcp и неÑÑÑановка ÑилÑÑÑа udp запÑеÑÐ°ÐµÑ udp. поддеÑживаеÑÑÑ ÑпиÑок ÑеÑез запÑÑÑÑ.
--filter-udp=[~]port1[-port2]|* ; ÑилÑÑÑ Ð¿Ð¾ÑÑов udp Ð´Ð»Ñ ÑекÑÑей ÑÑÑаÑегии. ~ ознаÑÐ°ÐµÑ Ð¸Ð½Ð²ÐµÑÑиÑ. ÑÑÑановка ÑилÑÑÑа udp и неÑÑÑановка ÑилÑÑÑа tcp запÑеÑÐ°ÐµÑ tcp. поддеÑживаеÑÑÑ ÑпиÑок ÑеÑез запÑÑÑÑ.
--filter-l7=[http|tls|quic|wireguard|dht|unknown] ; ÑилÑÑÑ Ð¿ÑоÑокола L6-L7. поддеÑживаеÑÑÑ Ð½ÐµÑколÑко знаÑений ÑеÑез запÑÑÑÑ.
--ipset=<filename> ; вклÑÑаÑÑий ip list. на каждой ÑÑÑоÑке ip или cidr ipv4 или ipv6. поддеÑживаеÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво лиÑÑов и gzip. пеÑеÑиÑка авÑомаÑиÑеÑкаÑ.
--ipset-ip=<ip_list> ; ÑикÑиÑованнÑй ÑпиÑок подÑеÑей ÑеÑез запÑÑÑÑ. можно иÑполÑзоваÑÑ # в наÑале Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑделÑнÑÑ
подÑеÑей.
--ipset-exclude=<filename> ; иÑклÑÑаÑÑий ip list. на каждой ÑÑÑоÑке ip или cidr ipv4 или ipv6. поддеÑживаеÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво лиÑÑов и gzip. пеÑеÑиÑка авÑомаÑиÑеÑкаÑ.
--ipset-exclude-ip=<ip_list> ; ÑикÑиÑованнÑй ÑпиÑок подÑеÑей ÑеÑез запÑÑÑÑ. можно иÑполÑзоваÑÑ # в наÑале Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑделÑнÑÑ
подÑеÑей.
--debug
позволÑÐµÑ Ð²ÑводиÑÑ Ð¿Ð¾Ð´ÑобнÑй лог дейÑÑвий на конÑолÑ, в syslog или в Ñайл. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ð°Ð¶ÐµÐ½ поÑÑдок ÑледованиÑ
опÑий. --debug
лÑÑÑе вÑего ÑказÑваÑÑ Ð² Ñамом наÑале. ÐпÑии анализиÑÑÑÑÑÑ Ð¿Ð¾ÑледоваÑелÑно. ÐÑли оÑибка бÑÐ´ÐµÑ Ð¿Ñи
пÑовеÑке опÑии, а до анализа --debug
еÑе дело не доÑло, Ñо ÑообÑÐµÐ½Ð¸Ñ Ð½Ðµ бÑдÑÑ Ð²ÑÐ²ÐµÐ´ÐµÐ½Ñ Ð² Ñайл или syslog. ÐÑи
логиÑовании в Ñайл пÑоÑеÑÑ Ð½Ðµ деÑÐ¶Ð¸Ñ Ñайл оÑкÑÑÑÑм. Ради каждой запиÑи Ñайл оÑкÑÑваеÑÑÑ Ð¸ поÑом закÑÑваеÑÑÑ. Так ÑÑо
Ñайл можно ÑдалиÑÑ Ð² лÑбой моменÑ, и он бÑÐ´ÐµÑ Ñоздан заново пÑи пеÑвом же ÑообÑении в лог. Ðо имейÑе в видÑ, ÑÑо еÑли вÑ
запÑÑкаеÑе пÑоÑеÑÑ Ð¿Ð¾Ð´ root, Ñо бÑÐ´ÐµÑ Ñменен UID на не-root. РнаÑале на лог Ñайл менÑеÑÑÑ owner, инаÑе запиÑÑ Ð±ÑдеÑ
невозможна. ÐÑли Ð²Ñ Ð¿Ð¾Ñом ÑдалиÑе Ñайл, и Ñ Ð¿ÑоÑеÑÑа не бÑÐ´ÐµÑ Ð¿Ñав на Ñоздание Ñайла в его диÑекÑоÑии, лог болÑÑе не
бÑÐ´ÐµÑ Ð²ÐµÑÑиÑÑ. ÐмеÑÑо ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð»ÑÑÑе иÑполÑзоваÑÑ truncate. Ð Ñелле ÑÑо можно ÑделаÑÑ ÑеÑез ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ": >filename"
ÐТÐÐÐ ÐÐСÐÐХРÐÐÐÐÐЦÐÐ DPI
СÑÑÑ ÐµÐµ в ÑледÑÑÑем. ÐеÑеÑÑÑ Ð¾ÑигиналÑнÑй запÑоÑ, модиÑиÑиÑÑеÑÑÑ, добавлÑеÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÐ»ÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ (Ñейки) Ñаким обÑазом, ÑÑÐ¾Ð±Ñ ÐС ÑеÑвеÑа пеÑедала ÑеÑвеÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ð¾ÑигиналÑнÑй запÑÐ¾Ñ Ð² неизменном виде, а DPI Ñвидел дÑÑгое. То, ÑÑо он блокиÑоваÑÑ Ð½Ðµ ÑÑанеÑ. СеÑÐ²ÐµÑ Ð²Ð¸Ð´Ð¸Ñ Ð¾Ð´Ð½Ð¾, DPI - дÑÑгое. DPI не понимаеÑ, ÑÑо пеÑедаеÑÑÑ Ð·Ð°Ð¿ÑеÑеннÑй запÑÐ¾Ñ Ð¸ не блокиÑÑÐµÑ ÐµÐ³Ð¾.
ÐÑÑÑ Ð°ÑÑенал возможноÑÑей, ÑÑÐ¾Ð±Ñ Ð´Ð¾ÑÑиÑÑ Ñакого ÑезÑлÑÑаÑа. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÐµÑедаÑа Ñейк пакеÑов, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ доÑли до DPI, но не доÑли до ÑеÑвеÑа. ÐÐ¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÑÑагменÑаÑÐ¸Ñ Ð½Ð° ÑÑовне TCP (ÑегменÑаÑиÑ) или на ÑÑовне IP. ÐÑÑÑ Ð°Ñаки, оÑнованнÑе на игÑе Ñ tcp sequence numbers или Ñ Ð¿ÐµÑепÑÑÑванием поÑÑдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ tcp ÑегменÑов. ÐеÑÐ¾Ð´Ñ Ð¼Ð¾Ð³ÑÑ ÑоÑеÑаÑÑÑÑ Ð² ÑазлиÑнÑÑ Ð²Ð°ÑианÑÐ°Ñ .
ФÐÐÐÐ
Фейки - ÑÑо оÑделÑнÑе ÑгенеÑиÑованнÑе nfqws пакеÑÑ, неÑÑÑие ложнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð´Ð»Ñ DPI. Ðни либо не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð´Ð¾Ð¹Ñи до ÑеÑвеÑа, либо могÑÑ Ð´Ð¾Ð¹Ñи, но Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¸Ð¼ оÑбÑоÑенÑ. ÐнаÑе полÑÑаеÑÑÑ Ñлом tcp ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ наÑÑÑение ÑелоÑÑноÑÑи пеÑедаваемого поÑока, ÑÑо гаÑанÑиÑованно пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº поломке ÑеÑÑÑÑа. ÐÑÑÑ ÑÑд меÑодов Ð´Ð»Ñ ÑеÑÐµÐ½Ð¸Ñ ÑÑой задаÑи.
md5sig
добавлÑÐµÑ TCP опÑÐ¸Ñ MD5 signature. РабоÑÐ°ÐµÑ Ð½Ðµ на вÑÐµÑ ÑеÑвеÑÐ°Ñ . ÐакеÑÑ Ñ md5 обÑÑно оÑбÑаÑÑваÑÑ ÑолÑко linux.badsum
поÑÑÐ¸Ñ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑÑÐ¼Ð¼Ñ TCP. Ðе ÑÑабоÑаеÑ, еÑли ваÑе ÑÑÑÑойÑÑво за NAT, коÑоÑÑй не пÑопÑÑÐºÐ°ÐµÑ Ð¿Ð°ÐºÐµÑÑ Ñ Ð¸Ð½Ð²Ð°Ð»Ð¸Ð´Ð½Ð¾Ð¹ ÑÑммой. Ðаиболее ÑаÑпÑоÑÑÑÐ°Ð½ÐµÐ½Ð½Ð°Ñ Ð½Ð°ÑÑÑойка NAT ÑоÑÑеÑа в Linux Ð¸Ñ Ð½Ðµ пÑопÑÑкаеÑ. Ðа Linux поÑÑÑоено болÑÑинÑÑво домаÑÐ½Ð¸Ñ ÑоÑÑеÑов. ÐепÑопÑÑкание обеÑпеÑиваеÑÑÑ Ñак : наÑÑÑойка ÑдÑа sysctl по ÑмолÑаниÑnet.netfilter.nf_conntrack_checksum=1
заÑÑавлÑÐµÑ conntrack пÑовеÑÑÑÑ tcp и udp ÑекÑÑÐ¼Ð¼Ñ Ð²Ñ Ð¾Ð´ÑÑÐ¸Ñ Ð¿Ð°ÐºÐµÑов и вÑÑÑавлÑÑÑ state INVALID Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑов Ñ Ð¸Ð½Ð²Ð°Ð»Ð¸Ð´Ð½Ð¾Ð¹ ÑÑммой. ÐбÑÑно в пÑÐ°Ð²Ð¸Ð»Ð°Ñ iptables вÑÑавлÑеÑÑÑ Ð¿Ñавило Ð´Ð»Ñ Ð´Ñопа пакеÑов Ñ ÑоÑÑоÑнием INVALID в ÑепоÑке FORWARD. СовмеÑÑное ÑоÑеÑание ÑÑÐ¸Ñ ÑакÑоÑов пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº непÑÐ¾Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ badsum ÑеÑез Ñакой ÑоÑÑеÑ. Ð openwrt из коÑобкиnet.netfilter.nf_conntrack_checksum=0
, в дÑÑÐ³Ð¸Ñ ÑоÑÑеÑÐ°Ñ ÑаÑÑо неÑ, и не вÑегда ÑÑо можно измениÑÑ. ЧÑÐ¾Ð±Ñ nfqws мог ÑабоÑаÑÑ ÑеÑез ÑоÑÑеÑ, нÑжно на нем вÑÑÑавиÑÑ Ñказанное знаÑение sysctl в 0. nfqws на Ñамом ÑоÑÑеÑе бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð¸ без ÑÑой наÑÑÑойки, поÑÐ¾Ð¼Ñ ÑÑо ÑекÑÑмма локалÑно ÑозданнÑÑ Ð¿Ð°ÐºÐµÑов не пÑовеÑÑеÑÑÑ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð°. ÐÑли ÑоÑÑÐµÑ Ð·Ð° дÑÑгим NAT, напÑÐ¸Ð¼ÐµÑ Ð¿ÑовайдеÑÑким, и он не пÑопÑÑÐºÐ°ÐµÑ invalid packets Ð²Ñ Ð½Ð¸Ñего не ÑможеÑе Ñ ÑÑим ÑделаÑÑ. Ðо обÑÑно пÑовайдеÑÑ Ð²Ñе же пÑопÑÑкаÑÑ badsum. Ðа некоÑоÑÑÑ Ð°Ð´Ð°Ð¿ÑеÑÐ°Ñ /ÑвиÑÑÐ°Ñ /дÑайвеÑÐ°Ñ Ð¿ÑинÑдиÑелÑно вклÑÑен rx-checksum offload, badsum пакеÑÑ Ð¾ÑÑекаÑÑÑÑ ÐµÑе до полÑÑÐµÐ½Ð¸Ñ Ð² ÐС. Ð ÑÑом ÑлÑÑае еÑли ÑÑо-Ñо и можно ÑделаÑÑ, Ñо ÑолÑко модиÑиÑиÑоваÑÑ Ð´ÑайвеÑ, ÑÑо пÑедÑÑавлÑеÑÑÑ Ð·Ð°Ð´Ð°Ñей кÑайне неÑÑивиалÑной. УÑÑановлено, ÑÑо Ñак ÑÐµÐ±Ñ Ð²ÐµÐ´ÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑоÑÑеÑÑ Ð½Ð° базе mediatek. badsum пакеÑÑ ÑÑ Ð¾Ð´ÑÑ Ñ ÐºÐ»Ð¸ÐµÐ½ÑÑкой ÐС, но ÑоÑÑеÑом не видÑÑÑÑ Ð² br-lan ÑеÑез tcpdump. ÐÑи ÑÑом еÑли nfqws вÑполнÑеÑÑÑ Ð½Ð° Ñамом ÑоÑÑеÑе, Ð¾Ð±Ñ Ð¾Ð´ Ð¼Ð¾Ð¶ÐµÑ ÑабоÑаÑÑ. badsum ноÑмалÑно ÑÑ Ð¾Ð´ÑÑ Ñ Ð²Ð½ÐµÑнего инÑеÑÑейÑа.badseq
ÑвелиÑÐ¸Ð²Ð°ÐµÑ TCP sequence number на опÑеделенное знаÑение, вÑÐ²Ð¾Ð´Ñ ÐµÐ³Ð¾ Ñем ÑамÑм из TCP window. Такие пакеÑÑ Ð±ÑдÑÑ Ð½Ð°Ð²ÐµÑнÑка оÑбÑоÑÐµÐ½Ñ Ð¿ÑинимаÑÑим Ñзлом, но Ñак же и DPI, еÑли он оÑиенÑиÑÑеÑÑÑ Ð½Ð° sequence numbers. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑмеÑение seq вÑбиÑаеÑÑÑ -10000. ÐÑакÑика показала, ÑÑо некоÑоÑÑе DPI не пÑопÑÑкаÑÑ seq вне опÑеделенного окна. Ðднако, Ñакое неболÑÑое ÑмеÑение Ð¼Ð¾Ð¶ÐµÑ Ð²ÑзваÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¿Ñи ÑÑÑеÑÑвенной поÑоковой пеÑедаÑе и поÑеÑе пакеÑов. ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе--dpi-desync-any-protocol
, Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð½Ð°Ð´Ð¾Ð±Ð¸ÑÑÑ ÑÑÑановиÑÑ badseq increment 0x80000000. ÐÑо обеÑпеÑÐ¸Ñ Ð½Ð°Ð´ÐµÐ¶Ð½ÑÑ Ð³Ð°ÑанÑиÑ, ÑÑо подделÑнÑй Ð¿Ð°ÐºÐµÑ Ð½Ðµ вклиниÑÑÑ Ð² tcp window на ÑеÑвеÑе. Так же бÑло замеÑено, ÑÑо badseq Ð»Ð¾Ð¼Ð°ÐµÑ Ð»Ð¾Ð³Ð¸ÐºÑ Ð½ÐµÐºÐ¾ÑоÑÑÑ DPI пÑи анализе http, вÑзÑÐ²Ð°Ñ Ð·Ð°Ð²Ð¸Ñание ÑоединениÑ. ÐÑиÑем на ÑÐµÑ Ð¶Ðµ DPI TLS Ñ badseq ÑабоÑÐ°ÐµÑ Ð½Ð¾ÑмалÑно.TTL
казалоÑÑ Ð±Ñ - лÑÑÑий ваÑианÑ, но он ÑÑебÑÐµÑ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑалÑной наÑÑÑойки под каждого пÑовайдеÑа. ÐÑли DPI Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð´Ð°Ð»ÑÑе локалÑнÑÑ ÑайÑов пÑовайдеÑа, Ñо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе оÑÑезаÑÑ Ñебе доÑÑÑп к ним. СиÑÑаÑÐ¸Ñ ÑÑÑгÑблÑеÑÑÑ Ð½Ð°Ð»Ð¸Ñием ТСÐУ на магиÑÑÑÐ°Ð»Ð°Ñ , ÑÑо вÑнÑÐ¶Ð´Ð°ÐµÑ Ð´ÐµÐ»Ð°ÑÑ TTL доÑÑаÑоÑно вÑÑоким, ÑвелиÑÐ¸Ð²Ð°Ñ ÑиÑк пÑÐ¾Ð±Ð¾Ñ Ñейка до ÑеÑвеÑа. ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ ip exclude list, заполнÑемÑй вÑÑÑнÑÑ. ÐмеÑÑе Ñ ttl можно пÑименÑÑÑ md5sig. ÐÑо ниÑего не иÑпоÑÑиÑ, заÑо Ð´Ð°ÐµÑ Ð½ÐµÐ¿Ð»Ð¾Ñ Ð¾Ð¹ ÑÐ°Ð½Ñ ÑабоÑÑ ÑайÑов, до коÑоÑÑÑ "Ð¿Ð»Ð¾Ñ Ð¾Ð¹" Ð¿Ð°ÐºÐµÑ Ð´Ð¾Ð¹Ð´ÐµÑ Ð¿Ð¾ TTL. ÐÑли не ÑдаеÑÑÑ Ð½Ð°Ð¹Ñи авÑомаÑиÑеÑкое ÑеÑение, воÑполÑзÑйÑеÑÑ Ñайломzapret-hosts-user-exclude.txt
. ÐекоÑоÑÑе ÑÑоковÑе пÑоÑивки ÑоÑÑеÑов ÑикÑиÑÑÑÑ Ð¸ÑÑ Ð¾Ð´ÑÑий TTL, без оÑклÑÑÐµÐ½Ð¸Ñ ÑÑой опÑии ÑеÑез Ð½Ð¸Ñ ÑабоÑаÑÑ Ð½Ðµ бÑдеÑ. ÐÐÐÐРСТÐÐТ ÐЫÐÐÐ ÐТЬ TTL : найдиÑе минималÑное знаÑение, пÑи коÑоÑом Ð¾Ð±Ñ Ð¾Ð´ еÑе ÑабоÑаеÑ. ÐÑо и бÑÐ´ÐµÑ Ð½Ð¾Ð¼ÐµÑ Ñ Ð¾Ð¿Ð° ваÑего DPI.hopbyhop
оÑноÑиÑÑÑ ÑолÑко к ipv6. ÐобавлÑеÑÑÑ ipv6 extenstion headerhop-by-hop options
. РваÑианÑеhopbyhop2
добавлÑÑÑÑÑ 2 Ñ ÐµÐ´ÐµÑа, ÑÑо ÑвлÑеÑÑÑ Ð½Ð°ÑÑÑением ÑÑандаÑÑа и гаÑанÑиÑованно оÑбÑаÑÑваеÑÑÑ ÑÑеком пÑоÑоколов во вÑÐµÑ ÐС. Ðдин Ñ ÐµÐ´ÐµÑ hop-by-hop пÑинимаеÑÑÑ Ð²Ñеми ÐС, однако на некоÑоÑÑÑ ÐºÐ°Ð½Ð°Ð»Ð°Ñ /пÑовайдеÑÐ°Ñ Ñакие пакеÑÑ Ð¼Ð¾Ð³ÑÑ ÑилÑÑÑоваÑÑÑÑ Ð¸ не Ð´Ð¾Ñ Ð¾Ð´Ð¸ÑÑ. РаÑÑÐµÑ Ð¸Ð´ÐµÑ Ð½Ð° Ñо, ÑÑо DPI пÑоанализиÑÑÐµÑ Ð¿Ð°ÐºÐµÑ Ñ hop-by-hop, но он либо не Ð´Ð¾Ð¹Ð´ÐµÑ Ð´Ð¾ адÑеÑаÑа вÑÐ¸Ð»Ñ ÑилÑÑÑов пÑовайдеÑа, либо бÑÐ´ÐµÑ Ð¾ÑбÑоÑен ÑеÑвеÑом, поÑÐ¾Ð¼Ñ ÑÑо Ñ ÐµÐ´ÐµÑа два.datanoack
вÑÑÑÐ»Ð°ÐµÑ Ñейки Ñо ÑнÑÑÑм tcp Ñлагом ACK. СеÑвеÑа Ñакое не пÑинимаÑÑ, а DPI Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинÑÑÑ. ÐÑа ÑÐµÑ Ð½Ð¸ÐºÐ° Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¾Ð¼Ð°ÑÑ NAT и не вÑегда ÑабоÑÐ°ÐµÑ Ñ iptables, еÑли иÑполÑзÑеÑÑÑ masquerade, даже Ñ Ð»Ð¾ÐºÐ°Ð»Ñной ÑиÑÑÐµÐ¼Ñ (поÑÑи вÑегда на ÑоÑÑеÑÐ°Ñ ipv4). Ðа ÑиÑÑÐµÐ¼Ð°Ñ c iptables без masquerade и на nftables ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· огÑаниÑений. ÐкÑпеÑименÑалÑно вÑÑÑнено, ÑÑо многие пÑовайдеÑÑкие NAT не оÑбÑаÑÑваÑÑ ÑÑи пакеÑÑ, поÑÐ¾Ð¼Ñ ÑабоÑÐ°ÐµÑ Ð´Ð°Ð¶Ðµ Ñ Ð²Ð½ÑÑÑенним пÑовайдеÑÑким IP. Ðо linux NAT оно не пÑойдеÑ, Ñак ÑÑо за домаÑним ÑоÑÑеÑом ÑÑа ÑÐµÑ Ð½Ð¸ÐºÐ° ÑкоÑее вÑего не ÑÑабоÑаеÑ, но Ð¼Ð¾Ð¶ÐµÑ ÑÑабоÑаÑÑ Ñ Ð½ÐµÐ³Ð¾. ÐÐ¾Ð¶ÐµÑ ÑÑабоÑаÑÑ Ð¸ ÑеÑез ÑоÑÑеÑ, еÑли подклÑÑение по пÑоводÑ, и на ÑоÑÑеÑе вклÑÑено аппаÑаÑное ÑÑкоÑение.autottl
. СÑÑÑ Ñежима в авÑомаÑиÑеÑком опÑеделении TTL, ÑÑÐ¾Ð±Ñ Ð¾Ð½ поÑÑи навеÑнÑка пÑоÑел DPI и немного не доÑел до ÑеÑвеÑа. ÐеÑÑÑÑÑ Ð±Ð°Ð·Ð¾Ð²Ñе знаÑÐµÐ½Ð¸Ñ TTL 64,128,255, ÑмоÑÑиÑÑÑ Ð²Ñ Ð¾Ð´ÑÑий Ð¿Ð°ÐºÐµÑ (да, ÑÑебÑеÑÑÑ Ð½Ð°Ð¿ÑавиÑÑ Ð¿ÐµÑвÑй Ð²Ñ Ð¾Ð´ÑÑий Ð¿Ð°ÐºÐµÑ Ð½Ð° nfqws !). ÐÑÑиÑлÑеÑÑÑ Ð´Ð»Ð¸Ð½Ð° пÑÑи, оÑнимаеÑÑÑdelta
(1 по ÑмолÑаниÑ). ÐÑли TTL вне диапазона (min,max - 3,20 по ÑмолÑаниÑ), Ñо беÑÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ min,max, ÑÑÐ¾Ð±Ñ Ð²Ð¿Ð¸ÑаÑÑÑÑ Ð² диапазон. ÐÑли пÑи ÑÑом полÑÑеннÑй TTL болÑÑе Ð´Ð»Ð¸Ð½Ñ Ð¿ÑÑи, Ñо авÑомаÑизм не ÑÑабоÑал и беÑÑÑÑÑ ÑикÑиÑованнÑе знаÑÐµÐ½Ð¸Ñ TTL Ð´Ð»Ñ Ð°Ñаки. Ð¢ÐµÑ Ð½Ð¸ÐºÐ° позволÑÐµÑ ÑеÑиÑÑ Ð²Ð¾Ð¿ÑоÑ, когда вÑÑ ÑеÑÑ Ð¿ÐµÑегоÑожена ÑлагбаÑмами (DPI, ТСÐУ) везде где ÑолÑко можно, вклÑÑÐ°Ñ Ð¼Ð°Ð³Ð¸ÑÑÑалов. Ðо поÑенÑиалÑно Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°Ð²Ð°ÑÑ Ñбои. ÐапÑимеÑ, пÑи аÑиммеÑÑии Ð²Ñ Ð¾Ð´ÑÑего и иÑÑ Ð¾Ð´ÑÑего канала до конкÑеÑного ÑеÑвеÑа. Ðа ÐºÐ°ÐºÐ¸Ñ -Ñо пÑовайдеÑÐ°Ñ ÑÑа ÑÐµÑ Ð½Ð¸ÐºÐ° бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð½ÐµÐ¿Ð»Ð¾Ñ Ð¾, на дÑÑÐ³Ð¸Ñ Ð´Ð¾ÑÑÐ°Ð²Ð¸Ñ Ð±Ð¾Ð»ÑÑе пÑоблем, Ñем полÑзÑ. Ðде-Ñо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ ÑÑнинг паÑамеÑÑов. ÐÑÑÑе иÑполÑзоваÑÑ Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑм огÑаниÑиÑелем.
Ð ÐµÐ¶Ð¸Ð¼Ñ Ð´ÑÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ ÑоÑеÑаÑÑÑÑ Ð² лÑбÑÑ
комбинаÑиÑÑ
. --dpi-desync-fooling
беÑÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво знаÑений ÑеÑез запÑÑÑÑ.
TCP СÐÐÐÐÐТÐЦÐЯ
multisplit
. наÑезаем запÑÐ¾Ñ Ð½Ð° ÑказаннÑÑ Ð²--dpi-desync-split-pos
позиÑиÑÑ .multidisorder
. наÑезаем запÑÐ¾Ñ Ð½Ð° ÑказаннÑÑ Ð²--dpi-desync-split-pos
позиÑиÑÑ Ð¸ оÑпÑавлÑем в обÑаÑном поÑÑдке.fakedsplit
. наÑезаем запÑÐ¾Ñ Ð½Ð° 2 ÑаÑÑи, обÑамлÑÑ ÐºÐ°Ð¶Ð´ÑÑ ÑаÑÑÑ Ñейками : Ñейк 1-й ÑаÑÑи, 1 ÑаÑÑÑ, Ñейк 1-й ÑаÑÑи, Ñейк 2-й ÑаÑÑи, 2 ÑаÑÑÑ, Ñейк 2-й ÑаÑÑиfakeddisorder
. аналогиÑноfakedsplit
, ÑолÑко в обÑаÑном поÑÑдке : Ñейк 2-й ÑаÑÑи, 2 ÑаÑÑÑ, Ñейк 2-й ÑаÑÑи, Ñейк 1-й ÑаÑÑи, 1 ÑаÑÑÑ, Ñейк 1 ÑаÑÑи.
СодеÑжимое Ñейков в fakedsplit
/fakeddisorder
опÑеделÑеÑÑÑ Ð¿Ð°ÑамеÑÑом --dpi-desync-fakedsplit-pattern
(по ÑмолÑÐ°Ð½Ð¸Ñ 0x00).
ÐаннÑе Ñейков беÑÑÑÑÑ Ð¸Ð· паÑÑеÑна Ñо ÑмеÑением, ÑооÑвеÑÑÑвÑÑÑим ÑмеÑÐµÐ½Ð¸Ñ Ð¾ÑÑÑлаемÑÑ
ÑаÑÑей.
РазмеÑÑ Ñейков ÑооÑвеÑÑÑвÑÑÑ Ð´Ð»Ð¸Ð½Ð°Ð¼ оÑÑÑлаемÑÑ
ÑаÑÑей.
Ð¦ÐµÐ»Ñ ÑÑиÑ
Ñежимов - макÑималÑно ÑÑложниÑÑ Ð²ÑÑвление оÑигиналÑнÑÑ
даннÑÑ
ÑÑеди Ñейков.
ÐÐ»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñий наÑезки иÑполÑзÑÑÑÑÑ Ð¼Ð°ÑкеÑÑ.
- ÐбÑолÑÑнÑй положиÑелÑнÑй маÑÐºÐµÑ - ÑиÑловое ÑмеÑение внÑÑÑи пакеÑа или гÑÑÐ¿Ð¿Ñ Ð¿Ð°ÐºÐµÑов Ð¾Ñ Ð½Ð°Ñала.
- ÐбÑолÑÑнÑй оÑÑиÑаÑелÑнÑй маÑÐºÐµÑ - ÑиÑловое ÑмеÑение внÑÑÑи пакеÑа или гÑÑÐ¿Ð¿Ñ Ð¿Ð°ÐºÐµÑов Ð¾Ñ ÑледÑÑÑего за конÑом байÑа. -1 ÑказÑÐ²Ð°ÐµÑ Ð½Ð° поÑледний байÑ.
- ÐÑноÑиÑелÑнÑй маÑÐºÐµÑ - положиÑелÑное или оÑÑиÑаÑелÑное ÑмеÑение оÑноÑиÑелÑно логиÑеÑкой позиÑии внÑÑÑи пакеÑа или гÑÑÐ¿Ð¿Ñ Ð¿Ð°ÐºÐµÑов.
ÐÑноÑиÑелÑнÑе позиÑии :
- method - наÑало меÑода HTTP ('GET', 'POST', 'HEAD', ...). ÐеÑод обÑÑно вÑегда наÑ
одиÑÑÑ Ð½Ð° позиÑии 0, но Ð¼Ð¾Ð¶ÐµÑ ÑмеÑÑиÑÑÑÑ Ð¸Ð·-за
--methodeol
. Тогда позиÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ 1 или 2. - host - наÑало имени Ñ Ð¾ÑÑа в извеÑÑном пÑоÑоколе (http, TLS)
- endhost - байÑ, ÑледÑÑÑий за поÑледним байÑом имени Ñ Ð¾ÑÑа
- sld - наÑало домена 2 ÑÑÐ¾Ð²Ð½Ñ Ð² имени Ñ Ð¾ÑÑа
- endsld - байÑ, ÑледÑÑÑий за поÑледним байÑом домена 2 ÑÑÐ¾Ð²Ð½Ñ Ð² имени Ñ Ð¾ÑÑа
- midsld - ÑеÑедина домена 2 ÑÑÐ¾Ð²Ð½Ñ Ð² имени Ñ Ð¾ÑÑа
- sniext - наÑало Ð¿Ð¾Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ SNI extension в TLS. ÐÑбой extension ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· 2-байÑовÑÑ Ð¿Ð¾Ð»ÐµÐ¹ type и length, за ними Ð¸Ð´ÐµÑ Ð¿Ð¾Ð»Ðµ даннÑÑ .
ÐÑÐ¸Ð¼ÐµÑ ÑпиÑка маÑкеÑов : 100,midsld,sniext+1,endhost-2,-10
.
ÐÑи Ñазбиении пакеÑа пеÑвÑм делом пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÑеÑолвинг маÑкеÑов - наÑ
ождение вÑеÑ
ÑказаннÑÑ
оÑноÑиÑелÑнÑÑ
позиÑий и пÑименение ÑмеÑений.
ÐÑли оÑноÑиÑелÑÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¾ÑÑÑÑÑÑвÑÐµÑ Ð² ÑекÑÑем пÑоÑоколе, Ñакие позиÑии не пÑименÑÑÑÑÑ Ð¸ оÑбÑаÑÑваÑÑÑÑ.
ÐалÑÑе пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¾ÑмализаÑÐ¸Ñ Ð¿Ð¾Ð·Ð¸Ñий оÑноÑиÑелÑно ÑмеÑÐµÐ½Ð¸Ñ ÑекÑÑего пакеÑа в гÑÑппе пакеÑов (многопакеÑнÑе запÑоÑÑ TLS Ñ kyber, напÑимеÑ).
ÐÑкидÑваÑÑÑÑ Ð²Ñе позиÑии, вÑÑ
одÑÑие за пÑÐµÐ´ÐµÐ»Ñ ÑекÑÑего пакеÑа. ÐÑÑавÑиеÑÑ ÑоÑÑиÑÑÑÑÑÑ Ð² поÑÑдке возÑаÑÑÐ°Ð½Ð¸Ñ Ð¸ ÑдалÑÑÑÑÑ Ð´Ñбли.
РваÑианÑаÑ
multisplit
и multidisorder
еÑли не оÑÑалоÑÑ Ð½Ð¸ одной позиÑии, Ñазбиение не пÑоиÑÑ
одиÑ.
ÐаÑианÑÑ fakedsplit
и fakeddisorder
пÑименÑÑÑ ÑолÑко Ð¾Ð´Ð½Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ ÑплиÑа. Ðе поиÑк ÑÑеди ÑпиÑка --dpi-desync-split-pos
оÑÑÑеÑÑвлÑеÑÑÑ Ð¾ÑобÑм обÑазом.
СнаÑала ÑвеÑÑÑÑÑÑ Ð²Ñе оÑноÑиÑелÑнÑе маÑкеÑÑ. ÐÑли ÑÑеди ниÑ
найден подÑ
одÑÑий, пÑименÑеÑÑÑ Ð¾Ð½. РпÑоÑивном ÑлÑÑае ÑвеÑÑÑÑÑÑ Ð²Ñе абÑолÑÑнÑе маÑкеÑÑ.
ÐÑли и ÑÑеди ниÑ
ниÑего не найдено, пÑименÑеÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ 1.
ÐапÑимеÑ, можно напиÑаÑÑ --dpi-desync-split-pos=method+2,midsld,5
. ÐÑли пÑоÑокол http, Ñазбиение бÑÐ´ÐµÑ Ð½Ð° позиÑии method+2
.
ÐÑли пÑоÑокол TLS - на позиÑии midsld
. ÐÑли пÑоÑокол неизвеÑÑен и вклÑÑено --dpi-desync-any-protocol
, Ñазбиение бÑÐ´ÐµÑ Ð½Ð° позиÑии 5.
ЧÑÐ¾Ð±Ñ Ð²Ñе бÑло однознаÑнее, можно иÑполÑзоваÑÑ ÑазнÑе пÑоÑили Ð´Ð»Ñ ÑазнÑÑ
пÑоÑоколов и ÑказÑваÑÑ ÑолÑко Ð¾Ð´Ð½Ñ Ð¿Ð¾Ð·Ð¸ÑиÑ, коÑоÑÐ°Ñ ÑоÑно еÑÑÑ Ð² ÑÑом пÑоÑоколе.
ÐÐÐ ÐÐРЫТÐÐ SEQUENCE NUMBERS
seqovl
добавлÑÐµÑ Ð² наÑало одного из TCP ÑегменÑов seqovl
Ð±Ð°Ð¹Ñ Ñо ÑмеÑеннÑм в минÑÑ sequence number на велиÑÐ¸Ð½Ñ seqovl
.
ÐÐ»Ñ split
- в наÑало пеÑвого ÑегменÑа, Ð´Ð»Ñ disorder
- в наÑало пÑедпоÑледнего оÑÑÑлаемого ÑегменÑа (вÑоÑого в оÑигиналÑном поÑÑдке ÑледованиÑ).
Ð ÑлÑÑае split
ÑаÑÑÐµÑ Ð¸Ð´ÐµÑ Ð½Ð° Ñо, ÑÑо пÑедÑдÑÑий оÑÑÑл, еÑли он бÑл, Ñже попал в ÑÐ¾ÐºÐµÑ ÑеÑвеÑного пÑиложениÑ, поÑÑÐ¾Ð¼Ñ Ð½Ð¾Ð²Ð°Ñ Ð¿ÑиÑедÑÐ°Ñ ÑаÑÑÑ Ð»Ð¸ÑÑ ÑаÑÑиÑно наÑ
одиÑÑÑ Ð²
пÑеделаÑ
ÑекÑÑего окна (in-window). СпеÑеди ÑÐµÐ¹ÐºÐ¾Ð²Ð°Ñ ÑаÑÑÑ Ð¾ÑбÑаÑÑваеÑÑÑ, а оÑÑавÑаÑÑÑ ÑаÑÑÑ ÑодеÑÐ¶Ð¸Ñ Ð¾Ñигинал и
наÑинаеÑÑÑ Ñ Ð½Ð°Ñала window, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð² ÑокеÑ. СеÑвеÑное пÑиложение полÑÑÐ°ÐµÑ Ð²Ñе, ÑÑо ÑеалÑно оÑÑÑÐ»Ð°ÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ,
оÑбÑаÑÑÐ²Ð°Ñ ÑейковÑÑ out-of-window ÑаÑÑÑ. Ðо DPI не Ð¼Ð¾Ð¶ÐµÑ ÑÑого понÑÑÑ, поÑÑÐ¾Ð¼Ñ Ñ Ð½ÐµÐ³Ð¾ пÑоиÑÑ
Ð¾Ð´Ð¸Ñ sequence деÑинÑ
ÑонизаÑиÑ.
ÐбÑзаÑелÑно, ÑÑÐ¾Ð±Ñ Ð¿ÐµÑвÑй ÑÐµÐ³Ð¼ÐµÐ½Ñ Ð²Ð¼ÐµÑÑе Ñ seqovl
не пÑевÑÑили Ð´Ð»Ð¸Ð½Ñ MTU. ÐÑа ÑиÑÑаÑÐ¸Ñ ÑаÑпознаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки в Linux, и seqovl
оÑменÑеÑÑÑ.
РоÑÑалÑнÑÑ
ÑиÑÑемаÑ
ÑиÑÑаÑÐ¸Ñ Ð½Ðµ ÑаÑпознаеÑÑÑ, и ÑÑо пÑÐ¸Ð²ÐµÐ´ÐµÑ Ðº поломке ÑоединениÑ. ÐоÑÑÐ¾Ð¼Ñ Ð²ÑбиÑайÑе пеÑвÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ ÑплиÑа и seqovl
Ñаким обÑазом, ÑÑÐ¾Ð±Ñ MTU не бÑл пÑевÑÑен в лÑбом ÑлÑÑае.
ÐнаÑе дÑÑение Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ ÑабоÑаÑÑ Ð¸Ð»Ð¸ ÑабоÑаÑÑ Ñ
аоÑиÑно.
ÐÐ»Ñ disorder
overlap Ð¸Ð´ÐµÑ Ð½Ð° пÑедпоÑледнÑÑ Ð¾ÑÑÑлаемÑÑ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа.
ÐÐ»Ñ Ð¿ÑоÑÑоÑÑ Ð±Ñдем ÑÑиÑаÑÑ, ÑÑо Ñазбиение Ð¸Ð´ÐµÑ Ð½Ð° 2 ÑаÑÑи, ÑлÑÑÑÑ Ð¾Ð½Ð¸ в поÑÑдке "2 1" пÑи оÑигиналÑном поÑÑдке "1 2".
ÐбÑзаÑелÑно, ÑÑÐ¾Ð±Ñ seqovl
бÑл менÑÑе позиÑии пеÑвого ÑплиÑа, инаÑе вÑе оÑоÑланное бÑÐ´ÐµÑ Ð¿ÐµÑедано в ÑÐ¾ÐºÐµÑ ÑÑÐ°Ð·Ñ Ð¶Ðµ, вклÑÑÐ°Ñ Ñейк, Ð»Ð¾Ð¼Ð°Ñ Ð¿ÑоÑокол пÑикладного ÑÑовнÑ.
Ð¢Ð°ÐºÐ°Ñ ÑиÑÑаÑÐ¸Ñ Ð»ÐµÐ³ÐºÐ¾ обнаÑÑживаеÑÑÑ Ð¿ÑогÑаммой, и seqovl
оÑменÑеÑÑÑ. УвелиÑение ÑазмеÑа пакеÑа невозможно в пÑинÑипе.
ÐÑи ÑоблÑдении ÑÑÐ»Ð¾Ð²Ð¸Ñ 2-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа ÑвлÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ in-window, поÑÑÐ¾Ð¼Ñ ÑеÑвеÑÐ½Ð°Ñ ÐС пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÐµÐµ Ñеликом, вклÑÑÐ°Ñ Ñейк.
Ðо поÑколÑÐºÑ Ð½Ð°ÑалÑÐ½Ð°Ñ ÑаÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
из 1 пакеÑа еÑе не пÑинÑÑа, Ñо Ñейк и ÑеалÑнÑе даннÑе оÑÑаÑÑÑÑ Ð² памÑÑи ÑдÑа, не оÑпÑавлÑÑÑÑ Ð² ÑеÑвеÑное пÑиложение.
Ðак ÑолÑко пÑиÑ
Ð¾Ð´Ð¸Ñ 1-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа, она пеÑепиÑÑÐ²Ð°ÐµÑ ÑейковÑÑ ÑаÑÑÑ Ð² памÑÑи ÑдÑа.
ЯдÑо полÑÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из 1 и 2 ÑаÑÑи, поÑÑÐ¾Ð¼Ñ Ð´Ð°Ð»ÐµÐµ Ð¸Ð´ÐµÑ Ð¾ÑпÑавка в ÑÐ¾ÐºÐµÑ Ð¿ÑиложениÑ.
Таково поведение вÑеÑ
unix ÐС, кÑоме solaris - оÑÑавлÑÑÑ Ð¿Ð¾Ñледние пÑинÑÑÑе даннÑе.
Windows оÑÑавлÑÐµÑ ÑÑаÑÑе даннÑе, поÑÑÐ¾Ð¼Ñ disorder Ñ seqovl бÑÐ´ÐµÑ Ð¿ÑиводиÑÑ Ðº завиÑаниÑм ÑоединениÑ
пÑи ÑабоÑе Ñ Windows ÑеÑвеÑами. Solaris пÑакÑиÑеÑки меÑÑв, windows ÑеÑвеÑов оÑÐµÐ½Ñ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾.
Ðожно иÑполÑзоваÑÑ Ð»Ð¸ÑÑÑ Ð¿Ñи необÑ
одимоÑÑи.
ÐеÑод позволÑÐµÑ Ð¾Ð±Ð¾Ð¹ÑиÑÑ Ð±ÐµÐ· fooling и TTL. Фейки пеÑемеÑÐ°Ð½Ñ Ñ ÑеалÑнÑм даннÑми.
fakedsplit/fakeddisorder
по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе оÑделÑнÑе Ñейки.
seqovl
в ваÑианÑе split
Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑолÑко абÑолÑÑнÑм положиÑелÑнÑм знаÑением, поÑколÑÐºÑ Ð¿ÑименÑеÑÑÑ ÑолÑко в пеÑÐ²Ð¾Ð¼Ñ Ð¿Ð°ÐºÐµÑÑ.
РваÑианÑе disorder
допÑÑÑимо пÑименение вÑеÑ
ваÑианÑов маÑкеÑов.
Ðни авÑомаÑиÑеÑки ноÑмализÑÑÑÑÑ Ðº ÑекÑÑÐµÐ¼Ñ Ð¿Ð°ÐºÐµÑÑ Ð² ÑеÑии. Ðожно ÑплиÑаÑÑ Ð½Ð° midsld
и делаÑÑ seqovl на midsld-1
.
СÐÐЦÐФÐЧÐСÐÐÐ Ð ÐÐÐÐЫ IPV6
Ð ÐµÐ¶Ð¸Ð¼Ñ Ð´ÐµÑинÑ
ÑонизаÑии hopbyhop
, destopt
и ipfrag1
(не пÑÑаÑÑ Ñ fooling !) оÑноÑÑÑÑÑ ÑолÑко к ipv6 и заклÑÑаеÑÑÑ
в добавлении Ñ
едеÑа hop-by-hop options
, destination options
или fragment
во вÑе пакеÑÑ, попадаÑÑие под деÑинÑ
ÑонизаÑиÑ.
ÐдеÑÑ Ð½Ð°Ð´Ð¾ обÑзаÑелÑно понимаÑÑ, ÑÑо добавление Ñ
едеÑа ÑвелиÑÐ¸Ð²Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð°ÐºÐµÑа, поÑÐ¾Ð¼Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ñименено
к пакеÑам макÑималÑного ÑазмеÑа. ÐÑо Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑÑо пÑи пеÑедаÑе болÑÑиÑ
ÑообÑений.
Ð ÑлÑÑае невозможноÑÑи оÑоÑлаÑÑ Ð¿Ð°ÐºÐµÑ Ð´ÑÑение бÑÐ´ÐµÑ Ð¾Ñменено, Ð¿Ð°ÐºÐµÑ Ð±ÑÐ´ÐµÑ Ð²ÑÑлан в оÑигинале.
РаÑÑÐµÑ Ð¸Ð´ÐµÑ Ð½Ð° Ñо, ÑÑо DPI ÑÐ²Ð¸Ð´Ð¸Ñ 0 в поле next header оÑновного заголовка ipv6
и не бÑÐ´ÐµÑ ÑкакаÑÑ Ð¿Ð¾
extension Ñ
едеÑам в поиÑкаÑ
ÑÑанÑпоÑÑного Ñ
едеÑа. Таким обÑазом не поймеÑ, ÑÑо ÑÑо tcp или udp, и пÑопÑÑÑÐ¸Ñ Ð¿Ð°ÐºÐµÑ
без анализа. Ðозможно, какие-Ñо DPI на ÑÑо кÑпÑÑÑÑ.
ÐÐ¾Ð¶ÐµÑ ÑоÑеÑаÑÑÑÑ Ñ Ð»ÑбÑми Ñежимами 2-й ÑазÑ, кÑоме ваÑианÑа ipfrag1+ipfrag2
.
ÐапÑимеÑ, hopbyhop,multisplit
ознаÑÐ°ÐµÑ ÑазбиÑÑ tcp Ð¿Ð°ÐºÐµÑ Ð½Ð° неÑколÑко ÑегменÑов, в каждÑй из ниÑ
добавиÑÑ hop-by-hop.
ÐÑи hopbyhop,ipfrag2
поÑледоваÑелÑноÑÑÑ Ñ
едеÑов бÑÐ´ÐµÑ : ipv6,hop-by-hop
,fragment
,tcp/udp
.
Режим ipfrag1
Ð¼Ð¾Ð¶ÐµÑ ÑÑабаÑÑваÑÑ Ð½Ðµ вÑегда без ÑпеÑиалÑной подгоÑовки. См. Ñаздел IP ÑÑагменÑаÑиÑ
.
ÐÐÐÐÐÐÐÐ ÐÐÐÐÐÐ ÐÐТÐÐÐÐ ÐÐСÐÐХРÐÐÐÐÐЦÐÐ
РпаÑамеÑÑе dpi-desync можно ÑказаÑÑ Ð´Ð¾ 3 Ñежимов ÑеÑез запÑÑÑÑ.
- 0 Ñаза - пÑÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ ÑабоÑÑ Ð½Ð° ÑÑапе ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ :
synack
,syndata
,--wsize
,--wssize
. Ðа ÑÑÑ ÑÐ°Ð·Ñ Ð½Ðµ дейÑÑвÑÑÑ ÑилÑÑÑÑ Ð¿Ð¾ hostlist. - 1 Ñаза - оÑÑÑлка Ñего-либо до оÑигиналÑного пакеÑа даннÑÑ
:
fake
,rst
,rstack
. - 2 Ñаза - оÑÑÑлка в модиÑиÑиÑованном виде оÑигиналÑного пакеÑа даннÑÑ
(напÑимеÑ,
fakedsplit
илиipfrag2
).
Ð ÐµÐ¶Ð¸Ð¼Ñ ÑÑебÑÑÑ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð² поÑÑдке возÑаÑÑÐ°Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑов Ñаз.
Ð ÐÐÐЦÐЯ DPI ÐÐ ÐТÐÐТ СÐÐ ÐÐÐ Ð
ÐÑÑÑ DPI, коÑоÑÑе анализиÑÑÑÑ Ð¾ÑвеÑÑ Ð¾Ñ ÑеÑвеÑа, в ÑаÑÑноÑÑи ÑеÑÑиÑÐ¸ÐºÐ°Ñ Ð¸Ð· ServerHello, где пÑопиÑÐ°Ð½Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ. ÐодÑвеÑждением доÑÑавки ClientHello ÑвлÑеÑÑÑ ACK Ð¿Ð°ÐºÐµÑ Ð¾Ñ ÑеÑвеÑа Ñ Ð½Ð¾Ð¼ÐµÑом ACK sequence, ÑооÑвеÑÑÑвÑÑÑим длине ClientHello+1. РваÑианÑе disorder обÑÑно пÑÐ¸Ñ Ð¾Ð´Ð¸Ñ ÑпеÑва ÑаÑÑиÑное подÑвеÑждение (SACK), поÑом полнÑй ACK. ÐÑли вмеÑÑо ACK или SACK Ð¸Ð´ÐµÑ RST Ð¿Ð°ÐºÐµÑ Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñной задеÑжкой, Ñо DPI Ð²Ð°Ñ Ð¾ÑÑÐµÐºÐ°ÐµÑ ÐµÑе на ÑÑапе ваÑего запÑоÑа. ÐÑли RST Ð¸Ð´ÐµÑ Ð¿Ð¾Ñле полного ACK ÑпÑÑÑÑ Ð·Ð°Ð´ÐµÑжкÑ, ÑавнÑÑ Ð¿ÑимеÑно Ð¿Ð¸Ð½Ð³Ñ Ð´Ð¾ ÑеÑвеÑа, Ñогда веÑоÑÑно DPI ÑеагиÑÑÐµÑ Ð½Ð° оÑÐ²ÐµÑ ÑеÑвеÑа. DPI Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑÑаÑÑ Ð¾Ñ Ð¿Ð¾Ñока, еÑли ClientHello его ÑдовлеÑвоÑил и не пÑовеÑÑÑÑ ServerHello. Тогда вам повезло. ÐаÑÐ¸Ð°Ð½Ñ fake Ð¼Ð¾Ð¶ÐµÑ ÑÑабоÑаÑÑ. ÐÑли же он не оÑÑÑÐ°ÐµÑ Ð¸ ÑпоÑно пÑовеÑÑÐµÑ ServerHello, Ñо можно попÑобоваÑÑ Ð·Ð°ÑÑавиÑÑ ÑеÑÐ²ÐµÑ Ð²ÑÑÑлаÑÑ ServerHello ÑаÑÑÑми ÑеÑез паÑамеÑÑ --wssize (Ñм. conntrack). ÐÑли и ÑÑо не помогаеÑ, Ñо ÑделаÑÑ Ñ ÑÑим ÑÑо-либо вÑÑд ли возможно без помоÑи Ñо ÑÑоÑÐ¾Ð½Ñ ÑеÑвеÑа. ÐÑÑÑее ÑеÑение - вклÑÑиÑÑ Ð½Ð° ÑеÑвеÑе поддеÑÐ¶ÐºÑ TLS 1.3. Рнем ÑеÑÑиÑÐ¸ÐºÐ°Ñ ÑеÑвеÑа пеÑедаеÑÑÑ Ð² заÑиÑÑованном виде. ÐÑо ÑекомендаÑÐ¸Ñ ÐºÐ¾ вÑем админам блокиÑÑемÑÑ ÑайÑов. ÐклÑÑайÑе TLS 1.3. Так Ð²Ñ Ð´Ð°Ð´Ð¸Ñе болÑÑе возможноÑÑей пÑеодолеÑÑ DPI.
Ð ÐÐÐÐ SYNACK
РдокÑменÑаÑии по geneva ÑÑо назÑваеÑÑÑ "TCB turnaround". ÐопÑÑка ввеÑÑи DPI в заблÑждение оÑноÑиÑелÑно Ñолей клиенÑа и ÑеÑвеÑа.
ÐоÑколÑÐºÑ Ñежим наÑÑÑÐ°ÐµÑ ÑабоÑÑ NAT, ÑÐµÑ Ð½Ð¸ÐºÐ° Ð¼Ð¾Ð¶ÐµÑ ÑÑабоÑаÑÑ ÑолÑко еÑли Ð¼ÐµÐ¶Ð´Ñ Ð°ÑакÑÑÑим ÑÑÑÑойÑÑвом и DPI Ð½ÐµÑ NAT. ÐÑака не ÑÑабоÑÐ°ÐµÑ ÑеÑез NAT ÑоÑÑеÑ, но Ð¼Ð¾Ð¶ÐµÑ ÑÑабоÑаÑÑ Ñ Ð½ÐµÐ³Ð¾. ÐÐ»Ñ ÑеализаÑии аÑаки на пÑÐ¾Ñ Ð¾Ð´ÑÑий ÑÑаÑик ÑÑебÑÑÑÑÑ nftables и ÑÑ ÐµÐ¼Ð° POSTNAT.
Ð ÐÐÐÐ SYNDATA
ТÑÑ Ð²Ñе пÑоÑÑо. ÐобавлÑÑÑÑÑ Ð´Ð°Ð½Ð½Ñе в Ð¿Ð°ÐºÐµÑ SYN. ÐÑе ÐС Ð¸Ñ Ð¸Ð³Ð½Ð¾ÑиÑÑÑÑ, еÑли не иÑполÑзÑеÑÑÑ TCP fast open (TFO), а DPI Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾ÑпÑинÑÑÑ, не ÑазобÑавÑиÑÑ ÐµÑÑÑ Ñам TFO или неÑ. ÐÑигиналÑнÑе ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ TFO не ÑÑогаÑÑÑÑ, поÑколÑÐºÑ ÑÑо Ð¸Ñ ÑоÑно ÑломаеÑ. Ðез ÑÑоÑнÑÑÑего паÑамеÑÑа добавлÑÑÑÑÑ 16 нÑлевÑÑ Ð±Ð°Ð¹Ñов.
ÐÐРТУÐÐЬÐЫРÐÐШÐÐЫ
ÐзнÑÑÑи VM Ð¾Ñ virtualbox и vmware в Ñежиме NAT не ÑабоÑаÑÑ Ð¼Ð½Ð¾Ð³Ð¸Ðµ ÑÐµÑ Ð½Ð¸ÐºÐ¸ пакеÑной магии nfqws. ÐÑинÑдиÑелÑно заменÑеÑÑÑ ttl, не пÑÐ¾Ñ Ð¾Ð´ÑÑ Ñейк пакеÑÑ. ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ наÑÑÑоиÑÑ ÑеÑÑ Ð² Ñежиме bridge.
CONNTRACK
nfqws оÑнаÑен огÑаниÑенной ÑеализаÑией ÑÐ»ÐµÐ¶ÐµÐ½Ð¸Ñ Ð·Ð° ÑоÑÑоÑнием tcp Ñоединений (conntrack).
Ðн вклÑÑаеÑÑÑ Ð´Ð»Ñ ÑеализаÑии некоÑоÑÑÑ
меÑодов пÑоÑиводейÑÑÐ²Ð¸Ñ DPI.
conntrack ÑпоÑобен ÑледиÑÑ Ð·Ð° Ñазой ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ : SYN,ESTABLISHED,FIN, колиÑеÑÑвом пакеÑов в каждÑÑ ÑÑоÑонÑ,
sequence numbers. conntrack ÑпоÑобен "коÑмиÑÑÑÑ" пакеÑами в обе или ÑолÑко в Ð¾Ð´Ð½Ñ ÑÑоÑонÑ.
Соединение Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð² ÑаблиÑÑ Ð¿Ñи обнаÑÑжении пакеÑов Ñ Ð²ÑÑÑавленнÑми Ñлагами SYN или SYN,ACK.
ÐоÑÑÐ¾Ð¼Ñ ÐµÑли необÑ
одим conntrack, в пÑавилаÑ
пеÑенапÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ iptables Ñоединение должно идÑи на nfqws Ñ Ñамого пеÑвого
пакеÑа, Ñ
оÑÑ Ð·Ð°Ñем Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑÑваÑÑÑÑ Ð¿Ð¾ ÑилÑÑÑÑ connbytes.
ÐÐ»Ñ UDP иниÑиаÑоÑом Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ñ Ð² ÑаблиÑÑ ÑвлÑеÑÑÑ Ð¿ÐµÑвÑй UDP пакеÑ. Ðн же и опÑеделÑÐµÑ Ð½Ð°Ð¿Ñавление поÑока.
СÑиÑаеÑÑÑ, ÑÑо пеÑвÑй UDP Ð¿Ð°ÐºÐµÑ Ð¸ÑÑ
Ð¾Ð´Ð¸Ñ Ð¾Ñ ÐºÐ»Ð¸ÐµÐ½Ñа к ÑеÑвеÑÑ. Ðалее вÑе пакеÑÑ Ñ ÑовпадаÑÑими
src_ip,src_port,dst_ip,dst_port
ÑÑиÑаÑÑÑÑ Ð¿ÑинадлежаÑими ÑÑÐ¾Ð¼Ñ Ð¿Ð¾ÑÐ¾ÐºÑ Ð´Ð¾ иÑÑеÑÐµÐ½Ð¸Ñ Ð²Ñемени неакÑивноÑÑи.
conntrack - пÑоÑÑенÑкий, он не пиÑалÑÑ Ñ ÑÑеÑом вÑевозможнÑÑ
аÑак на Ñоединение, он не пÑовеÑÑеÑ
пакеÑÑ Ð½Ð° валидноÑÑÑ sequence numbers или ÑекÑÑммÑ. Ðго задаÑа - лиÑÑ Ð¾Ð±ÑлÑживание нÑжд nfqws, он обÑÑно
коÑмиÑÑÑ ÑолÑко иÑÑ
одÑÑим ÑÑаÑиком, поÑÐ¾Ð¼Ñ Ð½ÐµÑÑвÑÑвиÑелен к подменам Ñо ÑÑоÑÐ¾Ð½Ñ Ð²Ð½ÐµÑней ÑеÑи.
Соединение ÑдалÑеÑÑÑ Ð¸Ð· ÑаблиÑÑ, как ÑолÑко оÑÐ¿Ð°Ð´Ð°ÐµÑ Ð½Ñжда в Ñлежении за ним или по ÑаймаÑÑÑ Ð½ÐµÐ°ÐºÑивноÑÑи.
СÑÑеÑÑвÑÑÑ Ð¾ÑделÑнÑе ÑаймаÑÑÑ Ð½Ð° каждÑÑ ÑÐ°Ð·Ñ ÑоединениÑ. Ðни могÑÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð¿Ð°ÑамеÑÑом --ctrack-timeouts
.
--wssize
позволÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ñ ÐºÐ»Ð¸ÐµÐ½Ñа ÑÐ°Ð·Ð¼ÐµÑ tcp window Ð´Ð»Ñ ÑеÑвеÑа, ÑÑÐ¾Ð±Ñ Ð¾Ð½ поÑлал ÑледÑÑÑие оÑвеÑÑ ÑазбиÑÑми на ÑаÑÑи.
ЧÑÐ¾Ð±Ñ ÑÑо подейÑÑвовало на вÑе ÑеÑвеÑнÑе ÐС, необÑ
одимо менÑÑÑ window size в каждом иÑÑ
одÑÑем Ñ ÐºÐ»Ð¸ÐµÐ½Ñа пакеÑе до оÑÑÑлки ÑообÑениÑ,
оÑÐ²ÐµÑ Ð½Ð° коÑоÑое должен бÑÑÑ ÑÐ°Ð·Ð±Ð¸Ñ (напÑимеÑ, TLS ClientHello). Ðменно поÑÑÐ¾Ð¼Ñ Ð¸ необÑ
одим conntrack, ÑÑобÑ
знаÑÑ ÐºÐ¾Ð³Ð´Ð° надо оÑÑановиÑÑÑÑ. ÐÑли не оÑÑановиÑÑÑÑ Ð¸ вÑе вÑÐµÐ¼Ñ ÑÑÑанавливаÑÑ Ð½Ð¸Ð·ÐºÐ¸Ð¹ wssize, ÑкоÑоÑÑÑ ÑÐ¿Ð°Ð´ÐµÑ ÐºÐ°ÑаÑÑÑоÑиÑеÑки.
Ð linux ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÐºÑпиÑовано ÑеÑез connbytes, но в BSD ÑиÑÑемаÑ
Ñакой возможноÑÑи неÑ.
Ð ÑлÑÑае http(s) оÑÑанавливаемÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле оÑÑÑлки пеÑвого http запÑоÑа или TLS ClientHello.
ÐÑли Ð²Ñ Ð¸Ð¼ÐµÐµÑе дело Ñ Ð½Ðµ http(s), Ñо вам поÑÑебÑеÑÑÑ Ð¿Ð°ÑамеÑÑ --wssize-cutoff
. Ðн ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿Ñедел, Ñ ÐºÐ¾ÑоÑого дейÑÑвие
wssize пÑекÑаÑаеÑÑÑ. ÐÑеÑÐ¸ÐºÑ d пеÑед номеÑом ознаÑÐ°ÐµÑ ÑÑиÑÑваÑÑ ÑолÑко пакеÑÑ Ñ data payload, пÑеÑÐ¸ÐºÑ s - relative sequence number,
пÑоÑе говоÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво пеÑеданнÑÑ
клиенÑом байÑов + 1.
ÐÑли пÑоÑкоÑÐ¸Ñ Ð¿Ð°ÐºÐµÑ Ñ http request или TLS ClientHello, дейÑÑвие wssize пÑекÑаÑаеÑÑÑ ÑÑÐ°Ð·Ñ Ð¶Ðµ, не дожидаÑÑÑ wssize-cutoff.
ÐÑли Ð²Ð°Ñ Ð¿ÑоÑокол Ñклонен к Ð´Ð¾Ð»Ð³Ð¾Ð¼Ñ Ð±ÐµÐ·Ð´ÐµÐ¹ÑÑвиÑ, ÑледÑÐµÑ ÑвелиÑиÑÑ ÑаймаÑÑ ÑÐ°Ð·Ñ ESTABLISHED ÑеÑез паÑамеÑÑ --ctrack-timeouts
.
ТаймаÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð¸Ð·ÐºÐ¸Ð¹ - вÑего 5 минÑÑ.
Ðе забÑвайÑе, ÑÑо nfqws коÑмиÑÑÑ Ð¿ÑиÑ
одÑÑими на него пакеÑами. ÐÑли Ð²Ñ Ð¾Ð³ÑаниÑили поÑÑÑпление пакеÑов ÑеÑез connbytes,
Ñо в ÑаблиÑе могÑÑ Ð¾ÑÑаÑÑÑÑ Ð¿Ð¾Ð²Ð¸ÑÑие ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² Ñазе ESTABLISHED, коÑоÑÑе оÑвалÑÑÑÑ ÑолÑко по ÑаймаÑÑÑ.
ÐÐ»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑики ÑоÑÑоÑÐ½Ð¸Ñ conntrack поÑлиÑе Ñигнал SIGUSR1 пÑоÑеÑÑÑ nfqws : killall -SIGUSR1 nfqws
.
ТекÑÑÐ°Ñ ÑаблиÑа бÑÐ´ÐµÑ Ð²Ñведена nfqws в stdout.
ÐбÑÑно в SYN пакеÑе ÐºÐ»Ð¸ÐµÐ½Ñ Ð¾ÑÑÑÐ»Ð°ÐµÑ ÐºÑоме window size еÑе и TCP extension scaling factor
.
scaling factor пÑедÑÑавлÑÐµÑ Ð¸Ð· ÑÐµÐ±Ñ ÑÑÐµÐ¿ÐµÐ½Ñ Ð´Ð²Ð¾Ð¹ÐºÐ¸, на коÑоÑÑÑ ÑмножаеÑÑÑ window size : 0=>1, 1=>2, 2=>4, ..., 8=>256, ...
РпаÑамеÑÑе wssize scaling factor ÑказÑваеÑÑÑ ÑеÑез двоеÑоÑие.
Scaling factor Ð¼Ð¾Ð¶ÐµÑ ÑолÑко ÑнижаÑÑÑÑ, ÑвелиÑение заблокиÑовано, ÑÑÐ¾Ð±Ñ Ð½Ðµ допÑÑÑиÑÑ Ð¿ÑевÑÑение ÑазмеÑа окна Ñо ÑÑоÑÐ¾Ð½Ñ ÑеÑвеÑа.
ÐÐ»Ñ Ð¿ÑинÑÐ¶Ð´ÐµÐ½Ð¸Ñ ÑеÑвеÑа к ÑÑагменÑаÑии ServerHello, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¿ÑоÑекание имени ÑеÑвеÑа из ÑеÑÑиÑикаÑа ÑеÑвеÑа на DPI,
лÑÑÑе вÑего иÑполÑзоваÑÑ --wssize=1:6
. ÐÑновное пÑавило - делаÑÑ scale_factor
как можно болÑÑе, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ñле воÑÑÑановлениÑ
window size иÑоговÑй ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÐºÐ½Ð° ÑÑал макÑималÑно возможнÑм. ÐÑли Ð²Ñ ÑделаеÑе 64:0, бÑÐ´ÐµÑ Ð¾ÑÐµÐ½Ñ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾.
С дÑÑгой ÑÑоÑÐ¾Ð½Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð´Ð¾Ð¿ÑÑÑиÑÑ, ÑÑÐ¾Ð±Ñ Ð¾ÑÐ²ÐµÑ ÑеÑвеÑа ÑÑал доÑÑаÑоÑно болÑÑим, ÑÑÐ¾Ð±Ñ DPI наÑел Ñам иÑкомое.
--wssize
не ÑабоÑÐ°ÐµÑ Ð² пÑоÑилÑÑ
Ñ Ñ
оÑÑлиÑÑами, поÑколÑÐºÑ Ð¾Ð½ дейÑÑвÑÐµÑ Ñ Ñамого наÑала ÑоединениÑ, когда еÑе нелÑзÑ
пÑинÑÑÑ ÑеÑение о попадании в лиÑÑ. Ðднако, пÑоÑÐ¸Ð»Ñ Ñ auto hostlist Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ --wssize.
--wssize
Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¼ÐµÐ´Ð»ÑÑÑ ÑкоÑоÑÑÑ Ð¸/или ÑвелиÑиваÑÑ Ð²ÑÐµÐ¼Ñ Ð¾ÑвеÑа ÑайÑов, поÑÑÐ¾Ð¼Ñ ÐµÑли еÑÑÑ Ð´ÑÑгие ÑабоÑаÑÑие ÑпоÑобÑ
обÑ
ода DPI, лÑÑÑе пÑименÑÑÑ Ð¸Ñ
.
--dpi-desync-cutoff
позволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð¿Ñедел, пÑи доÑÑижении коÑоÑого пÑекÑаÑаеÑÑÑ Ð¿Ñименение dpi-desync.
ÐоÑÑÑÐ¿Ð½Ñ Ð¿ÑеÑикÑÑ n,d,s по аналогии Ñ --wssize-cutoff
.
Ðолезно ÑовмеÑÑно Ñ --dpi-desync-any-protocol=1
.
Ðа ÑклоннÑÑ
к бездейÑÑÐ²Ð¸Ñ ÑоединениÑÑ
ÑледÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑаймаÑÑÑ conntrack.
ÐÑли Ñоединение вÑпало из conntrack и задана опÑÐ¸Ñ --dpi-desync-cutoff
, dpi desync
пÑименÑÑÑÑÑ Ð½Ðµ бÑдеÑ.
Ð ÐÐССÐÐÐÐÐÐÐ
nfqws поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑеаÑÑемблинг некоÑоÑÑÑ Ð²Ð¸Ð´Ð¾Ð² запÑоÑов. Ðа ÑекÑÑий Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÑо TLS и QUIC ClientHello. Ðни бÑÐ²Ð°ÐµÑ Ð´Ð»Ð¸Ð½Ð½Ñми, еÑли в chrome вклÑÑиÑÑ Ð¿Ð¾ÑÑ-кванÑовÑÑ ÐºÑипÑогÑаÑÐ¸Ñ tls-kyber, и занимаÑÑ ÐºÐ°Ðº пÑавило 2 или 3 пакеÑа. kyber вклÑÑен по ÑмолÑаниÑ, наÑÐ¸Ð½Ð°Ñ Ñ chromium 124. chrome ÑандомизиÑÑÐµÑ ÑингеÑпÑÐ¸Ð½Ñ TLS. SNI Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ ÐºÐ°Ðº в наÑале, Ñак и в конÑе, Ñо еÑÑÑ Ð¿Ð¾Ð¿Ð°ÑÑÑ Ð² лÑбой пакеÑ. stateful DPI обÑÑно ÑеаÑÑемблиÑÑÐµÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ñеликом, и ÑолÑко поÑом пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑеÑение о блокиÑовке. Ð ÑлÑÑае полÑÑÐµÐ½Ð¸Ñ TLS или QUIC пакеÑа Ñ ÑаÑÑиÑнÑм ClientHello наÑинаеÑÑÑ Ð¿ÑоÑеÑÑ ÑбоÑки, а пакеÑÑ Ð·Ð°Ð´ÐµÑживаÑÑÑÑ Ð¸ не оÑÑÑлаÑÑÑÑ Ð´Ð¾ ее оконÑаниÑ. Ðо оконÑании ÑбоÑки пакеÑÑ Ð¿ÑÐ¾Ñ Ð¾Ð´Ð¸Ñ ÑеÑез деÑÐ¸Ð½Ñ ÑонизаÑÐ¸Ñ Ð½Ð° оÑновании полноÑÑÑÑ ÑобÑанного ClientHello. ÐÑи лÑбой оÑибке в пÑоÑеÑÑе ÑбоÑки задеÑжаннÑе пакеÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ оÑÑÑлаÑÑÑÑ Ð² ÑеÑÑ, а деÑÐ¸Ð½Ñ ÑонизаÑÐ¸Ñ Ð¾ÑменÑеÑÑÑ.
ÐÑÑÑ ÑпеÑиалÑÐ½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка вÑеÑ
ваÑианÑов tcp ÑплиÑа Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾ÑегменÑного TLS.
ÐÑли ÑказаÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ ÑплиÑа болÑÑе Ð´Ð»Ð¸Ð½Ñ Ð¿ÐµÑвого пакеÑа, Ñо Ñазбивка пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ðµ обÑзаÑелÑно пеÑвого пакеÑа, а Ñого,
на коÑоÑÑй пÑиÑлаÑÑ Ð¸ÑÐ¾Ð³Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑиÑ.
ÐÑли, допÑÑÑим, ÐºÐ»Ð¸ÐµÐ½Ñ Ð¿Ð¾Ñлал TLS ClientHello длиной 2000, SNI наÑинаеÑÑÑ Ñ 1700,
и Ð·Ð°Ð´Ð°Ð½Ñ Ð¾Ð¿Ñии fake,multisplit
, Ñо пеÑед пеÑвÑм пакеÑом Ð¸Ð´ÐµÑ fake, заÑем пеÑвÑй Ð¿Ð°ÐºÐµÑ Ð² оÑигинале,
а поÑледний Ð¿Ð°ÐºÐµÑ ÑазбиваеÑÑÑ Ð½Ð° 2 ÑегменÑа. РиÑоге имеем Ñейк в наÑале и 3 ÑеалÑнÑÑ
ÑегменÑа.
ÐÐÐÐÐÐ ÐÐÐ UDP
ÐÑаки на udp более огÑаниÑÐµÐ½Ñ Ð² возможноÑÑÑÑ
. udp нелÑÐ·Ñ ÑÑагменÑиÑоваÑÑ Ð¸Ð½Ð°Ñе, Ñем на ÑÑовне ip.
ÐÐ»Ñ UDP дейÑÑвÑÑÑ ÑолÑко ÑÐµÐ¶Ð¸Ð¼Ñ Ð´ÐµÑинÑ
ÑонизаÑии fake
, hopbyhop
, destopt
, ipfrag1
, ipfrag2
, udplen
, tamper
.
Ðозможно ÑоÑеÑание fake
, hopbyhop
, destopt
Ñ ipfrag2
, fake
, fakeknown
Ñ udplen и tamper.
udplen
ÑвелиÑÐ¸Ð²Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ udp пакеÑа на Ñказанное в --dpi-desync-udplen-increment
колиÑеÑÑво байÑов.
Ðаддинг заполнÑеÑÑÑ Ð½ÑлÑми по ÑмолÑаниÑ, но можно задаÑÑ Ñвой паÑÑеÑн.
ÐÑедназнаÑено Ð´Ð»Ñ Ð¾Ð±Ð¼Ð°Ð½Ð° DPI, оÑиенÑиÑÑÑÑегоÑÑ Ð½Ð° ÑазмеÑÑ Ð¿Ð°ÐºÐµÑов.
ÐÐ¾Ð¶ÐµÑ ÑÑабоÑаÑÑ, еÑли полÑзоваÑелÑÑкий пÑоÑокол не пÑивÑзан жеÑÑко к ÑазмеÑÑ udp пейлоада.
Режим tamper ознаÑÐ°ÐµÑ Ð¼Ð¾Ð´Ð¸ÑикаÑÐ¸Ñ Ð¿Ð°ÐºÐµÑов извеÑÑнÑÑ
пÑоÑоколов оÑобеннÑм Ð´Ð»Ñ Ð¿ÑоÑокола обÑазом.
Ðа ÑекÑÑий Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑабоÑÐ°ÐµÑ ÑолÑко Ñ DHT.
ÐоддеÑживаеÑÑÑ Ð¾Ð¿Ñеделение пакеÑов QUIC Initial Ñ ÑаÑÑиÑÑовкой ÑодеÑжимого и имени Ñ
оÑÑа, Ñо еÑÑÑ Ð¿Ð°ÑамеÑÑ
--hostlist
бÑÐ´ÐµÑ ÑабоÑаÑÑ.
ÐпÑеделÑÑÑÑÑ Ð¿Ð°ÐºÐµÑÑ wireguard handshake initiation и DHT (наÑинаеÑÑÑ Ñ 'd1', конÑаеÑÑÑ 'e').
ÐÐ»Ñ Ð´ÐµÑинÑ
ÑонизаÑии дÑÑгиÑ
пÑоÑоколов обÑзаÑелÑно ÑказÑваÑÑ --dpi-desync-any-protocol
.
Реализован conntrack Ð´Ð»Ñ udp. Ðожно полÑзоваÑÑÑÑ --dpi-desync-cutoff. ТаймаÑÑ conntrack Ð´Ð»Ñ udp
можно измениÑÑ 4-м паÑамеÑÑом в --ctrack-timeouts
.
ÐÑака fake полезна ÑолÑко Ð´Ð»Ñ stateful DPI, она беÑполезна Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° на ÑÑовне оÑделÑнÑÑ
пакеÑов.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ fake наполнение - 64 нÑлÑ. Ðожно ÑказаÑÑ Ñайл в --dpi-desync-fake-unknown-udp
.
IP ФРÐÐÐÐÐТÐЦÐЯ
СовÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑеÑÑ Ð¿ÑакÑиÑеÑки не пÑопÑÑÐºÐ°ÐµÑ ÑÑагменÑиÑованнÑе tcp на ÑÑовне ip. Ðа udp Ñ ÑÑим дело полÑÑÑе, поÑколÑÐºÑ Ð½ÐµÐºÐ¾ÑоÑÑе udp пÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð¼Ð¾Ð³ÑÑ Ð¾Ð¿Ð¸ÑаÑÑÑÑ Ð½Ð° ÑÑÐ¾Ñ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ (IKE ÑÑаÑÑÑ Ð²ÐµÑÑий). Ðднако, кое-где бÑваеÑ, ÑÑо ÑежÑÑ Ð¸ ÑÑагменÑиÑованнÑй udp. РоÑÑеÑÑ Ð½Ð° базе linux могÑÑ ÑамопÑоизволÑно ÑобиÑаÑÑ Ð¸Ð»Ð¸ пеÑеÑÑагменÑиÑоваÑÑ Ð¿Ð°ÐºÐµÑÑ. ÐозиÑÐ¸Ñ ÑÑагменÑаÑии задаеÑÑÑ Ð¾ÑделÑно Ð´Ð»Ñ tcp и udp. Ðо ÑмолÑÐ°Ð½Ð¸Ñ 24 и 8 ÑооÑвеÑÑÑвенно, должна бÑÑÑ ÐºÑаÑна 8. СмеÑение ÑÑиÑаеÑÑÑ Ñ ÑÑанÑпоÑÑного заголовка.
СÑÑеÑÑвÑÐµÑ ÑÑд моменÑов вокÑÑг ÑабоÑÑ Ñ ÑÑагменÑами на Linux, без Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ ÐºÐ¾ÑоÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð½Ð¸Ñего не полÑÑиÑÑÑÑ.
ipv4 : Linux Ð´Ð°ÐµÑ Ð¾ÑÑÑлаÑÑ ipv4 ÑÑагменÑÑ, но ÑÑандаÑÑнÑе наÑÑÑойки iptables в ÑепоÑке OUTPUT могÑÑ Ð²ÑзÑваÑÑ Ð¾Ñибки оÑпÑавки.
ipv6 : ÐÐµÑ ÑпоÑоба Ð´Ð»Ñ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð³Ð°ÑанÑиÑованно оÑоÑлаÑÑ ÑÑагменÑÑ Ð±ÐµÐ· деÑÑагменÑаÑии в conntrack.
Ðа ÑазнÑÑ
ÑиÑÑемаÑ
полÑÑаеÑÑÑ Ð¿Ð¾-ÑазномÑ. Ðде-Ñо ноÑмалÑно ÑÑ
одÑÑ, где-Ñо пакеÑÑ Ð´ÐµÑÑагменÑиÑÑÑÑÑÑ.
ÐÐ»Ñ ÑÐ´ÐµÑ <4.16 поÑ
оже, ÑÑо Ð½ÐµÑ Ð¸Ð½Ð¾Ð³Ð¾ ÑпоÑоба ÑеÑиÑÑ ÑÑÑ Ð¿ÑоблемÑ, кÑоме как вÑгÑÑзиÑÑ Ð¼Ð¾Ð´ÑÐ»Ñ nf_conntrack
,
коÑоÑÑй подÑÑÐ³Ð¸Ð²Ð°ÐµÑ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ nf_defrag_ipv6
. Ðн Ñо как Ñаз и вÑполнÑÐµÑ Ð´ÐµÑÑагменÑаÑиÑ.
ÐÐ»Ñ ÑÐ´ÐµÑ 4.16+ ÑиÑÑаÑÐ¸Ñ ÑÑÑÑ Ð»ÑÑÑе. Ðз деÑÑагменÑаÑии иÑклÑÑаÑÑÑÑ Ð¿Ð°ÐºÐµÑÑ Ð² ÑоÑÑоÑнии NOTRACK.
ЧÑÐ¾Ð±Ñ Ð½Ðµ загÑомождаÑÑ Ð¾Ð¿Ð¸Ñание, ÑмоÑÑиÑе пÑÐ¸Ð¼ÐµÑ ÑеÑÐµÐ½Ð¸Ñ ÑÑой пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð² blockcheck.sh
.
Ðногда ÑÑебÑеÑÑÑ Ð¿Ð¾Ð´Ð³ÑÑжаÑÑ Ð¼Ð¾Ð´ÑÐ»Ñ ip6table_raw
Ñ Ð¿Ð°ÑамеÑÑом raw_before_defrag=1
.
Ð openwrt паÑамеÑÑÑ Ð¼Ð¾Ð´Ñлей ÑказÑваÑÑÑÑ ÑеÑез пÑобел поÑле иÑ
названий в ÑайлаÑ
/etc/modules.d
.
Ð ÑÑадиÑионнÑÑ
ÑиÑÑемаÑ
поÑмоÑÑиÑе иÑполÑзÑеÑÑÑ Ð»Ð¸ iptables-legacy
или iptables-nft
. ÐÑли legacy, Ñо нÑжно ÑоздаÑÑ Ñайл
/etc/modprobe.d/ip6table_raw.conf
Ñ ÑодеÑжимÑм :
options ip6table_raw raw_before_defrag=1
РнекоÑоÑÑÑ
ÑÑадиÑионнÑÑ
диÑÑÑибÑÑиваÑ
можно измениÑÑ ÑекÑÑий ip6tables ÑеÑез : update-alternatives --config ip6tables
ÐÑли Ð²Ñ Ñ
оÑиÑе оÑÑаваÑÑÑÑ Ð½Ð° iptables-nft, вам пÑидеÑÑÑ Ð¿ÐµÑеÑобÑаÑÑ Ð¿Ð°ÑÑеннÑÑ Ð²ÐµÑÑиÑ. ÐаÑÑ ÑовÑем неболÑÑой.
Ð nft.c
найдиÑе ÑÑагменÑ:
{
.name = "PREROUTING",
.type = "filter",
.prio = -300, /* NF_IP_PRI_RAW */
.hook = NF_INET_PRE_ROUTING,
},
{
.name = "OUTPUT",
.type = "filter",
.prio = -300, /* NF_IP_PRI_RAW */
.hook = NF_INET_LOCAL_OUT,
},
и замениÑе везде -300 на -450.
ÐÑо нÑжно ÑделаÑÑ Ð²ÑÑÑнÑÑ, никакой авÑомаÑики в blockcheck.sh
неÑ.
Ðибо можно Ñаз и навÑегда избавиÑÑÑÑ Ð¾Ñ ÑÑой пÑоблемÑ, иÑполÑзÑÑ nftables
. Там можно ÑоздаÑÑ netfilter hook
Ñ Ð»ÑбÑм пÑиоÑиÑеÑом. ÐÑполÑзÑйÑе пÑиоÑиÑÐµÑ -401 и ниже.
ÐÑи иÑполÑзовании iptables и NAT, Ð¿Ð¾Ñ Ð¾Ð¶Ðµ, ÑÑо Ð½ÐµÑ ÑпоÑоба пÑиÑепиÑÑ Ð¾Ð±ÑабоÑÑик оÑеÑеди поÑле NAT. ÐÐ°ÐºÐµÑ Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð² nfqws Ñ source адÑеÑом внÑÑÑенней ÑеÑи, заÑем ÑÑагменÑиÑÑеÑÑÑ Ð¸ Ñже не обÑабаÑÑваеÑÑÑ NAT. Так и ÑÑ Ð¾Ð´Ð¸Ñ Ð²Ð¾ внеÑÑÑ ÑеÑÑ Ñ src ip 192.168.x.x. СледоваÑелÑно, меÑод не ÑÑабаÑÑваеÑ. Ðидимо единÑÑвеннÑй ÑабоÑий меÑод - оÑказаÑÑÑÑ Ð¾Ñ iptables и иÑполÑзоваÑÑ nftables. Ð¥Ñк должен бÑÑÑ Ñ Ð¿ÑиоÑиÑеÑом 101 или вÑÑе.
ÐÐÐÐÐСТÐÐÐÐЫРСТРÐТÐÐÐÐ
nfqws ÑпоÑобен по-ÑÐ°Ð·Ð½Ð¾Ð¼Ñ ÑеагиÑоваÑÑ Ð½Ð° ÑазлиÑнÑе запÑоÑÑ Ð¸ пÑименÑÑÑ ÑазнÑе ÑÑÑаÑегии дÑÑениÑ.
ÐÑо Ñеализовано поÑÑедÑÑвом поддеÑжки множеÑÑва пÑоÑилей дÑÑениÑ.
ÐÑоÑили ÑазделÑÑÑÑÑ Ð² командной ÑÑÑоке паÑамеÑÑом --new
. ÐеÑвÑй пÑоÑÐ¸Ð»Ñ ÑоздаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки.
ÐÐ»Ñ Ð½ÐµÐ³Ð¾ не нÑжно --new
. ÐаждÑй пÑоÑÐ¸Ð»Ñ Ð¸Ð¼ÐµÐµÑ ÑилÑÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ пÑÑÑ, Ñо еÑÑÑ Ð¿ÑоÑÐ¸Ð»Ñ ÑдовлеÑвоÑÑеÑ
лÑбÑм ÑÑловиÑм.
ФилÑÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¶ÐµÑÑкие паÑамеÑÑÑ: веÑÑÐ¸Ñ ip пÑоÑокола, ipset и поÑÑÑ tcp/udp.
Ðни вÑегда однознаÑно иденÑиÑиÑиÑÑÑÑÑÑ Ð´Ð°Ð¶Ðµ на нÑлевой Ñазе деÑинÑ
ÑонизаÑии, когда еÑе Ñ
оÑÑ Ð¸ L7 неизвеÑÑнÑ.
РкаÑеÑÑве мÑгкого ÑилÑÑÑа могÑÑ Ð²ÑÑÑÑпаÑÑ Ñ
оÑÑ-лиÑÑÑ Ð¸ пÑоÑокол пÑикладного ÑÑÐ¾Ð²Ð½Ñ (l7).
L7 пÑоÑокол ÑÑановиÑÑÑ Ð¸Ð·Ð²ÐµÑÑен обÑÑно поÑле пеÑвого пакеÑа Ñ Ð´Ð°Ð½Ð½Ñми.
ÐÑи поÑÑÑплении запÑоÑа Ð¸Ð´ÐµÑ Ð¿ÑовеÑка пÑоÑилей в поÑÑдке Ð¾Ñ Ð¿ÐµÑвого до поÑледнего до
доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ Ð¿ÐµÑвого ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ñ ÑилÑÑÑом.
ÐеÑÑкие паÑамеÑÑÑ ÑилÑÑÑа ÑвеÑÑÑÑÑÑ Ð¿ÐµÑвÑми. ÐÑи неÑовпадении Ð¸Ð´ÐµÑ ÑÑÐ°Ð·Ñ Ð¶Ðµ пеÑеÑ
од к ÑледÑÑÑÐµÐ¼Ñ Ð¿ÑоÑилÑ.
ÐÑли какой-Ñо пÑоÑÐ¸Ð»Ñ ÑдовлеÑвоÑÑÐµÑ Ð¶ÐµÑÑÐºÐ¾Ð¼Ñ ÑилÑÑÑÑ Ð¸ L7 ÑилÑÑÑÑ Ð¸ ÑодеÑÐ¶Ð¸Ñ Ð°Ð²Ñо-Ñ
оÑÑлиÑÑ, он вÑбиÑаеÑÑÑ ÑÑазÑ.
ÐÑли пÑоÑÐ¸Ð»Ñ ÑдовлеÑвоÑÑÐµÑ Ð¶ÐµÑÑÐºÐ¾Ð¼Ñ ÑилÑÑÑÑ Ð¸ L7 ÑилÑÑÑÑ, Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ задан Ñ
оÑÑлиÑÑ, и Ñ Ð½Ð°Ñ ÐµÑе Ð½ÐµÑ Ð¸Ð¼ÐµÐ½Ð¸ Ñ
оÑÑа,
Ð¸Ð´ÐµÑ Ð¿ÐµÑеÑ
од к ÑледÑÑÑÐµÐ¼Ñ Ð¿ÑоÑилÑ. РпÑоÑивном ÑлÑÑае Ð¸Ð´ÐµÑ Ð¿ÑовеÑка по Ñ
оÑÑлиÑÑам ÑÑого пÑоÑилÑ.
ÐÑли Ð¸Ð¼Ñ Ñ
оÑÑа ÑдовлеÑвоÑÑÐµÑ Ð»Ð¸ÑÑам, вÑбиÑаеÑÑÑ ÑÑÐ¾Ñ Ð¿ÑоÑилÑ. ÐнаÑе Ð¸Ð´ÐµÑ Ð¿ÐµÑеÑ
од к ÑледÑÑÑемÑ.
ÐÐ¾Ð¶ÐµÑ Ñак ÑлÑÑиÑÑÑÑ, ÑÑо до полÑÑÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ñ
оÑÑа или ÑÐ·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ L7 пÑоÑокола Ñоединение Ð¸Ð´ÐµÑ Ð¿Ð¾ Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¿ÑоÑилÑ,
а пÑи вÑÑÑнении ÑÑиÑ
паÑамеÑÑов пÑоÑÐ¸Ð»Ñ Ð¼ÐµÐ½ÑеÑÑÑ Ð½Ð° леÑÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизойÑи даже Ð´Ð²Ð°Ð¶Ð´Ñ - пÑи вÑÑÑнении L7
и имени Ñ
оÑÑа. ЧаÑе вÑего ÑÑо вÑÑÑнение ÑовмеÑаеÑÑÑ Ð² одно дейÑÑвие, поÑколÑÐºÑ Ð¿Ð¾ Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¿Ð°ÐºÐµÑÑ ÐºÐ°Ðº пÑавило ÑзнаеÑÑÑ Ð¸ L7, и Ñ
оÑÑ.
ÐоÑÑÐ¾Ð¼Ñ ÐµÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ Ð¿Ð°ÑамеÑÑÑ Ð´ÑÑÐµÐ½Ð¸Ñ Ð½Ñлевой ÑазÑ, ÑÑаÑелÑно пÑодÑмÑвайÑе ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизойÑи пÑи пеÑеклÑÑении ÑÑÑаÑегии.
СмоÑÑиÑе debug log, ÑÑÐ¾Ð±Ñ Ð»ÑÑÑе понÑÑÑ ÑÑо Ð´ÐµÐ»Ð°ÐµÑ nfqws.
ÐÑмеÑаÑÐ¸Ñ Ð¿ÑоÑилей Ð¸Ð´ÐµÑ Ñ 1 до N. ÐоÑледним в ÑепоÑке ÑоздаеÑÑÑ Ð¿ÑÑÑой пÑоÑÐ¸Ð»Ñ Ñ Ð½Ð¾Ð¼ÐµÑом 0.
Ðн иÑполÑзÑеÑÑÑ, когда никакие ÑÑÐ»Ð¾Ð²Ð¸Ñ ÑилÑÑÑов не Ñовпали.
[!IMPORTANT] ÐножеÑÑвеннÑе ÑÑÑаÑегии ÑоздавалиÑÑ ÑолÑко Ð´Ð»Ñ ÑлÑÑаев, когда невозможно обÑединиÑÑ Ð¸Ð¼ÐµÑÑиеÑÑ ÑÑÑаÑегии Ð´Ð»Ñ ÑазнÑÑ ÑеÑÑÑÑов. ÐопиÑование ÑÑÑаÑегий из blockcheck Ð´Ð»Ñ ÑазнÑÑ ÑайÑов во множеÑÑво пÑоÑилей без Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ ÐºÐ°Ðº они ÑабоÑаÑÑ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÑ Ðº нагÑÐ¾Ð¼Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов, коÑоÑÑе вÑе Ñавно не покÑоÑÑ Ð²Ñе возможнÑе заблокиÑованнÑе ÑеÑÑÑÑÑ. ÐÑ ÑолÑко ÑвÑзниÑе в ÑÑой каÑе.
[!IMPORTANT] user-mode ÑеализаÑÐ¸Ñ ipset ÑоздавалаÑÑ Ð½Ðµ как ÑÐ´Ð¾Ð±Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÐ½Ð° *nix веÑÑии, Ñеализованной в ÑдÑе. ÐаÑÐ¸Ð°Ð½Ñ Ð² ÑдÑе ÑабоÑÐ°ÐµÑ Ð³Ð¾Ñаздо ÑÑÑекÑивнее. ÐÑо ÑоздавалоÑÑ Ð´Ð»Ñ ÑиÑÑем без подеÑжки ipset в ÑдÑе. ÐонкÑеÑно - Windows и ÑдÑа Linux, ÑобÑаннÑе без nftables и ipset модÑлей ÑдÑа. ÐапÑимеÑ, в android Ð½ÐµÑ ipset.
IPTABLES ÐÐЯ NFQWS
iptables Ð´Ð»Ñ Ð·Ð°Ð´ÐµÐ¹ÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ñаки на пеÑвÑе пакеÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð² tcp Ñоединении :
iptables -t mangle -I POSTROUTING -o <внеÑний_инÑеÑÑейÑ> -p tcp -m multiport --dports 80,443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
ÐÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð¿ÑименÑем, когда DPI не ÑÐ»ÐµÐ´Ð¸Ñ Ð·Ð° вÑеми запÑоÑами http внÑÑÑи keep-alive ÑеÑÑии. ÐÑли ÑледиÑ, напÑавлÑем ÑолÑко пеÑвÑй Ð¿Ð°ÐºÐµÑ Ð¾Ñ https и вÑе пакеÑÑ Ð¾Ñ http :
iptables -t mangle -I POSTROUTING -o <внеÑний_инÑеÑÑейÑ> -p tcp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
iptables -t mangle -I POSTROUTING -o <внеÑний_инÑеÑÑейÑ> -p tcp --dport 80 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
mark нÑжен, ÑÑÐ¾Ð±Ñ ÑгенеÑиÑованнÑй подделÑнÑй Ð¿Ð°ÐºÐµÑ Ð½Ðµ попал опÑÑÑ Ðº нам на обÑабоÑкÑ. nfqws вÑÑÑавлÑÐµÑ fwmark пÑи его оÑÑÑлке. Ñ Ð¾ÑÑ nfqws ÑпоÑобен ÑамоÑÑоÑÑелÑно ÑазлиÑаÑÑ Ð¿Ð¾Ð¼ÐµÑеннÑе пакеÑÑ, ÑилÑÑÑ Ð² iptables по mark нÑжен пÑи иÑполÑзовании connbytes, ÑÑÐ¾Ð±Ñ Ð½Ðµ допÑÑÑиÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑов. ÐÑоÑеÑÑинг оÑеÑеди - пÑоÑеÑÑ Ð¾ÑложеннÑй. ÐÑли ÑдÑо Ð¸Ð¼ÐµÐµÑ Ð¿Ð°ÐºÐµÑÑ Ð½Ð° оÑÑÑÐ»ÐºÑ Ð²Ð½Ðµ оÑеÑеди - оно Ð¸Ñ Ð¾ÑпÑавлÑÐµÑ Ð½ÐµÐ·Ð°Ð¼ÐµÐ´Ð»Ð¸ÑелÑно. Ðзменение пÑавилÑного поÑÑдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑов пÑи деÑÐ¸Ð½Ñ ÑонизаÑии Ð»Ð¾Ð¼Ð°ÐµÑ Ð²ÑÑ Ð¸Ð´ÐµÑ. Так же бÑли замеÑÐµÐ½Ñ Ð´ÐµÐ´Ð»Ð¾ÐºÐ¸ пÑи доÑÑаÑоÑно болÑÑой оÑÑÑлке пакеÑов из nfqws и оÑÑÑÑÑÑвии mark ÑилÑÑÑа. ÐÑоÑеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑнÑÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð½Ð°Ð»Ð¸Ñие ÑилÑÑÑа по mark в ip/nf tables можно ÑÑиÑаÑÑ Ð¾Ð±ÑзаÑелÑнÑм.
ÐоÑÐµÐ¼Ñ --connbytes 1:6
:
- 1 - Ð´Ð»Ñ ÑабоÑÑ Ð¼ÐµÑодов деÑÐ¸Ð½Ñ ÑонизаÑии 0-й ÑÐ°Ð·Ñ Ð¸ коÑÑекÑной ÑабоÑÑ conntrack
- 2 - иногда даннÑе идÑÑ Ð² 3-м пакеÑе 3-way handshake
- 3 - ÑÑандаÑÑÐ½Ð°Ñ ÑиÑÑаÑÐ¸Ñ Ð¿Ñиема одного пакеÑа запÑоÑа
- 4-6 - на ÑлÑÑай ÑеÑÑанÑмиÑÑии или запÑоÑа длиной в неÑколÑко пакеÑов (TLSClientHello Ñ kyber, напÑимеÑ)
ÐÐ»Ñ Ñежима autottl необÑ
одимо пеÑенапÑавление вÑ
одÑÑего SYN,ACK
пакеÑа или пеÑвого пакеÑа ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (ÑÑо обÑÑно еÑÑÑ Ñоже Ñамое).
ÐÐ»Ñ Ñежима autohostlist необÑ
Ð¾Ð´Ð¸Ð¼Ñ Ð²Ñ
одÑÑие RST и http redirect.
Ðожно поÑÑÑоиÑÑ ÑилÑÑÑ Ð½Ð° tcp flags Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ SYN,ACK
и модÑле u32 Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка Ñ
аÑакÑеÑнÑÑ
паÑÑеÑнов http redirect,
но пÑоÑе иÑполÑзоваÑÑ connbytes Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑколÑкиÑ
наÑалÑнÑÑ
вÑ
одÑÑиÑ
пакеÑов.
iptables -t mangle -I PREROUTING -i <внеÑний инÑеÑÑейÑ> -p tcp -m multiport --sports 80,443 -m connbytes --connbytes-dir=reply --connbytes-mode=packets --connbytes 1:3 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
ÐÐ»Ñ quic :
iptables -t mangle -I POSTROUTING -o <внеÑний_инÑеÑÑейÑ> -p udp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
6 пакеÑов беÑеÑÑÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÐºÑÑÑÑ ÑлÑÑаи возможнÑÑ ÑеÑÑанÑмиÑÑий quic initial в ÑлÑÑае Ð¿Ð»Ð¾Ñ Ð¾Ð¹ ÑвÑзи или еÑли ÑеÑÐ²ÐµÑ Ð¿Ð»Ð¾Ñ Ð¾ ÑÐµÐ±Ñ ÑÑвÑÑвÑеÑ, а пÑиложение наÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ на quic, не пеÑÐµÑ Ð¾Ð´Ñ Ð½Ð° tcp. Ð Ñак же Ð´Ð»Ñ ÑабоÑÑ autohostlist по quic. Ðднако, autohostlist Ð´Ð»Ñ quic не ÑекомендÑеÑÑÑ.
NFTABLES ÐÐЯ NFQWS
Ðожно наÑаÑÑ Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ конÑигÑÑаÑии.
IFACE_WAN=wan
nft create table inet ztest
nft add chain inet ztest post "{type filter hook postrouting priority mangle;}"
nft add rule inet ztest post oifname $IFACE_WAN meta mark and 0x40000000 == 0 tcp dport "{80,443}" ct original packets 1-6 queue num 200 bypass
nft add rule inet ztest post oifname $IFACE_WAN meta mark and 0x40000000 == 0 udp dport 443 ct original packets 1-6 queue num 200 bypass
# auto hostlist with avoiding wrong ACK numbers in RST,ACK packets sent by russian DPI
sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1
nft add chain inet ztest pre "{type filter hook prerouting priority filter;}"
nft add rule inet ztest pre iifname $IFACE_WAN tcp sport "{80,443}" ct reply packets 1-3 queue num 200 bypass
ÐÐ»Ñ Ð·Ð°Ð´ÐµÐ¹ÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ IP ÑÑагменÑаÑии и datanoack
на пÑоÑ
одÑÑие пакеÑÑ ÑÑебÑеÑÑÑ Ð¾ÑÐ¾Ð±Ð°Ñ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ ÑепоÑек, пеÑенапÑавлÑÑÑÐ°Ñ Ð¿Ð°ÐºÐµÑÑ Ð¿Ð¾Ñле NAT.
Ð ÑкÑипÑаÑ
zapret ÑÑа ÑÑ
ема назÑваеÑÑÑ POSTNAT
, и она возможна ÑолÑко на nftables.
СгенеÑиÑованнÑе nfqws пакеÑÑ ÑÑебÑеÑÑÑ Ð½Ð° Ñаннем ÑÑапе помеÑаÑÑ ÐºÐ°Ðº notrack, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ не бÑли иÑпоÑÑÐµÐ½Ñ NAT.
IFACE_WAN=wan
nft create table inet ztest
nft add chain inet ztest postnat "{type filter hook postrouting priority srcnat+1;}"
nft add rule inet ztest postnat oifname $IFACE_WAN meta mark and 0x40000000 == 0 tcp dport "{80,443}" ct original packets 1-6 queue num 200 bypass
nft add rule inet ztest postnat oifname $IFACE_WAN meta mark and 0x40000000 == 0 udp dport 443 ct original packets 1-6 queue num 200 bypass
nft add chain inet ztest predefrag "{type filter hook output priority -401;}"
nft add rule inet ztest predefrag "mark & 0x40000000 != 0x00000000 notrack"
Удаление ÑеÑÑовой ÑаблиÑÑ :
nft delete table inet ztest
FLOW OFFLOADING
ÐÑли ваÑе ÑÑÑÑойÑÑво поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð°Ð¿Ð¿Ð°ÑаÑное ÑÑкоÑение (flow offloading, hardware nat, hardware acceleration), Ñо iptables могÑÑ Ð½Ðµ ÑабоÑаÑÑ. ÐÑи вклÑÑенном offloading Ð¿Ð°ÐºÐµÑ Ð½Ðµ пÑÐ¾Ñ Ð¾Ð´Ð¸Ñ Ð¿Ð¾ обÑÑÐ½Ð¾Ð¼Ñ Ð¿ÑÑи netfilter. ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ или его оÑклÑÑиÑÑ, или вÑбоÑоÑно им ÑпÑавлÑÑÑ.
РновÑÑ
ÑдÑаÑ
пÑиÑÑÑÑÑвÑÐµÑ software flow offloading (SFO).
ÐакеÑÑ, пÑоÑ
одÑÑие ÑеÑез SFO, Ñак же пÑоÑ
одÑÑ Ð¼Ð¸Ð¼Ð¾ болÑÑей ÑаÑÑи меÑ
анизмов iptables. ÐÑи вклÑÑенном SFO ÑабоÑаеÑ
DNAT/REDIRECT (tpws). ÐÑи ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸ÑклÑÑаÑÑÑÑ Ð¸Ð· offloading. Ðднако, оÑÑалÑнÑе ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ð´ÑÑ ÑеÑез SFO, поÑомÑ
NFQUEUE бÑÐ´ÐµÑ ÑÑабаÑÑваÑÑ ÑолÑко до помеÑÐµÐ½Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² flowtable. ÐÑакÑиÑеÑки ÑÑо ознаÑаеÑ, ÑÑо поÑÑи веÑÑ ÑÑнкÑионал nfqws ÑабоÑаÑÑ Ð½Ðµ бÑдеÑ.
Offload вклÑÑаеÑÑÑ ÑеÑез ÑпеÑиалÑнÑй target в iptables FLOWOFFLOAD
. Ðе обÑзаÑелÑно пÑопÑÑкаÑÑ Ð²ÐµÑÑ ÑÑаÑик ÑеÑез offload. Ðожно иÑклÑÑиÑÑ Ð¸Ð·
offload ÑоединениÑ, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð¿Ð°ÑÑÑ Ð½Ð° tpws или nfqws. openwrt не пÑедÑÑмаÑÑÐ¸Ð²Ð°ÐµÑ Ð²ÑбоÑоÑного ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ offload.
ÐоÑÑÐ¾Ð¼Ñ ÑкÑипÑÑ zapret поддеÑживаÑÑ ÑÐ²Ð¾Ñ ÑиÑÑÐµÐ¼Ñ Ð²ÑбоÑоÑного ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ offload в openwrt.
iptables target FLOWOFFLOAD
- ÑÑо пÑопÑиеÑаÑное изобÑеÑение openwrt.
УпÑавление offload в nftables Ñеализовано в базовом ÑдÑе linux без паÑÑей.
tpws
tpws - ÑÑо transparent proxy.
@<config_file>|$<config_file> ; ÑиÑаÑÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ Ð¸Ð· Ñайла. опÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ Ð¿ÐµÑвой. оÑÑалÑнÑе опÑии игноÑиÑÑÑÑÑÑ.
--debug=0|1|2|syslog|@<filename> ; 0,1,2 = логиÑование на коÑÐ¾Ð»Ñ : 0=ÑиÑ
о, 1(default)=подÑобно, 2=оÑладка.
--debug-level=0|1|2 ; ÑказаÑÑ ÑÑÐ¾Ð²ÐµÐ½Ñ Ð»Ð¾Ð³Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ syslog и @<filename>
--dry-run ; пÑовеÑиÑÑ Ð¾Ð¿Ñии командной ÑÑÑоки и вÑйÑи. код 0 - ÑÑпеÑÐ½Ð°Ñ Ð¿ÑовеÑка.
--daemon ; демонизиÑоваÑÑ Ð¿ÑогÑ
--pidfile=<file> ; ÑоÑ
ÑаниÑÑ PID в Ñайл
--user=<username> ; менÑÑÑ uid пÑоÑеÑÑа
--uid=uid[:gid] ; менÑÑÑ uid пÑоÑеÑÑа
--bind-addr ; на каком адÑеÑе ÑлÑÑаÑÑ. Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ipv4 или ipv6 адÑеÑ
; еÑли Ñказан ipv6 link local, Ñо ÑÑебÑеÑÑÑ ÑказаÑÑ Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾ он инÑеÑÑейÑа : fe80::1%br-lan
--bind-linklocal=no|unwanted|prefer|force ; no : биндаÑÑÑÑ ÑолÑко на global ipv6
; unwanted (default) : пÑедпоÑÑиÑелÑно global, еÑли Ð½ÐµÑ - LL
; prefer : пÑедпоÑÑиÑелÑно LL, еÑли Ð½ÐµÑ - global
; force : биндаÑÑÑÑ ÑолÑко на LL
--bind-iface4=<iface> ; ÑлÑÑаÑÑ Ð½Ð° пеÑвом ipv4 инÑеÑÑейÑа iface
--bind-iface6=<iface> ; ÑлÑÑаÑÑ Ð½Ð° пеÑвом ipv6 инÑеÑÑейÑа iface
--bind-wait-ifup=<sec> ; ждаÑÑ Ð´Ð¾ N ÑекÑнд поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¸ поднÑÑÐ¸Ñ Ð¸Ð½ÑеÑÑейÑа
--bind-wait-ip=<sec> ; ждаÑÑ Ð´Ð¾ N ÑекÑнд полÑÑÐµÐ½Ð¸Ñ IP адÑеÑа (еÑли задан --bind-wait-ifup - вÑÐµÐ¼Ñ Ð¸Ð´ÐµÑ Ð¿Ð¾Ñле поднÑÑÐ¸Ñ Ð¸Ð½ÑеÑÑейÑа)
--bind-wait-ip-linklocal=<sec>
; Ð¸Ð¼ÐµÐµÑ ÑмÑÑл ÑолÑко пÑи задании --bind-wait-ip
; --bind-linklocal=unwanted : ÑоглаÑиÑÑÑÑ Ð½Ð° LL поÑле N ÑекÑнд
; --bind-linklocal=prefer : ÑоглаÑиÑÑÑÑ Ð½Ð° global address поÑле N ÑекÑнд
--bind-wait-only ; подождаÑÑ Ð²Ñе Ð±Ð¸Ð½Ð´Ñ Ð¸ вÑйÑи. ÑезÑлÑÑÐ°Ñ 0 в ÑлÑÑае ÑÑпеÑ
а, инаÑе не 0.
--connect-bind-addr ; Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾ адÑеÑа подклÑÑаÑÑÑÑ Ð²Ð¾ внеÑнÑÑ ÑеÑÑ. Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ipv4 или ipv6 адÑеÑ
; еÑли Ñказан ipv6 link local, Ñо ÑÑебÑеÑÑÑ ÑказаÑÑ Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾ он инÑеÑÑейÑа : fe80::1%br-lan
; опÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð²ÑоÑÑÑÑÑÑ Ð´Ð»Ñ v4 и v6 адÑеÑов
; опÑÐ¸Ñ Ð½Ðµ оÑменÑÐµÑ Ð¿Ñавил маÑÑÑÑÑизаÑии ! вÑÐ±Ð¾Ñ Ð¸Ð½ÑеÑÑейÑа опÑеделÑеÑÑÑ Ð»Ð¸ÑÑ Ð¿Ñавилами маÑÑÑÑÑизаÑии, кÑоме ÑлÑÑÐ°Ñ v6 link local.
--socks ; вмеÑÑо пÑозÑаÑного пÑокÑи ÑеализоваÑÑ socks4/5 proxy
--no-resolve ; запÑеÑиÑÑ ÑеÑолвинг имен ÑеÑез socks5
--resolve-threads ; колиÑеÑÑво поÑоков ÑеÑолвеÑа
--port=<port> ; на каком поÑÑÑ ÑлÑÑаÑÑ
--maxconn=<max_connections> ; макÑималÑное колиÑеÑÑво Ñоединений Ð¾Ñ ÐºÐ»Ð¸ÐµÐ½Ñов к пÑокÑи
--maxfiles=<max_open_files> ; Ð¼Ð°ÐºÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑайловÑÑ
деÑкÑипÑоÑов (setrlimit). мин ÑÑебование (X*connections+16), где X=6 в tcp proxy mode, X=4 в Ñежиме ÑампеÑинга.
; ÑÑÐ¾Ð¸Ñ ÑделаÑÑ Ð·Ð°Ð¿Ð°Ñ Ñ ÐºÐ¾ÑÑÑиÑиенÑом как минимÑм 1.5. по ÑмолÑÐ°Ð½Ð¸Ñ maxfiles (X*connections)*1.5+16
--max-orphan-time=<sec> ; еÑли Ð²Ñ Ð·Ð°Ð¿ÑÑкаеÑе ÑеÑез tpws ÑоÑÑенÑ-ÐºÐ»Ð¸ÐµÐ½Ñ Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑвом ÑаздаÑ, он пÑÑаеÑÑÑ ÑÑÑановиÑÑ Ð¾ÑÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾ иÑÑ
одÑÑиÑ
Ñоединений,
; болÑÑÐ°Ñ ÑаÑÑÑ Ð¸Ð· коÑоÑÑÑ
оÑваливаеÑÑÑ Ð¿Ð¾ ÑаймаÑÑÑ (ÑзеÑа ÑидÑÑ Ð·Ð° NAT, firewall, ...)
; ÑÑÑановление ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² linux Ð¼Ð¾Ð¶ÐµÑ Ð´Ð»Ð¸ÑÑÑÑ Ð¾ÑÐµÐ½Ñ Ð´Ð¾Ð»Ð³Ð¾. локалÑнÑй ÐºÐ¾Ð½ÐµÑ Ð¾ÑвалилÑÑ, пеÑед ÑÑим поÑлав блок даннÑÑ
,
; tpws Ð¶Ð´ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ñдаленного конÑа, ÑÑÐ¾Ð±Ñ Ð¾ÑоÑлаÑÑ ÐµÐ¼Ñ ÑÑÐ¾Ñ Ð±Ð»Ð¾Ðº, и завиÑÐ°ÐµÑ Ð½Ð°Ð´Ð¾Ð»Ð³Ð¾.
; наÑÑÑойка позволÑÐµÑ ÑбÑаÑÑваÑÑ Ñакие подклÑÑÐµÐ½Ð¸Ñ ÑеÑез N ÑекÑнд, ÑеÑÑÑ Ð±Ð»Ð¾Ðº даннÑÑ
. по ÑмолÑÐ°Ð½Ð¸Ñ 5 Ñек. 0 ознаÑÐ°ÐµÑ Ð¾ÑклÑÑиÑÑ ÑÑнкÑиÑ
; ÑÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ дейÑÑвÑÐµÑ Ð½Ð° ÑÑпеÑно подклÑÑеннÑе Ñанее ÑоединениÑ
--local-rcvbuf=<bytes> ; SO_RCVBUF Ð´Ð»Ñ Ñоединений client-proxy
--local-sndbuf=<bytes> ; SO_SNDBUF Ð´Ð»Ñ Ñоединений client-proxy
--remote-rcvbuf=<bytes> ; SO_RCVBUF Ð´Ð»Ñ Ñоединений proxy-target
--remote-sndbuf=<bytes> ; SO_SNDBUF Ð´Ð»Ñ Ñоединений proxy-target
--nosplice ; не иÑполÑзоваÑÑ splice на linux ÑиÑÑемаÑ
--skip-nodelay ; не ÑÑÑанавливаÑÑ Ð² иÑÑ
одÑÑиÑ
ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ TCP_NODELAY. неÑовмеÑÑимо Ñо split.
--local-tcp-user-timeout=<seconds> ; ÑаймаÑÑ Ñоединений client-proxy (по ÑмолÑÐ°Ð½Ð¸Ñ : 10 Ñек, 0 = оÑÑавиÑÑ ÑиÑÑемное знаÑение)
--remote-tcp-user-timeout=<seconds> ; ÑаймаÑÑ Ñоединений proxy-target (по ÑмолÑÐ°Ð½Ð¸Ñ : 20 Ñек, 0 = оÑÑавиÑÑ ÑиÑÑемное знаÑение)
--fix-seg=<int> ; иÑпÑавлÑÑÑ Ð½ÐµÑдаÑи tcp ÑегменÑаÑии Ñеной задеÑжек Ð´Ð»Ñ Ð²ÑеÑ
клиенÑов и замедлениÑ. ждаÑÑ Ð´Ð¾ N мÑ. по ÑмолÑÐ°Ð½Ð¸Ñ 30 мÑ.
--split-pos=N|-N|marker+N|marker-N ; ÑпиÑок ÑеÑез запÑÑÑÑ Ð¼Ð°ÑкеÑов Ð´Ð»Ñ tcp ÑегменÑаÑии
--split-any-protocol ; пÑименÑÑÑ ÑегменÑаÑÐ¸Ñ Ðº лÑбÑм пакеÑам. по ÑмолÑÐ°Ð½Ð¸Ñ - ÑолÑко к извеÑÑнÑм пÑоÑоколам (http, TLS)
--disorder[=http|tls] ; пÑÑем манипÑлÑÑий Ñ ÑокеÑом вÑнÑÐ¶Ð´Ð°ÐµÑ Ð¾ÑпÑавлÑÑÑ Ð¿ÐµÑвÑм вÑоÑой ÑÐµÐ³Ð¼ÐµÐ½Ñ Ñазделенного запÑоÑа
--oob[=http|tls] ; оÑпÑавиÑÑ Ð±Ð°Ð¹Ñ out-of-band data (OOB) в конÑе пеÑвой ÑаÑÑи ÑплиÑа
--oob-data=<char>|0xHEX ; пеÑеопÑеделиÑÑ Ð±Ð°Ð¹Ñ OOB. по ÑмолÑÐ°Ð½Ð¸Ñ 0x00.
--hostcase ; менÑÑÑ ÑегиÑÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° "Host:". по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð° "host:".
--hostspell=HoST ; ÑоÑное напиÑание заголовка Host (можно "HOST" или "HoSt"). авÑомаÑом вклÑÑÐ°ÐµÑ --hostcase
--hostdot ; добавление ÑоÑки поÑле имени Ñ
оÑÑа : "Host: kinozal.tv."
--hosttab ; добавление ÑабÑлÑÑии поÑле имени Ñ
оÑÑа : "Host: kinozal.tv\t"
--hostnospace ; ÑбÑаÑÑ Ð¿Ñобел поÑле "Host:"
--hostpad=<bytes> ; добавиÑÑ Ð¿Ð°Ð´Ð´Ð¸Ð½Ð³-Ñ
едеÑов обÑей длиной <bytes> пеÑед Host:
--domcase ; домен поÑле Host: ÑделаÑÑ Ñаким : TeSt.cOm
--methodspace ; добавиÑÑ Ð¿Ñобел поÑле меÑода : "GET /" => "GET /"
--methodeol ; добавиÑÑ Ð¿ÐµÑевод ÑÑÑоки пеÑед меÑодом : "GET /" => "\r\nGET /"
--unixeol ; конвеÑÑиÑоваÑÑ 0D0A в 0A и иÑполÑзоваÑÑ Ð²ÐµÐ·Ð´Ðµ 0A
--tlsrec=N|-N|marker+N|marker-N ; Ñазбивка TLS ClientHello на 2 TLS records на Ñказанной позиÑии. ÐинималÑное ÑмеÑение - 6.
--mss=<int> ; ÑÑÑановиÑÑ MSS Ð´Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñа. Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°ÑÑавиÑÑ ÑеÑÐ²ÐµÑ ÑазбиваÑÑ Ð¾ÑвеÑÑ, но ÑÑÑеÑÑвенно ÑÐ½Ð¸Ð¶Ð°ÐµÑ ÑкоÑоÑÑÑ
--tamper-start=[n]<pos> ; наÑинаÑÑ Ð´ÑÑение ÑолÑко Ñ Ñказанной байÑовой позиÑии или номеÑа блока иÑÑ
одÑÑего поÑока (ÑÑиÑаеÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð½Ð°Ñала пÑинÑÑого блока)
--tamper-cutoff=[n]<pos> ; законÑиÑÑ Ð´ÑÑение на Ñказанной байÑовой позиÑии или номеÑе блока иÑÑ
одÑÑего поÑока (ÑÑиÑаеÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð½Ð°Ñала пÑинÑÑого блока)
--hostlist=<filename> ; дейÑÑвоваÑÑ ÑолÑко над доменами, вÑ
одÑÑими в ÑпиÑок из filename. Ð¿Ð¾Ð´Ð´Ð¾Ð¼ÐµÐ½Ñ Ð°Ð²ÑомаÑиÑеÑки ÑÑиÑÑваÑÑÑÑ.
; в Ñайле должен бÑÑÑ Ñ
оÑÑ Ð½Ð° каждой ÑÑÑоке.
; ÑпиÑок ÑиÑаеÑÑÑ Ð¿Ñи ÑÑаÑÑе и Ñ
ÑаниÑÑÑ Ð² памÑÑи в виде иеÑаÑÑ
иÑеÑкой ÑÑÑÑкÑÑÑÑ Ð´Ð»Ñ Ð±ÑÑÑÑого поиÑка.
; пÑи изменении вÑемени модиÑикаÑии Ñайла он пеÑеÑиÑÑваеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки по необÑ
одимоÑÑи
; ÑпиÑок Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½ в gzip. ÑоÑÐ¼Ð°Ñ Ð°Ð²ÑомаÑиÑеÑки ÑаÑпознаеÑÑÑ Ð¸ ÑазжимаеÑÑÑ
; ÑпиÑков Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво. пÑÑÑой обÑий лиÑÑ = его оÑÑÑÑÑÑвие
; Ñ
оÑÑÑ Ð¸Ð·Ð²Ð»ÐµÐºÐ°ÑÑÑÑ Ð¸Ð· Host: Ñ
едеÑа обÑÑнÑÑ
http запÑоÑов и из SNI в TLS ClientHello.
--hostlist-domains=<domain_list> ; ÑикÑиÑованнÑй ÑпиÑок доменов ÑеÑез зÑпÑÑÑÑ. можно иÑполÑзоваÑÑ # в наÑале Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑделÑнÑÑ
доменов.
--hostlist-exclude=<filename> ; не пÑименÑÑÑ Ð´ÑÑение к доменам из лиÑÑа. Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво лиÑÑов. ÑÑ
ема аналогиÑна include лиÑÑам.
--hostlist-exclude-domains=<domain_list> ; ÑикÑиÑованнÑй ÑпиÑок доменов ÑеÑез зÑпÑÑÑÑ. можно иÑполÑзоваÑÑ # в наÑале Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑделÑнÑÑ
доменов.
--hostlist-auto=<filename> ; обнаÑÑживаÑÑ Ð°Ð²ÑомаÑиÑеÑки блокиÑовки и заполнÑÑÑ Ð°Ð²ÑомаÑиÑеÑкий hostlist (ÑÑебÑÐµÑ Ð¿ÐµÑенапÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ
одÑÑего ÑÑаÑика)
--hostlist-auto-fail-threshold=<int> ; ÑколÑко Ñаз нÑжно обнаÑÑжиÑÑ ÑиÑÑаÑиÑ, поÑ
ожÑÑ Ð½Ð° блокиÑовкÑ, ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ñ
оÑÑ Ð² лиÑÑ (по ÑмолÑаниÑ: 3)
--hostlist-auto-fail-time=<int> ; вÑе ÑÑи ÑиÑÑаÑии Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð² пÑеделаÑ
Ñказанного колиÑеÑÑва ÑекÑнд (по ÑмолÑаниÑ: 60)
--hostlist-auto-debug=<logfile> ; лог положиÑелÑнÑÑ
ÑеÑений по autohostlist. позволÑÐµÑ ÑазобÑаÑÑÑÑ Ð¿Ð¾ÑÐµÐ¼Ñ Ñам поÑвлÑÑÑÑÑ Ñ
оÑÑÑ.
--new ; наÑало новой ÑÑÑаÑегии (новÑй пÑоÑилÑ)
--skip ; не иÑполÑзоваÑÑ ÑÑÐ¾Ñ Ð¿ÑоÑÐ¸Ð»Ñ . полезно Ð´Ð»Ñ Ð²Ñеменной деакÑиваÑии пÑоÑÐ¸Ð»Ñ Ð±ÐµÐ· ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов.
--filter-l3=ipv4|ipv6 ; ÑилÑÑÑ Ð²ÐµÑÑии ip Ð´Ð»Ñ ÑекÑÑей ÑÑÑаÑегии
--filter-tcp=[~]port1[-port2]|* ; ÑилÑÑÑ Ð¿Ð¾ÑÑов tcp Ð´Ð»Ñ ÑекÑÑей ÑÑÑаÑегии. ~ ознаÑÐ°ÐµÑ Ð¸Ð½Ð²ÐµÑÑиÑ. поддеÑживаеÑÑÑ ÑпиÑок ÑеÑез запÑÑÑÑ.
--filter-l7=[http|tls|quic|wireguard|dht|unknown] ; ÑилÑÑÑ Ð¿ÑоÑокола L6-L7. поддеÑживаеÑÑÑ Ð½ÐµÑколÑко знаÑений ÑеÑез запÑÑÑÑ.
--ipset=<filename> ; вклÑÑаÑÑий ip list. на каждой ÑÑÑоÑке ip или cidr ipv4 или ipv6. поддеÑживаеÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво лиÑÑов и gzip. пеÑеÑиÑка авÑомаÑиÑеÑкаÑ.
--ipset-ip=<ip_list> ; ÑикÑиÑованнÑй ÑпиÑок подÑеÑей ÑеÑез запÑÑÑÑ. можно иÑполÑзоваÑÑ # в наÑале Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑделÑнÑÑ
подÑеÑей.
--ipset-exclude=<filename> ; иÑклÑÑаÑÑий ip list. на каждой ÑÑÑоÑке ip или cidr ipv4 или ipv6. поддеÑживаеÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво лиÑÑов и gzip. пеÑеÑиÑка авÑомаÑиÑеÑкаÑ.
--ipset-exclude-ip=<ip_list> ; ÑикÑиÑованнÑй ÑпиÑок подÑеÑей ÑеÑез запÑÑÑÑ. можно иÑполÑзоваÑÑ # в наÑале Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑделÑнÑÑ
подÑеÑей.
TCP СÐÐÐÐÐТÐЦÐЯ Ð TPWS
tpws, как и nfqws, поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑвеннÑÑ ÑегменÑаÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑов. Ð¡Ð¿Ð»Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñии задаÑÑÑÑ Ð² --split-pos
.
УказÑваÑÑÑÑ Ð¼Ð°ÑкеÑÑ ÑеÑез запÑÑÑÑ. ÐпиÑание маÑкеÑов Ñм в Ñазделе nfqws.
Ðа пÑикладном ÑÑовне в обÑем ÑлÑÑае Ð½ÐµÑ Ð³Ð°ÑанÑиÑованного ÑÑедÑÑва заÑÑавиÑÑ ÑдÑо вÑплÑнÑÑÑ Ð±Ð»Ð¾Ðº даннÑÑ , поÑезаннÑм в опÑеделенном меÑÑе. ÐС деÑÐ¶Ð¸Ñ Ð±ÑÑÐµÑ Ð¾ÑÑÑлки (SNDBUF) Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑокеÑа. ÐÑли Ñ ÑокеÑа вклÑÑена опÑÐ¸Ñ TCP_NODELAY и бÑÑÐµÑ Ð¿ÑÑÑ, Ñо каждÑй send пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº оÑÑÑлке оÑделÑного ip пакеÑа или гÑÑÐ¿Ð¿Ñ Ð¿Ð°ÐºÐµÑов, еÑли блок не вмеÑаеÑÑÑ Ð² один ip пакеÑ. Ðднако, еÑли в Ð¼Ð¾Ð¼ÐµÐ½Ñ send Ñже имееÑÑÑ Ð½ÐµÐ¾ÑоÑланнÑй бÑÑеÑ, Ñо ÐС пÑиÑÐ¾ÐµÐ´Ð¸Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñе к немÑ, никакой оÑÑÑлки оÑделÑнÑм пакеÑом не бÑдеÑ. Ðо в ÑÑом ÑлÑÑае и Ñак Ð½ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ гаÑанÑии, ÑÑо какой-Ñо блок ÑообÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¹Ð´ÐµÑ Ð² наÑале пакеÑа, на ÑÑо ÑобÑÑвенно и заÑоÑÐµÐ½Ñ DPI. Разбиение бÑÐ´ÐµÑ Ð¿ÑоизводиÑÑÑ ÑоглаÑно MSS, коÑоÑÑй завиÑÐ¸Ñ Ð¾Ñ MTU иÑÑ Ð¾Ð´ÑÑего инÑеÑÑейÑа. Таким обÑазом DPI, ÑмоÑÑÑÑие в наÑало Ð¿Ð¾Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ TCP пакеÑа, бÑдÑÑ Ð¿Ð¾Ð»Ð¾Ð¼Ð°Ð½Ñ Ð² лÑбом ÑлÑÑае. ÐÑоÑокол http оÑноÑиÑÑÑ Ðº запÑоÑ-оÑвеÑнÑм пÑоÑоколам. Ðовое ÑообÑение поÑÑлаеÑÑÑ ÑолÑко Ñогда, когда ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð»ÑÑил запÑÐ¾Ñ Ð¸ полноÑÑÑÑ Ð²ÐµÑнÑл оÑвеÑ. ÐнаÑÐ¸Ñ Ð·Ð°Ð¿ÑÐ¾Ñ ÑакÑиÑеÑки бÑл не ÑолÑко оÑоÑлан, но и пÑинÑÑ Ð´ÑÑгой ÑÑоÑоной, а ÑледоваÑелÑно бÑÑÐµÑ Ð¾ÑÑÑлки пÑÑÑ, и ÑледÑÑÑие 2 send пÑиведÑÑ Ðº оÑÑÑлке ÑегменÑов даннÑÑ ÑазнÑми ip пакеÑами.
Таким обÑазом tpws обеÑпеÑÐ¸Ð²Ð°ÐµÑ ÑÐ¿Ð»Ð¸Ñ ÑолÑко за ÑÑÐµÑ ÑазделÑнÑÑ Ð²Ñзовов send, и ÑÑо обÑÑно ÑабоÑÐ°ÐµÑ Ð½Ð°Ð´ÐµÐ¶Ð½Ð¾, еÑли ÑазбиваÑÑ Ð½Ðµ на ÑлиÑком много ÑаÑÑей и не на ÑлиÑком мелкие подÑÑд ÑледÑÑÑие ÑаÑÑи. РпоÑледнем ÑлÑÑае Linux вÑе же Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑединиÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑаÑÑи, ÑÑо пÑÐ¸Ð²ÐµÐ´ÐµÑ Ðº неÑооÑвеÑÑÑÐ²Ð¸Ñ ÑеалÑной ÑегменÑаÑии ÑказаннÑм ÑÐ¿Ð»Ð¸Ñ Ð¿Ð¾Ð·Ð¸ÑиÑм. ÐÑÑгие ÐС в ÑÑом вопÑоÑе ведÑÑ ÑÐµÐ±Ñ Ð±Ð¾Ð»ÐµÐµ пÑедÑказÑемо. СпонÑанного обÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÑено не бÑло. ÐоÑÑÐ¾Ð¼Ñ Ð½Ðµ ÑÑÐ¾Ð¸Ñ Ð·Ð»Ð¾ÑпоÑÑеблÑÑÑ ÑплиÑами и в оÑобенноÑÑи мелкими ÑоÑедними пакеÑами.
Ðак показÑваеÑÑÑ Ð¿ÑакÑика, пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð½Ð°ÑаÑÑÑÑ , еÑли колиÑеÑÑво ÑÐ¿Ð»Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñий пÑевÑÑÐ°ÐµÑ 8.
ÐÑи неÑдаÑе ÑегменÑаÑии бÑÐ´ÐµÑ Ð²ÑводиÑÑÑÑ ÑообÑение WARNING ! segmentation failed
.
ÐÑли Ð²Ñ ÐµÐ³Ð¾ видиÑе, ÑÑо повод ÑнизиÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑÐ¿Ð»Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñий.
ÐÑли ÑÑо не ваÑианÑ, Ð´Ð»Ñ ÑÐ´ÐµÑ Linux >=4.6 еÑÑÑ Ð¿Ð°ÑамеÑÑ --fix-seg
. Ðн позволÑÐµÑ Ð¿Ð¾Ð´Ð¾Ð¶Ð´Ð°ÑÑ Ð·Ð°Ð²ÐµÑÑение оÑÑÑлки пеÑед оÑпÑавкой ÑледÑÑÑей ÑаÑÑи.
Ðо ÑÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð»Ð¾Ð¼Ð°ÐµÑ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð°ÑинÑ
Ñонной обÑабоÑки ÑобÑÑий. Ðока Ð¸Ð´ÐµÑ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ðµ, вÑе оÑÑалÑнÑе ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ обÑабаÑÑваÑÑÑÑ
и кÑаÑковÑеменно подвиÑаÑÑ. Ðа пÑакÑике ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑовÑем неболÑÑое ожидание - менее 10 мÑ.
РпÑоизводиÑÑÑ Ð¾Ð½Ð¾ ÑолÑко , еÑли пÑоиÑÑ
Ð¾Ð´Ð¸Ñ split, и в ожидании еÑÑÑ ÑеалÑÐ½Ð°Ñ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑÑ.
РвÑÑоконагÑÑженнÑÑ
ÑиÑÑемаÑ
даннÑй ваÑÐ¸Ð°Ð½Ñ Ð½Ðµ ÑекомендÑеÑÑÑ. Ðо Ð´Ð»Ñ Ð´Ð¾Ð¼Ð°Ñнего иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð¾Ð¹Ñи, и Ð²Ñ ÑÑи задеÑжки даже не замеÑиÑе.
ÐÑли Ð²Ñ Ð¿ÑÑаеÑеÑÑ ÑплиÑнÑÑÑ Ð¼Ð°ÑÑивнÑÑ Ð¿ÐµÑедаÑÑ Ñ --split-any-protocol
, когда инÑоÑмаÑÐ¸Ñ Ð¿Ð¾ÑÑÑÐ¿Ð°ÐµÑ Ð±ÑÑÑÑее оÑÑÑлки,
Ñо без --fix-seg
оÑибки ÑегменÑаÑии бÑдÑÑ ÑÑпаÑÑÑÑ ÑплоÑнÑм поÑоком.
РабоÑа по маÑÑÐ¸Ð²Ð½Ð¾Ð¼Ñ Ð¿Ð¾ÑÐ¾ÐºÑ Ð±ÐµÐ· огÑаниÑиÑелей --tamper-start
и --tamper-cutoff
обÑÑно лиÑена ÑмÑÑла.
tpws ÑабоÑÐ°ÐµÑ Ð½Ð° ÑÑовне ÑокеÑов, поÑÑÐ¾Ð¼Ñ Ð´Ð»Ð¸Ð½Ð½Ñй запÑоÑ, не вмеÑаÑÑийÑÑ Ð² 1 Ð¿Ð°ÐºÐµÑ (TLS Ñ kyber), он полÑÑÐ°ÐµÑ ÑелÑм блоком.
Ðа каждÑÑ ÑÐ¿Ð»Ð¸Ñ ÑаÑÑÑ Ð¾Ð½ Ð´ÐµÐ»Ð°ÐµÑ Ð¾ÑделÑнÑй вÑзов send()
. Ðо ÐС не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¾ÑоÑлаÑÑ Ð´Ð°Ð½Ð½Ñе в одном пакеÑе, еÑли ÑÐ°Ð·Ð¼ÐµÑ Ð¿ÑевÑÑÐ¸Ñ MTU.
Ð ÑлÑÑае ÑлиÑком болÑÑого ÑегменÑа ÐС дополниÑелÑно его поÑÐµÐ¶ÐµÑ Ð½Ð° более мелкие. РезÑлÑÑÐ°Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñен nfqws.
--disorder
заÑÑавлÑÐµÑ ÑлаÑÑ ÐºÐ°Ð¶Ð´Ñй 2-й Ð¿Ð°ÐºÐµÑ Ñ TTL=1, наÑÐ¸Ð½Ð°Ñ Ñ Ð¿ÐµÑвого.
Ð ÑеÑвеÑÑ Ð¿ÑиÑ
одÑÑ Ð²Ñе ÑеÑнÑе пакеÑÑ ÑÑазÑ. Ðа оÑÑалÑнÑе ÐС Ð´ÐµÐ»Ð°ÐµÑ ÑеÑÑанÑмиÑÑиÑ, и они пÑиÑ
одÑÑ Ð¿Ð¾Ñом.
ÐÑо Ñамо по Ñебе ÑÐ¾Ð·Ð´Ð°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑÑ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ (200 Ð¼Ñ Ð² linux Ð´Ð»Ñ Ð¿ÐµÑвой ÑеÑÑанÑмиÑÑии).
ÐнÑм ÑпоÑобом ÑделаÑÑ disorder в ÑÐ¾ÐºÐµÑ Ð²Ð°ÑианÑе не пÑедÑÑавлÑеÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм.
ÐÑоговÑй поÑÑдок Ð´Ð»Ñ 6 ÑегменÑов полÑÑаеÑÑÑ 2 4 6 1 3 5
.
--oob
вÑÑÑÐ»Ð°ÐµÑ 1 Ð±Ð°Ð¹Ñ out-of-band data поÑле пеÑвого ÑÐ¿Ð»Ð¸Ñ ÑегменÑа. oob
в каждом ÑегменÑе ÑплиÑа показал ÑÐµÐ±Ñ Ð½ÐµÐ½Ð°Ð´ÐµÐ¶Ð½Ñм.
СеÑÐ²ÐµÑ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ oob в ÑокеÑ.
СоÑеÑание oob
и disorder
возможно ÑолÑко в Linux. ÐÑÑалÑнÑе ÐС не ÑмеÑÑ Ñ Ñаким ÑпÑавлÑÑÑÑÑ. Флаг URG ÑеÑÑеÑÑÑ Ð¿Ñи ÑеÑÑанÑмиÑÑиÑÑ
.
СеÑÐ²ÐµÑ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ oob в ÑокеÑ. СоÑеÑание ÑÑиÑ
паÑамеÑÑов в оÑ, кÑоме Linux, вÑзÑÐ²Ð°ÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð½Ð° ÑÑапе запÑÑка.
TLSREC
--tlsrec
позволÑÑÑ Ð²Ð½ÑÑÑи одного tcp ÑегменÑа ÑазÑезаÑÑ TLS ClientHello на 2 TLS records. Ðожно иÑполÑзоваÑÑ ÑÑандаÑÑнÑй
меÑ
анизм маÑкеÑов Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¾ÑноÑиÑелÑнÑÑ
позиÑий.
--tlsrec
Ð»Ð¾Ð¼Ð°ÐµÑ Ð·Ð½Ð°ÑиÑелÑное колиÑеÑÑво ÑайÑов. ÐÑипÑобиблиоÑеки (openssl, ...) на оконеÑнÑÑ
http ÑеÑвеÑаÑ
без пÑоблем пÑинимаÑÑ ÑазделеннÑе tls ÑегменÑÑ, но мидлбокÑÑ - не вÑегда. РмидлбокÑам можно оÑнеÑÑи CDN
или ÑиÑÑÐµÐ¼Ñ ddos-заÑиÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¿Ñименение --tlsrec
без огÑаниÑиÑелей вÑÑд ли ÑелеÑообÑазно.
РРФ --tlsrec
обÑÑно не ÑабоÑÐ°ÐµÑ Ñ TLS 1.2, поÑÐ¾Ð¼Ñ ÑÑо ÑÐµÐ½Ð·Ð¾Ñ Ð¿Ð°ÑÑÐ¸Ñ ÑеÑÑиÑÐ¸ÐºÐ°Ñ ÑеÑвеÑа из ServerHello.
РабоÑÐ°ÐµÑ ÑолÑко Ñ TLS 1.3, поÑколÑÐºÑ Ñам ÑÑа инÑоÑмаÑÐ¸Ñ ÑиÑÑÑеÑÑÑ.
ÐпÑоÑем, ÑейÑÐ°Ñ ÑайÑов, не поддеÑживаÑÑиÑ
TLS 1.3, оÑÑалоÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾.
MSS
--mss
ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¾Ð¿ÑÐ¸Ñ ÑокеÑа TCP_MAXSEG. ÐÐ»Ð¸ÐµÐ½Ñ Ð²ÑÐ´Ð°ÐµÑ ÑÑо знаÑение в tcp опÑиÑÑ
SYN пакеÑа.
СеÑÐ²ÐµÑ Ð² оÑÐ²ÐµÑ Ð² SYN,ACK вÑÐ´Ð°ÐµÑ Ñвой MSS. Ðа пÑакÑике ÑеÑвеÑа обÑÑно ÑнижаÑÑ ÑазмеÑÑ Ð¾ÑÑÑлаемÑÑ
ими пакеÑов, но они
вÑе Ñавно не впиÑÑваÑÑÑÑ Ð² низкий MSS, ÑказаннÑй клиенÑом. ÐбÑÑно Ñем болÑÑе Ñказал клиенÑ, Ñем болÑÑе
ÑÐ»ÐµÑ ÑеÑвеÑ. Ðа TLS 1.2 еÑли ÑеÑÐ²ÐµÑ Ñазбил забÑÐ¾Ñ Ñак, ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð¼ÐµÐ½ из ÑеÑÑиÑикаÑа не попал в пеÑвÑй пакеÑ,
ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±Ð¼Ð°Ð½ÑÑÑ DPI, ÑекÑÑий оÑÐ²ÐµÑ ÑеÑвеÑа.
СÑ
ема Ð¼Ð¾Ð¶ÐµÑ Ð·Ð½Ð°ÑиÑелÑно ÑнизиÑÑ ÑкоÑоÑÑÑ Ð¸ ÑÑабоÑаÑÑ Ð½Ðµ на вÑеÑ
ÑайÑаÑ
.
С ÑилÑÑÑом по hostlist ÑовмеÑÑимо ÑолÑко в Ñежиме socks пÑи вклÑÑенном Ñдаленном ÑеÑолвинге Ñ
оÑÑов.
(firefox network.proxy.socks_remote_dns). ÐÑо единÑÑвеннÑй ваÑианÑ, когда tpws Ð¼Ð¾Ð¶ÐµÑ ÑзнаÑÑ Ð¸Ð¼Ñ Ñ
оÑÑа
еÑе на ÑÑапе ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоединениÑ.
ÐÑименÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð¿ÑÐ¸Ñ Ðº ÑайÑам TLS1.3, еÑли бÑоÑÐ·ÐµÑ Ñоже поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ TLS1.3, Ñо Ð²Ñ Ð´ÐµÐ»Ð°ÐµÑе ÑолÑко Ñ
Ñже.
Ðо Ð½ÐµÑ ÑпоÑоба авÑомаÑиÑеÑки ÑзнаÑÑ ÐºÐ¾Ð³Ð´Ð° надо пÑименÑÑÑ, когда неÑ, поÑколÑÐºÑ MSS Ð¸Ð´ÐµÑ ÑолÑко в
3-way handshake еÑе до обмена даннÑми, а веÑÑÐ¸Ñ TLS можно ÑзнаÑÑ ÑолÑко по оÑвеÑÑ ÑеÑвеÑа, коÑоÑÑй
Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к ÑеакÑии DPI.
ÐÑполÑзоваÑÑ ÑолÑко когда Ð½ÐµÑ Ð½Ð¸Ñего лÑÑÑе или Ð´Ð»Ñ Ð¾ÑделÑнÑÑ
ÑеÑÑÑÑов.
ÐÐ»Ñ http иÑполÑзоваÑÑ ÑмÑÑла неÑ, поÑÑÐ¾Ð¼Ñ Ð·Ð°Ð²Ð¾Ð´Ð¸Ñе оÑделÑнÑй desync profile Ñ ÑилÑÑÑом по поÑÑÑ 443.
РабоÑÐ°ÐµÑ ÑолÑко на Linux, не ÑабоÑÐ°ÐµÑ Ð½Ð° BSD и MacOS.
ÐРУÐÐÐ ÐÐÐ ÐÐÐТРЫ ÐУРÐÐÐЯ
ÐаÑамеÑÑ --hostpad=<bytes>
добавлÑÐµÑ Ð¿Ð°Ð´Ð´Ð¸Ð½Ð³-Ñ
едеÑов пеÑед Host:
на Ñказанное колиÑеÑÑво байÑов.
ÐÑли ÑÐ°Ð·Ð¼ÐµÑ <bytes>
ÑлиÑком болÑÑой, Ñо Ð¸Ð´ÐµÑ Ñазбивка на ÑазнÑе Ñ
едеÑÑ Ð¿Ð¾ 2K.
ÐбÑий бÑÑÐµÑ Ð¿Ñиема http запÑоÑа - 64K, болÑÑий паддинг не поддеÑживаеÑÑÑ, да и http ÑеÑвеÑа
Ñакое Ñже не пÑинимаÑÑ.
Ðолезно пÑоÑив DPI, вÑполнÑÑÑиÑ
ÑеаÑÑемблинг TCP Ñ Ð¾Ð³ÑаниÑеннÑм бÑÑеÑом.
ÐÑли ÑеÑ
ника ÑабоÑаеÑ, Ñо поÑле некоÑоÑого колиÑеÑÑва bytes http запÑÐ¾Ñ Ð½Ð°ÑÐ½ÐµÑ Ð¿ÑоÑ
одиÑÑ Ð´Ð¾ ÑайÑа.
ÐÑли пÑи ÑÑом кÑиÑиÑеÑкий ÑÐ°Ð·Ð¼ÐµÑ padding около MTU, знаÑÐ¸Ñ ÑкоÑее вÑего DPI не вÑполнÑÐµÑ ÑеаÑÑемблинг пакеÑов, и лÑÑÑе бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð¾Ð±ÑÑнÑе опÑии TCP ÑегменÑаÑии.
ÐÑли вÑе же ÑеаÑÑемблинг вÑполнÑеÑÑÑ, Ñо кÑиÑиÑеÑкий ÑÐ°Ð·Ð¼ÐµÑ Ð±ÑÐ´ÐµÑ Ð¾ÐºÐ¾Ð»Ð¾ ÑазмеÑа бÑÑеÑа DPI. Ðн Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ 4K или 8K, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ Ð¸ дÑÑгие знаÑениÑ.
ÐÐÐÐÐСТÐÐÐÐЫРСТРÐТÐÐÐÐ
РабоÑаÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñно nfqws, кÑоме некоÑоÑÑÑ
моменÑов.
ÐÐµÑ Ð¿Ð°ÑамеÑÑа --filter-udp
, поÑколÑÐºÑ tpws udp не поддеÑживаеÑ.
ÐеÑÐ¾Ð´Ñ Ð½Ñлевой ÑÐ°Ð·Ñ (--mss
) могÑÑ ÑабоÑаÑÑ Ð¿Ð¾ Ñ
оÑÑлиÑÑÑ Ð² одном единÑÑвенном ÑлÑÑае:
еÑли иÑполÑзÑеÑÑÑ Ñежим socks и ÑдаленнÑй ÑеÑолвинг Ñ
оÑÑов ÑеÑез пÑокÑи.
То еÑÑÑ ÑабоÑоÑпоÑобноÑÑÑ Ð²Ð°Ñей наÑÑÑойки в одном и Ñом же Ñежиме Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ñого,
пÑименÑÐµÑ Ð»Ð¸ ÐºÐ»Ð¸ÐµÐ½Ñ ÑдаленнÑй ÑеÑолвинг. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ¾Ñевидно.
Родной пÑогÑамме ÑабоÑаеÑ, в дÑÑгой - неÑ.
ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе пÑоÑÐ¸Ð»Ñ Ñ Ñ
оÑÑлиÑÑом , и вам нÑжен mss, ÑкажиÑе mss в пÑоÑиле Ñ Ñ
оÑÑлиÑÑом,
ÑоздайÑе еÑе один пÑоÑÐ¸Ð»Ñ Ð±ÐµÐ· Ñ
оÑÑлиÑÑа, еÑли его еÑе неÑ, и в нем еÑе Ñаз ÑкажиÑе mss.
Тогда пÑи лÑбом ÑаÑкладе бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ mss.
ÐÑполÑзÑйÑе curl --socks5
и curl --socks5-hostname
Ð´Ð»Ñ Ð¿ÑовеÑки ваÑей ÑÑÑаÑегии.
СмоÑÑиÑе вÑвод --debug
, ÑÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ Ð² пÑавилÑноÑÑи наÑÑÑоек.
СÐУÐÐÐÐЫРÐÐÐ ÐÐÐТРЫ
--debug
позволÑÐµÑ Ð²ÑводиÑÑ Ð¿Ð¾Ð´ÑобнÑй лог дейÑÑвий на конÑолÑ, в syslog или в Ñайл.
ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ð°Ð¶ÐµÐ½ поÑÑдок ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿Ñий. --debug
лÑÑÑе вÑего ÑказÑваÑÑ Ð² Ñамом наÑале.
ÐпÑии анализиÑÑÑÑÑÑ Ð¿Ð¾ÑледоваÑелÑно. ÐÑли оÑибка бÑÐ´ÐµÑ Ð¿Ñи пÑовеÑке опÑии, а до анализа --debug
еÑе дело не доÑло,
Ñо ÑообÑÐµÐ½Ð¸Ñ Ð½Ðµ бÑдÑÑ Ð²ÑÐ²ÐµÐ´ÐµÐ½Ñ Ð² Ñайл или syslog.
--debug=0|1|2
позволÑÑÑ ÑÑÐ°Ð·Ñ Ð² одном паÑамеÑÑе вклÑÑиÑÑ Ð»Ð¾Ð³Ð¸Ñование на конÑÐ¾Ð»Ñ Ð¸ ÑказаÑÑ ÑÑовенÑ.
СоÑ
Ñанено Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñ Ð±Ð¾Ð»ÐµÐµ ÑÑаÑÑми веÑÑиÑми. ÐÐ»Ñ Ð²ÑбоÑа ÑÑÐ¾Ð²Ð½Ñ Ð² Ñежиме syslog или file иÑполÑзÑйÑе
оÑделÑнÑй паÑамеÑÑ --debug-level
. ÐÑли в ÑÑиÑ
ÑежимаÑ
--debug
не ÑказÑваÑÑ ÑÑÐ¾Ð²ÐµÐ½Ñ ÑеÑез --debug-level
, Ñо
авÑомаÑиÑеÑки назнаÑаеÑÑÑ ÑÑÐ¾Ð²ÐµÐ½Ñ 1.
ÐÑи логиÑовании в Ñайл пÑоÑеÑÑ Ð½Ðµ деÑÐ¶Ð¸Ñ Ñайл оÑкÑÑÑÑм. Ради каждой запиÑи Ñайл оÑкÑÑваеÑÑÑ Ð¸ поÑом закÑÑваеÑÑÑ.
Так ÑÑо Ñайл можно ÑдалиÑÑ Ð² лÑбой моменÑ, и он бÑÐ´ÐµÑ Ñоздан заново пÑи пеÑвом же ÑообÑении в лог.
Ðо имейÑе в видÑ, ÑÑо еÑли Ð²Ñ Ð·Ð°Ð¿ÑÑкаеÑе пÑоÑеÑÑ Ð¿Ð¾Ð´ root, Ñо бÑÐ´ÐµÑ Ñменен UID на не-root.
РнаÑале на лог Ñайл менÑеÑÑÑ owner, инаÑе запиÑÑ Ð±ÑÐ´ÐµÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°. ÐÑли Ð²Ñ Ð¿Ð¾Ñом ÑдалиÑе Ñайл,
и Ñ Ð¿ÑоÑеÑÑа не бÑÐ´ÐµÑ Ð¿Ñав на Ñоздание Ñайла в его диÑекÑоÑии, лог болÑÑе не бÑÐ´ÐµÑ Ð²ÐµÑÑиÑÑ.
ÐмеÑÑо ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð»ÑÑÑе иÑполÑзоваÑÑ truncate.
Ð Ñелле ÑÑо можно ÑделаÑÑ ÑеÑез ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ": >filename"
tpws Ð¼Ð¾Ð¶ÐµÑ Ð±Ð¸Ð½Ð´Ð°ÑÑÑÑ Ð½Ð° множеÑÑво инÑеÑÑейÑов и IP адÑеÑов (до 32 ÑÑ).
ÐоÑÑ Ð²Ñегда ÑолÑко один.
ÐаÑамеÑÑÑ --bind-iface*
и --bind-addr
ÑоздаÑÑ Ð½Ð¾Ð²Ñй бинд.
ÐÑÑалÑнÑе паÑамеÑÑÑ --bind-*
оÑноÑÑÑÑÑ Ðº поÑÐ»ÐµÐ´Ð½ÐµÐ¼Ñ Ð±Ð¸Ð½Ð´Ñ.
ÐÐ»Ñ Ð±Ð¸Ð½Ð´Ð° на вÑе ipv4 ÑкажиÑе --bind-addr "0.0.0.0"
, на вÑе ipv6 - "::"
. --bind-addr=""
- биндаемÑÑ Ð½Ð° вÑе ipv4 и ipv6.
ÐÑÐ±Ð¾Ñ Ñежима иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ link local ipv6 адÑеÑов (fe80::/8
) :
--bind-iface6 --bind-linklocal=no : ÑнаÑала пÑиваÑнÑй адÑÐµÑ fc00::/7, заÑем глобалÑнÑй адÑеÑ
--bind-iface6 --bind-linklocal=unwanted : ÑнаÑала пÑиваÑнÑй адÑÐµÑ fc00::/7, заÑем глобалÑнÑй адÑеÑ, заÑем link local.
--bind-iface6 --bind-linklocal=prefer : ÑнаÑала link local, заÑем пÑиваÑнÑй адÑÐµÑ fc00::/7, заÑем глобалÑнÑй адÑеÑ.
--bind-iface6 --bind-linklocal=force : ÑолÑко link local
ÐÑли не Ñказано ни одного бинда, Ñо ÑоздаеÑÑÑ Ð±Ð¸Ð½Ð´ по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð° вÑе адÑеÑа вÑеÑ
инÑеÑÑейÑов.
ÐÐ»Ñ Ð±Ð¸Ð½Ð´Ð° на конкÑеÑнÑй link-local address делаем Ñак : --bind-iface6=fe80::aaaa:bbbb:cccc:dddd%iface-name
ÐаÑамеÑÑÑ --bind-wait*
могÑÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð² ÑиÑÑаÑиÑÑ
, когда нÑжно взÑÑÑ IP Ñ Ð¸Ð½ÑеÑÑейÑа, но его еÑе неÑ, он не поднÑÑ
или не ÑконÑигÑÑиÑован.
Ð ÑазнÑÑ
ÑиÑÑемаÑ
ÑобÑÑÐ¸Ñ ifup ловÑÑÑÑ Ð¿Ð¾-ÑÐ°Ð·Ð½Ð¾Ð¼Ñ Ð¸ не гаÑанÑиÑÑÑÑ, ÑÑо инÑеÑÑÐµÐ¹Ñ Ñже полÑÑил IP адÑÐµÑ Ð¾Ð¿Ñеделенного Ñипа.
РобÑем ÑлÑÑае не ÑÑÑеÑÑвÑÐµÑ ÐµÐ´Ð¸Ð½Ð¾Ð³Ð¾ меÑ
анизма повеÑиÑÑÑÑ Ð½Ð° ÑобÑÑие Ñипа "на инÑеÑÑейÑе X поÑвилÑÑ link local address".
ÐÐ»Ñ Ð±Ð¸Ð½Ð´Ð° на извеÑÑнÑй ip, когда еÑе инÑеÑÑÐµÐ¹Ñ Ð½Ðµ ÑконÑигÑÑиÑован, нÑжно делаÑÑ Ñак: --bind-addr=192.168.5.3 --bind-wait-ip=20
Ð Ñежиме transparent бинд возможен на лÑбой неÑÑÑеÑÑвÑÑÑий адÑеÑ, в Ñежиме socks - ÑолÑко на ÑÑÑеÑÑвÑÑÑий.
ÐаÑамеÑÑÑ rcvbuf и sndbuf позволÑÑÑ ÑÑÑановиÑÑ setsockopt SO_RCVBUF SO_SNDBUF Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ñного и Ñдаленного ÑоединениÑ.
--skip-nodelay
Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½, когда tpws иÑполÑзÑеÑÑÑ Ð±ÐµÐ· дÑÑениÑ, ÑÑÐ¾Ð±Ñ Ð¿ÑивеÑÑи MTU к MTU ÑиÑÑемÑ, на коÑоÑой ÑабоÑÐ°ÐµÑ tpws.
ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ ÑкÑÑÑÐ¸Ñ ÑакÑа иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ VPN. ÐониженнÑй MTU - 1 из ÑпоÑобов обнаÑÑжениÑ
подозÑиÑелÑного подклÑÑениÑ. С tcp proxy ваÑи ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾ÑлиÑÐ¸Ð¼Ñ Ð¾Ñ ÑеÑ
, ÑÑо Ñделал Ð±Ñ Ñам ÑлÑз.
--local-tcp-user-timeout
и --remote-tcp-user-timeout
ÑÑÑанавливаÑÑ Ð·Ð½Ð°Ñение ÑаймаÑÑа в ÑекÑндаÑ
Ð´Ð»Ñ Ñоединений клиенÑ-пÑокÑи и пÑокÑи-ÑеÑвеÑ. ÐÑÐ¾Ñ ÑаймаÑÑ ÑооÑвеÑÑÑвÑÐµÑ Ð¾Ð¿Ñии ÑокеÑа linux
TCP_USER_TIMEOUT. Ðод ÑаймаÑÑом подÑазÑмеваеÑÑÑ Ð²ÑемÑ, в ÑеÑение коÑоÑого бÑÑеÑизиÑованнÑе даннÑе
не пеÑÐµÐ´Ð°Ð½Ñ Ð¸Ð»Ð¸ на пеÑеданнÑе даннÑе не полÑÑено подÑвеÑждение (ACK) Ð¾Ñ Ð´ÑÑгой ÑÑоÑонÑ.
ÐÑÐ¾Ñ ÑаймаÑÑ Ð½Ð¸ÐºÐ°Ðº не каÑаеÑÑÑ Ð²Ñемени оÑÑÑÑÑÑÐ²Ð¸Ñ ÐºÐ°ÐºÐ¾Ð¹-либо пеÑедаÑи ÑеÑез ÑÐ¾ÐºÐµÑ Ð»Ð¸ÑÑ Ð¿Ð¾ÑомÑ,
ÑÑо даннÑÑ
Ð´Ð»Ñ Ð¿ÐµÑедаÑи неÑ. Ðолезно Ð´Ð»Ñ ÑокÑаÑÐµÐ½Ð¸Ñ Ð²ÑÐµÐ¼Ñ Ð·Ð°ÐºÑÑÑÐ¸Ñ Ð¿Ð¾Ð´Ð²Ð¸ÑÑиÑ
Ñоединений.
ÐоддеÑживаеÑÑÑ ÑолÑко на Linux и MacOS.
Режим --socks
не ÑÑебÑÐµÑ Ð¿Ð¾Ð²ÑÑеннÑÑ
пÑивилегий (кÑоме бинда на пÑивилегиÑованнÑе поÑÑÑ 1..1023).
ÐоддеÑживаÑÑÑÑ Ð²ÐµÑÑии socks 4 и 5 без авÑоÑизаÑии. ÐеÑÑÐ¸Ñ Ð¿ÑоÑокола ÑаÑпознаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки.
ÐодклÑÑÐµÐ½Ð¸Ñ Ðº IP Ñого же ÑÑÑÑойÑÑва, на коÑоÑом ÑабоÑÐ°ÐµÑ tpws, вклÑÑÐ°Ñ localhost, запÑеÑенÑ.
socks5 позволÑÐµÑ Ñдаленно ÑеÑолвиÑÑ Ñ
оÑÑÑ (curl : --socks5-hostname firefox : socks_remote_dns=true).
tpws поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð°ÑинÑ
Ñонно, не блокиÑÑÑ Ð¿ÑоÑеÑÑинг дÑÑгиÑ
Ñоединений, иÑполÑзÑÑ
многопоÑоÑнÑй пÑл ÑеÑолвеÑов. ÐолиÑеÑÑво поÑоков опÑеделÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки в завиÑимоÑÑи Ð¾Ñ --maxconn
,
но можно задаÑÑ Ð¸ вÑÑÑнÑÑ ÑеÑез паÑамеÑÑ --resolver-threads
.
ÐапÑÐ¾Ñ Ðº socks вÑÑÑавлÑеÑÑÑ Ð½Ð° паÑзÑ, пока домен не бÑÐ´ÐµÑ Ð¿ÑеобÑазован в ip адÑÐµÑ Ð² одном из поÑоков
ÑеÑолвеÑа. Ðжидание Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð±Ð¾Ð»ÐµÐµ длиннÑм, еÑли вÑе поÑоки занÑÑÑ.
ÐÑли задан паÑамеÑÑ --no-resolve
, Ñо подклÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾ именам Ñ
оÑÑов запÑеÑаÑÑÑÑ, а пÑл ÑеÑолвеÑов не ÑоздаеÑÑÑ.
Тем ÑамÑм ÑкономÑÑÑÑ ÑеÑÑÑÑÑ.
IPTABLES ÐÐЯ TPWS
ÐÐ»Ñ Ð¿ÐµÑенапÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ tcp ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° transparent proxy иÑполÑзÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑледÑÑÑего вида :
iptables -t nat -I OUTPUT -o <внеÑний_инÑеÑÑейÑ> -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to 127.0.0.127:988
iptables -t nat -I PREROUTING -i <внÑÑÑенний_инÑеÑÑейÑ> -p tcp --dport 80 -j DNAT --to 127.0.0.127:988
ÐеÑÐ²Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð´Ð»Ñ Ñоединений Ñ Ñамой ÑиÑÑемÑ, вÑоÑÐ°Ñ - Ð´Ð»Ñ Ð¿ÑÐ¾Ñ Ð¾Ð´ÑÑÐ¸Ñ ÑеÑез ÑоÑÑÐµÑ Ñоединений.
DNAT на localhost ÑабоÑÐ°ÐµÑ Ð² ÑепоÑке OUTPUT, но не ÑабоÑÐ°ÐµÑ Ð² ÑепоÑке PREROUTING без вклÑÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа route_localnet :
sysctl -w net.ipv4.conf.<внÑÑÑенний_инÑеÑÑейÑ>.route_localnet=1
Ðожно иÑполÑзоваÑÑ -j REDIRECT --to-port 988
вмеÑÑо DNAT, однако в ÑÑом ÑлÑÑае пÑоÑеÑÑ transparent proxy должен
ÑлÑÑаÑÑ Ð½Ð° ip адÑеÑе вÑ
одÑÑего инÑеÑÑейÑа или на вÑеÑ
адÑеÑаÑ
. СлÑÑаÑÑ Ð½Ð° вÑеÑ
- не еÑÑÑ Ñ
оÑоÑо Ñ ÑоÑки зÑениÑ
безопаÑноÑÑи. СлÑÑаÑÑ Ð½Ð° одном (локалÑном) можно, но в ÑлÑÑае авÑомаÑизиÑованного ÑкÑипÑа пÑидеÑÑÑ ÐµÐ³Ð¾ ÑзнаваÑÑ, поÑом
динамиÑеÑки впиÑÑваÑÑ Ð² командÑ. РлÑбом ÑлÑÑае ÑÑебÑÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑÑилиÑ. ÐÑполÑзование route_localnet Ñоже имееÑ
поÑенÑиалÑнÑе пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑÑÑ. ÐÑ Ð´ÐµÐ»Ð°ÐµÑе доÑÑÑпнÑм вÑе, ÑÑо виÑÐ¸Ñ Ð½Ð° 127.0.0.0/8
Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ñной подÑеÑи <
внÑÑÑенний_инÑеÑÑейÑ>. СлÑÐ¶Ð±Ñ Ð¾Ð±ÑÑно пÑивÑзÑваÑÑÑÑ Ðº 127.0.0.1
, поÑÑÐ¾Ð¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑедÑÑвами iptables запÑеÑиÑÑ Ð²Ñ
одÑÑие
на 127.0.0.1
не Ñ Ð¸Ð½ÑеÑÑейÑа lo, либо повеÑиÑÑ tpws на лÑбой дÑÑгой IP из из 127.0.0.0/8
, напÑÐ¸Ð¼ÐµÑ Ð½Ð° 127.0.0.127
,
и ÑазÑеÑиÑÑ Ð²Ñ
одÑÑие не Ñ lo ÑолÑко на ÑÑÐ¾Ñ IP.
iptables -A INPUT ! -i lo -d 127.0.0.127 -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j DROP
ФилÑÑÑ Ð¿Ð¾ owner Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ Ð´Ð»Ñ Ð¸ÑклÑÑÐµÐ½Ð¸Ñ ÑекÑÑÑивного пеÑенапÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñоединений Ð¾Ñ Ñамого tpws. tpws запÑÑкаеÑÑÑ Ð¿Ð¾Ð´ полÑзоваÑелем tpws, Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ задаеÑÑÑ Ð¸ÑклÑÑаÑÑее пÑавило.
ip6tables ÑабоÑаÑÑ Ð¿Ð¾ÑÑи ÑоÑно Ñак же, как и ipv4, но еÑÑÑ ÑÑд важнÑÑ Ð½ÑанÑов. Ð DNAT ÑледÑÐµÑ Ð±ÑаÑÑ Ð°Ð´ÑÐµÑ --to в квадÑаÑнÑе Ñкобки. ÐапÑÐ¸Ð¼ÐµÑ :
ip6tables -t nat -I OUTPUT -o <внеÑний_инÑеÑÑейÑ> -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to [::1]:988
ÐаÑамеÑÑа route_localnet не ÑÑÑеÑÑвÑÐµÑ Ð´Ð»Ñ ipv6. DNAT на localhost (::1) возможен ÑолÑко в ÑепоÑке OUTPUT. Ð ÑепоÑке PREROUTING DNAT возможен на лÑбой global address или на link local address Ñого же инÑеÑÑейÑа, оÑкÑда пÑиÑел пакеÑ. NFQUEUE ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· изменений.
NFTABLES ÐÐЯ TPWS
ÐÐ°Ð·Ð¾Ð²Ð°Ñ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ :
IFACE_WAN=wan
IFACE_LAN=br-lan
sysctl -w net.ipv4.conf.$IFACE_LAN.route_localnet=1
nft create table inet ztest
nft create chain inet ztest localnet_protect
nft add rule inet ztest localnet_protect ip daddr 127.0.0.127 return
nft add rule inet ztest localnet_protect ip daddr 127.0.0.0/8 drop
nft create chain inet ztest input "{type filter hook input priority filter - 1;}"
nft add rule inet ztest input iif != "lo" jump localnet_protect
nft create chain inet ztest dnat_output "{type nat hook output priority dstnat;}"
nft add rule inet ztest dnat_output meta skuid != tpws oifname $IFACE_WAN tcp dport { 80, 443 } dnat ip to 127.0.0.127:988
nft create chain inet ztest dnat_pre "{type nat hook prerouting priority dstnat;}"
nft add rule inet ztest dnat_pre meta iifname $IFACE_LAN tcp dport { 80, 443 } dnat ip to 127.0.0.127:988
Удаление ÑаблиÑÑ :
nft delete table inet ztest
СпоÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑпиÑка заблокиÑованнÑÑ IP
!!! nftables не могÑÑ ÑабоÑаÑÑ Ñ ipset-ами. СобÑÑвеннÑй аналогиÑнÑй Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ ÑÑебÑÐµÑ Ð¾Ð³Ñомного колиÑеÑÑво RAM !!! Ð´Ð»Ñ Ð·Ð°Ð³ÑÑзки болÑÑÐ¸Ñ Ð»Ð¸ÑÑов. ÐапÑимеÑ, Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð½Ð° 100K запиÑей в nfset не Ñ Ð²Ð°ÑÐ°ÐµÑ Ð´Ð°Ð¶Ðµ 256 Mb. !!! ÐÑли вам нÑÐ¶Ð½Ñ Ð±Ð¾Ð»ÑÑие лиÑÑÑ Ð½Ð° домаÑÐ½Ð¸Ñ ÑоÑÑеÑÐ°Ñ , оÑкаÑÑвайÑеÑÑ Ð½Ð° iptables+ipset.
- ÐнеÑиÑе заблокиÑованнÑе Ð´Ð¾Ð¼ÐµÐ½Ñ Ð²
ipset/zapret-hosts-user.txt
и запÑÑÑиÑеipset/get_user.sh
Ðа вÑÑ Ð¾Ð´Ðµ полÑÑиÑеipset/zapret-ip-user.txt
Ñ IP адÑеÑами.
CкÑипÑÑ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ get_reestr_* опеÑиÑÑÑÑ Ð´Ð°Ð¼Ð¿Ð¾Ð¼ ÑееÑÑÑа заблокиÑованнÑÑ ÑайÑов :
-
ipset/get_reestr_resolve.sh
полÑÑÐ°ÐµÑ ÑпиÑок доменов Ð¾Ñ rublacklist и далÑÑе Ð¸Ñ ÑеÑÐ¾Ð»Ð²Ð¸Ñ Ð² ip адÑеÑа в Ñайл ipset/zapret-ip.txt.gz. Ð ÑÑом ÑпиÑке еÑÑÑ Ð³Ð¾ÑовÑе IP адÑеÑа, но ÑÑÐ´Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¾Ð½Ð¸ Ñам в ÑоÑноÑÑи в Ñом виде, ÑÑо вноÑÐ¸Ñ Ð² ÑееÑÑÑ Ð Ð¾ÑÐомÐозоÑ. ÐдÑеÑа могÑÑ Ð¼ÐµÐ½ÑÑÑÑÑ, Ð¿Ð¾Ð·Ð¾Ñ Ð½Ðµ ÑÑÐ¿ÐµÐ²Ð°ÐµÑ Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑÑÑ, а пÑовайдеÑÑ Ñедко банÑÑ Ð¿Ð¾ IP : вмеÑÑо ÑÑого они банÑÑ http запÑоÑÑ Ñ "Ð½ÐµÑ Ð¾ÑоÑим" заголовком "Host:" вне завиÑимоÑÑи Ð¾Ñ IP адÑеÑа. ÐоÑÑÐ¾Ð¼Ñ ÑкÑÐ¸Ð¿Ñ ÑеÑÐ¾Ð»Ð²Ð¸Ñ Ð²Ñе Ñам, Ñ Ð¾ÑÑ ÑÑо и Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¼Ð½Ð¾Ð³Ð¾ вÑемени. ÐÑполÑзÑеÑÑÑ Ð¼ÑлÑÑипоÑоÑнÑй ÑеÑÐ¾Ð»Ð²ÐµÑ mdig (ÑобÑÑÐ²ÐµÐ½Ð½Ð°Ñ ÑазÑабоÑка). -
ipset/get_reestr_preresolved.sh
. Ñо же Ñамое, ÑÑо и 2), ÑолÑко беÑеÑÑÑ Ñже заÑеÑолвленÑй ÑпиÑок Ñо ÑÑоÑоннего ÑеÑÑÑÑа. -
ipset/get_reestr_preresolved_smart.sh
. Ñо же Ñамое, ÑÑо и 3), Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ вÑего диапазона некоÑоÑÑÑ Ð°Ð²ÑономнÑÑ ÑиÑÑем (пÑÑгаÑÑие IP адÑеÑа из cloudflare, facebook, ...) и некоÑоÑÑÑ Ð¿Ð¾Ð´Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð² блокиÑÑемÑÑ ÑайÑов
CкÑипÑÑ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ get_antifilter_*
опеÑиÑÑÑÑ ÑпиÑками адÑеÑов и маÑок подÑеÑей Ñ ÑайÑов antifilter.network и antifilter.download :
-
ipset/get_antifilter_ip.sh
. полÑÑÐ°ÐµÑ Ð»Ð¸ÑÑ https://antifilter.download/list/ip.lst. -
ipset/get_antifilter_ipsmart.sh
. полÑÑÐ°ÐµÑ Ð»Ð¸ÑÑ https://antifilter.network/download/ipsmart.lst. ÑÐ¼Ð½Ð°Ñ ÑÑммаÑизаÑÐ¸Ñ Ð¾ÑделÑнÑÑ Ð°Ð´ÑеÑов из ip.lst по маÑкам Ð¾Ñ /32 до /22 -
ipset/get_antifilter_ipsum.sh
. полÑÑÐ°ÐµÑ Ð»Ð¸ÑÑ https://antifilter.download/list/ipsum.lst. ÑÑммаÑизаÑÐ¸Ñ Ð¾ÑделÑнÑÑ Ð°Ð´ÑеÑов из ip.lst по маÑке /24 -
ipset/get_antifilter_ipresolve.sh
. полÑÑÐ°ÐµÑ Ð»Ð¸ÑÑ https://antifilter.download/list/ipresolve.lst. пÑе-ÑеÑолвленнÑй ÑпиÑок, аналогиÑнÑй полÑÑаемÑй пÑи помоÑи get_reestr_resolve. ÑолÑко ipv4. -
ipset/get_antifilter_allyouneed.sh
. полÑÑÐ°ÐµÑ Ð»Ð¸ÑÑ https://antifilter.download/list/allyouneed.lst. СÑммаÑнÑй ÑпиÑок пÑеÑикÑов, ÑозданнÑй из ipsum.lst и subnet.lst. -
ipset/get_refilter_ipsum.sh
. СпиÑок беÑеÑÑÑ Ð¾ÑÑÑда : https://github.com/1andrevich/Re-filter-lists
ÐÑе ваÑианÑÑ ÑаÑÑмоÑÑеннÑÑ ÑкÑипÑов авÑомаÑиÑеÑки ÑоздаÑÑ Ð¸ заполнÑÑÑ ipset. ÐаÑианÑÑ 2-10 дополниÑелÑно вÑзÑваÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ 1.
ipset/get_config.sh
. ÑÑÐ¾Ñ ÑкÑÐ¸Ð¿Ñ Ð²ÑзÑÐ²Ð°ÐµÑ Ñо, ÑÑо пÑопиÑано в пеÑеменной GETLIST из Ñайла config ÐÑли пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ опÑеделена, Ñо ÑеÑолвÑÑÑÑ Ð»Ð¸ÑÑ Ð»Ð¸ÑÑÑ Ð´Ð»Ñ ipset nozapret/nozapret6.
ÐиÑÑÑ Ð ÐРвÑе вÑÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑÑÑ. ÐозникаÑÑ Ð½Ð¾Ð²Ñе ÑенденÑии. ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº RAM могÑÑ Ð¼ÐµÐ½ÑÑÑÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð° неÑаÑÑаÑ, но вÑе же ÑегÑлÑÑÐ½Ð°Ñ ÑÐµÐ²Ð¸Ð·Ð¸Ñ ÑÑо же вообÑе Ñ Ð²Ð°Ñ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð½Ð° ÑоÑÑеÑе. Ðли Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑзнаÑÑ Ð¾ пÑоблеме лиÑÑ ÐºÐ¾Ð³Ð´Ð° Ñ Ð²Ð°Ñ Ð½Ð°ÑÐ½ÐµÑ Ð¿Ð¾ÑÑоÑнно пÑопадаÑÑ wifi, и вам пÑидеÑÑÑ ÐµÐ³Ð¾ пеÑезагÑÑжаÑÑ ÐºÐ°Ð¶Ð´Ñе 2 ÑаÑа (меÑод кÑвалдÑ).
СамÑе ÑадÑÑие ваÑианÑÑ Ð¿Ð¾ RAM - get_antifilter_allyouneed.sh
, get_antifilter_ipsum.sh
, get_refilter_*.sh
.
ÐиÑÑÑ zapret-ip.txt
и zapret-ipban.txt
ÑоÑ
ÑанÑÑÑÑÑ Ð² ÑжаÑом виде в ÑÐ°Ð¹Ð»Ñ .gz.
ÐÑо позволÑÐµÑ ÑнизиÑÑ Ð¸Ñ
ÑÐ°Ð·Ð¼ÐµÑ Ð²Ð¾ много Ñаз и ÑÑкономиÑÑ Ð¼ÐµÑÑо на ÑоÑÑеÑе.
ÐÑклÑÑиÑÑ ÑжаÑие лиÑÑов можно паÑамеÑÑом конÑига GZIP_LISTS=0.
Ðа ÑоÑÑеÑÐ°Ñ Ð½Ðµ ÑекомендÑеÑÑÑ Ð²ÑзÑваÑÑ ÑÑи ÑкÑипÑÑ ÑаÑе Ñаза за 2 ÑÑÑок, поÑколÑÐºÑ ÑÐ¾Ñ Ñанение Ð¸Ð´ÐµÑ Ð»Ð¸Ð±Ð¾ во внÑÑÑеннÑÑ ÑлÑÑ Ð¿Ð°Ð¼ÑÑÑ ÑоÑÑеÑа, либо в ÑлÑÑае extroot - на ÑлÑÑкÑ. Ð Ð¾Ð±Ð¾Ð¸Ñ ÑлÑÑаÑÑ ÑлиÑком ÑаÑÑÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑбиÑÑ ÑлÑÑкÑ, но еÑли ÑÑо пÑÐ¾Ð¸Ð·Ð¾Ð¹Ð´ÐµÑ Ñ Ð²Ð½ÑÑÑенней ÑлÑÑ Ð¿Ð°Ð¼ÑÑÑÑ, Ñо Ð²Ñ Ð¿ÑоÑÑо ÑбÑеÑе ÑоÑÑеÑ.
ÐÑинÑдиÑелÑное обновление ipset
вÑполнÑÐµÑ ÑкÑÐ¸Ð¿Ñ ipset/create_ipset.sh
.
ÐÑли пеÑедан паÑамеÑÑ no-update
, ÑкÑÐ¸Ð¿Ñ Ð½Ðµ обновлÑÐµÑ ipset
, а ÑолÑко ÑÐ¾Ð·Ð´Ð°ÐµÑ ÐµÐ³Ð¾ пÑи его оÑÑÑÑÑÑвии и заполнÑеÑ.
ÐÑо полезно, когда могÑÑ ÑлÑÑиÑÑÑÑ Ð½ÐµÑколÑко поÑледоваÑелÑнÑÑ
вÑзовов ÑкÑипÑа. ÐÐµÑ ÑмÑÑла неÑколÑко Ñаз пеÑезаполнÑÑÑ
ipset
, ÑÑо длиÑелÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð½Ð° болÑÑиÑ
лиÑÑаÑ
. ÐиÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ обновлÑÑÑ Ñаз в неÑколÑко ÑÑÑок, и ÑолÑко Ñогда
вÑзÑваÑÑ create_ipset
без паÑамеÑÑа no-update
. Ðо вÑеÑ
оÑÑалÑнÑÑ
ÑлÑÑаÑÑ
ÑÑÐ¾Ð¸Ñ Ð¿ÑименÑÑÑ no-update
.
СпиÑок Ð ÐÐ Ñже доÑÑиг внÑÑиÑелÑнÑÑ
ÑазмеÑов в ÑоÑни ÑÑÑÑÑ IP адÑеÑов. ÐоÑÑÐ¾Ð¼Ñ Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑии ipset
пÑименÑеÑÑÑ ÑÑилиÑа ip2net
. Ðна беÑÐµÑ ÑпиÑок оÑделÑнÑÑ
IP адÑеÑов и пÑÑаеÑÑÑ Ð¸Ð½ÑеллекÑÑалÑно ÑоздаÑÑ Ð¸Ð· него подÑеÑи Ð´Ð»Ñ ÑокÑаÑениÑ
колиÑеÑÑва адÑеÑов. ip2net
оÑÑÐµÐºÐ°ÐµÑ Ð½ÐµÐ¿ÑавилÑнÑе запиÑи в лиÑÑаÑ
, гаÑанÑиÑÑÑ Ð¾ÑÑÑÑÑÑвие оÑибок пÑи иÑ
загÑÑзке.
ip2net
напиÑан на ÑзÑке C, поÑколÑÐºÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ ÑеÑÑÑÑоемкаÑ. ÐнÑе ÑпоÑÐ¾Ð±Ñ ÑоÑÑÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ поÑÑнÑÑÑ.
Ðожно внеÑÑи ÑпиÑок доменов в ipset/zapret-hosts-user-ipban.txt
. ÐÑ
ip адÑеÑа бÑдÑÑ Ð¿Ð¾Ð¼ÐµÑенÑ
в оÑделÑнÑй ipset ipban
. Ðн Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð¿ÑинÑдиÑелÑного завеÑÑÑÐ²Ð°Ð½Ð¸Ñ Ð²ÑеÑ
Ñоединений на пÑозÑаÑнÑй proxy redsocks
или на VPN.
IPV6 : еÑли вклÑÑен ipv6, Ñо дополниÑелÑно ÑоздаÑÑÑÑ Ð»Ð¸ÑÑÑ Ñ Ñаким же именем, но Ñ "6" на конÑе пеÑед ÑаÑÑиÑением.
zapret-ip.txt
=> zapret-ip6.txt
СоздаÑÑÑÑ ipset-Ñ zapret6 и ipban6.
ÐиÑÑÑ Ñ antifilter не ÑодеÑÐ¶Ð°Ñ ÑпиÑок ipv6 адÑеÑов.
СÐСТÐÐÐ ÐСÐÐЮЧÐÐÐЯ IP. ÐÑе ÑкÑипÑÑ ÑеÑолвÑÑ Ñайл zapret-hosts-user-exclude.txt
, ÑÐ¾Ð·Ð´Ð°Ð²Ð°Ñ zapret-ip-exclude.txt
и zapret-ip-exclude6.txt
.
Ðни загонÑÑÑÑÑ Ð² ipset-Ñ nozapret и nozapret6. ÐÑе пÑавила, ÑоздаваемÑе init ÑкÑипÑами, ÑоздаÑÑÑÑ Ñ ÑÑеÑом ÑÑиÑ
ipset.
ÐомеÑеннÑе в ниÑ
IP не ÑÑаÑÑвÑÑÑ Ð² пÑоÑеÑÑе.
zapret-hosts-user-exclude.txt
Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð´Ð¾Ð¼ÐµÐ½Ñ, ipv4 и ipv6 адÑеÑа или подÑеÑи.
FreeBSD. СкÑипÑÑ ipset/*.sh ÑабоÑаÑÑ Ñак же на FreeBSD. ÐмеÑÑо ipset они ÑоздаÑÑ lookup ÑаблиÑÑ ipfw Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑнÑми именами. ipfw ÑаблиÑÑ Ð² оÑлиÑие Ð¾Ñ ipset могÑÑ ÑодеÑжаÑÑ ÐºÐ°Ðº ipv4, Ñак и ipv6 адÑеÑа и подÑеÑи в одной ÑаблиÑе, поÑÑÐ¾Ð¼Ñ ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑ.
ÐаÑамеÑÑ ÐºÐ¾Ð½Ñига LISTS_RELOAD Ð·Ð°Ð´Ð°ÐµÑ Ð¿ÑоизволÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ Ð¿ÐµÑезагÑÑзки лиÑÑов. ÐÑо оÑобенно полезно на BSD ÑиÑÑÐµÐ¼Ð°Ñ Ñ PF. LISTS_RELOAD=- оÑклÑÑÐ°ÐµÑ Ð¿ÐµÑезагÑÑÐ·ÐºÑ Ð»Ð¸ÑÑов.
ip2net
УÑилиÑа ip2net пÑедназнаÑена Ð´Ð»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ipv4 или ipv6 ÑпиÑка ip в ÑпиÑок подÑеÑей
Ñ ÑелÑÑ ÑокÑаÑÐµÐ½Ð¸Ñ ÑазмеÑа ÑпиÑка. ÐÑ
однÑе даннÑе беÑÑÑÑÑ Ð¸Ð· stdin, вÑÑ
однÑе вÑдаÑÑÑÑ Ð² stdout
.
-4 ; лиÑÑ - ipv4 (по ÑмолÑаниÑ)
-6 ; лиÑÑ - ipv6
--prefix-length=min[-max] ; диапазон ÑаÑÑмаÑÑиваемÑÑ
длин пÑеÑикÑов. напÑÐ¸Ð¼ÐµÑ : 22-30 (ipv4), 56-64 (ipv6)
--v4-threshold=mul/div ; ipv4 : вклÑÑаÑÑ Ð¿Ð¾Ð´ÑеÑи, в коÑоÑÑÑ
заполнено по кÑайней меÑе mul/div адÑеÑов. напÑÐ¸Ð¼ÐµÑ : 3/4
--v6-threshold=N ; ipv6 : минималÑное колиÑеÑÑво ip Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑеÑи
Ð ÑпиÑке могÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð·Ð°Ð¿Ð¸Ñи вида ip/prefix и ip1-ip2. Такие запиÑи вÑкидÑваÑÑÑÑ Ð² stdout без изменений. Ðни пÑинимаÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ipset. ipset ÑÐ¼ÐµÐµÑ Ð´Ð»Ñ Ð»Ð¸ÑÑов hash:net из ip1-ip2 делаÑÑ Ð¾Ð¿ÑималÑное покÑÑÑие ip/prefix. ipfw из FreeBSD Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ ip/prefix, но не Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ ip1-ip2. ip2net ÑилÑÑÑÑÐµÑ Ð²Ñ Ð¾Ð´Ð½Ñе даннÑе, вÑкидÑÐ²Ð°Ñ Ð½ÐµÐ¿ÑавилÑнÑе IP адÑеÑа.
ÐÑбиÑаеÑÑÑ Ð¿Ð¾Ð´ÑеÑÑ, в коÑоÑой пÑиÑÑÑÑÑвÑÐµÑ ÑказаннÑй минимÑм адÑеÑов. ÐÐ»Ñ ipv4 минимÑм задаеÑÑÑ ÐºÐ°Ðº пÑоÑÐµÐ½Ñ Ð¾Ñ ÑазмеÑа подÑеÑи (mul/div. напÑимеÑ, 3/4), Ð´Ð»Ñ ipv6 минимÑм задаеÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ.
Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾Ð´ÑеÑи вÑбиÑаеÑÑÑ ÑледÑÑÑим алгоÑиÑмом: СнаÑала в Ñказанном диапазоне длин пÑеÑикÑов иÑÑÑÑÑ Ð¿Ð¾Ð´ÑеÑи, в коÑоÑÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво адÑеÑов - макÑималÑно. ÐÑли ÑÐ°ÐºÐ¸Ñ ÑеÑей найдено неÑколÑко, беÑеÑÑÑ Ð½Ð°Ð¸Ð¼ÐµÐ½ÑÑÐ°Ñ ÑеÑÑ (пÑеÑÐ¸ÐºÑ Ð±Ð¾Ð»ÑÑе). ÐапÑимеÑ, Ð·Ð°Ð´Ð°Ð½Ñ Ð¿Ð°ÑамеÑÑÑ v6_threshold=2 prefix_length=32-64, имеÑÑÑÑ ÑледÑÑÑие ipv6 :
1234:5678:aaaa::5
1234:5678:aaaa::6
1234:5678:aaac::5
РезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ :
1234:5678:aaa8::/45
ÐÑи адÑеÑа Ñак же Ð²Ñ Ð¾Ð´ÑÑ Ð² подÑеÑÑ /32. Ðднако, Ð½ÐµÑ ÑмÑÑла пÑÐ¾Ñ Ð¾Ð´Ð¸ÑÑÑÑ ÐºÐ¾Ð²Ñовой бомбаÑдиÑовкой, когда Ñе же ÑамÑе адÑеÑа вполне влезаÑÑ Ð² /45 и Ð¸Ñ Ñовно ÑÑолÑко же. ÐÑли измениÑÑ v6_threshold=4, Ñо ÑезÑлÑÑÐ°Ñ Ð±ÑдеÑ:
1234:5678:aaaa::5
1234:5678:aaaa::6
1234:5678:aaac::5
То еÑÑÑ ip не обÑединÑÑÑÑ Ð² подÑеÑÑ, поÑÐ¾Ð¼Ñ ÑÑо иÑ
ÑлиÑком мало.
ÐÑли измениÑÑ prefix_length=56-64
, ÑезÑлÑÑÐ°Ñ Ð±ÑдеÑ:
1234:5678:aaaa::/64
1234:5678:aaac::5
ТÑебÑемое пÑоÑеÑÑоÑное вÑÐµÐ¼Ñ Ð´Ð»Ñ Ð²ÑÑиÑлений ÑилÑно завиÑÐ¸Ñ Ð¾Ñ ÑиÑÐ¸Ð½Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° длин пÑеÑикÑов, ÑазмеÑа иÑкомÑÑ Ð¿Ð¾Ð´ÑеÑей и Ð´Ð»Ð¸Ð½Ñ Ð»Ð¸ÑÑа. ÐÑли ip2net дÑÐ¼Ð°ÐµÑ ÑлиÑком долго, не иÑполÑзÑйÑе ÑлиÑком болÑÑие подÑеÑи и ÑменÑÑиÑе диапазон длин пÑеÑикÑов. УÑÑиÑе, ÑÑо аÑиÑмеÑика mul/div - ÑелоÑиÑленнаÑ. ÐÑи пÑевÑÑении ÑазÑÑдной ÑеÑки 32 bit ÑезÑлÑÑÐ°Ñ Ð½ÐµÐ¿ÑедÑказÑем. Ðе надо делаÑÑ Ñакое: 5000000/10000000. 1/2 - гоÑаздо лÑÑÑе.
mdig
ÐÑогÑамма пÑедназнаÑена Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¿Ð¾ÑоÑного ÑеÑолвинга болÑÑÐ¸Ñ Ð»Ð¸ÑÑов ÑеÑез ÑиÑÑемнÑй DNS. Ðна беÑÐµÑ Ð¸Ð· stdin ÑпиÑок доменов и вÑÐ²Ð¾Ð´Ð¸Ñ Ð² stdout ÑезÑлÑÑÐ°Ñ ÑеÑолвинга. ÐÑибки вÑводÑÑÑÑ Ð² stderr.
--threads=<threads_number> ; колиÑеÑÑво поÑоков. по ÑмолÑÐ°Ð½Ð¸Ñ 1.
--family=<4|6|46> ; вÑÐ±Ð¾Ñ ÑемейÑÑва IP адÑеÑов : ipv4, ipv6, ipv4+ipv6
--verbose ; дебаг-лог на конÑолÑ
--stats=N ; вÑводиÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ ÐºÐ°Ð¶Ð´Ñе N доменов
--log-resolved=<file> ; ÑоÑ
ÑанÑÑÑ ÑÑпеÑно оÑÑеÑолвленнÑе Ð´Ð¾Ð¼ÐµÐ½Ñ Ð² Ñайл
--log-failed=<file> ; ÑоÑ
ÑанÑÑÑ Ð½ÐµÑдаÑно оÑÑеÑолвленнÑе Ð´Ð¾Ð¼ÐµÐ½Ñ Ð² Ñайл
--dns-make-query=<domain> ; вÑвеÑÑи в stdout бинаÑнÑй DNS запÑÐ¾Ñ Ð¿Ð¾ доменÑ. еÑли --family=6, запÑÐ¾Ñ Ð±ÑÐ´ÐµÑ AAAA, инаÑе A.
--dns-parse-query ; ÑаÑпаÑÑиÑÑ Ð±Ð¸Ð½Ð°ÑнÑй DNS оÑÐ²ÐµÑ Ð¸ вÑдаÑÑ Ð²Ñе ivp4 и ipv6 адÑеÑа из него в stdout
ÐаÑамеÑÑÑ --dns-make-query
и --dns-parse-query
позволÑÑÑ Ð¿ÑовеÑÑи ÑеÑолвинг одного домена ÑеÑез пÑоизволÑнÑй канал.
ÐапÑимеÑ, ÑледÑÑÑим обÑазом можно вÑполниÑÑ DoH запÑоÑ, иÑполÑзÑÑ Ð»Ð¸ÑÑ mdig и curl :
mdig --family=6 --dns-make-query=rutracker.org | curl --data-binary @- -H "Content-Type: application/dns-message" https://cloudflare-dns.com/dns-query | mdig --dns-parse-query
ФилÑÑÑаÑÐ¸Ñ Ð¿Ð¾ именам доменов
ÐлÑÑеÑнаÑивой ipset ÑвлÑеÑÑÑ Ð¸ÑполÑзование tpws или nfqws Ñо ÑпиÑком доменов.
Ðба демона пÑинимаÑÑ Ð½ÐµÐ¾Ð³ÑаниÑенное колиÑеÑÑво лиÑÑов include (--hostlist
) и exclude (--hostlist-exclude
).
ÐÑежде вÑего пÑовеÑÑÑÑÑÑ exclude лиÑÑÑ. ÐÑи вÑ
ождении в ниÑ
пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¾Ñказ Ð¾Ñ Ð´ÑÑениÑ.
Ðалее пÑи налиÑии include лиÑÑов пÑовеÑÑеÑÑÑ Ð´Ð¾Ð¼ÐµÐ½ на вÑ
ождение в ниÑ
. ÐÑи невÑ
ождении в ÑпиÑок оÑказ Ð¾Ñ Ð´ÑÑениÑ.
ÐÑли вÑе include лиÑÑÑ Ð¿ÑÑÑÑе, ÑÑо пÑиÑавниваеÑÑÑ Ðº оÑÑÑÑÑÑÐ²Ð¸Ñ include лиÑÑов. ÐгÑаниÑение пеÑеÑÑÐ°ÐµÑ ÑабоÑаÑÑ.
РинÑÑ
ÑлÑÑаÑÑ
пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð´ÑÑение.
ÐÐµÑ Ð½Ð¸ одного ÑпиÑка - дÑÑение вÑегда.
ÐÑÑÑ ÑолÑко exclude ÑпиÑок - дÑÑение вÑеÑ
, кÑоме.
ÐÑÑÑ ÑолÑко include ÑпиÑок - дÑÑение ÑолÑко иÑ
.
ÐÑÑÑ Ð¾Ð±Ð° - дÑÑение ÑолÑко include, кÑоме exclude.
Ð ÑиÑÑеме запÑÑка ÑÑо обÑгÑано ÑледÑÑÑим обÑазом.
ÐÑиÑÑÑÑÑвÑÑÑ 2 include ÑпиÑка :
ipset/zapret-hosts-users.txt.gz
или ipset/zapret-hosts-users.txt
,
ipset/zapret-hosts.txt.gz
или ipset/zapret-hosts.txt
и 1 exclude ÑпиÑок
ipset/zapret-hosts-users-exclude.txt.gz
или ipset/zapret-hosts-users-exclude.txt
ÐÑи ÑежимаÑ
ÑилÑÑÑаÑии MODE_FILTER=hostlist
или MODE_FILTER=autohostlist
ÑиÑÑема запÑÑка пеÑÐµÐ´Ð°ÐµÑ nfqws или tpws вÑе лиÑÑÑ, ÑÐ°Ð¹Ð»Ñ ÐºÐ¾ÑоÑÑÑ
пÑиÑÑÑÑÑвÑÑÑ.
ÐеÑедаÑа пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÑеÑез Ð·Ð°Ð¼ÐµÐ½Ñ Ð¼Ð°ÑкеÑов <HOSTLIST>
и <HOSTLIST_NOAUTO>
на ÑеалÑнÑе паÑамеÑÑÑ --hostlist
, --hostlist-exclude
, --hostlist-auto
.
ÐÑли вдÑÑг лиÑÑÑ include пÑиÑÑÑÑÑвÑÑÑ, но вÑе они пÑÑÑÑе, Ñо ÑабоÑа аналогиÑна оÑÑÑÑÑÑÐ²Ð¸Ñ include лиÑÑа.
Файл еÑÑÑ, но не ÑмоÑÑÑ Ð½Ð° ÑÑо дÑÑиÑÑÑ Ð²Ñе, кÑоме exclude.
ÐÑли вам нÑжен именно Ñакой Ñежим - не обÑзаÑелÑно ÑдалÑÑÑ zapret-hosts-users.txt
. ÐоÑÑаÑоÑно ÑделаÑÑ ÐµÐ³Ð¾ пÑÑÑÑм.
ÐÐ¾Ð´Ð´Ð¾Ð¼ÐµÐ½Ñ ÑÑиÑÑваÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. ÐапÑимеÑ, ÑÑÑоÑка "ru" вноÑÐ¸Ñ Ð² ÑпиÑок ".ru". СÑÑоÑка ".ru" в ÑпиÑке не ÑÑабоÑаеÑ.
СпиÑок доменов Ð ÐÐ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑен ÑкÑипÑами
ipset/get_reestr_hostlist.sh
ipset/get_antizapret_domains.sh
ipset/get_reestr_resolvable_domains.sh
ipset/get_refilter_domains.sh
Ðн кладеÑÑÑ Ð² ipset/zapret-hosts.txt.gz
.
ÐÑи изменении вÑемени модиÑикаÑии Ñайлов ÑпиÑки пеÑеÑиÑÑваÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки.
ÐÑи ÑилÑÑÑаÑии по именам доменов демон должен запÑÑкаÑÑÑÑ Ð±ÐµÐ· ÑилÑÑÑаÑии по ipset. tpws и nfqws ÑеÑаÑÑ Ð½Ñжно ли пÑименÑÑÑ Ð´ÑÑение в завиÑимоÑÑи Ð¾Ñ Ñ Ð¾ÑÑа, полÑÑенного из пÑоÑокола пÑикладного ÑÑÐ¾Ð²Ð½Ñ (http, tls, quic). ÐÑи иÑполÑзовании болÑÑÐ¸Ñ ÑпиÑков, в Ñом ÑиÑле ÑпиÑка Ð ÐÐ, оÑениÑе обÑем RAM на ÑоÑÑеÑе ! ÐÑли поÑле запÑÑка демона RAM под завÑÐ·ÐºÑ Ð¸Ð»Ð¸ ÑлÑÑаÑÑÑÑ oom, знаÑÐ¸Ñ Ð½Ñжно оÑказаÑÑÑÑ Ð¾Ñ ÑÐ°ÐºÐ¸Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ ÑпиÑков.
Режим ÑилÑÑÑаÑии autohostlist
ÐÑÐ¾Ñ Ñежим позволÑÐµÑ Ð¿ÑоанализиÑоваÑÑ ÐºÐ°Ðº запÑоÑÑ Ñо ÑÑоÑÐ¾Ð½Ñ ÐºÐ»Ð¸ÐµÐ½Ñа, Ñак и оÑвеÑÑ Ð¾Ñ ÑеÑвеÑа.
ÐÑли Ñ
оÑÑ ÐµÑе не наÑ
одиÑÑÑ Ð½Ð¸ в какиÑ
лиÑÑаÑ
и обнаÑÑживаеÑÑÑ ÑиÑÑаÑиÑ, поÑ
Ð¾Ð¶Ð°Ñ Ð½Ð° блокиÑовкÑ,
пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑкое добавление Ñ
оÑÑа в ÑпиÑок autohostlist
как в памÑÑи, Ñак и в Ñайле.
nfqws или tpws Ñами ведÑÑ ÑÑÐ¾Ñ Ñайл.
ЧÑÐ¾Ð±Ñ ÐºÐ°ÐºÐ¾Ð¹-Ñо Ñ
оÑÑ Ð½Ðµ Ñмог попаÑÑ Ð² autohostlist
иÑполÑзÑйÑе hostlist-exclude
.
ÐÑли он вÑе-же ÑÑда попал - ÑдалиÑе запиÑÑ Ð¸Ð· Ñайла вÑÑÑнÑÑ. ÐÑоÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки пеÑеÑиÑаÑÑ Ñайл.
tpws/nfqws Ñами назнаÑаÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем Ñайла ÑзеÑа, под коÑоÑÑм они ÑабоÑаÑÑ Ð¿Ð¾Ñле ÑбÑоÑа пÑивилегий,
ÑÑÐ¾Ð±Ñ Ð¸Ð¼ÐµÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑÑÑ Ð»Ð¸ÑÑ.
Ð ÑлÑÑае nfqws даннÑй Ñежим ÑÑебÑÐµÑ Ð¿ÐµÑенапÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² Ñом ÑиÑле и вÑ
одÑÑего ÑÑаÑика.
ÐÑайне Ñекомендовано иÑполÑзоваÑÑ Ð¾Ð³ÑаниÑиÑÐµÐ»Ñ connbytes
, ÑÑÐ¾Ð±Ñ nfqws не обÑабаÑÑвал гигабайÑÑ.
Ðо ÑÑой же пÑиÑине не ÑекомендÑеÑÑÑ Ð¸ÑполÑзование Ñежима на BSD ÑиÑÑемаÑ
. Там Ð½ÐµÑ ÑилÑÑÑа connbytes
.
Ðа linux ÑиÑÑемаÑ
пÑи иÑполÑзовании nfqws и ÑилÑÑÑа connbytes Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð½Ð°Ð´Ð¾Ð±Ð¸ÑÑÑ :
sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1
ÐÑло замеÑено, ÑÑо некоÑоÑÑе DPI в РоÑÑии возвÑаÑаÑÑ RST Ñ Ð½ÐµÐ²ÐµÑнÑм ACK. ÐÑо пÑинимаеÑÑÑ tcp/ip ÑÑеком
linux, но ÑеÑез Ñаз пÑиобÑеÑÐ°ÐµÑ ÑÑаÑÑÑ INVALID в conntrack. ÐоÑÑÐ¾Ð¼Ñ Ð¿Ñавила Ñ connbytes
ÑÑабаÑÑваÑÑ
ÑеÑез Ñаз, не пеÑеÑÑÐ»Ð°Ñ RST Ð¿Ð°ÐºÐµÑ nfqws.
Ðак вообÑе могÑÑ Ð²ÐµÑÑи ÑÐµÐ±Ñ DPI, полÑÑив "Ð¿Ð»Ð¾Ñ Ð¾Ð¹ запÑоÑ" и пÑинÑв ÑеÑение о блокиÑовке:
- ÐавиÑание: пÑоÑÑо оÑмоÑаживаеÑÑÑ, блокиÑÑÑ Ð¿ÑÐ¾Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ пакеÑов по TCP каналÑ.
- RST: оÑпÑавлÑÐµÑ RST клиенÑÑ Ð¸/или ÑеÑвеÑÑ
- РедиÑекÑ: (ÑолÑко Ð´Ð»Ñ http) оÑпÑавлÑÐµÑ ÑедиÑÐµÐºÑ Ð½Ð° ÑайÑ-заглÑÑкÑ
- Ðодмена ÑеÑÑиÑикаÑа: (ÑолÑко Ð´Ð»Ñ https) полнÑй пеÑÐµÑ Ð²Ð°Ñ TLS ÑеанÑа Ñ Ð¿Ð¾Ð¿ÑÑкой вÑÑнÑÑÑ ÑÑо-Ñо Ñвое клиенÑÑ. ÐÑименÑеÑÑÑ Ð½ÐµÑаÑÑо, поÑколÑÐºÑ Ð±ÑоÑзеÑÑ Ð½Ð° Ñакое ÑÑгаÑÑÑÑ.
nfqws и tpws могÑÑ ÑеÑÑ Ð²Ð°ÑианÑÑ 1-3, 4 они не ÑаÑпознаÑÑ. ÐÑÐ¸Ð»Ñ ÑпеÑиÑики ÑабоÑÑ Ñ Ð¾ÑделÑнÑми пакеÑами или Ñ TCP каналом tpws и nfqws ÑаÑпознаÑÑ ÑÑи ÑиÑÑаÑии по-ÑазномÑ. ЧÑо ÑÑиÑаеÑÑÑ ÑиÑÑаÑией, Ð¿Ð¾Ñ Ð¾Ð¶ÐµÐ¹ на блокиÑÐ¾Ð²ÐºÑ :
- nfqws ÐеÑколÑко ÑеÑÑанÑмиÑÑий пеÑвого запÑоÑа в TCP ÑеанÑе, в коÑоÑом имееÑÑÑ host.
- nfqws,tpws RST, пÑиÑедÑий в оÑÐ²ÐµÑ Ð½Ð° пеÑвÑй запÑÐ¾Ñ Ñ Ñ Ð¾ÑÑом.
- nfqws,tpws HTTP ÑедиÑекÑ, пÑиÑедÑий в оÑÐ²ÐµÑ Ð½Ð° пеÑвÑй запÑÐ¾Ñ Ñ Ñ Ð¾ÑÑом, на глобалÑнÑй адÑÐµÑ Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼ 2 ÑÑовнÑ, не ÑовпадаÑÑим Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼ 2 ÑÑÐ¾Ð²Ð½Ñ Ð¾ÑигиналÑного запÑоÑа.
- tpws закÑÑÑие ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÐºÐ»Ð¸ÐµÐ½Ñом поÑле оÑпÑавки пеÑвого запÑоÑа Ñ Ñ Ð¾ÑÑом, еÑли не бÑло на него оÑвеÑа Ñо ÑÑоÑÐ¾Ð½Ñ ÑеÑвеÑа. ÐÑо обÑÑно ÑлÑÑаеÑÑÑ Ð¿Ð¾ ÑаймаÑÑÑ, когда Ð½ÐµÑ Ð¾ÑвеÑа (ÑлÑÑай "завиÑание").
ЧÑÐ¾Ð±Ñ ÑнизиÑÑ Ð²ÐµÑоÑÑноÑÑÑ Ð»Ð¾Ð¶Ð½ÑÑ
ÑÑабаÑÑваний, имееÑÑÑ ÑÑеÑÑик ÑиÑÑаÑий, поÑ
ожиÑ
на блокиÑовкÑ.
ÐÑли за опÑеделенное вÑÐµÐ¼Ñ Ð¿ÑÐ¾Ð¸Ð·Ð¾Ð¹Ð´ÐµÑ Ð±Ð¾Ð»ÐµÐµ опÑеделенного иÑ
колиÑеÑÑва, Ñ
оÑÑ ÑÑиÑаеÑÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑованнÑм
и заноÑиÑÑÑ Ð² autohostlist
. Ðо Ð½ÐµÐ¼Ñ ÑÑÐ°Ð·Ñ Ð¶Ðµ наÑÐ¸Ð½Ð°ÐµÑ ÑабоÑаÑÑ ÑÑÑаÑÐµÐ³Ð¸Ñ Ð¿Ð¾ обÑ
Ð¾Ð´Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовки.
ÐÑли в пÑоÑеÑÑе ÑÑеÑа вебÑÐ°Ð¹Ñ Ð¾ÑвеÑÐ°ÐµÑ Ð±ÐµÐ· пÑизнаков блокиÑовки, ÑÑеÑÑик ÑбÑаÑÑваеÑÑÑ.
ÐеÑоÑÑно, ÑÑо бÑл вÑеменнÑй Ñбой ÑайÑа.
Ðа пÑакÑике ÑабоÑа Ñ Ð´Ð°Ð½Ð½Ñм Ñежимом вÑглÑÐ´Ð¸Ñ Ñак. ÐеÑвÑй Ñаз полÑзоваÑÐµÐ»Ñ Ð·Ð°Ñ Ð¾Ð´Ð¸Ñ Ð½Ð° ÑÐ°Ð¹Ñ Ð¸ полÑÑÐ°ÐµÑ Ð·Ð°Ð³Ð»ÑÑкÑ, ÑбÑÐ¾Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ бÑоÑÐ·ÐµÑ Ð¿Ð¾Ð´Ð²Ð¸ÑаеÑ, вÑваливаÑÑÑ Ð¿Ð¾ ÑаймаÑÑÑ Ñ ÑообÑением о невозможноÑÑи загÑÑзиÑÑ ÑÑÑаниÑÑ. Ðадо долбиÑÑ F5, пÑинÑÐ¶Ð´Ð°Ñ Ð±ÑоÑÐ·ÐµÑ Ð¿Ð¾Ð²ÑоÑÑÑÑ Ð¿Ð¾Ð¿ÑÑки. ÐоÑле некоÑоÑой попÑÑки ÑÐ°Ð¹Ñ Ð½Ð°ÑÐ¸Ð½Ð°ÐµÑ ÑабоÑаÑÑ, и далÑÑе он бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð²Ñегда.
С ÑÑим Ñежимом можно иÑполÑзоваÑÑ ÑеÑ
ники обÑ
ода, ломаÑÑие знаÑиÑелÑное колиÑеÑÑво ÑайÑов.
ÐÑли ÑÐ°Ð¹Ñ Ð½Ðµ Ð²ÐµÐ´ÐµÑ ÑÐµÐ±Ñ ÐºÐ°Ðº заблокиÑованнÑй, знаÑÐ¸Ñ Ð¾Ð±Ñ
од пÑименен не бÑдеÑ.
РпÑоÑивном ÑлÑÑае ÑеÑÑÑÑ Ð²Ñе Ñавно неÑего.
Ðднако, могÑÑ Ð±ÑÑÑ Ð²ÑеменнÑе Ñбои ÑеÑвеÑа, пÑиводÑÑие к ÑиÑÑаÑии, аналогиÑной блокиÑовке.
ÐогÑÑ Ð¿ÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð»Ð¾Ð¶Ð½Ñе ÑÑабаÑÑваниÑ. ÐÑли Ñакое пÑоизоÑло, ÑÑÑаÑÐµÐ³Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°ÑаÑÑ Ð»Ð¾Ð¼Ð°ÑÑ
незаблокиÑованнÑй ÑайÑ. ÐÑÑ ÑиÑÑаÑиÑ, ÑвÑ, пÑидеÑÑÑ Ð²Ð°Ð¼ конÑÑолиÑоваÑÑ Ð²ÑÑÑнÑÑ.
ÐаноÑиÑе Ñакие Ð´Ð¾Ð¼ÐµÐ½Ñ Ð² ipset/zapret-hosts-user-exclude.txt
, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¿Ð¾Ð²ÑоÑениÑ.
ЧÑÐ¾Ð±Ñ Ð²Ð¿Ð¾ÑледÑÑвии ÑазобÑаÑÑÑÑ Ð¿Ð¾ÑÐµÐ¼Ñ Ð´Ð¾Ð¼ÐµÐ½ бÑл занеÑен в лиÑÑ, можно вклÑÑиÑÑ autohostlist debug log
.
Ðн полезен Ñем, ÑÑо ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· поÑÑоÑнного пÑоÑмоÑÑа вÑвода nfqws в Ñежиме debug.
Рлог заноÑÑÑÑÑ ÑолÑко оÑновнÑе ÑобÑÑиÑ, ведÑÑие к занеÑÐµÐ½Ð¸Ñ Ñ
оÑÑа в лиÑÑ.
Ðо Ð»Ð¾Ð³Ñ Ð¼Ð¾Ð¶Ð½Ð¾ понÑÑÑ ÐºÐ°Ðº избежаÑÑ Ð»Ð¾Ð¶Ð½ÑÑ
ÑÑабаÑÑваний и подÑ
Ð¾Ð´Ð¸Ñ Ð»Ð¸ вообÑе вам ÑÑÐ¾Ñ Ñежим.
Ðожно иÑполÑзоваÑÑ Ð¾Ð´Ð¸Ð½ autohostlist
Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑвом пÑоÑеÑÑов. ÐÑе пÑоÑеÑÑÑ Ð¿ÑовеÑÑÑÑ Ð²ÑÐµÐ¼Ñ Ð¼Ð¾Ð´Ð¸ÑикаÑии Ñайла.
ÐÑли Ñайл бÑл изменен в дÑÑгом пÑоÑеÑÑе, пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÐµÐ³Ð¾ пеÑеÑиÑÑвание.
ÐÑе пÑоÑеÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑабоÑаÑÑ Ð¿Ð¾Ð´ одним uid, ÑÑÐ¾Ð±Ñ Ð±Ñли пÑава доÑÑÑпа на Ñайл.
СкÑипÑÑ zapret
ведÑÑ autohostlist
в ipset/zapret-hosts-auto.txt
.
install_easy.sh
пÑи апгÑейде zapret
ÑоÑ
ÑанÑÐµÑ ÑÑÐ¾Ñ Ñайл.
Режим autohostlist
вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ Ñежим hostlist
.
Ðожно веÑÑи ipset/zapret-hosts-user.txt
, ipset/zapret-hosts-user-exclude.txt
.
ÐÑовеÑка пÑовайдеÑа
ÐеÑед наÑÑÑойкой нÑжно пÑовеÑÑи иÑÑледование какÑÑ Ð±ÑÐºÑ ÑÑÑÑоил вам Ð²Ð°Ñ Ð¿ÑовайдеÑ.
ÐÑжно вÑÑÑниÑÑ Ð½Ðµ подменÑÐµÑ Ð»Ð¸ он DNS и какой меÑод обÑ
ода DPI ÑабоÑаеÑ.
Ð ÑÑом вам Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ ÑкÑÐ¸Ð¿Ñ blockcheck.sh
.
ÐÑли DNS подменÑеÑÑÑ, но пÑÐ¾Ð²Ð°Ð¹Ð´ÐµÑ Ð½Ðµ пеÑеÑ
ваÑÑÐ²Ð°ÐµÑ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº ÑÑоÑонним DNS, поменÑйÑе DNS на пÑблиÑнÑй.
ÐапÑимеÑ: 8.8.8.8, 8.8.4.4, 1.1.1.1, 1.0.0.1, 9.9.9.9
ÐÑли DNS подменÑеÑÑÑ Ð¸ пÑÐ¾Ð²Ð°Ð¹Ð´ÐµÑ Ð¿ÐµÑеÑ
ваÑÑÐ²Ð°ÐµÑ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº ÑÑоÑонним DNS, наÑÑÑойÑе dnscrypt
.
ÐÑе один ÑÑÑекÑивнÑй ваÑÐ¸Ð°Ð½Ñ - иÑполÑзоваÑÑ ÑеÑÐ¾Ð»Ð²ÐµÑ Ð¾Ñ yandex 77.88.8.88 на неÑÑандаÑÑном поÑÑÑ 1253.
Ðногие пÑовайдеÑÑ Ð½Ðµ анализиÑÑÑÑ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº DNS на неÑÑандаÑÑнÑÑ
поÑÑаÑ
.
blockcheck
еÑли Ð²Ð¸Ð´Ð¸Ñ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ DNS авÑомаÑиÑеÑки пеÑеклÑÑаеÑÑÑ Ð½Ð° DoH ÑеÑвеÑа.
СледÑÐµÑ Ð¿ÑогнаÑÑ blockcheck
по неÑколÑким заблокиÑованнÑм ÑайÑам и вÑÑвиÑÑ Ð¾Ð±Ñий Ñ
аÑакÑÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовок.
РазнÑе ÑайÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²Ð°Ð½Ñ Ð¿Ð¾-ÑазномÑ, нÑжно иÑкаÑÑ ÑакÑÑ ÑеÑ
никÑ, коÑоÑÐ°Ñ ÑабоÑÐ°ÐµÑ Ð½Ð° болÑÑинÑÑве.
ЧÑÐ¾Ð±Ñ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ð²Ñвод blockcheck.sh
в Ñайл, вÑполниÑе: ./blockcheck.sh | tee /tmp/blockcheck.txt
.
ÐÑоанализиÑÑйÑе какие меÑÐ¾Ð´Ñ Ð´ÑÑÐµÐ½Ð¸Ñ DPI ÑабоÑаÑÑ, в ÑооÑвеÑÑÑвии Ñ Ð½Ð¸Ð¼Ð¸ наÑÑÑойÑе /opt/zapret/config
.
ÐмейÑе в видÑ, ÑÑо Ñ Ð¿ÑовайдеÑов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑколÑко DPI или запÑоÑÑ Ð¼Ð¾Ð³ÑÑ Ð¸Ð´Ñи ÑеÑез ÑазнÑе каналÑ
по меÑÐ¾Ð´Ñ Ð±Ð°Ð»Ð°Ð½ÑиÑовки нагÑÑзки. ÐаланÑиÑовка Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð·Ð½Ð°ÑаÑÑ, ÑÑо на ÑазнÑÑ
веÑкаÑ
ÑазнÑе DPI или
они наÑ
одÑÑÑÑ Ð½Ð° ÑазнÑÑ
Ñ
опаÑ
. Ð¢Ð°ÐºÐ°Ñ ÑиÑÑаÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÑÑажаÑÑÑÑ Ð² неÑÑабилÑноÑÑи ÑабоÑÑ Ð¾Ð±Ñ
ода.
ÐеÑнÑли неÑколÑко Ñаз curl. То ÑабоÑаеÑ, Ñо connection reset или ÑедиÑекÑ. blockcheck.sh
вÑдаеÑ
ÑÑÑанноваÑÑе ÑезÑлÑÑаÑÑ. То split ÑабоÑÐ°ÐµÑ Ð½Ð° 2-м. Ñ
опе, Ñо на 4-м. ÐоÑÑовеÑноÑÑÑ ÑезÑлÑÑаÑа вÑзÑÐ²Ð°ÐµÑ ÑомнениÑ.
Ð ÑÑом ÑлÑÑае задайÑе неÑколÑко повÑоÑов одного и Ñого же ÑеÑÑа. ТеÑÑ Ð±ÑÐ´ÐµÑ ÑÑиÑаÑÑÑÑ ÑÑпеÑнÑм ÑолÑко,
еÑли вÑе попÑÑки пÑойдÑÑ ÑÑпеÑно.
ÐÑи иÑполÑзовании autottl
ÑледÑÐµÑ Ð¿ÑоÑеÑÑиÑоваÑÑ ÐºÐ°Ðº можно болÑÑе ÑазнÑÑ
доменов. ÐÑа ÑеÑ
ника
Ð¼Ð¾Ð¶ÐµÑ Ð½Ð° одниÑ
пÑовайдеÑаÑ
ÑабоÑаÑÑ ÑÑабилÑно, на дÑÑгиÑ
поÑÑебÑеÑÑÑ Ð²ÑÑÑниÑÑ Ð¿Ñи какиÑ
паÑамеÑÑаÑ
она ÑÑабилÑна, на ÑÑеÑÑиÑ
полнÑй Ñ
аоÑ, и пÑоÑе оÑказаÑÑÑÑ.
Blockcheck
Ð¸Ð¼ÐµÐµÑ 3 ÑÑÐ¾Ð²Ð½Ñ ÑканиÑованиÑ.
quick
- макÑималÑно бÑÑÑÑо найÑи Ñ Ð¾ÑÑ ÑÑо-Ñо ÑабоÑаÑÑее.standard
Ð´Ð°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿ÑовеÑÑи иÑÑледование как и на ÑÑо ÑеагиÑÑÐµÑ DPI в плане меÑодов Ð¾Ð±Ñ Ð¾Ð´Ð°.force
Ð´Ð°ÐµÑ Ð¼Ð°ÐºÑимÑм пÑовеÑок даже в ÑлÑÑаÑÑ , когда ÑеÑÑÑÑ ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· Ð¾Ð±Ñ Ð¾Ð´Ð° или Ñ Ð±Ð¾Ð»ÐµÐµ пÑоÑÑÑми ÑÑÑаÑегиÑми.
ÐÑÑÑ ÑÑд дÑÑÐ³Ð¸Ñ Ð¿Ð°ÑамеÑÑов, коÑоÑÑе не бÑдÑÑ ÑпÑаÑиваÑÑÑÑ Ð² диалоге, но коÑоÑÑе можно пеÑеопÑеделиÑÑ ÑеÑез пеÑеменнÑе.
CURL - замена пÑогÑÐ°Ð¼Ð¼Ñ curl
CURL_MAX_TIME - вÑÐµÐ¼Ñ ÑаймаÑÑа curl в ÑекÑндаÑ
CURL_MAX_TIME_QUIC - вÑÐµÐ¼Ñ ÑаймаÑÑа curl Ð´Ð»Ñ quic. еÑли не задано, иÑполÑзÑеÑÑÑ Ð·Ð½Ð°Ñение CURL_MAX_TIME
CURL_CMD=1 - показÑваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ curl
CURL_OPT - дополниÑелÑнÑе паÑамеÑÑÑ curl. `-k` - Ð¸Ð³Ð½Ð¾Ñ ÑеÑÑиÑикаÑов. `-v` - подÑобнÑй вÑвод пÑоÑокола
DOMAINS - ÑпиÑок ÑеÑÑиÑÑемÑÑ
доменов ÑеÑез пÑобел
HTTP_PORT, HTTPS_PORT, QUIC_PORT - номеÑа поÑÑов Ð´Ð»Ñ ÑооÑвеÑÑÑвÑÑÑиÑ
пÑоÑоколов
SKIP_DNSCHECK=1 - оÑказ Ð¾Ñ Ð¿ÑовеÑки DNS
SKIP_TPWS=1 - оÑказ Ð¾Ñ ÑеÑÑов tpws
SKIP_PKTWS=1 - оÑказ Ð¾Ñ ÑеÑÑов nfqws/dvtws/winws
PKTWS_EXTRA, TPWS_EXTRA - дополниÑелÑнÑе паÑамеÑÑÑ nfqws/dvtws/winws и tpws
PKTWS_EXTRA_1 .. PKTWS_EXTRA_9, TPWS_EXTRA_1 .. TPWS_EXTRA_9 - оÑделÑно дополниÑелÑнÑе паÑамеÑÑÑ, ÑодеÑжаÑие пÑобелÑ
SECURE_DNS=0|1 - пÑинÑдиÑелÑно вÑклÑÑиÑÑ Ð¸Ð»Ð¸ вклÑÑиÑÑ DoH
DOH_SERVERS - ÑпиÑок URL DoH ÑеÑез пÑобел Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑеÑкого вÑбоÑа ÑабоÑаÑÑего ÑеÑвеÑа
DOH_SERVER - конкÑеÑнÑй DoH URL, оÑказ Ð¾Ñ Ð¿Ð¾Ð¸Ñка
ÐÑÐ¸Ð¼ÐµÑ Ð·Ð°Ð¿ÑÑка Ñ Ð¿ÐµÑеменнÑми:
SECURE_DNS=1 SKIP_TPWS=1 CURL_MAX_TIME=1 CURL=/tmp/curl ./blockcheck.sh
СÐÐÐ ÐÐРТÐÐ
ÐÑли в ÑиÑÑеме пÑиÑÑÑÑÑвÑÐµÑ ÑовмеÑÑимÑй netcat
(ncat Ð¾Ñ nmap или openbsd ncat. в openwrt по ÑмолÑÐ°Ð½Ð¸Ñ Ð½ÐµÑ),
Ñо вÑполнÑеÑÑÑ ÑканиÑование поÑÑов http или https вÑеÑ
IP адÑеÑов домена.
ÐÑли ни один IP не оÑвеÑаеÑ, Ñо ÑезÑлÑÑÐ°Ñ Ð¾Ñевиден. Ðожно оÑÑанавливаÑÑ ÑканиÑование.
ÐвÑомаÑиÑеÑки оно не оÑÑановиÑÑÑ, поÑÐ¾Ð¼Ñ ÑÑо netcat-Ñ Ð½ÐµÐ´Ð¾ÑÑаÑоÑно подÑобно инÑоÑмиÑÑÑÑ Ð¾ пÑиÑинаÑ
оÑибки.
ÐÑли доÑÑÑпна ÑолÑко ÑаÑÑÑ IP, Ñо можно ожидаÑÑ Ñ
аоÑиÑнÑÑ
Ñбоев, Ñ.к. подклÑÑение Ð¸Ð´ÐµÑ Ðº ÑлÑÑÐ°Ð¹Ð½Ð¾Ð¼Ñ Ð°Ð´ÑеÑÑ
из ÑпиÑка.
ÐÐ ÐÐÐÐ ÐÐ ÐРЧÐСТÐЧÐЫРIP block
Ðод ÑаÑÑиÑнÑм блоком подÑазÑмеваеÑÑÑ ÑиÑÑаÑиÑ, когда ÐºÐ¾Ð½Ð½ÐµÐºÑ Ð½Ð° поÑÑÑ ÐµÑÑÑ, но по опÑÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾Ð¼Ñ ÑÑанÑпоÑÑномÑ
или пÑÐ¸ÐºÐ»Ð°Ð´Ð½Ð¾Ð¼Ñ Ð¿ÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð²Ñегда Ð¸Ð´ÐµÑ ÑеакÑÐ¸Ñ DPI вне завиÑимоÑÑи Ð¾Ñ Ð·Ð°Ð¿ÑаÑиваемого домена.
ÐÑа пÑовеÑка Ñак же не вÑдаÑÑ Ð°Ð²ÑомаÑиÑеÑкого веÑдикÑа/ÑеÑениÑ, поÑÐ¾Ð¼Ñ ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾ ваÑиаÑий.
ÐмеÑÑо ÑÑого анализ пÑоиÑÑ
одÑÑего возложен на Ñамого полÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ ÑеÑ
, кÑо бÑÐ´ÐµÑ ÑиÑаÑÑ Ð»Ð¾Ð³.
СÑÑÑ ÑÑой пÑовеÑки в попÑÑке деÑнÑÑÑ Ð½ÐµÐ±Ð»Ð¾ÐºÐ¸ÑованнÑй IP Ñ Ð±Ð»Ð¾ÐºÐ¸ÑованнÑм доменом и наобоÑоÑ, анализиÑÑÑ
пÑи ÑÑом ÑеакÑÐ¸Ñ DPI. РеакÑÐ¸Ñ DPI обÑÑно пÑоÑвлÑеÑÑÑ Ð² виде ÑаймаÑÑа (завиÑание запÑоÑа), connection reset
или http redirect на заглÑÑкÑ. ÐÑбой дÑÑгой ваÑÐ¸Ð°Ð½Ñ ÑкоÑее вÑего говоÑÐ¸Ñ Ð¾Ð± оÑÑÑÑÑÑвии ÑеакÑии DPI.
Ð ÑаÑÑноÑÑи, лÑбÑе http кодÑ, кÑоме ÑедиÑекÑа, ведÑÑего именно на заглÑÑкÑ, а не кÑда-Ñо еÑе.
Ðа TLS - оÑибки handshake без задеÑжек.
ÐÑибка ÑеÑÑиÑикаÑа Ð¼Ð¾Ð¶ÐµÑ Ð³Ð¾Ð²Ð¾ÑиÑÑ ÐºÐ°Ðº о ÑеакÑии DPI Ñ MiTM аÑакой (подмена ÑеÑÑиÑикаÑа), Ñак и
о Ñом, ÑÑо пÑинимаÑÑий ÑеÑÐ²ÐµÑ Ð½ÐµÐ±Ð»Ð¾ÐºÐ¸Ñованного домена вÑе Ñавно пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð²Ð°Ñ TLS handshake
Ñ ÑÑжим доменом,
пÑÑаÑÑÑ Ð¿Ñи ÑÑом вÑдаÑÑ ÑеÑÑиÑÐ¸ÐºÐ°Ñ Ð±ÐµÐ· запÑоÑенного домена. ТÑебÑеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй анализ.
ÐÑли на заблокиÑованнÑй домен еÑÑÑ ÑеакÑÐ¸Ñ Ð½Ð° вÑеÑ
IP адÑеÑаÑ
, знаÑÐ¸Ñ ÐµÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовка по доменÑ.
ÐÑли на неблокиÑованнÑй домен еÑÑÑ ÑеакÑÐ¸Ñ Ð½Ð° IP адÑеÑаÑ
блокиÑованного домена, знаÑÐ¸Ñ Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑÑо блок по IP.
СооÑвеÑÑÑвенно, еÑли еÑÑÑ Ð¸ Ñо, и дÑÑгое, знаÑÐ¸Ñ ÐµÑÑÑ Ð¸ блок по IP, и блок по доменÑ.
ÐеблокиÑованнÑй домен пеÑвÑм делом пÑовеÑÑеÑÑÑ Ð½Ð° доÑÑÑпноÑÑÑ Ð½Ð° оÑигиналÑном адÑеÑе.
ÐÑи недоÑÑÑпноÑÑи ÑеÑÑ Ð¾ÑменÑеÑÑÑ, поÑколÑÐºÑ Ð¾Ð½ бÑÐ´ÐµÑ Ð½ÐµÐ¸Ð½ÑоÑмаÑивен.
ÐÑли вÑÑÑнено, ÑÑо еÑÑÑ ÑаÑÑиÑнÑй блок по IP на DPI, Ñо ÑкоÑее вÑего вÑе оÑÑалÑнÑе ÑеÑÑÑ Ð±ÑдÑÑ Ð¿ÑоваленÑ
вне завиÑимоÑÑи Ð¾Ñ ÑÑÑаÑегий обÑ
ода. Ðо бÑваÑÑ Ð¸ некоÑоÑÑе иÑклÑÑениÑ. ÐапÑимеÑ, пÑобиÑие ÑеÑез ipv6 option headers
. Ðли ÑделаÑÑ Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð½ не мог ÑаÑпознаÑÑ Ð¿ÑоÑокол пÑикладного ÑÑовнÑ.
ÐалÑнейÑие ÑеÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð½Ðµ лиÑÐµÐ½Ñ ÑмÑÑла.
ÐÐ ÐÐÐРЫ ÐÐÐÐÐÐ ÐÐÐРТÐÐЬÐÐ ÐÐ ÐÐÐÐÐУ ÐÐÐ ÐÐÐÐÐ ÐÐ IP
> testing iana.org on it's original
!!!!! AVAILABLE !!!!!
> testing rutracker.org on 192.0.43.8 (iana.org)
curl: (28) Operation timed out after 1002 milliseconds with 0 bytes received
> testing iana.org on 172.67.182.196 (rutracker.org)
HTTP/1.1 409 Conflict
> testing iana.org on 104.21.32.39 (rutracker.org)
HTTP/1.1 409 Conflict
> testing iana.org on it's original ip
!!!!! AVAILABLE !!!!!
> testing rutracker.org on 192.0.43.8 (iana.org)
curl: (28) Connection timed out after 1001 milliseconds
> testing iana.org on 172.67.182.196 (rutracker.org)
curl: (35) OpenSSL/3.2.1: error:0A000410:SSL routines::ssl/tls alert handshake failure
> testing iana.org on 104.21.32.39 (rutracker.org)
curl: (35) OpenSSL/3.2.1: error:0A000410:SSL routines::ssl/tls alert handshake failure
> testing iana.org on it's original ip
!!!!! AVAILABLE !!!!!
> testing rutracker.org on 192.0.43.8 (iana.org)
HTTP/1.1 307 Temporary Redirect
Location: https://www.gblnet.net/blocked.php
> testing iana.org on 172.67.182.196 (rutracker.org)
HTTP/1.1 409 Conflict
> testing iana.org on 104.21.32.39 (rutracker.org)
HTTP/1.1 409 Conflict
> testing iana.org on it's original ip
!!!!! AVAILABLE !!!!!
> testing rutracker.org on 192.0.43.8 (iana.org)
curl: (35) Recv failure: Connection reset by peer
> testing iana.org on 172.67.182.196 (rutracker.org)
curl: (35) OpenSSL/3.2.1: error:0A000410:SSL routines::ssl/tls alert handshake failure
> testing iana.org on 104.21.32.39 (rutracker.org)
curl: (35) OpenSSL/3.2.1: error:0A000410:SSL routines::ssl/tls alert handshake failure
ÐÐ ÐÐÐÐ ÐÐÐÐÐÐÐ IP ÐÐÐÐÐ ÐÐÐ ÐÐÐÐÐ TCP ÐÐРТРÐÐ Ð ÐТСУТСТÐÐÐ ÐÐÐÐÐ ÐÐ ÐÐÐÐÐУ
* port block tests ipv4 startmail.com:80
ncat -z -w 1 145.131.90.136 80
145.131.90.136 does not connect. netcat code 1
ncat -z -w 1 145.131.90.152 80
145.131.90.152 does not connect. netcat code 1
* curl_test_http ipv4 startmail.com
- checking without DPI bypass
curl: (28) Connection timed out after 2002 milliseconds
UNAVAILABLE code=28
- IP block tests (requires manual interpretation)
> testing iana.org on it's original ip
!!!!! AVAILABLE !!!!!
> testing startmail.com on 192.0.43.8 (iana.org)
HTTP/1.1 302 Found
Location: https://www.iana.org/
> testing iana.org on 145.131.90.136 (startmail.com)
curl: (28) Connection timed out after 2002 milliseconds
> testing iana.org on 145.131.90.152 (startmail.com)
curl: (28) Connection timed out after 2002 milliseconds
ÐÑÐ±Ð¾Ñ Ð¿Ð°ÑамеÑÑов
Файл /opt/zapret/config
иÑполÑзÑеÑÑÑ ÑазлиÑнÑми компоненÑами ÑиÑÑÐµÐ¼Ñ Ð¸ ÑодеÑÐ¶Ð¸Ñ Ð¾ÑновнÑе наÑÑÑойки.
Ðго нÑжно пÑоÑмоÑÑеÑÑ Ð¸ пÑи необÑ
одимоÑÑи оÑÑедакÑиÑоваÑÑ.
Ðа linux ÑиÑÑемаÑ
можно вÑбÑаÑÑ Ð¸ÑполÑзоваÑÑ iptables
или nftables
.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð° ÑÑадиÑионнÑÑ
linux вÑбиÑаеÑÑÑ nftables
, еÑли ÑÑÑановлен nft.
Ðа openwrt по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбиÑаеÑÑÑ nftables
на новÑÑ
веÑÑиÑÑ
Ñ firewall4.
FWTYPE=iptables
Ðа nftables
можно оÑклÑÑиÑÑ ÑÑандаÑÑнÑÑ ÑÑ
ÐµÐ¼Ñ Ð¿ÐµÑеÑ
ваÑа ÑÑаÑика поÑле NAT и пеÑейÑи на пеÑеÑ
Ð²Ð°Ñ Ð´Ð¾ NAT.
ÐÑо ÑÐ´ÐµÐ»Ð°ÐµÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм пÑименение некоÑоÑÑÑ
меÑодов дÑÑÐµÐ½Ð¸Ñ Ð½Ð° пÑоÑ
одÑÑем ÑÑаÑике как в ÑлÑÑае Ñ iptables
.
nfqws наÑÐ½ÐµÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð°Ð´ÑеÑа пакеÑов из локалÑной ÑеÑи и оÑобÑажаÑÑ Ð¸Ñ
в логаÑ
.
POSTNAT=0
СÑÑеÑÑвÑÐµÑ 3 ÑÑандаÑÑнÑÑ
опÑии запÑÑка, наÑÑÑаиваемÑÑ
ÑазделÑно и незавиÑимо: tpws-socks
, tpws, nfqws.
ÐÑ
можно иÑполÑзоваÑÑ ÐºÐ°Ðº по оÑделÑноÑÑи, Ñак и вмеÑÑе. ÐапÑимеÑ, вам надо ÑделаÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑиÑ
из меÑодов, доÑÑÑпнÑÑ
ÑолÑко в tpws и ÑолÑко в nfqws. ÐÑ
можно задейÑÑвоваÑÑ Ð²Ð¼ÐµÑÑе.
tpws бÑÐ´ÐµÑ Ð¿ÑозÑаÑно локализовÑваÑÑ ÑÑаÑик на ÑиÑÑеме и пÑименÑÑÑ Ñвое дÑÑение, nfqws бÑÐ´ÐµÑ Ð´ÑÑиÑÑ ÑÑаÑик,
иÑÑ
одÑÑий Ñ Ñамой ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ñле обÑабоÑки на tpws.
Рможно на ÑÑÑ Ð¶Ðµ ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ð²ÐµÑиÑÑ Ð±ÐµÐ· паÑамеÑÑов socks proxy, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑаÑÑ Ð´Ð¾ÑÑÑп к обÑ
Ð¾Ð´Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок ÑеÑез пÑокÑи.
Таким обÑазом, вÑе 3 Ñежима вполне могÑÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑÑÑ Ð²Ð¼ÐµÑÑе.
Так же безÑÑловно и незавиÑимо, в добавок к ÑÑандаÑÑнÑм опÑиÑм, пÑименÑÑÑÑÑ Ð²Ñе custom ÑкÑипÑÑ Ð² init.d/{sysv,openwrt,macos}/custom.d
.
Ðднако, пÑи комбиниÑовании tpws и nfqws Ñ Ð¿ÐµÑеÑеÑением по L3/L4 пÑоÑоколам не вÑе Ñак пÑоÑÑо , как Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½Ð° пеÑвÑй взглÑд.
ÐеÑвÑм вÑегда ÑабоÑÐ°ÐµÑ tpws, за ним - nfqws. Ðа nfqws Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ñже "задÑÑеннÑй" ÑÑаÑик Ð¾Ñ tpws.
ÐолÑÑаеÑÑÑ, ÑÑо дÑÑилка дÑÑÐ¸Ñ Ð´ÑÑилкÑ, и дÑÑилка не ÑÑабаÑÑваеÑ, поÑÐ¾Ð¼Ñ ÑÑо ее задÑÑили.
ÐÐ¾Ñ Ñакой веÑелÑй моменÑ. nfqws пеÑеÑÑÐ°ÐµÑ ÑаÑпознаваÑÑ Ð¿ÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð¸ пÑименÑÑÑ Ð¼ÐµÑодÑ.
ÐекоÑоÑÑе меÑÐ¾Ð´Ñ Ð´ÑÑÐµÐ½Ð¸Ñ Ð¾Ñ tpws nfqws в ÑоÑÑоÑнии ÑаÑпознаÑÑ Ð¸ оÑÑабоÑаÑÑ ÐºÐ¾ÑÑекÑно, но болÑÑинÑÑво - неÑ.
РеÑение - иÑполÑзование --dpi-desync-any-protocol
в nfqws и ÑабоÑа как Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑÑнÑм пÑоÑоколом.
ÐомбиниÑование tpws и nfqws ÑвлÑеÑÑÑ Ð¿ÑодвинÑÑÑм ваÑианÑом, ÑÑебÑÑÑим глÑбокого Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ð¿ÑоиÑÑ
одÑÑего.
ÐÑÐµÐ½Ñ Ð¶ÐµÐ»Ð°ÑелÑно пÑоанализиÑоваÑÑ Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ nfqws по --debug
логÑ. ÐÑе ли Ñак, как Ð²Ñ Ð·Ð°Ð´Ñмали.
ÐдновÑеменное иÑполÑзование tpws и nfqws без пеÑеÑеÑÐµÐ½Ð¸Ñ Ð¿Ð¾ L3/L4 (Ñо еÑÑÑ nfqws - udp, tpws - tcp или nfqws - port 443, tpws - port 80 или nfqws - ipv4, tpws - ipv6) пÑоблем не пÑедÑÑавлÑеÑ.
tpws-socks
ÑÑебÑÐµÑ Ð½Ð°ÑÑÑойки паÑамеÑÑов tpws, но не ÑÑебÑÐµÑ Ð¿ÐµÑеÑ
ваÑа ÑÑаÑика.
ÐÑÑалÑнÑе опÑии ÑÑебÑÑÑ ÑазделÑно наÑÑÑойки пеÑеÑ
ваÑа ÑÑаÑика и опÑии ÑамиÑ
демонов.
ÐÐ°Ð¶Ð´Ð°Ñ Ð¾Ð¿ÑÐ¸Ñ Ð¿ÑÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ Ð·Ð°Ð¿ÑÑк одного инÑÑанÑа ÑооÑвеÑÑÑвÑÑÑего демона. ÐÑе ÑазлиÑÐ¸Ñ Ð¼ÐµÑодов дÑÑениÑ
Ð´Ð»Ñ http
, https
, quic
и Ñ.д. Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾ÑÑÐ°Ð¶ÐµÐ½Ñ ÑеÑез ÑÑ
ÐµÐ¼Ñ Ð¼ÑлÑÑиÑÑÑаÑегий.
Ð ÑÑом ÑмÑÑле наÑÑÑойка поÑ
ожа на ваÑÐ¸Ð°Ð½Ñ winws
на Windows, а пеÑÐµÐ½Ð¾Ñ ÐºÐ¾Ð½Ñигов не должен пÑедÑÑавлÑÑÑ Ð±Ð¾Ð»ÑÑиÑ
ÑложноÑÑей.
ÐÑновное пÑавило наÑÑÑойки пеÑеÑ
ваÑа - пеÑеÑ
ваÑÑвайÑе ÑолÑко необÑ
одимÑй минимÑм.
ÐÑбой пеÑеÑ
Ð²Ð°Ñ Ð»Ð¸Ñнего - ÑÑо беÑÑмÑÑÐ»ÐµÐ½Ð½Ð°Ñ Ð½Ð°Ð³ÑÑзка на ваÑÑ ÑиÑÑемÑ.
ÐпÑии демонов --ipset
иÑполÑзоваÑÑ Ð·Ð°Ð¿ÑеÑено. ÐÑо Ñделано намеÑенно и иÑкÑÑÑÑвенно, ÑÑÐ¾Ð±Ñ Ð½Ðµ пооÑÑÑÑÑ Ð¿ÑоÑÑой и
ÑабоÑаÑÑий, но неÑÑÑекÑивнÑй меÑод на *nix ÑиÑÑемаÑ
. ÐÑполÑзÑйÑе ipset
-Ñ Ñежима ÑдÑа.
ÐÑи необÑ
одимоÑÑи пиÑиÑе и задейÑÑвÑйÑе custom scripts
.
ÐаÑÑÑойки демонов можно Ð´Ð»Ñ ÑдобÑÑва пиÑаÑÑ Ð½Ð° неÑколÑкиÑ
ÑÑÑокаÑ
, иÑполÑзÑÑ Ð´Ð²Ð¾Ð¹Ð½Ñе или одинаÑнÑе кавÑÑки.
ЧÑÐ¾Ð±Ñ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑ ÑÑандаÑÑнÑе обновлÑемÑе Ñ
оÑÑ-лиÑÑÑ Ð¸Ð· ipset
, иÑполÑзÑйÑе маÑÐºÐµÑ http
, tls
, quic
).
<HOSTLIST_NOAUTO> - ÑÑо ваÑиаÑиÑ, пÑи коÑоÑой ÑÑандаÑÑнÑй авÑолиÑÑ Ð¸ÑполÑзÑеÑÑÑ ÐºÐ°Ðº обÑÑнÑй.
То еÑÑÑ Ð½Ð° ÑÑом пÑоÑиле не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑкое добавление заблокиÑованнÑÑ
доменов.
Ðо еÑли на дÑÑгом пÑоÑиле ÑÑо-Ñо бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾, Ñо ÑÑÐ¾Ñ Ð¿ÑоÑÐ¸Ð»Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑки.
ÐклÑÑение ÑÑандаÑÑной опÑии tpws в Ñежиме socks
TPWS_SOCKS_ENABLE=0
Ðа каком поÑÑÑ Ð±ÑÐ´ÐµÑ ÑлÑÑаÑÑ tpws socks. пÑоÑлÑÑиваеÑÑÑ ÑолÑко localhost и LAN
TPPORT_SOCKS=987
ÐаÑамеÑÑÑ tpws Ð´Ð»Ñ Ñежима socks
TPWS_SOCKS_OPT="
--filter-tcp=80 --methodeol <HOSTLIST> --new
--filter-tcp=443 --split-pos=1,midsld --disorder <HOSTLIST>"
ÐклÑÑение ÑÑандаÑÑной опÑии tpws в пÑозÑаÑном Ñежиме
TPWS_ENABLE=0
Ðакие tcp поÑÑÑ ÑледÑÐµÑ Ð¿ÐµÑенапÑавлÑÑÑ Ð½Ð° tpws
TPWS_PORTS=80,443
ÐаÑамеÑÑÑ tpws Ð´Ð»Ñ Ð¿ÑозÑаÑного Ñежима
TPWS_OPT="
--filter-tcp=80 --methodeol <HOSTLIST> --new
--filter-tcp=443 --split-pos=1,midsld --disorder <HOSTLIST>"
ÐклÑÑение ÑÑандаÑÑной опÑии nfqws
NFQWS_ENABLE=0
Ðакие tcp и udp поÑÑÑ ÑледÑÐµÑ Ð¿ÐµÑенапÑавлÑÑÑ Ð½Ð° nfqws Ñ Ð¸ÑполÑзованием connbytes огÑаниÑиÑелÑ
connbytes позволÑÐµÑ Ð¸Ð· каждого ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿ÐµÑенапÑавиÑÑ ÑолÑко заданное колиÑеÑÑво наÑалÑнÑÑ
пакеÑов по ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ - на вÑ
од и на вÑÑ
од.
ÐÑо более ÑÑÑекÑÐ¸Ð²Ð½Ð°Ñ kernel-mode замена паÑамеÑÑа nfqws --dpi-desync-cutoff=nX
.
NFQWS_PORTS_TCP=80,443
NFQWS_PORTS_UDP=443
СколÑко наÑалÑнÑÑ Ð²Ñ Ð¾Ð´ÑÑÐ¸Ñ Ð¸ иÑÑ Ð¾Ð´ÑÑÐ¸Ñ Ð¿Ð°ÐºÐµÑов нÑжно пеÑенапÑавлÑÑÑ Ð½Ð° nfqws по ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð½Ð°Ð¿ÑавлениÑ
NFQWS_TCP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD))
NFQWS_TCP_PKT_IN=3
NFQWS_UDP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD))
NFQWS_UDP_PKT_IN=0
ÐадаÑÑ Ð¿Ð¾ÑÑÑ Ð´Ð»Ñ Ð¿ÐµÑенапÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° nfqws без connbytes огÑаниÑиÑелÑ
ÐÑÑÑ ÑÑаÑик, иÑÑ
одÑÑий ÑÐµÐ°Ð½Ñ Ð´Ð»Ñ ÐºÐ¾ÑоÑого необÑ
одимо пеÑенапÑавлÑÑÑ Ð²ÐµÑÑ Ð±ÐµÐ· огÑаниÑиÑелей.
ТипиÑное пÑименение - поддеÑжка http keepalives на stateless DPI.
ÐÑо ÑÑÑеÑÑвенно нагÑÑÐ¶Ð°ÐµÑ Ð¿ÑоÑеÑÑоÑ. ÐÑполÑзоваÑÑ ÑолÑко еÑли понимаеÑе заÑем. ЧаÑе вÑего ÑÑо не нÑжно.
ÐÑ
одÑÑий ÑÑаÑик огÑаниÑиваеÑÑÑ Ð¿Ð¾ connbytes ÑеÑез паÑамеÑÑÑ PKT_IN.
ÐÑли ÑказÑваеÑе здеÑÑ ÐºÐ°ÐºÐ¸Ðµ-Ñо поÑÑÑ, желаÑелÑно иÑ
ÑбÑаÑÑ Ð¸Ð· веÑÑии Ñ connbytes огÑаниÑиÑелем
NFQWS_PORTS_TCP_KEEPALIVE=80
NFQWS_PORTS_UDP_KEEPALIVE=
ÐаÑамеÑÑÑ nfqws
NFQWS_OPT="
--filter-tcp=80 --dpi-desync=fake,multisplit --dpi-desync-split-pos=method+2 --dpi-desync-fooling=md5sig <HOSTLIST> --new
--filter-tcp=443 --dpi-desync=fake,multidisorder --dpi-desync-split-pos=1,midsld --dpi-desync-fooling=badseq,md5sig <HOSTLIST> --new
--filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=6 <HOSTLIST_NOAUTO>
Режим ÑилÑÑÑаÑии Ñ Ð¾ÑÑов:
none - пÑименÑÑÑ Ð´ÑÑение ко вÑем Ñ
оÑÑам
ipset - огÑаниÑиÑÑ Ð´ÑÑение ipset-ом zapret/zapret6
hostlist - огÑаниÑиÑÑ Ð´ÑÑение ÑпиÑком Ñ
оÑÑов из Ñайла
autohostlist - Ñежим hostlist + ÑаÑпознавание блокиÑовок и ведение авÑомаÑиÑеÑкого лиÑÑа
MODE_FILTER=none
ÐаÑÑÑойка ÑиÑÑÐµÐ¼Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²ÑбоÑоÑнÑм traffic offload (ÑолÑко еÑли поддеÑживаеÑÑÑ)
donttouch: вÑбоÑоÑное ÑпÑавление оÑклÑÑено, иÑполÑзÑеÑÑÑ ÑиÑÑÐµÐ¼Ð½Ð°Ñ Ð½Ð°ÑÑÑойка, пÑоÑÑой инÑÑаллÑÑÐ¾Ñ Ð²ÑклÑÑÐ°ÐµÑ ÑиÑÑемнÑÑ Ð½Ð°ÑÑÑойкÑ, еÑли она не ÑовмеÑÑима Ñ Ð²ÑбÑаннÑм Ñежимом
none: вÑбоÑоÑное ÑпÑавление оÑклÑÑено, пÑоÑÑой инÑÑаллÑÑÐ¾Ñ Ð²ÑклÑÑÐ°ÐµÑ ÑиÑÑемнÑÑ Ð½Ð°ÑÑÑойкÑ
software: вÑбоÑоÑное ÑпÑавление вклÑÑено в Ñежиме software, пÑоÑÑой инÑÑаллÑÑÐ¾Ñ Ð²ÑклÑÑÐ°ÐµÑ ÑиÑÑемнÑÑ Ð½Ð°ÑÑÑойкÑ
hardware: вÑбоÑоÑное ÑпÑавление вклÑÑено в Ñежиме hardware, пÑоÑÑой инÑÑаллÑÑÐ¾Ñ Ð²ÑклÑÑÐ°ÐµÑ ÑиÑÑемнÑÑ Ð½Ð°ÑÑÑойкÑ
FLOWOFFLOAD=donttouch
ÐаÑамеÑÑ GETLIST ÑказÑÐ²Ð°ÐµÑ Ð¸Ð½ÑÑаллÑÑоÑÑ install_easy.sh
какой ÑкÑÐ¸Ð¿Ñ Ð´ÐµÑгаÑÑ
Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка заблокиÑованнÑÑ
ip или Ñ
оÑÑов.
Ðн же вÑзÑваеÑÑÑ ÑеÑез get_config.sh
из запланиÑованнÑÑ
заданий (crontab или systemd timer).
ÐомеÑÑиÑе ÑÑда название ÑкÑипÑа, коÑоÑÑй бÑдеÑе иÑполÑзоваÑÑ Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð»Ð¸ÑÑов.
ÐÑли не нÑжно, Ñо паÑамеÑÑ ÑледÑÐµÑ Ð·Ð°ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑоваÑÑ.
Ðожно индивидÑалÑно оÑклÑÑиÑÑ ipv4 или ipv6. ÐÑли паÑамеÑÑ Ð·Ð°ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑован или не Ñавен "1", иÑполÑзование пÑоÑокола ÑазÑеÑено.
DISABLE_IPV4=1
DISABLE_IPV6=1
ÐолиÑеÑÑво поÑоков Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¿Ð¾ÑоÑного DNS ÑеÑолвеÑа mdig (1..100).
Чем иÑ
болÑÑе, Ñем бÑÑÑÑее, но не обидиÑÑÑ Ð»Ð¸ на Ð´Ð¾Ð»Ð±ÐµÐ¶ÐºÑ Ð²Ð°Ñ DNS ÑеÑвеÑ?
MDIG_THREADS=30
ÐеÑÑо Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð²ÑеменнÑÑ
Ñайлов. ÐÑи ÑкаÑивании огÑомнÑÑ
ÑееÑÑÑов в /tmp
меÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ Ñ
ваÑиÑÑ.
ÐÑли ÑÐ°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑÑема на ноÑмалÑном ноÑиÑеле (не вÑÑÑÐ¾ÐµÐ½Ð½Ð°Ñ Ð¿Ð°Ð¼ÑÑÑ ÑоÑÑеÑа), Ñо можно
ÑказаÑÑ Ð¼ÐµÑÑо на ÑлÑÑке или диÑке.
TMPDIR=/opt/zapret/tmp
ÐпÑии Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ipset-ов и nfset-ов
SET_MAXELEM=262144
IPSET_OPT="hashsize 262144 maxelem 2097152"
Ð¥Ñк, позволÑÑÑий внеÑÑи ip адÑеÑа динамиÑеÑки. $1 = Ð¸Ð¼Ñ ÑаблиÑÑ
ÐдÑеÑа вÑводÑÑÑÑ Ð² stdout. Ð ÑлÑÑае nfset авÑомаÑиÑеÑки ÑеÑаеÑÑÑ Ð¿Ñоблема возможного пеÑеÑеÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑеÑвалов.
IPSET_HOOK="/etc/zapret.ipset.hook"
ÐРРРУÐÐÐЬ в dmesg по Ð¿Ð¾Ð²Ð¾Ð´Ñ Ð½ÐµÑ Ð²Ð°Ñки памÑÑи.
ÐÐ¾Ð¶ÐµÑ Ñак ÑлÑÑиÑÑÑÑ, ÑÑо памÑÑи в ÑиÑÑеме доÑÑаÑоÑно, но пÑи попÑÑке заполниÑÑ Ð¾Ð³ÑомнÑй ipset
ÑдÑо наÑÐ¸Ð½Ð°ÐµÑ Ð³Ñомко ÑÑгаÑÑÑÑ, ipset
заполнÑеÑÑÑ Ð½Ðµ полноÑÑÑÑ.
ÐеÑоÑÑÐ½Ð°Ñ Ð¿ÑиÑина в Ñом, ÑÑо пÑевÑÑаеÑÑÑ hashsize
, заданнÑй пÑи Ñоздании ipset
(create_ipset.sh).
ÐÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿ÐµÑеаллокаÑÐ¸Ñ ÑпиÑка, не наÑ
одиÑÑÑ Ð½ÐµÐ¿ÑеÑÑвнÑÑ
ÑÑагменÑов памÑÑи нÑжной длинÑ.
ÐÑо леÑиÑÑÑ ÑвелиÑением hashsize
. Ðо Ñем болÑÑе hashsize
, Ñем болÑÑе Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ ipset
в памÑÑи.
ÐадаваÑÑ ÑлиÑком болÑÑой hashsize
Ð´Ð»Ñ Ð½ÐµÐ´Ð¾ÑÑаÑоÑно болÑÑиÑ
ÑпиÑков неÑелеÑообÑазно.
ÐпÑии Ð´Ð»Ñ Ð²Ñзова ip2net. ÐÑделÑно Ð´Ð»Ñ Ð»Ð¸ÑÑов ipv4 и ipv6.
IP2NET_OPT4="--prefix-length=22-30 --v4-threshold=3/4"
IP2NET_OPT6="--prefix-length=56-64 --v6-threshold=5"
ÐаÑÑÑойка Ñежима autohostlist.
ÐÑи ÑвелиÑении AUTOHOSTLIST_RETRANS_THRESHOLD и иÑполÑзовании nfqws ÑледÑÐµÑ Ð¿ÐµÑеÑмоÑÑеÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов NFQWS_TCP_PKT_OUT и NFQWS_UDP_PKT_OUT. ÐÑе ÑеÑÑанÑмиÑÑии Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ nfqws, инаÑе ÑÑÐ¸Ð³Ð³ÐµÑ "завиÑание запÑоÑа" не ÑÑабоÑаеÑ.
AUTOHOSTLIST_RETRANS_THRESHOLD=3
AUTOHOSTLIST_FAIL_THRESHOLD=3
AUTOHOSTLIST_FAIL_TIME=60
AUTOHOSTLIST_DEBUG=0
ÐклÑÑиÑÑ Ð¸Ð»Ð¸ вÑклÑÑиÑÑ ÑжаÑие болÑÑÐ¸Ñ Ð»Ð¸ÑÑов в ÑкÑипÑÐ°Ñ ipset/*.sh.
GZIP_LISTS=1
Ðоманда Ð´Ð»Ñ Ð¿ÐµÑезагÑÑзки ip ÑÐ°Ð±Ð»Ð¸Ñ ÑаеÑвола.
ÐÑли не Ñказано или пÑÑÑое, вÑбиÑаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки ipset или ipfw пÑи иÑ
налиÑии.
Ðа BSD ÑиÑÑемаÑ
Ñ PF Ð½ÐµÑ Ð°Ð²ÑомаÑиÑеÑкой загÑÑзки. Там нÑжно ÑказаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñвно: pfctl -f /etc/pf.conf
Ðа более новÑÑ
pfctl (еÑÑÑ Ð² новÑÑ
FreeBSD, Ð½ÐµÑ Ð² OpenBSD 6.8) можно даÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð·Ð°Ð³ÑÑзки ÑолÑко ÑаблиÑ: pfctl -Tl -f /etc/pf.conf
"-" ознаÑÐ°ÐµÑ Ð¾ÑклÑÑение загÑÑзки лиÑÑов даже пÑи налиÑии поддеÑживаемого backend.
LISTS_RELOAD="pfctl -f /etc/pf.conf"
LISTS_RELOAD=-
Ð openwrt ÑÑÑеÑÑвÑÐµÑ ÑеÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ 'lan'. ТолÑко ÑÑаÑик Ñ ÑÑой ÑеÑи бÑÐ´ÐµÑ Ð¿ÐµÑенапÑавлен на tpws.
Ðо возможно задаÑÑ Ð´ÑÑгие ÑеÑи или ÑпиÑок ÑеÑей:
OPENWRT_LAN="lan lan2 lan3"
Ð openwrt в каÑеÑÑве wan беÑÑÑÑÑ Ð¸Ð½ÑеÑÑейÑÑ, имеÑÑие default route. ÐÑделÑно Ð´Ð»Ñ ipv4 и ipv6. ÐÑо можно пеÑеопÑеделиÑÑ:
OPENWRT_WAN4="wan4 vpn"
OPENWRT_WAN6="wan6 vpn6"
ÐаÑамеÑÑ INIT_APPLY_FW=1 ÑазÑеÑÐ°ÐµÑ init ÑкÑипÑÑ ÑамоÑÑоÑÑелÑно пÑименÑÑÑ Ð¿Ñавила iptables.
ÐÑи инÑÑ
знаÑениÑÑ
или еÑли паÑамеÑÑ Ð·Ð°ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑиÑован, пÑавила пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ðµ бÑдÑÑ.
ÐÑо полезно, еÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑиÑÑема ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑаеÑволом, в наÑÑÑойки коÑоÑой и ÑледÑÐµÑ Ð¿ÑикÑÑÑиÑÑ Ð¿Ñавила.
Ðа openwrt непÑименимо пÑи иÑполÑзовании firewall3+iptables.
СледÑÑÑие наÑÑÑойки не акÑÑалÑÐ½Ñ Ð´Ð»Ñ openwrt:
ÐÑли ваÑа ÑиÑÑема ÑабоÑÐ°ÐµÑ ÐºÐ°Ðº ÑоÑÑеÑ, Ñо нÑжно впиÑаÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð²Ð½ÑÑÑÐµÐ½Ð½Ð¸Ñ Ð¸ внеÑÐ½Ð¸Ñ Ð¸Ð½ÑеÑÑейÑов:
IFACE_LAN=eth0
IFACE_WAN=eth1
IFACE_WAN6="henet ipsec0"
ÐеÑколÑко инÑеÑÑейÑов могÑÑ Ð±ÑÑÑ Ð²Ð¿Ð¸ÑÐ°Ð½Ñ ÑеÑез пÑобел. ÐÑли IFACE_WAN6 не задан, Ñо беÑеÑÑÑ Ð·Ð½Ð°Ñение IFACE_WAN.
[!IMPORTANT] ÐаÑÑÑойка маÑÑÑÑÑизаÑии, маÑкаÑада и Ñ.д. не Ð²Ñ Ð¾Ð´Ð¸Ñ Ð² задаÑÑ zapret. ÐклÑÑаÑÑÑÑ ÑолÑко ÑежимÑ, обеÑпеÑиваÑÑие пеÑÐµÑ Ð²Ð°Ñ ÑÑанзиÑного ÑÑаÑика. Ðозможно опÑеделиÑÑ Ð½ÐµÑколÑко инÑеÑÑейÑов ÑледÑÑÑим обÑазом:
IFACE_LAN="eth0 eth1 eth2"
ÐÑикÑÑÑивание к ÑиÑÑеме ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑаеÑволом или Ñвоей ÑиÑÑеме запÑÑка
ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе какÑÑ-Ñо ÑиÑÑÐµÐ¼Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑаеÑволом, Ñо она Ð¼Ð¾Ð¶ÐµÑ Ð²ÑÑÑпаÑÑ Ð² конÑÐ»Ð¸ÐºÑ Ñ Ð¸Ð¼ÐµÑÑимÑÑ ÑкÑипÑом запÑÑка. ÐÑи повÑоÑном пÑименении пÑавил она могла Ð±Ñ Ð¿Ð¾Ð»Ð¾Ð¼Ð°ÑÑ Ð½Ð°ÑÑÑойки iptables Ð¾Ñ zapret. Ð ÑÑом ÑлÑÑае пÑавила Ð´Ð»Ñ iptables Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÑикÑÑÑÐµÐ½Ñ Ðº ваÑÐµÐ¼Ñ ÑаеÑÐ²Ð¾Ð»Ñ Ð¾ÑделÑно Ð¾Ñ Ð·Ð°Ð¿ÑÑка tpws или nfqws.
СледÑÑÑие вÑÐ·Ð¾Ð²Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ð¿ÑимениÑÑ Ð¸Ð»Ð¸ ÑбÑаÑÑ Ð¿Ñавила iptables оÑделÑно:
/opt/zapret/init.d/sysv/zapret start_fw
/opt/zapret/init.d/sysv/zapret stop_fw
/opt/zapret/init.d/sysv/zapret restart_fw
Ð Ñак можно запÑÑÑиÑÑ Ð¸Ð»Ð¸ оÑÑановиÑÑ Ð´ÐµÐ¼Ð¾Ð½Ñ Ð¾ÑделÑно Ð¾Ñ ÑаеÑвола:
/opt/zapret/init.d/sysv/zapret start_daemons
/opt/zapret/init.d/sysv/zapret stop_daemons
/opt/zapret/init.d/sysv/zapret restart_daemons
nftables
ÑводÑÑ Ð¿ÑакÑиÑеÑки на Ð½ÐµÑ ÐºÐ¾Ð½ÑликÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑазнÑми ÑиÑÑемами ÑпÑавлениÑ, поÑколÑÐºÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ
иÑполÑзоваÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑе ÑаблиÑÑ Ð¸ Ñ
Ñки. ÐÑполÑзÑеÑÑÑ Ð¾ÑделÑÐ½Ð°Ñ nf-ÑаблиÑа "zapret".
ÐÑли ваÑа ÑиÑÑема ее не бÑÐ´ÐµÑ ÑÑогаÑÑ, ÑкоÑее вÑего вÑе бÑÐ´ÐµÑ Ð½Ð¾ÑмалÑно.
ÐÐ»Ñ nftables
пÑедÑÑмоÑÑено неÑколÑко дополниÑелÑнÑÑ
вÑзовов:
ÐоÑмоÑÑеÑÑ set-Ñ Ð¸Ð½ÑеÑÑейÑов, оÑноÑÑÑиÑ
ÑÑ Ðº lan, wan и wan6. Ðо ним Ð¸Ð´ÐµÑ Ð·Ð°Ð²ÐµÑÑÑвание ÑÑаÑика.
Ð Ñак же ÑаблиÑÑ flow table Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ инÑеÑÑейÑов ingress hook.
/opt/zapret/init.d/sysv/zapret list_ifsets
ÐбновиÑÑ set-Ñ Ð¸Ð½ÑеÑÑейÑов, оÑноÑÑÑиÑ
ÑÑ Ðº lan, wan и wan6.
ÐÐ»Ñ ÑÑадиÑионнÑÑ
linux ÑпиÑок инÑеÑÑейÑов беÑеÑÑÑ Ð¸Ð· пеÑеменнÑÑ
конÑига IFACE_LAN, IFACE_WAN.
ÐÐ»Ñ openwrt опÑеделÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. ÐножеÑÑво lanif Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑаÑÑиÑено паÑамеÑÑом OPENWRT_LAN.
ÐÑе инÑеÑÑейÑÑ lan и wan Ñак же добавлÑÑÑÑÑ Ð² ingress hook Ð¾Ñ flow table.
/opt/zapret/init.d/sysv/zapret reload_ifsets
ÐÑоÑмоÑÑ ÑаблиÑÑ Ð±ÐµÐ· ÑодеÑжимого set-ов. ÐÑзÑÐ²Ð°ÐµÑ nft -t list table inet zapret
/opt/zapret/init.d/sysv/zapret list_table
Так же возможно пÑиÑепиÑÑÑÑ Ñвоим ÑкÑипÑом к лÑбой ÑÑадии пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ ÑнÑÑÐ¸Ñ ÑаеÑвола Ñо ÑÑоÑÐ¾Ð½Ñ zapret ÑкÑипÑов:
INIT_FW_PRE_UP_HOOK="/etc/firewall.zapret.hook.pre_up"
INIT_FW_POST_UP_HOOK="/etc/firewall.zapret.hook.post_up"
INIT_FW_PRE_DOWN_HOOK="/etc/firewall.zapret.hook.pre_down"
INIT_FW_POST_DOWN_HOOK="/etc/firewall.zapret.hook.post_down"
ÐÑи наÑÑÑойки доÑÑÑÐ¿Ð½Ñ Ð² config.
ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, еÑли вам нÑжно иÑполÑзоваÑÑ nftables set-Ñ, напÑÐ¸Ð¼ÐµÑ ipban
/ipban6
.
nfset-Ñ Ð¿ÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ ÑолÑко одной ÑаблиÑе, ÑледоваÑелÑно вам пÑидеÑÑÑ Ð¿Ð¸ÑаÑÑ Ð¿Ñавила Ð´Ð»Ñ ÑаблиÑÑ zapret,
а знаÑÐ¸Ñ Ð½Ñжно ÑинÑ
ÑонизиÑоваÑÑÑÑ Ñ Ð¿Ñименением/ÑнÑÑием пÑавил Ñо ÑÑоÑÐ¾Ð½Ñ zapret ÑкÑипÑов.
ÐаÑÐ¸Ð°Ð½Ñ custom
custom ÑкÑипÑÑ - ÑÑо маленÑкие shell пÑогÑаммÑ, ÑпÑавлÑÑÑие неÑÑандаÑÑнÑми Ñежимами пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ zapret или ÑаÑÑнÑми ÑлÑÑаÑми, коÑоÑÑе не могÑÑ Ð±ÑÑÑ Ð¸Ð½ÑегÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² оÑновнÑÑ ÑаÑÑÑ Ð±ÐµÐ· загÑÐ¾Ð¼Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¸ замÑÑоÑÐ¸Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð°. ÐÐ»Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ¸Ñ custom ÑледÑÐµÑ Ð¿Ð¾Ð¼ÐµÑаÑÑ ÑÐ°Ð¹Ð»Ñ Ð² ÑледÑÑÑие диÑекÑоÑии в завиÑимоÑÑи Ð¾Ñ Ð²Ð°Ñей ÑиÑÑемÑ:
/opt/zapret/init.d/sysv/custom.d
/opt/zapret/init.d/openwrt/custom.d
/opt/zapret/init.d/macos/custom.d
ÐиÑекÑоÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð¿ÑоÑканиÑована в алÑавиÑном поÑÑдке, и каждÑй ÑкÑÐ¸Ð¿Ñ Ð±ÑÐ´ÐµÑ Ð¿Ñименен.
Ð init.d
имееÑÑÑ custom.d.examples.linux
, в init.d/macos
- custom.d.examples
.
ÐÑо гоÑовÑе ÑкÑипÑÑ, коÑоÑÑе можно копиÑоваÑÑ Ð² custom.d
. ÐÑ
можно взÑÑÑ Ð·Ð° оÑÐ½Ð¾Ð²Ñ Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÑобÑÑвеннÑÑ
.
ÐÐ»Ñ linux пиÑеÑÑÑ ÐºÐ¾Ð´ в ÑÑнкÑии
zapret_custom_daemons
zapret_custom_firewall
zapret_custom_firewall_nft
zapret_custom_firewall_nft_flush
ÐÐ»Ñ macos
zapret_custom_daemons
zapret_custom_firewall_v4
zapret_custom_firewall_v6
zapret_custom_daemons Ð¿Ð¾Ð´Ð½Ð¸Ð¼Ð°ÐµÑ Ð´ÐµÐ¼Ð¾Ð½Ñ nfqws/tpws в нÑжном вам колиÑеÑÑве и Ñ Ð½ÑжнÑми вам паÑамеÑÑами. РпеÑвом паÑамеÑÑе пеÑедаеÑÑÑ ÐºÐ¾Ð´ опеÑаÑии: 1 = запÑÑк, 0 = оÑÑанов. Ð¡Ñ ÐµÐ¼Ð° запÑÑка демонов в openwrt оÑлиÑаеÑÑÑ - иÑполÑзÑеÑÑÑ procd. ÐоÑÑÐ¾Ð¼Ñ Ð»Ð¾Ð³Ð¸ÐºÐ° оÑÑанова оÑÑÑÑÑÑвÑÐµÑ Ð·Ð° ненадобноÑÑÑÑ, оÑÑанов никогда не вÑзÑваеÑÑÑ.
zapret_custom_firewall Ð¿Ð¾Ð´Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸ ÑбиÑÐ°ÐµÑ Ð¿Ñавила iptables
.
РпеÑвом паÑамеÑÑе пеÑедаеÑÑÑ ÐºÐ¾Ð´ опеÑаÑии: 1 = запÑÑк, 0 = оÑÑанов.
zapret_custom_firewall_nft Ð¿Ð¾Ð´Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿Ñавила nftables. Ðогика оÑÑанова оÑÑÑÑÑÑвÑÐµÑ Ð·Ð° ненадобноÑÑÑÑ. СÑандаÑÑнÑе ÑепоÑки zapret ÑдалÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. Ðднако, sets и пÑавила из ваÑÐ¸Ñ ÑобÑÑвеннÑÑ ÑепоÑек не ÑдалÑÑÑÑÑ. ÐÑ Ð½Ñжно подÑиÑÑиÑÑ Ð² zapret_custom_firewall_nft_flush. ÐÑли set-ов и ÑобÑÑвеннÑÑ ÑепоÑек Ñ Ð²Ð°Ñ Ð½ÐµÑ, ÑÑнкÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ не опÑеделÑÑÑ Ð¸Ð»Ð¸ оÑÑавиÑÑ Ð¿ÑÑÑой.
ÐÑли вам не нÑÐ¶Ð½Ñ iptables или nftables - можеÑе не пиÑаÑÑ ÑооÑвеÑÑÑвÑÑÑÑÑ ÑÑнкÑиÑ.
Ð linux можно иÑполÑзоваÑÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑе пеÑеменнÑе FW_EXTRA_PRE
и FW_EXTRA_POST
.
FW_EXTRA_PRE
добавлÑÐµÑ ÐºÐ¾Ð´ к пÑавилам ip/nf tables до кода, генеÑиÑÑемого ÑÑнкÑиÑми-Ñ
елпеÑами.
FW_EXTRA_POST
добавлÑÐµÑ ÐºÐ¾Ð´ поÑле.
Ð linux ÑÑнкÑии-Ñ ÐµÐ»Ð¿ÐµÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ Ð¿Ñавило в наÑало ÑепоÑек, Ñо еÑÑÑ Ð¿ÐµÑед Ñже имеÑÑимиÑÑ. ÐоÑÑÐ¾Ð¼Ñ ÑпеÑиализаÑии Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð´Ñи поÑле более обÑÐ¸Ñ Ð²Ð°ÑианÑов. ÐÐ»Ñ macos пÑавило обÑаÑное. Там пÑавила добавлÑÑÑÑÑ Ð² конеÑ. Ðо ÑÑой же пÑиÑине ÑаеÑвол в Linux ÑнаÑала пÑименÑеÑÑÑ Ð² ÑÑандаÑÑном Ñежиме, поÑом custom, а в MacOS ÑнаÑала custom, поÑом ÑÑандаÑÑнÑй Ñежим.
Ð macos firewall-ÑÑнкÑии ниÑего Ñами никÑда не заноÑÑÑ. ÐÑ Ð·Ð°Ð´Ð°Ñа - лиÑÑ Ð²ÑдаÑÑ ÑекÑÑ Ð² stdout, ÑодеÑжаÑий пÑавила Ð´Ð»Ñ pf-ÑкоÑÑ. ÐÑÑалÑное ÑÐ´ÐµÐ»Ð°ÐµÑ Ð¾Ð±ÐµÑÑка.
ÐÑобо обÑаÑиÑе внимание на Ð½Ð¾Ð¼ÐµÑ Ð´ÐµÐ¼Ð¾Ð½Ð° в ÑÑнкÑиÑÑ
run_daemon
, do_daemon
, do_tpws
, do_tpws_socks
, do_nfqws
,
номеÑа поÑÑов tpws и оÑеÑедей nfqueue.
Ðни Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑникалÑнÑми во вÑеÑ
ÑкÑипÑаÑ
. ÐÑи накладке бÑÐ´ÐµÑ Ð¾Ñибка.
ÐоÑÑÐ¾Ð¼Ñ Ð¸ÑполÑзÑйÑе ÑÑнкÑии динамиÑеÑкого полÑÑÐµÐ½Ð¸Ñ ÑÑиÑ
знаÑений из пÑла.
custom
ÑкÑипÑÑ Ð¼Ð¾Ð³ÑÑ Ð¸ÑполÑзоваÑÑ Ð¿ÐµÑеменнÑе из config
. Ðожно помеÑаÑÑ Ð² config
Ñвои пеÑеменнÑе
и задейÑÑвоваÑÑ Ð¸Ñ
в ÑкÑипÑаÑ
.
Ðожно иÑполÑзоваÑÑ ÑÑнкÑии-Ñ
елпеÑÑ. Ðни ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Ð¾Ð±Ñего пÑоÑÑÑанÑÑва ÑÑнкÑий shell.
ÐолезнÑе ÑÑнкÑии можно взÑÑÑ Ð¸Ð· пÑимеÑов ÑкÑипÑов. Так же ÑмоÑÑиÑе common/*.sh
.
ÐÑполÑзÑÑ Ñ
ÐµÐ»Ð¿ÐµÑ ÑÑнкÑии, Ð²Ñ Ð¸Ð·Ð±Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑи ÑÑиÑÑваÑÑ Ð²Ñе возможнÑе ÑлÑÑаи
Ñипа налиÑиÑ/оÑÑÑÑÑÑÐ²Ð¸Ñ ipv6, ÑвлÑеÑÑÑ Ð»Ð¸ ÑиÑÑема ÑоÑÑеÑом, имена инÑеÑÑейÑов, ...ХелпеÑÑ ÑÑо ÑÑиÑÑваÑÑ. Ðам нÑжно ÑоÑÑедоÑоÑиÑÑÑÑ Ð»Ð¸ÑÑ Ð½Ð° ÑилÑÑÑаÑ
{ip,nf}tables
и паÑамеÑÑаÑ
демонов.
ÐÑоÑÑÐ°Ñ ÑÑÑановка
install_easy.sh
авÑомаÑизиÑÑÐµÑ ÑÑÑнÑе ваÑианÑÑ Ð¿ÑоÑедÑÑ ÑÑÑановки.
Ðн поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ OpenWRT, linux ÑиÑÑÐµÐ¼Ñ Ð½Ð° базе systemd или openrc и MacOS.
ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ гибкой наÑÑÑойки пеÑед запÑÑком инÑÑаллÑÑоÑа ÑледÑÐµÑ Ð²ÑполниÑÑ Ñаздел "ÐÑÐ±Ð¾Ñ Ð¿Ð°ÑамеÑÑов".
ÐÑли ÑиÑÑема запÑÑка поддеÑживаеÑÑÑ, но иÑполÑзÑеÑÑÑ Ð½Ðµ поддеÑживаемÑй инÑÑаллÑÑоÑом Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Ð¿Ð°ÐºÐµÑов
или Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑов не ÑооÑвеÑÑÑвÑÑÑ Ð¿ÑопиÑаннÑм в инÑÑаллÑÑоÑ, пакеÑÑ Ð½Ñжно ÑÑÑановиÑÑ Ð²ÑÑÑнÑÑ.
ÐÑегда ÑÑебÑеÑÑÑ curl. ipset
- ÑолÑко Ð´Ð»Ñ Ñежима iptables
, Ð´Ð»Ñ nftables
- не нÑжен.
ÐÐ»Ñ ÑовÑем обÑезаннÑÑ
диÑÑÑибÑÑивов (alpine) ÑÑебÑеÑÑÑ Ð¾ÑделÑно ÑÑÑановиÑÑ iptables
и ip6tables
, либо nftables
.
РкомплекÑе идÑÑ ÑÑаÑиÑеÑкие бинаÑники Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑва аÑÑ Ð¸ÑекÑÑÑ. Ðакой-Ñо из Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð¹Ð´ÐµÑ Ñ Ð²ÐµÑоÑÑноÑÑÑÑ 99%. Ðо еÑли Ñ Ð²Ð°Ñ ÑкзоÑиÑеÑÐºÐ°Ñ ÑиÑÑема, инÑÑаллÑÑÐ¾Ñ Ð¿Ð¾Ð¿ÑобÑÐµÑ ÑобÑаÑÑ Ð±Ð¸Ð½Ð°Ñники Ñам ÑеÑез make. ÐÐ»Ñ ÑÑого нÑÐ¶Ð½Ñ gcc, make и Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе -dev пакеÑÑ. Ðожно ÑоÑÑиÑоваÑÑ Ñежим компилÑÑии ÑледÑÑÑим вÑзовом:
install_easy.sh make
Ðод openwrt вÑе Ñже ÑÑÐ°Ð·Ñ Ð³Ð¾Ñово Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑиÑÑÐµÐ¼Ñ Ð² каÑеÑÑве ÑоÑÑеÑа. Ðмена инÑеÑÑейÑов WAN и LAN извеÑÑÐ½Ñ Ð¸Ð· наÑÑÑоек ÑиÑÑемÑ. Ðод дÑÑгими ÑиÑÑемами ÑоÑÑÐµÑ Ð²Ñ Ð½Ð°ÑÑÑаиваеÑе ÑамоÑÑоÑÑелÑно. ÐнÑÑаллÑÑÐ¾Ñ Ð² ÑÑо не вмеÑиваеÑÑÑ. инÑÑаллÑÑÐ¾Ñ Ð² завиÑимоÑÑи Ð¾Ñ Ð²ÑбÑанного Ñежима Ð¼Ð¾Ð¶ÐµÑ ÑпÑоÑиÑÑ LAN и WAN инÑеÑÑейÑÑ. ÐÑжно понимаÑÑ, ÑÑо завоÑÐ¾Ñ Ð¿ÑÐ¾Ñ Ð¾Ð´ÑÑего ÑÑаÑика на tpws в пÑозÑаÑном Ñежиме пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð´Ð¾ вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑÑÑÑизаÑии, ÑледоваÑелÑно возможна ÑилÑÑÑаÑÐ¸Ñ Ð¿Ð¾ LAN и невозможна по WAN. РеÑение о завоÑоÑе на tpws локалÑного иÑÑ Ð¾Ð´ÑÑего ÑÑаÑика пÑинимаеÑÑÑ Ð¿Ð¾Ñле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑÑÑÑизаÑии, ÑледоваÑелÑно ÑиÑÑаÑÐ¸Ñ Ð¾Ð±ÑаÑнаÑ: LAN не Ð¸Ð¼ÐµÐµÑ ÑмÑÑла, ÑилÑÑÑаÑÐ¸Ñ Ð¿Ð¾ WAN возможна. ÐавоÑÐ¾Ñ Ð½Ð° nfqws пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð²Ñегда поÑле маÑÑÑÑÑизаÑии, поÑÑÐ¾Ð¼Ñ Ðº Ð½ÐµÐ¼Ñ Ð¿Ñименима ÑолÑко ÑилÑÑÑаÑÐ¸Ñ Ð¿Ð¾ WAN. ÐозможноÑÑÑ Ð¿ÑÐ¾Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÑÑаÑика в Ñом или ином напÑавлении наÑÑÑаиваеÑÑÑ Ð²Ð°Ð¼Ð¸ в пÑоÑеÑÑе конÑигÑÑаÑии ÑоÑÑеÑа.
ÐеинÑÑаллÑÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ ÑеÑез uninstall_easy.sh
. ÐоÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´ÐµÐ¸Ð½ÑÑаллÑÑии можно ÑдалиÑÑ ÐºÐ°Ñалог /opt/zapret
.
ÐÑоÑÑÐ°Ñ ÑÑÑановка на openwrt
РабоÑÐ°ÐµÑ ÑолÑко еÑли Ñ Ð²Ð°Ñ Ð½Ð° ÑоÑÑеÑе доÑÑаÑоÑно меÑÑа.
ÐопиÑÑем zapret на ÑоÑÑÐµÑ Ð² /tmp
.
ÐапÑÑкаем ÑÑÑановÑик:
sh /tmp/zapret/install_easy.sh
Ðн ÑкопиÑÑÐµÑ Ð² /opt/zapret
ÑолÑко необÑ
одимÑй минимÑм Ñайлов.
ÐоÑле ÑÑпеÑной ÑÑÑановки можно ÑдалиÑÑ zapret из tmp Ð´Ð»Ñ Ð¾ÑÐ²Ð¾Ð±Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ RAM:
rm -r /tmp/zapret
ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ гибкой наÑÑÑойки пеÑед запÑÑком инÑÑаллÑÑоÑа ÑледÑÐµÑ Ð²ÑполниÑÑ Ñаздел "ÐÑÐ±Ð¾Ñ Ð¿Ð°ÑамеÑÑов".
СиÑÑема пÑоÑÑой инÑÑалÑÑии заÑоÑена на лÑбое ÑмÑÑленное или неÑмÑÑленное изменение пÑав доÑÑÑпа на ÑайлÑ.
УÑÑойÑива к ÑÐµÐ¿Ð°ÐºÑ Ð¿Ð¾Ð´ windows. ÐоÑле копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² /opt
пÑава бÑдÑÑ Ð¿ÑинÑдиÑелÑно воÑÑÑановленÑ.
УÑÑановка на openwrt в Ñежиме оÑÑÑой Ð½ÐµÑ Ð²Ð°Ñки меÑÑа на диÑке
ТÑебÑеÑÑÑ Ð¾ÐºÐ¾Ð»Ð¾ 120-200 кб на диÑке. ÐÑидеÑÑÑ Ð¾ÑказаÑÑÑÑ Ð¾Ñ Ð²Ñего, кÑоме tpws.
ÐнÑÑÑÑкÑÐ¸Ñ Ð´Ð»Ñ openwrt 22 и вÑÑе Ñ nftables
ÐÐ¸ÐºÐ°ÐºÐ¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑей ÑÑÑанавливаÑÑ Ð½Ðµ нÑжно.
УÑÑановка:
- СкопиÑÑйÑе вÑе из
init.d/openwrt-minimal/tpws/*
в коÑÐµÐ½Ñ openwrt. - СкопиÑÑйÑе бинаÑник tpws подÑ
одÑÑей аÑÑ
иÑекÑÑÑÑ Ð²
/usr/bin/tpws
. - УÑÑановиÑе пÑава на ÑайлÑ:
chmod 755 /etc/init.d/tpws /usr/bin/tpws
- ÐÑÑедакÑиÑÑйÑе
/etc/config/tpws
- ÐÑли не нÑжен ipv6, оÑÑедакÑиÑÑйÑе
/etc/nftables.d/90-tpws.nft
и закомменÑиÑÑйÑе ÑÑÑоки Ñ ÑедиÑекÑом ipv6.
/etc/init.d/tpws enable
/etc/init.d/tpws start
fw4 restart
Ðолное Ñдаление:
/etc/init.d/tpws disable
/etc/init.d/tpws stop
rm -f /etc/nftables.d/90-tpws.nft /etc/firewall.user /etc/init.d/tpws /usr/bin/tpws
fw4 restart
ÐнÑÑÑÑкÑÐ¸Ñ Ð´Ð»Ñ openwrt 21 и ниже Ñ iptables
УÑÑановиÑе завиÑимоÑÑи:
opkg update
opkg install iptables-mod-extra
- ÑолÑко Ð´Ð»Ñ IPV6:
opkg install ip6tables-mod-nat
УбедиÑеÑÑ, ÑÑо в /etc/firewall.user
Ð½ÐµÑ Ð½Ð¸Ñего знаÑимого.
ÐÑли еÑÑÑ - не ÑледÑйÑе Ñлепо инÑÑÑÑкÑии. ÐбÑединиÑе код или ÑоздайÑе Ñвой firewall include
в /etc/config/firewall
.
УÑÑановка:
- СкопиÑÑйÑе вÑе из
init.d/openwrt-minimal/tpws/*
в коÑÐµÐ½Ñ openwrt. - СкопиÑÑйÑе бинаÑник tpws подÑ
одÑÑей аÑÑ
иÑекÑÑÑÑ Ð²
/usr/bin/tpws
. - УÑÑановиÑе пÑава на ÑайлÑ:
chmod 755 /etc/init.d/tpws /usr/bin/tpws
- ÐÑÑедакÑиÑÑйÑе
/etc/config/tpws
- ÐÑли не нÑжен ipv6, оÑÑедакÑиÑÑйÑе /etc/firewall.user и ÑÑÑановиÑе Ñам DISABLE_IPV6=1.
/etc/init.d/tpws enable
/etc/init.d/tpws start
fw3 restart
Ðолное Ñдаление:
/etc/init.d/tpws disable
/etc/init.d/tpws stop
rm -f /etc/nftables.d/90-tpws.nft /etc/firewall.user /etc/init.d/tpws
touch /etc/firewall.user
fw3 restart
Android
Ðез ÑÑÑа забÑдÑÑе пÑо nfqws и tpws в Ñежиме transparent proxy. tpws бÑÐ´ÐµÑ ÑабоÑаÑÑ ÑолÑко в Ñежиме --socks
.
ЯдÑа Android имеÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ NFQUEUE. nfqws ÑабоÑаеÑ.
Ð ÑÑоковÑÑ ÑдÑÐ°Ñ Ð½ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑжки ipset. РобÑем ÑлÑÑае ÑложноÑÑÑ Ð·Ð°Ð´Ð°Ñи по поднÑÑÐ¸Ñ ipset ваÑÑиÑÑеÑÑÑ Ð¾Ñ "не пÑоÑÑо" до "поÑÑи невозможно". ÐÑли ÑолÑко Ð²Ñ Ð½Ðµ найдеÑе гоÑовое ÑобÑанное ÑдÑо под Ð²Ð°Ñ Ð´ÐµÐ²Ð°Ð¹Ñ.
tpws бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð² лÑбом ÑлÑÑае, он не ÑÑебÑÐµÑ Ñего-либо оÑобенного.
ХоÑÑ linux ваÑианÑÑ Ð¿Ð¾Ð´ Android ÑабоÑаÑÑ, ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ ÑпеÑиалÑно ÑобÑаннÑе под bionic бинаÑники.
У ниÑ
не бÑÐ´ÐµÑ Ð¿Ñоблем Ñ DNS, Ñ Ð»Ð¾ÐºÐ°Ð»ÑнÑм вÑеменем и именами ÑзеÑов и гÑÑпп.
РекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ gid 3003 (AID_INET). ÐнаÑе можеÑе полÑÑиÑÑ permission denied на Ñоздание ÑокеÑа.
ÐапÑимеÑ: --uid 1:3003
Ð iptables ÑкажиÑе: ! --uid-owner 1
вмеÑÑо ! --uid-owner tpws
.
ÐапиÑиÑе Ñелл ÑкÑÐ¸Ð¿Ñ Ñ iptables и tpws, запÑÑкайÑе его ÑÑедÑÑвами ваÑего ÑÑÑ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑа.
СкÑипÑÑ Ð°Ð²ÑозапÑÑка Ð»ÐµÐ¶Ð°Ñ ÑÑÑ:
magisk : /data/adb/service.d
supersu: /system/su.d
nfqws Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ñакой глÑк. ÐÑи запÑÑке Ñ uid по ÑмолÑÐ°Ð½Ð¸Ñ (0x7FFFFFFF) пÑи ÑÑловии ÑабоÑÑ Ð½Ð° ÑоÑовом инÑеÑÑейÑе и оÑклÑÑенном кабеле внеÑнего пиÑÐ°Ð½Ð¸Ñ ÑиÑÑема Ð¼Ð¾Ð¶ÐµÑ ÑаÑÑиÑно виÑнÑÑÑ. ÐеÑеÑÑÐ°ÐµÑ ÑабоÑаÑÑ ÑÐ°Ñ Ð¸ кнопки, но анимаÑÐ¸Ñ Ð½Ð° ÑкÑане Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑодолжаÑÑÑÑ. ÐÑли ÑкÑан бÑл погаÑен, Ñо вклÑÑиÑÑ ÐµÐ³Ð¾ кнопкой power невозможно. Ðзменение UID на низкий (--uid 1 подойдеÑ) позволÑÐµÑ ÑеÑиÑÑ ÑÑÑ Ð¿ÑоблемÑ. ÐлÑк бÑл замеÑен на android 8.1 на девайÑе, оÑнованном на плаÑÑоÑме mediatek.
ÐÑÐ²ÐµÑ Ð½Ð° вопÑÐ¾Ñ ÐºÑда помеÑÑиÑÑ tpws на android без ÑÑÑа, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ñом его запÑÑкаÑÑ Ð¸Ð· пÑиложений. Файл заливаем ÑеÑез adb shell в /data/local/tmp/, лÑÑÑе вÑего в ÑÑбÑолдеÑ.
mkdir /data/local/tmp/zapret
adb push tpws /data/local/tmp/zapret
chmod 755 /data/local/tmp/zapret /data/local/tmp/zapret/tpws
chcon u:object_r:system_file:s0 /data/local/tmp/zapret/tpws
Ðак найÑи ÑÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð±Ñ Ð¾Ð´Ð° ÑоÑового опеÑаÑоÑа: пÑоÑе вÑего ÑаздаÑÑ Ð¸Ð½ÐµÑ Ð½Ð° комп Ñ linux. Ðожно запиÑаÑÑ live image linux на ÑлÑÑÐºÑ Ð¸ загÑÑзиÑÑÑÑ Ñ Ð½ÐµÐµ или запÑÑÑиÑÑ Ð²Ð¸ÑÑÑÐ°Ð»ÐºÑ Ñ linux и пÑобÑоÑиÑÑ Ð² нее usb ÑÑÑÑойÑÑво Ð¾Ñ Ñежима модема Ñ ÑелеÑона. Ðа компе Ñ linux пÑогнаÑÑ ÑÑандаÑÑнÑÑ Ð¿ÑоÑедÑÑÑ blockcheck. ÐÑи пеÑеноÑе пÑавил на ÑелеÑон ÑменÑÑиÑÑ TTL на 1, еÑли пÑавила Ñ TTL пÑиÑÑÑÑÑвÑÑÑ Ð² ÑÑÑаÑегии. Ðожно ÑазвеÑнÑÑÑ rootfs какого-нибÑÐ´Ñ Ð´Ð¸ÑÑÑибÑÑива linux пÑÑмо на ÑелеÑоне, Ð¸Ð¼ÐµÑ ÑÑÑа. ÐÑо лÑÑÑе вÑего делаÑÑ Ñ ÐºÐ¾Ð¼Ð¿Ð° ÑеÑез adb shell. ÐÑли компа неÑ, Ñо ÑÑо единÑÑвеннÑй ваÑианÑ, Ñ Ð¾ÑÑ Ð¸ неÑдобнÑй. ÐÐ¾Ð´Ð¾Ð¹Ð´ÐµÑ ÑÑо-Ñо легковеÑное, напÑимеÑ, alpine или даже openwrt. ÐÑли ÑÑо не ÑмÑлÑÑÐ¾Ñ android, Ñо ÑнивеÑÑалÑÐ½Ð°Ñ Ð°ÑÑ Ð¸ÑекÑÑÑа - arm (лÑбой ваÑианÑ). ÐÑли Ð²Ñ ÑоÑно знаеÑе, ÑÑо ÐС Ñ Ð²Ð°Ñ 64-ÑазÑÑднаÑ, Ñо лÑÑÑе вмеÑÑо arm - aarch64.
mount --bind /dev /data/linux/dev
mount --bind /proc /data/linux/proc
mount --bind /sys /data/linux/sys
chroot /data/linux
ÐеÑвÑм делом вам нÑжно бÑÐ´ÐµÑ Ð¾Ð´Ð¸Ð½ Ñаз наÑÑÑоиÑÑ DNS. Сам он не заведеÑÑÑ.
echo nameserver 1.1.1.1 >/etc/resolv.conf
Ðалее нÑжно ÑÑедÑÑвами пакеÑного менеджеÑа ÑÑÑановиÑÑ iptables-legacy. ÐбÑзаÑелÑно ÐÐ iptables-nft,
коÑоÑÑй, как пÑавило, пÑиÑÑÑÑÑвÑÐµÑ Ð¿Ð¾ ÑмолÑаниÑ. Ð ÑдÑе android Ð½ÐµÑ nftables.
ls -la $(which iptables)
Ðинк должен ÑказÑваÑÑ Ð½Ð° legacy ваÑианÑ.
ÐÑли неÑ, знаÑÐ¸Ñ ÑÑÑанавливайÑе нÑжнÑе пакеÑÑ Ð²Ð°Ñего диÑÑÑибÑÑива, и ÑбеждайÑеÑÑ Ð² пÑавилÑноÑÑи ÑÑÑлок.
iptables -S
Так можно пÑовеÑиÑÑ, ÑÑо Ð²Ð°Ñ iptables
Ñвидел Ñо, ÑÑо ÑÑда наÑовал android. iptables-nft
вÑдаÑÑ Ð¾ÑибкÑ.
Ðалее каÑаем zapret в /opt/zapret
. ÐбÑÑнÑе дейÑÑÐ²Ð¸Ñ Ñ install_prereq.sh
, install_bin.sh
, blockcheck.sh
.
УÑÑиÑе, ÑÑо ÑÑÑаÑегии обÑ
ода ÑоÑового опеÑаÑоÑа и домаÑнего wifi веÑоÑÑно бÑдÑÑ ÑазнÑе.
ÐÑделиÑÑ ÑоÑового опеÑаÑоÑа легко ÑеÑез паÑамеÑÑ iptables -o <Ð¸Ð¼Ñ Ð¸Ð½ÑеÑÑейÑа>
. ÐÐ¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ, напÑимеÑ, ccmni0
.
Ðго легко ÑвидеÑÑ ÑеÑез ifconfig
.
Wifi ÑеÑÑ - обÑÑно wlan0
.
ÐеÑеклÑÑаÑÑ blockcheck Ð¼ÐµÐ¶Ð´Ñ Ð¾Ð¿ÐµÑаÑоÑом и wifi можно вмеÑÑе Ñо вÑем инеÑом - вклÑÑив или вÑклÑÑив wifi. ÐÑли найдеÑе ÑÑÑаÑÐµÐ³Ð¸Ñ Ð´Ð»Ñ wifi и впиÑиÑе ее в авÑоÑÑаÑÑ, Ñо пÑи подклÑÑении к дÑÑÐ³Ð¾Ð¼Ñ wifi она Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ ÑÑабоÑаÑÑ Ð¸Ð»Ð¸ вовÑе ÑÑо-Ñо поломаÑÑ, поÑÐ¾Ð¼Ñ Ð¿Ð¾Ð´ÑмайÑе ÑÑÐ¾Ð¸Ñ Ð»Ð¸. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð»ÑÑÑе ÑделаÑÑ ÑкÑипÑÑ Ñипа "запÑÑÑиÑÑ Ð¾Ð±Ñ Ð¾Ð´ домаÑнего wifi", "ÑнÑÑÑ Ð¾Ð±Ñ Ð¾Ð´ домаÑнего wifi", и полÑзоваÑÑÑÑ Ð¸Ð¼Ð¸ по Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи из ÑеÑминала. Ðо домаÑний wifi лÑÑÑе вÑе-же Ð¾Ð±Ñ Ð¾Ð´Ð¸ÑÑ Ð½Ð° ÑоÑÑеÑе.
ÐобилÑнÑе Ð¼Ð¾Ð´ÐµÐ¼Ñ Ð¸ ÑоÑÑеÑÑ huawei
УÑÑÑойÑÑва Ñипа E3372, E8372, E5770 ÑазделÑÑÑ Ð¾Ð±ÑÑÑ Ð¸Ð´ÐµÐ¾Ð»Ð¾Ð³Ð¸Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ ÑиÑÑемÑ. ÐмеÑÑÑÑ 2 вÑÑиÑлиÑелÑнÑÑ ÑдÑа. Ðдно ÑдÑо вÑполнÑÐµÑ vxworks, дÑÑгое - linux. Ðа 4pda имеÑÑÑÑ Ð¼Ð¾Ð´Ð¸ÑиÑиÑованнÑе пÑоÑивки Ñ telnet и adb. ÐÑ Ð¸ нÑжно иÑполÑзоваÑÑ.
ÐалÑнейÑие ÑÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿ÑовеÑÐµÐ½Ñ Ð½Ð° E8372. Ðа дÑÑÐ³Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñно или Ð¿Ð¾Ñ Ð¾Ð¶Ðµ. ÐÑиÑÑÑÑÑвÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе аппаÑаÑнÑе блоки Ð´Ð»Ñ offload-а ÑеÑевÑÑ ÑÑнкÑий. Ðе веÑÑ ÑÑаÑик Ð¸Ð´ÐµÑ ÑеÑез linux. ÐÑÑ Ð¾Ð´ÑÑий ÑÑаÑик Ñ Ñамого модема пÑÐ¾Ñ Ð¾Ð´Ð¸Ñ ÑепоÑÐºÑ OUTPUT ноÑмалÑно, на FORWARD =>wan ÑаÑÑÑ Ð¿Ð°ÐºÐµÑов вÑÐ¿Ð°Ð´Ð°ÐµÑ Ð¸Ð· tcpdump.
tpws ÑабоÑÐ°ÐµÑ Ð¾Ð±ÑÑнÑм обÑазом.
nfqueue
поломан, можно ÑобÑаÑÑ ÑикÑÑÑий модÑÐ»Ñ https://github.com/im-0/unfuck-nfqueue-on-e3372h,
иÑполÑзÑÑ Ð¸ÑÑ
одники Ñ huawei open source. ÐÑÑ
одники ÑодеÑÐ¶Ð°Ñ ÑÑлÑейн и полÑÑобиÑаÑÑееÑÑ,
неакÑÑалÑное ÑдÑо. ÐонÑиг можно взÑÑÑ Ñ ÑабоÑего модема из /proc/config.gz
.
С помоÑÑÑ ÑÑиÑ
иÑÑ
одников ÑмелÑÑÑ Ð¼Ð¾Ð³ÑÑ ÑобÑаÑÑ Ð¼Ð¾Ð´ÑÐ»Ñ unfuck_nfqueue.ko
.
ÐоÑле его пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ NFQUEUE и nfqws Ð´Ð»Ñ arm ÑабоÑаÑÑ Ð½Ð¾ÑмалÑно.
ЧÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ offload-ом пÑи иÑполÑзовании nfqws, ÑледÑÐµÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸ÑоваÑÑ tpws в Ñежиме tcp proxy и nfqws. ÐÑавила NFQUEUE пиÑÑÑÑÑ Ð´Ð»Ñ ÑепоÑки OUTPUT. connbytes пÑидеÑÑÑ Ð¾Ð¿ÑÑкаÑÑ, поÑколÑÐºÑ Ð¼Ð¾Ð´ÑÐ»Ñ Ð² ÑдÑе неÑ. Ðо ÑÑо не ÑмеÑÑелÑно.
СкÑÐ¸Ð¿Ñ Ð°Ð²ÑозапÑÑка - /system/etc/autorun.sh
. СоздайÑе Ñвой ÑкÑÐ¸Ð¿Ñ Ð½Ð°ÑÑÑойки zapret,
запÑÑкайÑе из конÑа autorun.sh ÑеÑез "&". СкÑÐ¸Ð¿Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ в наÑале делаÑÑ sleep 5, ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð¶Ð´Ð°ÑÑÑÑ
поднÑÑÐ¸Ñ ÑеÑи и iptables Ð¾Ñ huawei.
[!WARNING] Ðа ÑÑом модеме пÑоиÑÑ Ð¾Ð´ÑÑ Ñ Ð°Ð¾ÑиÑеÑкие ÑбÑоÑÑ Ñоединений tcp по непонÑÑнÑм пÑиÑинам. ÐÑглÑÐ´Ð¸Ñ ÑÑо Ñак, еÑли запÑÑкаÑÑ curl Ñ Ñамого модема:
curl www.ru
curl: (7) Failed to connect to www.ru port 80: Host is unreachable
ÐÐ¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка ÑокеÑа EHOSTUNREACH (errno -113). То же Ñамое видно в tpws. РбÑоÑзеÑе не подгÑÑжаÑÑÑÑ ÑаÑÑи веб ÑÑÑаниÑ, каÑÑинки, ÑÑили. Ð tcpdump на внеÑнем инÑеÑÑейÑе eth_x виден ÑолÑко единÑÑвеннÑй и безоÑвеÑнÑй SYN пакеÑ, без ÑообÑений ICMP. ÐС каким-Ñо обÑазом ÑÐ·Ð½Ð°ÐµÑ Ð¾ невозможноÑÑи ÑÑÑановиÑÑ TCP Ñоединение и вÑÐ´Ð°ÐµÑ Ð¾ÑибкÑ. ÐÑли вÑполнÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение Ñ ÐºÐ»Ð¸ÐµÐ½Ñа, Ñо SYN пÑопадаÑÑ, Ñоединение не ÑÑÑанавливаеÑÑÑ. ÐС клиенÑа пÑÐ¾Ð²Ð¾Ð´Ð¸Ñ ÑеÑÑанÑмиÑÑиÑ, и Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-Ñо Ñаза подклÑÑение ÑдаеÑÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð±ÐµÐ· tcp пÑокÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑÑой ÑиÑÑаÑии ÑайÑÑ ÑÑпÑÑ, но загÑÑжаÑÑÑÑ, а Ñ Ð¿ÑокÑиÑованием подклÑÑение вÑполнÑеÑÑÑ, но вÑкоÑе ÑбÑаÑÑваеÑÑÑ Ð±ÐµÐ· ÐºÐ°ÐºÐ¸Ñ -либо даннÑÑ , и бÑоÑзеÑÑ Ð½Ðµ пÑÑаÑÑÑÑ ÑÑÑановиÑÑ ÐµÐ³Ð¾ заново. ÐоÑÑÐ¾Ð¼Ñ ÐºÐ°ÑеÑÑво бÑоÑзинга Ñ tpws Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñ Ñже, но дело не в tpws. ЧаÑÑоÑа ÑбÑоÑов замеÑно возÑаÑÑаеÑ, еÑли запÑÑен ÑоÑÐµÐ½Ñ ÐºÐ»Ð¸ÐµÐ½Ñ, имееÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ tcp Ñоединений. Ðднако, пÑиÑина не в пеÑеполнении ÑаблиÑÑ conntrack. УвелиÑение лимиÑов и оÑиÑÑка conntrack не помогаÑÑ. ÐÑедположиÑелÑно ÑÑа оÑобенноÑÑÑ ÑвÑзана Ñ Ð¾Ð±ÑабоÑкой пакеÑов ÑбÑоÑа ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² hardware offload. ТоÑного оÑвеÑа на вопÑÐ¾Ñ Ñ Ð¼ÐµÐ½Ñ Ð½ÐµÑ. ÐÑли Ð²Ñ Ð·Ð½Ð°ÐµÑе - поделиÑеÑÑ, пожалÑйÑÑа. ЧÑÐ¾Ð±Ñ Ð½Ðµ ÑÑ ÑдÑаÑÑ ÐºÐ°ÑеÑÑво бÑоÑзинга, можно ÑилÑÑÑоваÑÑ Ð·Ð°Ð²Ð¾ÑÐ¾Ñ Ð½Ð° tpws по ip ÑилÑÑÑÑ. ÐоддеÑжка ipset оÑÑÑÑÑÑвÑеÑ. ÐнаÑиÑ, вÑе, ÑÑо можно ÑделаÑÑ - ÑоздаÑÑ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑалÑнÑе пÑавила на неболÑÑое колиÑеÑÑво Ñ Ð¾ÑÑов.
ÐекоÑоÑÑе набÑоÑки ÑкÑипÑов пÑиÑÑÑÑÑвÑÑÑ Ð² files/huawei. Ðе гоÑовое ÑеÑение! СмоÑÑиÑе, изÑÑайÑе, пÑиÑпоÑабливайÑе.
ÐдеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑкаÑаÑÑ Ð³Ð¾ÑовÑе полезнÑе ÑÑаÑиÑеÑкие бинаÑники Ð´Ð»Ñ arm, вклÑÑÐ°Ñ curl : https://github.com/bol-van/bins
FreeBSD, OpenBSD, MacOS
ÐпиÑано в докÑменÑаÑии BSD
Windows
ÐпиÑано в докÑменÑаÑии Windows
ÐÑÑгие пÑоÑивки
ÐÐ»Ñ ÑÑаÑиÑеÑÐºÐ¸Ñ Ð±Ð¸Ð½Ð°Ñиков не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð½Ð° Ñем они запÑÑенÑ: PC, android, пÑиÑÑавка, ÑоÑÑеÑ, лÑбой дÑÑгой девайÑ. ÐÐ¾Ð´Ð¾Ð¹Ð´ÐµÑ Ð»ÑÐ±Ð°Ñ Ð¿ÑоÑивка, диÑÑÑибÑÑив linux. СÑаÑиÑеÑкие бинаÑники запÑÑÑÑÑÑÑ Ð½Ð° вÑем. Ðм нÑжно ÑолÑко ÑдÑо Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñми опÑиÑми ÑбоÑки или модÑлÑми. Ðо кÑоме бинаÑиков в пÑоекÑе иÑполÑзÑÑÑÑÑ ÐµÑе и ÑкÑипÑÑ, в коÑоÑÑÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвÑÑÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑÑандаÑÑнÑе пÑогÑаммÑ.
ÐÑновнÑе пÑиÑÐ¸Ð½Ñ Ð¿Ð¾ÑÐµÐ¼Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð¿ÑоÑÑо Ñак взÑÑÑ Ð¸ ÑÑÑановиÑÑ ÑÑÑ ÑиÑÑÐµÐ¼Ñ Ð½Ð° ÑÑо Ñгодно:
- оÑÑÑÑÑÑвие доÑÑÑпа к девайÑÑ ÑеÑез shell
- оÑÑÑÑÑÑвие ÑÑÑа
- оÑÑÑÑÑÑвие Ñаздела r/w Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи и ÑнеÑгонезавиÑимого Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ñайлов
- оÑÑÑÑÑÑвие возможноÑÑи поÑÑавиÑÑ ÑÑо-Ñо в авÑозапÑÑк
- оÑÑÑÑÑÑвие cron
- неоÑклÑÑаемÑй flow offload или дÑÑÐ³Ð°Ñ Ð¿ÑопÑиеÑаÑÑина в netfilter
- недоÑÑаÑок модÑлей ÑдÑа или опÑий его ÑбоÑки
- недоÑÑаÑок модÑлей iptables (/usr/lib/iptables/lib*.so)
- недоÑÑаÑок ÑÑандаÑÑнÑÑ Ð¿ÑогÑамм (Ñипа ipset, curl) или Ð¸Ñ ÐºÐ°ÑÑÑиÑованноÑÑÑ (облегÑÐµÐ½Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÐ½Ð°)
- каÑÑÑиÑованнÑй или неÑÑандаÑÑнÑй Ñелл sh
ÐÑли в ваÑей пÑоÑивке еÑÑÑ Ð²Ñе Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾Ðµ, Ñо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе адапÑиÑоваÑÑ zapret под Ð²Ð°Ñ Ð´ÐµÐ²Ð°Ð¹Ñ Ð² Ñой или иной ÑÑепени. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ñ Ð²Ð°Ñ Ð½Ðµ полÑÑиÑÑÑ Ð¿Ð¾Ð´Ð½ÑÑÑ Ð²Ñе ÑаÑÑи ÑиÑÑемÑ, однако Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе Ñ Ð¾ÑÑ Ð±Ñ Ð¿Ð¾Ð¿ÑÑаÑÑÑÑ Ð¿Ð¾Ð´Ð½ÑÑÑ tpws и завеÑнÑÑÑ Ð½Ð° него ÑеÑез -j REDIRECT веÑÑ ÑÑаÑик на поÑÑ 80. ÐÑли вам еÑÑÑ ÐºÑда запиÑаÑÑ tpws, еÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð²ÑполнÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ñи ÑÑаÑÑе, Ñо как минимÑм ÑÑо Ð²Ñ ÑделаÑÑ ÑможеÑе. СкоÑее вÑего поддеÑжка REDIRECT в ÑдÑе еÑÑÑ. Ðна ÑоÑно еÑÑÑ Ð½Ð° лÑбом ÑоÑÑеÑе, на дÑÑÐ³Ð¸Ñ ÑÑÑÑойÑÑÐ²Ð°Ñ Ð¿Ð¾Ð´ вопÑоÑом. NFQUEUE, ipset на болÑÑинÑÑве пÑоÑивок оÑÑÑÑÑÑвÑÑÑ Ð¸Ð·-за ненÑжноÑÑи.
ÐеÑеÑобÑаÑÑ ÑдÑо или модÑли Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ бÑÐ´ÐµÑ ÑкоÑее вÑего доÑÑаÑоÑно ÑÑÑдно. ÐÐ»Ñ ÑÑого вам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ бÑÐ´ÐµÑ Ð¿Ð¾ кÑайней меÑе полÑÑиÑÑ Ð¸ÑÑ Ð¾Ð´Ð½Ð¸ÐºÐ¸ ваÑей пÑоÑивки. User mode компоненÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿ÑивнеÑÐµÐ½Ñ Ð¾ÑноÑиÑелÑно безболезненно, еÑли еÑÑÑ Ð¼ÐµÑÑо кÑда Ð¸Ñ Ð·Ð°Ð¿Ð¸ÑаÑÑ. СпеÑиалÑно Ð´Ð»Ñ Ð´ÐµÐ²Ð°Ð¹Ñов, имеÑÑÐ¸Ñ Ð¾Ð±Ð»Ð°ÑÑÑ r/w, ÑÑÑеÑÑвÑÐµÑ Ð¿ÑÐ¾ÐµÐºÑ entware. ÐекоÑоÑÑе пÑоÑивки даже имеÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÐµÐ³Ð¾ облегÑенной ÑÑÑановки ÑеÑез веб инÑеÑÑейÑ. entware ÑодеÑÐ¶Ð¸Ñ ÑепозиÑоÑий user-mode компоненÑ, коÑоÑÑе ÑÑÑанавливаÑÑÑÑ Ð² /opt. С Ð¸Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ компенÑиÑоваÑÑ Ð½ÐµÐ´Ð¾ÑÑаÑок ÐРоÑновной пÑоÑивки, за иÑклÑÑением ÑдÑа.
Ðожно попÑÑаÑÑÑÑ Ð¸ÑполÑзоваÑÑ sysv init script Ñаким обÑазом, как ÑÑо опиÑано в Ñазделе "ÐÑикÑÑÑивание к ÑиÑÑеме ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑаеÑволом или Ñвоей ÑиÑÑеме запÑÑка". Ð ÑлÑÑае ÑÑгани на оÑÑÑÑÑÑвие ÐºÐ°ÐºÐ¸Ñ -Ñо базовÑÑ Ð¿ÑогÑамм, Ð¸Ñ ÑледÑÐµÑ Ð²Ð¾ÑполниÑÑ Ð¿Ð¾ÑÑедÑÑвом entware. ÐеÑед запÑÑком ÑкÑипÑа пÑÑÑ Ðº дополниÑелÑнÑм пÑогÑаммам должен бÑÑÑ Ð¿Ð¾Ð¼ÐµÑен в PATH.
ÐодÑобное опиÑание наÑÑÑоек Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ð¿ÑоÑивок вÑÑ Ð¾Ð´Ð¸Ñ Ð·Ð° Ñамки данного пÑоекÑа.
Openwrt ÑвлÑеÑÑÑ Ð¾Ð´Ð½Ð¾Ð¹ из Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¸Ñ Ð¾ÑноÑиÑелÑно полноÑеннÑÑ linux ÑиÑÑем Ð´Ð»Ñ embedded devices. Ðна Ñ Ð°ÑакÑеÑизÑеÑÑÑ ÑледÑÑÑими веÑами, коÑоÑÑе и поÑлÑжили оÑновой вÑбоÑа именно ÑÑой пÑоÑивк:
- полнÑй root доÑÑÑп к девайÑÑ ÑеÑез shell. на заводÑÐºÐ¸Ñ Ð¿ÑоÑÐ¸Ð²ÐºÐ°Ñ ÑаÑе вÑего оÑÑÑÑÑÑвÑеÑ, на Ð¼Ð½Ð¾Ð³Ð¸Ñ Ð°Ð»ÑÑеÑнаÑивнÑÑ ÐµÑÑÑ
- коÑÐµÐ½Ñ r/w. ÑÑо пÑакÑиÑеÑки ÑникалÑÐ½Ð°Ñ Ð¾ÑобенноÑÑÑ openwrt. заводÑкие и болÑÑинÑÑво алÑÑеÑнаÑивнÑÑ Ð¿ÑоÑивок поÑÑÑÐ¾ÐµÐ½Ñ Ð½Ð° базе squashfs root (r/o), а конÑигÑÑаÑÐ¸Ñ Ñ ÑаниÑÑÑ Ð² ÑпеÑиалÑно оÑÑоÑмаÑиÑованной облаÑÑи вÑÑÑоенной памÑÑи, назÑваемой nvram. не имеÑÑие r/w коÑÐ½Ñ ÑиÑÑÐµÐ¼Ñ ÑилÑно каÑÑÑиÑованÑ. они не имеÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи доÑÑÑановки ÐРиз ÑепозиÑоÑÐ¸Ñ Ð±ÐµÐ· ÑпеÑиалÑнÑÑ Ð²ÑвеÑÑов и заÑоÑÐµÐ½Ñ Ð² оÑновном на ÑÑÑÑ Ð±Ð¾Ð»ÐµÐµ пÑодвинÑÑого, Ñем обÑÑно, полÑзоваÑÐµÐ»Ñ Ð¸ ÑпÑавление имеÑÑимÑÑ ÑÑнкÑионалом ÑеÑез веб инÑеÑÑейÑ, но ÑÑнкÑионал ÑикÑиÑованно огÑаниÑен. алÑÑеÑнаÑивнÑе пÑоÑивки как пÑавило могÑÑ Ð¼Ð¾Ð½ÑиÑоваÑÑ r/w Ñаздел в какÑÑ-Ñо облаÑÑÑ Ñайловой ÑиÑÑемÑ, заводÑкие обÑÑно могÑÑ Ð¼Ð¾Ð½ÑиÑоваÑÑ Ð»Ð¸ÑÑ ÑлÑÑки, подклÑÑеннÑе к USB, и не ÑакÑ, ÑÑо еÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжка unix ÑайловÑÑ ÑиÑÑемÑ. Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжка ÑолÑко fat и ntfs.
- возможноÑÑÑ Ð²ÑноÑа коÑневой Ñайловой ÑиÑÑÐµÐ¼Ñ Ð½Ð° внеÑний ноÑиÑÐµÐ»Ñ (extroot) или ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð° нем овеÑÐ»ÐµÑ (overlay)
- налиÑие менеджеÑа пакеÑов opkg и ÑепозиÑоÑÐ¸Ñ ÑоÑÑа
- flow offload пÑедÑказÑемо, ÑÑандаÑÑно и вÑбоÑоÑно ÑпÑавлÑем, а Ñак же оÑклÑÑаем
- в ÑепозиÑоÑии еÑÑÑ Ð²Ñе модÑли ÑдÑа, Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ доÑÑÑановиÑÑ ÑеÑез opkg. ÑдÑо пеÑеÑобиÑаÑÑ Ð½Ðµ нÑжно.
- в ÑепозиÑоÑии еÑÑÑ Ð²Ñе модÑли iptables, Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ доÑÑÑановиÑÑ ÑеÑез opkg
- в ÑепозиÑоÑии еÑÑÑ Ð¾Ð³Ñомное колиÑеÑÑво ÑÑандаÑÑнÑÑ Ð¿ÑогÑамм и дополниÑелÑного ÑоÑÑа
- налиÑие SDK, позволÑÑÑего ÑобÑаÑÑ Ð½ÐµÐ´Ð¾ÑÑаÑÑее
ÐÐ±Ñ Ð¾Ð´ блокиÑовки ÑеÑез ÑÑоÑонний Ñ Ð¾ÑÑ
ÐÑли не ÑабоÑÐ°ÐµÑ Ð°Ð²ÑономнÑй обÑ
од, пÑиÑ
одиÑÑÑ Ð¿ÐµÑенапÑавлÑÑÑ ÑÑаÑик ÑеÑез ÑÑоÑонний Ñ
оÑÑ.
ÐÑедлагаеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¿ÑозÑаÑнÑй ÑедиÑÐµÐºÑ ÑеÑез socks5 поÑÑедÑÑвом iptables+redsocks
, либо iptables+iproute+vpn
.
ÐаÑÑÑойка ваÑианÑа Ñ redsocks на openwrt опиÑана в redsocks.txt.
ÐаÑÑÑойка ваÑианÑа Ñ iproute+wireguard
- в wireguard_iproute_openwrt.txt.
ÐоÑÐµÐ¼Ñ ÑÑÐ¾Ð¸Ñ Ð²Ð»Ð¾Ð¶Ð¸ÑÑÑÑ Ð² покÑÐ¿ÐºÑ VPS
VPS - ÑÑо виÑÑÑалÑнÑй ÑеÑвеÑ. СÑÑеÑÑвÑÐµÑ Ð¾Ð³Ñомное множеÑÑво даÑаÑенÑÑов, пÑедлагаÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÑлÑгÑ. Ðа VPS могÑÑ Ð²ÑполнÑÑÑÑÑ ÐºÐ°ÐºÐ¸Ðµ Ñгодно задаÑи. ÐÑ Ð¿ÑоÑÑого веб ÑайÑа до навоÑоÑенной ÑиÑÑÐµÐ¼Ñ ÑобÑÑвенной ÑазÑабоÑки. Ðожно иÑполÑзоваÑÑ VPS и Ð´Ð»Ñ Ð¿Ð¾Ð´Ð½ÑÑÐ¸Ñ ÑобÑÑвенного vpn или пÑокÑи. Сама ÑиÑоÑа возможнÑÑ ÑпоÑобов пÑименениÑ, ÑаÑпÑоÑÑÑаненноÑÑÑ ÑÑлÑги ÑводÑÑ Ðº минимÑÐ¼Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи ÑегÑлÑÑоÑов по Ð±Ð°Ð½Ñ ÑеÑвиÑов Ñакого Ñипа. Ðа, еÑли введÑÑ Ð±ÐµÐ»Ñе ÑпиÑки, Ñо ÑеÑение загнеÑÑÑ, но ÑÑо бÑÐ´ÐµÑ Ñже дÑÑÐ³Ð°Ñ ÑеалÑноÑÑÑ, в коÑоÑой пÑидеÑÑÑ Ð¸Ð·Ð¾Ð±ÑеÑаÑÑ Ð¸Ð½Ñе ÑеÑениÑ. Ðока ÑÑого не Ñделали, никÑо не бÑÐ´ÐµÑ Ð±Ð°Ð½Ð¸ÑÑ Ñ Ð¾ÑÑинги пÑоÑÑо поÑомÑ, ÑÑо они пÑедоÑÑавлÑÑÑ Ñ Ð¾ÑÑинг ÑÑлÑги. ÐÑ ÐºÐ°Ðº индивидÑÑм ÑкоÑее вÑего Ð½Ð¸ÐºÐ¾Ð¼Ñ Ð½Ðµ нÑжнÑ. ÐодÑмайÑе Ñем Ð²Ñ Ð¾ÑлиÑаеÑеÑÑ Ð¾Ñ Ð¸Ð·Ð²ÐµÑÑного VPN пÑовайдеÑа. VPN пÑÐ¾Ð²Ð°Ð¹Ð´ÐµÑ Ð¿ÑедоÑÑавлÑÐµÑ Ð¿ÑоÑÑÑÑ Ð¸ доÑÑÑпнÑÑ ÑÑлÑÐ³Ñ Ð¿Ð¾ Ð¾Ð±Ñ Ð¾Ð´Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок Ð´Ð»Ñ Ð¼Ð°ÑÑ. ÐÑÐ¾Ñ ÑÐ°ÐºÑ Ð´ÐµÐ»Ð°ÐµÑ ÐµÐ³Ð¾ пеÑвооÑеÑедной ÑелÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки. Ð ÐРнапÑÐ°Ð²Ð¸Ñ Ñведомление, поÑле оÑказа ÑоÑÑÑдниÑаÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑÑÐµÑ VPN. ÐÑедоплаÑÐµÐ½Ð½Ð°Ñ ÑÑмма пÑопадеÑ. У ÑегÑлÑÑоÑов Ð½ÐµÑ Ð¸ никогда не бÑÐ´ÐµÑ ÑеÑÑÑÑов Ð´Ð»Ñ ÑоÑалÑной пÑовеÑки каждого ÑеÑвеÑа в ÑеÑи. Ðозможен киÑайÑкий ÑаÑклад, пÑи коÑоÑом DPI вÑÑвлÑÐµÑ vpn пÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð¸ динамиÑеÑки Ð±Ð°Ð½Ð¸Ñ IP ÑеÑвеÑов, пÑедоÑÑавлÑÑÑÐ¸Ñ Ð½ÐµÐ»Ð¸ÑензиÑованнÑй VPN. Ðо Ð¸Ð¼ÐµÑ Ð·Ð½Ð°Ð½Ð¸Ñ, головÑ, Ð²Ñ Ð²Ñегда можеÑе обÑÑÑÑиÑоваÑÑ vpn ÑÑаÑик или пÑимениÑÑ Ð´ÑÑгие ÑÐ¸Ð¿Ñ VPN, более ÑÑÑойÑивÑе к Ð°Ð½Ð°Ð»Ð¸Ð·Ñ Ð½Ð° DPI или пÑоÑÑо менее ÑиÑокоизвеÑÑнÑе, а ÑледоваÑелÑно Ñ Ð¼ÐµÐ½ÑÑей веÑоÑÑноÑÑÑÑ Ð¾Ð±Ð½Ð°ÑÑживаемÑе ÑегÑлÑÑоÑом. У Ð²Ð°Ñ ÐµÑÑÑ Ñвобода делаÑÑ Ð½Ð° ваÑем VPS вÑе ÑÑо Ð²Ñ Ð·Ð°Ñ Ð¾ÑиÑе, адапÑиÑÑÑÑÑ Ðº новÑм ÑÑловиÑм. Ðа, ÑÑо поÑÑебÑÐµÑ Ð·Ð½Ð°Ð½Ð¸Ð¹. Ðам вÑбиÑаÑÑ ÑÑиÑÑÑÑ Ð¸ деÑжаÑÑ ÑиÑÑаÑÐ¸Ñ Ð¿Ð¾Ð´ конÑÑолем, когда вам ниÑего запÑеÑиÑÑ Ð½Ðµ могÑÑ, или покоÑиÑÑÑÑ ÑиÑÑеме.
VPS можно пÑибÑеÑÑи в множеÑÑве меÑÑ. СÑÑеÑÑвÑÑÑ ÑпеÑиализиÑованнÑе на поиÑке пÑедложений VPS поÑÑалÑ.
ÐапÑимеÑ, Ð²Ð¾Ñ ÑÑоÑ.
ÐÐ»Ñ Ð¿ÐµÑÑоналÑного VPN ÑеÑвеÑа обÑÑно доÑÑаÑоÑно Ñамой минималÑной конÑигÑÑаÑии, но Ñ Ð±ÐµÐ·Ð»Ð¸Ð¼Ð¸ÑнÑм ÑÑаÑиком или
Ñ Ð±Ð¾Ð»ÑÑим лимиÑом по ÑÑаÑÐ¸ÐºÑ (ÑеÑабайÑÑ). Ðажен и Ñип VPS. Openvz Ð¿Ð¾Ð´Ð¾Ð¹Ð´ÐµÑ Ð´Ð»Ñ openvpn, но
Ð²Ñ Ð½Ðµ поднимеÑе на нем wireguard, ipsec, Ñо еÑÑÑ Ð²Ñе, ÑÑо ÑÑебÑÐµÑ kernel mode.
ÐÐ»Ñ kernel mode ÑÑебÑеÑÑÑ Ñип виÑÑÑализаÑии, пÑедполагаÑÑий запÑÑк полноÑенного ÑкземплÑÑа ÐС linux
вмеÑÑе Ñ ÑдÑом. ÐодойдÑÑ kvm, xen, hyper-v, vmware.
Ðо Ñене можно найÑи пÑедложениÑ, коÑоÑÑе бÑдÑÑ Ð´ÐµÑевле гоÑовой VPN ÑÑлÑги, но пÑи ÑÑом Ð²Ñ Ñам Ñ Ð¾Ð·Ñин в Ñвоей лавке и не ÑиÑкÑеÑе попаÑÑÑ Ð¿Ð¾Ð´ бан ÑегÑлÑÑоÑа, Ñазве ÑÑо "заодно" под ковÑовÑÑ Ð±Ð¾Ð¼Ð±Ð°ÑдиÑÐ¾Ð²ÐºÑ Ñ Ð±Ð°Ð½Ð¾Ð¼ миллионов IP. ÐÑоме Ñого, еÑли вам ÑовÑем вÑе кажеÑÑÑ ÑложнÑм, пÑоÑиÑанное вÑзÑÐ²Ð°ÐµÑ ÑÑÑÐ¿Ð¾Ñ Ð¸ Ð²Ñ ÑоÑно знаеÑе, ÑÑо ниÑего из опиÑанного ÑделаÑÑ Ð½Ðµ ÑможеÑе, Ñо Ð²Ñ ÑможеÑе Ñ Ð¾ÑÑ Ð±Ñ Ð¸ÑполÑзоваÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑкое пеÑенапÑавление поÑÑов ssh Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑиÑÑованного socks proxy и пÑопиÑаÑÑ ÐµÐ³Ð¾ в бÑоÑзеÑ. ÐÐ½Ð°Ð½Ð¸Ñ linux не нÑÐ¶Ð½Ñ ÑовÑем. ÐÑо ваÑÐ¸Ð°Ð½Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÐµÐµ напÑÑжнÑй Ð´Ð»Ñ Ñайников, Ñ Ð¾ÑÑ Ð¸ не ÑамÑй ÑдобнÑй в иÑполÑзовании.
ÐоддеÑжаÑÑ ÑазÑабоÑÑика
<img src=https://cdn-icons-png.flaticon.com/16/14446/14446252.png alt="USDT" style="vertical-align: middle;"/> USDT
0x3d52Ce15B7Be734c53fc9526ECbAB8267b63d66E
<img src=https://cdn-icons-png.flaticon.com/16/5968/5968260.png alt="USDT" style="vertical-align: middle;"/> BTC
bc1qhqew3mrvp47uk2vevt5sctp7p2x9m7m5kkchve
Top Related Projects
GoodbyeDPI — Deep Packet Inspection circumvention utility (for Windows)
Powerful and extensible proxy server with anti-censorship functionality
WinDivert: Windows Packet Divert
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot