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 v.61
English
For english version refer to docs/readme.eng.txt
ÐÐ»Ñ Ñего ÑÑо надо
ÐвÑономное, без задейÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑеÑвеÑов, ÑÑедÑÑво пÑоÑиводейÑÑÐ²Ð¸Ñ DPI. ÐÐ¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð¾Ð±Ð¾Ð¹Ñи блокиÑовки или замедление ÑайÑов http(s), ÑигнаÑÑÑнÑй анализ tcp и udp пÑоÑоколов, напÑÐ¸Ð¼ÐµÑ Ñ ÑелÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки VPN.
ÐÑÐ¾ÐµÐºÑ Ð½Ð°Ñелен пÑежде вÑего на маломоÑнÑе embedded ÑÑÑÑойÑÑва - ÑоÑÑеÑÑ, ÑабоÑаÑÑие под openwrt. ÐоддеÑживаÑÑÑÑ ÑÑадиÑионнÑе Linux ÑиÑÑемÑ, FreeBSD, OpenBSD, ÑаÑÑиÑно MacOS. РнекоÑоÑÑÑ ÑлÑÑаÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð° ÑамоÑÑоÑÑелÑÐ½Ð°Ñ Ð¿ÑикÑÑÑка ÑеÑÐµÐ½Ð¸Ñ Ðº ÑазлиÑнÑм пÑоÑивкам.
ÐолÑÑÐ°Ñ ÑаÑÑÑ ÑÑнкÑионала ÑабоÑÐ°ÐµÑ Ð½Ð° windows.
Ðак побÑÑÑÑее наÑаÑÑ
ЧиÑайÑе docs/quick_start.txt Ð´Ð»Ñ linux и openwrt, docs/quick_start_windows.txt Ð´Ð»Ñ 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://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.
ÐÐ»Ñ Ð¿ÐµÑенапÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ tcp ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° transparent proxy иÑполÑзÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑледÑÑÑего вида :
пÑÐ¾Ñ Ð¾Ð´ÑÑий ÑÑаÑик : iptables -t nat -I PREROUTING -i <внÑÑÑенний_инÑеÑÑейÑ> -p tcp --dport 80 -j DNAT --to 127.0.0.127:988 иÑÑ Ð¾Ð´ÑÑий ÑÑаÑик : iptables -t nat -I OUTPUT -o <внеÑний_инÑеÑÑейÑ> -p tcp --dport 80 -m owner ! --uid-owner tpws -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", Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ задаеÑÑÑ Ð¸ÑклÑÑаÑÑее пÑавило.
tpws Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² Ñежиме socks proxy. Ð ÑÑом ÑлÑÑае iptables не нÑжнÑ, а нÑжно пÑопиÑаÑÑ socks в наÑÑÑойки пÑогÑÐ°Ð¼Ð¼Ñ (напÑимеÑ, бÑоÑзеÑа), Ñ ÐºÐ¾ÑоÑой бÑдем Ð¾Ð±Ñ Ð¾Ð´Ð¸ÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки. transparent proxy оÑлиÑаеÑÑÑ Ð¾Ñ socks именно Ñем, ÑÑо в ваÑианÑе transparent наÑÑÑаиваÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑкие пÑогÑÐ°Ð¼Ð¼Ñ Ð½Ðµ нÑжно.
ÐÐ»Ñ Ð¿ÐµÑенапÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° оÑеÑÐµÐ´Ñ NFQUEUE иÑÑ Ð¾Ð´ÑÑего и пÑÐ¾Ñ Ð¾Ð´ÑÑего в ÑÑоÑÐ¾Ð½Ñ Ð²Ð½ÐµÑнего инÑеÑÑейÑа ÑÑаÑика иÑполÑзÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑледÑÑÑего вида :
iptables -t mangle -I POSTROUTING -o <внеÑний_инÑеÑÑейÑ> -p tcp --dport 80 -j NFQUEUE --queue-num 200 --queue-bypass
ЧÑÐ¾Ð±Ñ Ð½Ðµ ÑÑогаÑÑ ÑÑаÑик на незаблокиÑованнÑе адÑеÑа, можно взÑÑÑ ÑпиÑок заблокиÑованнÑÑ Ñ Ð¾ÑÑов, заÑеÑолвиÑÑ ÐµÐ³Ð¾ в IP адÑеÑа и загнаÑÑ Ð² ipset zapret, заÑем добавиÑÑ ÑилÑÑÑ Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ :
iptables -t mangle -I POSTROUTING -o <внеÑний_инÑеÑÑейÑ> -p tcp --dport 80 -m set --match-set zapret dst -j NFQUEUE --queue-num 200 --queue-bypass
DPI Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¾Ð²Ð¸ÑÑ ÑолÑко пеÑвÑй http запÑоÑ, игноÑиÑÑÑ Ð¿Ð¾ÑледÑÑÑие запÑоÑÑ Ð² keep-alive ÑеÑÑии. Тогда можем ÑменÑÑиÑÑ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð½Ð° пÑоÑ, оÑказавÑиÑÑ Ð¾Ñ Ð¿ÑоÑеÑÑинга ненÑжнÑÑ Ð¿Ð°ÐºÐµÑов.
iptables -t mangle -I POSTROUTING -o <внеÑний_инÑеÑÑейÑ> -p tcp --dport 80 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -m set --match-set zapret dst -j NFQUEUE --queue-num 200 --queue-bypass
ФилÑÑÑ Ð¿Ð¾ mark нÑжен Ð´Ð»Ñ Ð¾ÑÑеÑÐµÐ½Ð¸Ñ Ð¾Ñ Ð¾ÑеÑеди пакеÑов, ÑгенеÑиÑованнÑÑ Ð²Ð½ÑÑÑи nfqws. ÐÑли пÑименÑеÑÑÑ ÑилÑÑÑ Ð¿Ð¾ connbytes 1:6, Ñо обÑзаÑелÑно добавлÑÑÑ Ð² iptables и ÑилÑÑÑ Ð¿Ð¾ mark. ÐнаÑе возможно пеÑепÑÑÑвание поÑÑдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑов, ÑÑо пÑÐ¸Ð²ÐµÐ´ÐµÑ Ðº неÑабоÑоÑпоÑобноÑÑи меÑода.
ÐÐ»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð°Ñак на DPI ÑÑебÑеÑÑÑ Ð¿ÐµÑенапÑавлÑÑÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко Ð²Ñ Ð¾Ð´ÑÑÐ¸Ñ Ð¿Ð°ÐºÐµÑов Ð¾Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ :
iptables -t mangle -I PREROUTING -i <внеÑний_инÑеÑÑейÑ> -p tcp --sport 80 -m connbytes --connbytes-dir=reply --connbytes-mode=packets --connbytes 1:6 -m set --match-set zapret src -j NFQUEUE --queue-num 200 --queue-bypass
ÐолÑÑаемÑе пакеÑÑ Ð±ÑдÑÑ ÑилÑÑÑоваÑÑÑÑ Ð¿Ð¾ Ð²Ñ Ð¾Ð´ÑÑÐµÐ¼Ñ Ð¸Ð½ÑеÑÑейÑÑ, поÑÑÑ Ð¸ IP иÑÑоÑника, Ñо еÑÑÑ Ð½Ð°Ð¾Ð±Ð¾ÑÐ¾Ñ Ð¿ÑÑÐ¼Ð¾Ð¼Ñ Ð¿ÑавилÑ.
ÐекоÑоÑÑе ÑÐµÑ Ð½Ð¸ÐºÐ¸, ломаÑÑие NAT, не вÑегда можно ÑеализоваÑÑ ÑеÑез iptables. ТÑебÑÑÑÑÑ nftables.
ÐÑли ваÑе ÑÑÑÑойÑÑво поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð°Ð¿Ð¿Ð°ÑаÑное ÑÑкоÑение (flow offloading, hardware nat, hardware acceleration), Ñо iptables могÑÑ Ð½Ðµ ÑабоÑаÑÑ. ÐÑи вклÑÑенном offloading Ð¿Ð°ÐºÐµÑ Ð½Ðµ пÑÐ¾Ñ Ð¾Ð´Ð¸Ñ Ð¿Ð¾ обÑÑÐ½Ð¾Ð¼Ñ Ð¿ÑÑи netfilter. ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ или его оÑклÑÑиÑÑ, или вÑбоÑоÑно им ÑпÑавлÑÑÑ.
РновÑÑ ÑдÑÐ°Ñ (и в более ÑÑаÑÑÑ , openwrt поÑÑиÑовал изменение на 4.14) пÑиÑÑÑÑÑвÑÐµÑ software flow offloading (SFO). ÐакеÑÑ, пÑÐ¾Ñ Ð¾Ð´ÑÑие ÑеÑез SFO, Ñак же пÑÐ¾Ñ Ð¾Ð´ÑÑ Ð¼Ð¸Ð¼Ð¾ болÑÑей ÑаÑÑи Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð¾Ð² iptables. ÐÑи вклÑÑенном SFO ÑабоÑÐ°ÐµÑ DNAT/REDIRECT (tpws). ÐÑи ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸ÑклÑÑаÑÑÑÑ Ð¸Ð· offloading. Ðднако, оÑÑалÑнÑе ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ð´ÑÑ ÑеÑез SFO, поÑÐ¾Ð¼Ñ NFQUEUE бÑÐ´ÐµÑ ÑÑабаÑÑваÑÑ ÑолÑко до помеÑÐµÐ½Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² flowtable. ÐÑакÑиÑеÑки ÑÑо ознаÑаеÑ, ÑÑо nfqws бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð½Ð° window size changing, но не бÑдÑÑ ÑабоÑаÑÑ Ð¾Ð¿Ñии по модиÑикаÑии ÑодеÑжимого пакеÑов. Offload вклÑÑаеÑÑÑ ÑеÑез ÑпеÑиалÑнÑй target в iptables "FLOWOFFLOAD". Ðе обÑзаÑелÑно пÑопÑÑкаÑÑ Ð²ÐµÑÑ ÑÑаÑик ÑеÑез offload. Ðожно иÑклÑÑиÑÑ Ð¸Ð· offload ÑоединениÑ, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð¿Ð°ÑÑÑ Ð½Ð° tpws или nfqws. openwrt не пÑедÑÑмаÑÑÐ¸Ð²Ð°ÐµÑ Ð²ÑбоÑоÑного ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ offload. ÐоÑÑÐ¾Ð¼Ñ ÑкÑипÑÑ zapret поддеÑживаÑÑ ÑÐ²Ð¾Ñ ÑиÑÑÐµÐ¼Ñ Ð²ÑбоÑоÑного ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ offload в openwrt.
ÐÑобенноÑÑи пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ip6tables
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
Ðолее подÑобно пÑеимÑÑеÑÑва и недоÑÑаÑки nftables пÑимениÑелÑно к данной ÑиÑÑеме опиÑÐ°Ð½Ñ Ð² docs/nftables_notes.txt ÐÑли коÑоÑко, Ñо в nftables невозможно ÑабоÑаÑÑ Ñ Ð±Ð¾Ð»ÑÑими ip лиÑÑами на ÑиÑÑÐµÐ¼Ð°Ñ Ñ Ð¼Ð°Ð»Ñм колиÑеÑÑвом RAM. ÐÑÑалÑнÑе ÑаÑÑмаÑÑиваемÑе здеÑÑ ÑÑнкÑии могÑÑ Ð±ÑÑÑ Ð¿ÐµÑенеÑÐµÐ½Ñ Ð½Ð° nftables.
РекомендÑеÑÑÑ Ð²ÐµÑÑÐ¸Ñ nft 1.0.2 или вÑÑе. Ðо Ñем вÑÑе веÑÑиÑ, Ñем лÑÑÑе. Ð nft ÑегÑлÑÑно Ð½Ð°Ñ Ð¾Ð´ÑÑ Ð±Ð°Ð³Ð¸.
ÐÑноÑиÑелÑно ÑÑаÑÑе веÑÑии ÑдÑа и/или ÑÑилиÑÑ nft могÑÑ Ð²ÑзÑваÑÑ Ð¾Ñибки. Ð ÑаÑÑноÑÑи, на ubuntu 18.04 Ñ ÑдÑом 4.15 бÑдÑÑ Ð¿ÑоблемÑ. Ð 20.04 - ÑабоÑаеÑ.
ÐекоÑоÑÑе ÑÐµÑ Ð½Ð¸ÐºÐ¸ можно полноÑенно иÑполÑзоваÑÑ ÑолÑко Ñ nftables. ÐапÑимеÑ, в iptables невозможно пеÑенапÑавиÑÑ Ð¿Ð°ÐºÐµÑÑ Ð½Ð° nfqws поÑле NAT. СледоваÑелÑно, пÑи иÑполÑзовании NAT невозможно пÑоизвеÑÑи аÑакÑ, не ÑовмеÑÑимÑÑ Ñ NAT. Ð nftables ÑÑой пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð½Ðµ ÑÑÑеÑÑвÑеÑ, поÑÐ¾Ð¼Ñ ÑÑо пÑиоÑиÑеÑÑ Ñ Ñка вÑÑÑавлÑеÑе Ð²Ñ Ñами, а не пÑивÑÐ·Ð°Ð½Ñ Ðº ÑикÑиÑованнÑм знаÑениÑм, ÑооÑвеÑÑÑвÑÑÑим ÑазнÑм ÑаблиÑам iptables. Ð iptables Ð½ÐµÑ ÑаблиÑÑ, ÑпоÑобной пеÑÐµÑ Ð²Ð°ÑиÑÑ Ð¿Ð°ÐºÐµÑÑ Ð¿Ð¾Ñле MASQUERDADE.
Ðогда ÑÑо ÑабоÑаÑÑ Ð½Ðµ бÑдеÑ
- ÐÑли подменÑеÑÑÑ DNS. С ÑÑой пÑоблемой легко ÑпÑавиÑÑÑÑ.
- ÐÑли блокиÑовка оÑÑÑеÑÑвлÑеÑÑÑ Ð¿Ð¾ IP.
- ÐÑли Ñоединение пÑÐ¾Ñ Ð¾Ð´Ð¸Ñ ÑеÑез ÑилÑÑÑ, ÑпоÑобнÑй ÑеконÑÑÑÑиÑоваÑÑ TCP Ñоединение, и коÑоÑÑй ÑледÑÐµÑ Ð²Ñем ÑÑандаÑÑам. ÐапÑимеÑ, Ð½Ð°Ñ Ð·Ð°Ð²Ð¾ÑаÑиваÑÑ Ð½Ð° squid. Соединение Ð¸Ð´ÐµÑ ÑеÑез полноÑеннÑй ÑÑек tcpip опеÑаÑионной ÑиÑÑемÑ, ÑÑагменÑаÑÐ¸Ñ Ð¾ÑÐ¿Ð°Ð´Ð°ÐµÑ ÑÑÐ°Ð·Ñ ÐºÐ°Ðº ÑÑедÑÑво Ð¾Ð±Ñ Ð¾Ð´Ð°. Squid пÑавилÑнÑй, он вÑе Ð½Ð°Ð¹Ð´ÐµÑ ÐºÐ°Ðº надо, обманÑваÑÑ ÐµÐ³Ð¾ беÑполезно. ÐÐ. ÐавоÑаÑиваÑÑ Ð½Ð° squid могÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸ÑÑ Ñебе лиÑÑ Ð½ÐµÐ±Ð¾Ð»ÑÑие пÑовайдеÑÑ, поÑколÑÐºÑ ÑÑо оÑÐµÐ½Ñ ÑеÑÑÑÑоемко. ÐолÑÑие компании обÑÑно иÑполÑзÑÑÑ DPI, коÑоÑÑй ÑаÑÑÑиÑан на гоÑаздо болÑÑÑÑ Ð¿ÑопÑÑкнÑÑ ÑпоÑобноÑÑÑ. ÐÐ¾Ð¶ÐµÑ Ð¿ÑименÑÑÑÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸ÑованнÑй Ð¿Ð¾Ð´Ñ Ð¾Ð´, когда на DPI завоÑаÑиваÑÑ ÑолÑко IP из "Ð¿Ð»Ð¾Ñ Ð¾Ð³Ð¾" ÑпиÑка, и далÑÑе Ñже DPI ÑеÑÐ°ÐµÑ Ð¿ÑопÑÑкаÑÑ Ð¸Ð»Ð¸ неÑ. Так можно ÑнизиÑÑ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð½Ð° DPI в деÑÑÑки, еÑли не ÑоÑни Ñаз, а ÑледоваÑелÑно не покÑпаÑÑ Ð¾ÑÐµÐ½Ñ Ð´Ð¾Ñогие ÑеÑениÑ, обойдÑÑÑ Ñем-Ñо ÑÑÑеÑÑвенно более деÑевÑм. Ðелкие пÑовайдеÑÑ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÐºÑпаÑÑ ÑÑлÑÐ³Ñ ÑилÑÑÑаÑии Ñ Ð²ÑÑеÑÑоÑÑÐ¸Ñ , ÑÑÐ¾Ð±Ñ Ñамим не моÑоÑиÑÑÑÑ, и они Ñже бÑдÑÑ Ð¿ÑименÑÑÑ DPI.
nfqws
ÐÑа пÑогÑамма - модиÑикаÑÐ¾Ñ Ð¿Ð°ÐºÐµÑов и обÑабоÑÑик оÑеÑеди NFQUEUE. ÐÐ»Ñ BSD ÑиÑÑем ÑÑÑеÑÑвÑÐµÑ Ð°Ð´Ð°Ð¿ÑиÑованнÑй ваÑÐ¸Ð°Ð½Ñ - dvtws, ÑобиÑаемÑй из ÑÐµÑ Ð¶Ðµ иÑÑ Ð¾Ð´Ð½Ð¸ÐºÐ¾Ð² (Ñм. bsd.txt).
--debug=0|1 ; 1=вÑводиÑÑ Ð¾ÑладоÑнÑе ÑообÑениÑ
--daemon ; демонизиÑоваÑÑ Ð¿ÑогÑ
--pidfile=
ÐаÑамеÑÑÑ Ð¼Ð°Ð½Ð¸Ð¿ÑлÑÑии могÑÑ ÑоÑеÑаÑÑÑÑ Ð² лÑбÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑиÑÑ .
ÐÐÐÐЧÐÐÐÐ. ÐаÑамеÑÑ --wsize ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑим и более не поддеÑживаеÑÑÑ Ð² ÑкÑипÑÐ°Ñ . ФÑнкÑии ÑплиÑа вÑполнÑÑÑÑÑ Ð² ÑÐ°Ð¼ÐºÐ°Ñ Ð°Ñаки деÑÐ¸Ð½Ñ ÑонизаÑии. ÐÑо бÑÑÑÑее и избавлÑÐµÑ Ð¾Ñ Ñелого ÑÑда недоÑÑаÑков wsize.
--debug позволÑÐµÑ Ð²ÑводиÑÑ Ð¿Ð¾Ð´ÑобнÑй лог дейÑÑвий на конÑолÑ, в syslog или в Ñайл. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ð°Ð¶ÐµÐ½ поÑÑдок ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿Ñий. --debug лÑÑÑе вÑего ÑказÑваÑÑ Ð² Ñамом наÑале. ÐпÑии анализиÑÑÑÑÑÑ Ð¿Ð¾ÑледоваÑелÑно. ÐÑли оÑибка бÑÐ´ÐµÑ Ð¿Ñи пÑовеÑке опÑии, а до анализа --debug еÑе дело не доÑло, Ñо ÑообÑÐµÐ½Ð¸Ñ Ð½Ðµ бÑдÑÑ Ð²ÑÐ²ÐµÐ´ÐµÐ½Ñ Ð² Ñайл или syslog. ÐÑи логиÑовании в Ñайл пÑоÑеÑÑ Ð½Ðµ деÑÐ¶Ð¸Ñ Ñайл оÑкÑÑÑÑм. Ради каждой запиÑи Ñайл оÑкÑÑваеÑÑÑ Ð¸ поÑом закÑÑваеÑÑÑ. Так ÑÑо Ñайл можно ÑдалиÑÑ Ð² лÑбой моменÑ, и он бÑÐ´ÐµÑ Ñоздан заново пÑи пеÑвом же ÑообÑении в лог. Ðо имейÑе в видÑ, ÑÑо еÑли Ð²Ñ Ð·Ð°Ð¿ÑÑкаеÑе пÑоÑеÑÑ Ð¿Ð¾Ð´ root, Ñо бÑÐ´ÐµÑ Ñменен UID на не-root. РнаÑале на лог Ñайл менÑеÑÑÑ owner, инаÑе запиÑÑ Ð±ÑÐ´ÐµÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°. ÐÑли Ð²Ñ Ð¿Ð¾Ñом ÑдалиÑе Ñайл, и Ñ Ð¿ÑоÑеÑÑа не бÑÐ´ÐµÑ Ð¿Ñав на Ñоздание Ñайла в его диÑекÑоÑии, лог болÑÑе не бÑÐ´ÐµÑ Ð²ÐµÑÑиÑÑ. ÐмеÑÑо ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð»ÑÑÑе иÑполÑзоваÑÑ truncate. Ð Ñелле ÑÑо можно ÑделаÑÑ ÑеÑез ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ": >filename"
ÐТÐÐÐ ÐÐСÐÐХРÐÐÐÐÐЦÐÐ DPI СÑÑÑ ÐµÐµ в ÑледÑÑÑем. ÐоÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ tcp 3-way handshake Ð¸Ð´ÐµÑ Ð¿ÐµÑвÑй Ð¿Ð°ÐºÐµÑ Ñ Ð´Ð°Ð½Ð½Ñми Ð¾Ñ ÐºÐ»Ð¸ÐµÐ½Ñа. Там обÑÑно "GET / ..." или TLS ClientHello. ÐÑ Ð´Ñопаем ÑÑÐ¾Ñ Ð¿Ð°ÐºÐµÑ, заменÑÑ Ñем-Ñо дÑÑгим. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÐ»ÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ñ Ð±ÐµÐ·Ð¾Ð±Ð¸Ð´Ð½Ñм, но валиднÑм запÑоÑом http или https (ваÑÐ¸Ð°Ð½Ñ fake), Ð¿Ð°ÐºÐµÑ ÑбÑоÑа ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (ваÑианÑÑ rst, rstack), ÑазбиÑÑй на ÑаÑÑи оÑигиналÑнÑй Ð¿Ð°ÐºÐµÑ Ñ Ð¿ÐµÑепÑÑаннÑм поÑÑдком ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÑегменÑов + обÑамление пеÑвого ÑегменÑа Ñейками (disorder), Ñо же Ñамое без пеÑепÑÑÑÐ²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑÑдка ÑегменÑов (split). fakeknown оÑлиÑаеÑÑÑ Ð¾Ñ fake Ñем, ÑÑо пÑименÑеÑÑÑ ÑолÑко к ÑаÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¿ÑоÑоколÑ. РлиÑеÑаÑÑÑе Ñакие аÑаки еÑе назÑваÑÑ TCB desynchronization и TCB teardown. Ðадо, ÑÑÐ¾Ð±Ñ ÑейковÑе пакеÑÑ Ð´Ð¾Ñли до DPI, но не доÑли до ÑеÑвеÑа. Ðа вооÑÑжении еÑÑÑ ÑледÑÑÑие возможноÑÑи : ÑÑÑановиÑÑ Ð½Ð¸Ð·ÐºÐ¸Ð¹ TTL, поÑÑлаÑÑ Ð¿Ð°ÐºÐµÑ Ñ Ð¸Ð½Ð²Ð°Ð»Ð¸Ð´Ð½Ð¾Ð¹ ÑекÑÑммой, добавлÑÑÑ tcp option "MD5 signature", иÑпоÑÑиÑÑ sequence numbers. ÐÑе они не лиÑÐµÐ½Ñ Ð½ÐµÐ´Ð¾ÑÑаÑков.
- md5sig ÑабоÑÐ°ÐµÑ Ð½Ðµ на вÑÐµÑ ÑеÑвеÑÐ°Ñ . ÐакеÑÑ Ñ md5 обÑÑно оÑбÑаÑÑваÑÑ ÑолÑко linux.
- badsum не ÑÑабоÑаеÑ, еÑли ваÑе ÑÑÑÑойÑÑво за 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 бÑдÑÑ Ð½Ð°Ð²ÐµÑнÑка оÑбÑоÑÐµÐ½Ñ Ð¿ÑинимаÑÑим Ñзлом, но Ñак же и 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 header "hop-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, ТСÐУ) везде где ÑолÑко можно, вклÑÑÐ°Ñ Ð¼Ð°Ð³Ð¸ÑÑÑалов. Ðо поÑенÑиалÑно Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°Ð²Ð°ÑÑ Ñбои. ÐапÑимеÑ, пÑи аÑиммеÑÑии Ð²Ñ Ð¾Ð´ÑÑего и иÑÑ Ð¾Ð´ÑÑего канала до конкÑеÑного ÑеÑвеÑа. Ðа ÐºÐ°ÐºÐ¸Ñ -Ñо пÑовайдеÑÐ°Ñ ÑÑа ÑÐµÑ Ð½Ð¸ÐºÐ° бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð½ÐµÐ¿Ð»Ð¾Ñ Ð¾, на дÑÑÐ³Ð¸Ñ Ð´Ð¾ÑÑÐ°Ð²Ð¸Ñ Ð±Ð¾Ð»ÑÑе пÑоблем, Ñем полÑзÑ. Ðде-Ñо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ ÑÑнинг паÑамеÑÑов. ÐÑÑÑе иÑполÑзоваÑÑ Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑм огÑаниÑиÑелем. Ðе ÑекомендÑеÑÑÑ Ð´Ð»Ñ BSD ÑиÑÑем, поÑколÑÐºÑ Ñам нелÑÐ·Ñ Ð¾Ð³ÑаниÑиÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво Ð²Ñ Ð¾Ð´ÑÑÐ¸Ñ Ð¿Ð°ÐºÐµÑов ÑеÑез connbytes.
Ð ÐµÐ¶Ð¸Ð¼Ñ Ð´ÑÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ ÑоÑеÑаÑÑÑÑ Ð² лÑбÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑиÑÑ . --dpi-desync-fooling беÑÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво знаÑений ÑеÑез запÑÑÑÑ.
ÐÐ»Ñ Ñежимов fake, rst, rstack поÑле Ñейка оÑпÑавлÑем оÑигиналÑнÑй пакеÑ.
Режим disorder Ð´ÐµÐ»Ð¸Ñ Ð¾ÑигиналÑнÑй Ð¿Ð°ÐºÐµÑ Ð½Ð° 2 ÑаÑÑи и оÑпÑавлÑÐµÑ ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ð² Ñказанном поÑÑдке :
- 2-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа
- подделÑÐ½Ð°Ñ 1-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа, поле даннÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ нÑлÑми
- 1-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа
- подделÑÐ½Ð°Ñ 1-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа, поле даннÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ нÑлÑми. оÑÑÑлка 2-й Ñаз. ÐÑигиналÑнÑй Ð¿Ð°ÐºÐµÑ Ð´ÑопаеÑÑÑ Ð²Ñегда. ÐаÑамеÑÑ --dpi-desync-split-pos позволÑÐµÑ ÑказаÑÑ Ð±Ð°Ð¹ÑовÑÑ Ð¿Ð¾Ð·Ð¸ÑиÑ, на коÑоÑой пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ñазбивка. Ðо ÑмолÑÐ°Ð½Ð¸Ñ - 2. ÐÑли позиÑÐ¸Ñ Ð±Ð¾Ð»ÑÑе Ð´Ð»Ð¸Ð½Ñ Ð¿Ð°ÐºÐµÑа, позиÑÐ¸Ñ Ð²ÑбиÑаеÑÑÑ 1. ÐÑой поÑледоваÑелÑноÑÑÑÑ Ð´Ð»Ñ DPI макÑималÑно ÑÑложнÑеÑÑÑ Ð·Ð°Ð´Ð°Ñа ÑеконÑÑÑÑкÑии наÑалÑного ÑообÑениÑ, по коÑоÑÐ¾Ð¼Ñ Ð¿ÑинимаеÑÑÑ ÑеÑение о блокиÑовке. ÐекоÑоÑÑм DPI Ñ Ð²Ð°ÑÐ¸Ñ Ð¸ tcp ÑегменÑов в непÑавилÑном поÑÑдке, подделÑнÑе ÑаÑÑи ÑÐ´ÐµÐ»Ð°Ð½Ñ Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной надежноÑÑи и более ÑложнÑÑ Ð°Ð»Ð³Ð¾ÑиÑмов ÑеконÑÑÑÑкÑии. Режим disorder2 оÑклÑÑÐ°ÐµÑ Ð¾ÑпÑÐ°Ð²ÐºÑ Ð¿Ð¾Ð´Ð´ÐµÐ»ÑнÑÑ ÑаÑÑей.
Режим split оÑÐµÐ½Ñ Ð¿Ð¾Ñ Ð¾Ð¶ на disorder, ÑолÑко Ð½ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÑегменÑов :
- подделÑÐ½Ð°Ñ 1-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа, поле даннÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ нÑлÑми
- 1-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа
- подделÑÐ½Ð°Ñ 1-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа, поле даннÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ нÑлÑми. оÑÑÑлка 2-й Ñаз.
- 2-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа Режим split2 оÑклÑÑÐ°ÐµÑ Ð¾ÑпÑÐ°Ð²ÐºÑ Ð¿Ð¾Ð´Ð´ÐµÐ»ÑнÑÑ ÑаÑÑей. Ðн Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован как более бÑÑÑÑÐ°Ñ Ð°Ð»ÑÑеÑнаÑива --wsize.
disorder2 и split2 не пÑедполагаÑÑ Ð¾ÑÑÑÐ»ÐºÑ Ñейк пакеÑов, поÑÑÐ¾Ð¼Ñ Ð¾Ð¿Ñии ttl и fooling неакÑÑалÑнÑ.
seqovl добавлÑÐµÑ Ð² наÑало пеÑвой оÑÑÑлаемой ÑаÑÑи оÑигиналÑного пакеÑа (1 ÑаÑÑÑ Ð´Ð»Ñ split и 2 ÑаÑÑÑ Ð´Ð»Ñ disorder) seqovl Ð±Ð°Ð¹Ñ Ñо ÑмеÑеннÑм в минÑÑ sequence number на велиÑÐ¸Ð½Ñ seqovl. Ð ÑлÑÑае split2 ÑаÑÑÐµÑ Ð¸Ð´ÐµÑ Ð½Ð° Ñо, ÑÑо пÑедÑдÑÑий оÑÑÑл, еÑли он бÑл, Ñже попал в ÑÐ¾ÐºÐµÑ ÑеÑвеÑного пÑиложениÑ, поÑÑÐ¾Ð¼Ñ Ð½Ð¾Ð²Ð°Ñ Ð¿ÑиÑедÑÐ°Ñ ÑаÑÑÑ Ð»Ð¸ÑÑ ÑаÑÑиÑно Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² пÑÐµÐ´ÐµÐ»Ð°Ñ ÑекÑÑего окна (in-window). СпеÑеди ÑÐµÐ¹ÐºÐ¾Ð²Ð°Ñ ÑаÑÑÑ Ð¾ÑбÑаÑÑваеÑÑÑ, а оÑÑавÑаÑÑÑ ÑаÑÑÑ ÑодеÑÐ¶Ð¸Ñ Ð¾Ñигинал и наÑинаеÑÑÑ Ñ Ð½Ð°Ñала window, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð² ÑокеÑ. СеÑвеÑное пÑиложение полÑÑÐ°ÐµÑ Ð²Ñе, ÑÑо ÑеалÑно оÑÑÑÐ»Ð°ÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ, оÑбÑаÑÑÐ²Ð°Ñ ÑейковÑÑ out-of-window ÑаÑÑÑ. Ðо DPI не Ð¼Ð¾Ð¶ÐµÑ ÑÑого понÑÑÑ, поÑÑÐ¾Ð¼Ñ Ñ Ð½ÐµÐ³Ð¾ пÑоиÑÑ Ð¾Ð´Ð¸Ñ sequence деÑÐ¸Ð½Ñ ÑонизаÑиÑ.
ÐÐ»Ñ disorder2 overlap Ð¸Ð´ÐµÑ Ð½Ð° 2-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа. ÐбÑзаÑелÑно, ÑÑÐ¾Ð±Ñ seqovl бÑл менÑÑе split_pos, инаÑе вÑе оÑоÑланное бÑÐ´ÐµÑ Ð¿ÐµÑедано в ÑÐ¾ÐºÐµÑ ÑÑÐ°Ð·Ñ Ð¶Ðµ, вклÑÑÐ°Ñ Ñейк, Ð»Ð¾Ð¼Ð°Ñ Ð¿ÑоÑокол пÑикладного ÑÑовнÑ. ÐÑи ÑоблÑдении ÑÑого ÑÑÐ»Ð¾Ð²Ð¸Ñ 2-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа ÑвлÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ in-window, поÑÑÐ¾Ð¼Ñ ÑеÑвеÑÐ½Ð°Ñ ÐС пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÐµÐµ Ñеликом, вклÑÑÐ°Ñ Ñейк. Ðо поÑколÑÐºÑ Ð½Ð°ÑалÑÐ½Ð°Ñ ÑаÑÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð· 1 пакеÑа еÑе не пÑинÑÑа, Ñо Ñейк и ÑеалÑнÑе даннÑе оÑÑаÑÑÑÑ Ð² памÑÑи ÑдÑа, не оÑпÑавлÑÑÑÑ Ð² ÑеÑвеÑное пÑиложение. Ðак ÑолÑко пÑÐ¸Ñ Ð¾Ð´Ð¸Ñ 1-Ñ ÑаÑÑÑ Ð¿Ð°ÐºÐµÑа, она пеÑепиÑÑÐ²Ð°ÐµÑ ÑейковÑÑ ÑаÑÑÑ Ð² памÑÑи ÑдÑа. ЯдÑо полÑÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из 1 и 2 ÑаÑÑи, поÑÑÐ¾Ð¼Ñ Ð´Ð°Ð»ÐµÐµ Ð¸Ð´ÐµÑ Ð¾ÑпÑавка в ÑÐ¾ÐºÐµÑ Ð¿ÑиложениÑ. Таково поведение вÑÐµÑ unix ÐС, кÑоме solaris - оÑÑавлÑÑÑ Ð¿Ð¾Ñледние пÑинÑÑÑе даннÑе. Windows оÑÑавлÑÐµÑ ÑÑаÑÑе даннÑе, поÑÑÐ¾Ð¼Ñ disorder Ñ seqovl бÑÐ´ÐµÑ Ð¿ÑиводиÑÑ Ðº завиÑаниÑм ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ñи ÑабоÑе Ñ Windows ÑеÑвеÑами. Solaris пÑакÑиÑеÑки меÑÑв, windows ÑеÑвеÑов оÑÐµÐ½Ñ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾. Ðожно иÑполÑзоваÑÑ Ð»Ð¸ÑÑÑ Ð¿Ñи Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи. ÐеÑод позволÑÐµÑ Ð¾Ð±Ð¾Ð¹ÑиÑÑ Ð±ÐµÐ· fooling и TTL. Фейки пеÑемеÑÐ°Ð½Ñ Ñ ÑеалÑнÑм даннÑми. split/disorder вмеÑÑо split2/disorder2 по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе оÑделÑнÑе Ñейки.
Ð ÐµÐ¶Ð¸Ð¼Ñ Ð´ÐµÑÐ¸Ð½Ñ ÑонизаÑии 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,split2" ознаÑÐ°ÐµÑ ÑазбиÑÑ tcp Ð¿Ð°ÐºÐµÑ Ð½Ð° 2 ÑегменÑа, в каждÑй из Ð½Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ hop-by-hop. ÐÑи "hopbyhop,ipfrag2" поÑледоваÑелÑноÑÑÑ Ñ ÐµÐ´ÐµÑов бÑÐ´ÐµÑ : ipv6,hop-by-hop,fragment,tcp/udp. Режим "ipfrag1" Ð¼Ð¾Ð¶ÐµÑ ÑÑабаÑÑваÑÑ Ð½Ðµ вÑегда без ÑпеÑиалÑной подгоÑовки. См. Ñаздел "IP ÑÑагменÑаÑиÑ".
ÐÑÑÑ 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.
ХоÑÑÑ Ð¸Ð·Ð²Ð»ÐµÐºÐ°ÑÑÑÑ Ð¸Ð· Host: Ñ ÐµÐ´ÐµÑа обÑÑнÑÑ http запÑоÑов и из SNI в TLS ClientHello. СÑÐ±Ð´Ð¾Ð¼ÐµÐ½Ñ ÑÑиÑÑваÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. ÐоддеÑживаÑÑÑÑ Ð»Ð¸ÑÑÑ gzip.
iptables Ð´Ð»Ñ Ð·Ð°Ð´ÐµÐ¹ÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ñаки на пеÑвÑй Ð¿Ð°ÐºÐµÑ Ð´Ð°Ð½Ð½ÑÑ :
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, ÑÑÐ¾Ð±Ñ Ð½Ðµ допÑÑÑиÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑов. ÐÑоÑеÑÑинг оÑеÑеди - пÑоÑеÑÑ Ð¾ÑложеннÑй. ÐÑли ÑдÑо Ð¸Ð¼ÐµÐµÑ Ð¿Ð°ÐºÐµÑÑ Ð½Ð° оÑÑÑÐ»ÐºÑ Ð²Ð½Ðµ оÑеÑеди - оно Ð¸Ñ Ð¾ÑпÑавлÑÐµÑ Ð½ÐµÐ·Ð°Ð¼ÐµÐ´Ð»Ð¸ÑелÑно. Ðзменение пÑавилÑного поÑÑдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÐºÐµÑов пÑи деÑÐ¸Ð½Ñ ÑонизаÑии Ð»Ð¾Ð¼Ð°ÐµÑ Ð²ÑÑ Ð¸Ð´ÐµÑ. ÐÑи оÑÑÑÑÑÑвии огÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° connbytes, аÑака бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð¸ без ÑилÑÑÑа по mark. Ðо лÑÑÑе его вÑе же оÑÑавиÑÑ Ð´Ð»Ñ ÑвелиÑÐµÐ½Ð¸Ñ ÑкоÑоÑÑи.
ÐоÑÐµÐ¼Ñ --connbytes 1:6 : 1 - Ð´Ð»Ñ ÑабоÑÑ Ð¼ÐµÑодов деÑÐ¸Ð½Ñ ÑонизаÑии 0-й ÑÐ°Ð·Ñ Ð¸ wssize 2 - иногда даннÑе идÑÑ Ð² 3-м пакеÑе 3-way handshake 3 - ÑÑандаÑÑÐ½Ð°Ñ ÑиÑÑаÑÐ¸Ñ Ð¿Ñиема одного пакеÑа запÑоÑа 4-6 - на ÑлÑÑай ÑеÑÑанÑмиÑÑии или запÑоÑа длиной в неÑколÑко пакеÑов (TLSClientHello Ñ kyber, напÑимеÑ)
ÐÐÐÐÐÐÐÐ ÐÐÐÐÐÐ ÐÐТÐÐÐÐ ÐÐСÐÐХРÐÐÐÐÐЦÐРРпаÑамеÑÑе dpi-desync можно ÑказаÑÑ Ð´Ð¾ 3 Ñежимов ÑеÑез запÑÑÑÑ. 0 Ñаза пÑÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ ÑабоÑÑ Ð½Ð° ÑÑапе ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоединениÑ. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ synack или syndata. Ðа 0 ÑÐ°Ð·Ñ Ð½Ðµ дейÑÑвÑÐµÑ ÑилÑÑÑ Ð¿Ð¾ hostlist. ÐоÑледÑÑÑие ÑÐµÐ¶Ð¸Ð¼Ñ Ð¾ÑÑабаÑÑваÑÑ Ð½Ð° пакеÑÐ°Ñ Ñ Ð´Ð°Ð½Ð½Ñми. Режим 1-й ÑÐ°Ð·Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ fake,rst,rstack. Режим 2-й ÑÐ°Ð·Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ disorder,disorder2,split,split2,ipfrag2. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, когда Ñ Ð¿ÑовайдеÑа ÑÑÐ¾Ð¸Ñ Ð½Ðµ один DPI.
Ð ÐÐÐÐ SYNACK РдокÑменÑаÑии по geneva ÑÑо назÑваеÑÑÑ "TCB turnaround". ÐопÑÑка ввеÑÑи DPI в заблÑждение оÑноÑиÑелÑно Ñолей клиенÑа и ÑеÑвеÑа. !!! ÐоÑколÑÐºÑ Ñежим наÑÑÑÐ°ÐµÑ ÑабоÑÑ NAT, ÑÐµÑ Ð½Ð¸ÐºÐ° Ð¼Ð¾Ð¶ÐµÑ ÑÑабоÑаÑÑ ÑолÑко еÑли Ð¼ÐµÐ¶Ð´Ñ Ð°ÑакÑÑÑим ÑÑÑÑойÑÑвом и DPI Ð½ÐµÑ NAT. ÐÑака не ÑÑабоÑÐ°ÐµÑ ÑеÑез NAT ÑоÑÑеÑ, но Ð¼Ð¾Ð¶ÐµÑ ÑÑабоÑаÑÑ Ñ Ð½ÐµÐ³Ð¾. ÐÐ»Ñ ÑеализаÑии аÑаки в linux обÑзаÑелÑно ÑÑебÑеÑÑÑ Ð¾ÑклÑÑиÑÑ ÑÑандаÑÑное пÑавило firewall, дÑопаÑÑее инвалиднÑе пакеÑÑ Ð² ÑепоÑке OUTPUT. ÐапÑÐ¸Ð¼ÐµÑ : -A OUTPUT -m state --state INVALID -j DROP Ð openwrt можно оÑклÑÑиÑÑ drop INVALID в OUTPUT и FORWARD ÑеÑез опÑÐ¸Ñ Ð² /etc/config/firewall :
config zone option name 'wan' ......... option masq_allow_invalid '1'
Ð ÑожалениÑ, оÑклÑÑиÑÑ ÑолÑко в OUTPUT Ñаким обÑазом нелÑзÑ. Ðо можно ÑделаÑÑ Ð¸Ð½Ð°Ñе. ÐпиÑаÑÑ Ð² /etc/firewall.user :
iptables -D zone_wan_output -m comment --comment '!fw3' -j zone_wan_dest_ACCEPT ip6tables -D zone_wan_output -m comment --comment '!fw3' -j zone_wan_dest_ACCEPT
ÐÑÑÑе делаÑÑ Ñак, поÑÐ¾Ð¼Ñ ÑÑо оÑÑÑÑÑÑвие дÑопа INVALID в FORWARD Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к нежелаÑелÑнÑм ÑÑеÑкам пакеÑов из LAN. ÐÑли не пÑинÑÑÑ ÑÑи меÑÑ, оÑÑÑлка SYN,ACK ÑегменÑа вÑÐ·Ð¾Ð²ÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð¸ опеÑаÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð¿ÑеÑвана. ÐÑÑалÑнÑе ÑÐµÐ¶Ð¸Ð¼Ñ Ñоже не ÑÑабоÑаÑÑ. ÐÑли поймеÑе, ÑÑо вам synack не нÑжен, обÑзаÑелÑно веÑниÑе пÑавило дÑопа INVALID.
Ð ÐÐÐÐ 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 не влиÑÐµÑ ÑилÑÑÑ hostlist, поÑколÑÐºÑ Ð¾Ð½ дейÑÑвÑÐµÑ Ñ Ñамого наÑала ÑоединениÑ, когда еÑе нелÑÐ·Ñ Ð¿ÑинÑÑÑ ÑеÑение о попадании в лиÑÑ. --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. ÐÑли ÑказаÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ ÑплиÑа болÑÑе Ð´Ð»Ð¸Ð½Ñ Ð¿ÐµÑвого пакеÑа или иÑполÑзоваÑÑ --dpi-desync-split-tls, Ñо Ñазбивка пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð½Ðµ обÑзаÑелÑно пеÑвого пакеÑа, а Ñого, на коÑоÑÑй пÑиÑлаÑÑ Ð¸ÑÐ¾Ð³Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑиÑ. ÐÑли, допÑÑÑим, ÐºÐ»Ð¸ÐµÐ½Ñ Ð¿Ð¾Ñлал TLS ClientHello длиной 2000, а SNI наÑинаеÑÑÑ Ñ 1700, и Ð·Ð°Ð´Ð°Ð½Ñ Ð¾Ð¿Ñии fake,split2, Ñо пеÑед пеÑвÑм пакеÑом Ð¸Ð´ÐµÑ 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 или вÑÑе.
tpws
tpws - ÑÑо transparent proxy.
--debug=0|1|2|syslog|@
--local-rcvbuf=
--split-http-req=method|host ; ÑпоÑоб ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ http запÑоÑов на ÑегменÑÑ : около меÑода (GET,POST) или около заголовка Host
--split-pos=
--debug позволÑÐµÑ Ð²ÑводиÑÑ Ð¿Ð¾Ð´ÑобнÑй лог дейÑÑвий на конÑолÑ, в syslog или в Ñайл. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ð°Ð¶ÐµÐ½ поÑÑдок ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿Ñий. --debug лÑÑÑе вÑего ÑказÑваÑÑ Ð² Ñамом наÑале. ÐпÑии анализиÑÑÑÑÑÑ Ð¿Ð¾ÑледоваÑелÑно. ÐÑли оÑибка бÑÐ´ÐµÑ Ð¿Ñи пÑовеÑке опÑии, а до анализа --debug еÑе дело не доÑло, Ñо ÑообÑÐµÐ½Ð¸Ñ Ð½Ðµ бÑдÑÑ Ð²ÑÐ²ÐµÐ´ÐµÐ½Ñ Ð² Ñайл или syslog. --debug=0|1|2 позволÑÑÑ ÑÑÐ°Ð·Ñ Ð² одном паÑамеÑÑе вклÑÑиÑÑ Ð»Ð¾Ð³Ð¸Ñование на конÑÐ¾Ð»Ñ Ð¸ ÑказаÑÑ ÑÑовенÑ. Ð¡Ð¾Ñ Ñанено Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñ Ð±Ð¾Ð»ÐµÐµ ÑÑаÑÑми веÑÑиÑми. ÐÐ»Ñ Ð²ÑбоÑа ÑÑÐ¾Ð²Ð½Ñ Ð² Ñежиме syslog или file иÑполÑзÑйÑе оÑделÑнÑй паÑамеÑÑ --debug-level. ÐÑли в ÑÑÐ¸Ñ ÑÐµÐ¶Ð¸Ð¼Ð°Ñ --debug не ÑказÑваÑÑ ÑÑÐ¾Ð²ÐµÐ½Ñ ÑеÑез --debug-level, Ñо авÑомаÑиÑеÑки назнаÑаеÑÑÑ ÑÑÐ¾Ð²ÐµÐ½Ñ 1. ÐÑи логиÑовании в Ñайл пÑоÑеÑÑ Ð½Ðµ деÑÐ¶Ð¸Ñ Ñайл оÑкÑÑÑÑм. Ради каждой запиÑи Ñайл оÑкÑÑваеÑÑÑ Ð¸ поÑом закÑÑваеÑÑÑ. Так ÑÑо Ñайл можно ÑдалиÑÑ Ð² лÑбой моменÑ, и он бÑÐ´ÐµÑ Ñоздан заново пÑи пеÑвом же ÑообÑении в лог. Ðо имейÑе в видÑ, ÑÑо еÑли Ð²Ñ Ð·Ð°Ð¿ÑÑкаеÑе пÑоÑеÑÑ Ð¿Ð¾Ð´ root, Ñо бÑÐ´ÐµÑ Ñменен UID на не-root. РнаÑале на лог Ñайл менÑеÑÑÑ owner, инаÑе запиÑÑ Ð±ÑÐ´ÐµÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°. ÐÑли Ð²Ñ Ð¿Ð¾Ñом ÑдалиÑе Ñайл, и Ñ Ð¿ÑоÑеÑÑа не бÑÐ´ÐµÑ Ð¿Ñав на Ñоздание Ñайла в его диÑекÑоÑии, лог болÑÑе не бÑÐ´ÐµÑ Ð²ÐµÑÑиÑÑ. ÐмеÑÑо ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð»ÑÑÑе иÑполÑзоваÑÑ truncate. Ð Ñелле ÑÑо можно ÑделаÑÑ ÑеÑез ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ": >filename"
ÐаÑамеÑÑÑ Ð¼Ð°Ð½Ð¸Ð¿ÑлÑÑии могÑÑ ÑоÑеÑаÑÑÑÑ Ð² лÑбÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑиÑÑ .
Ð ÑлÑÑае http запÑоÑа split-http-req Ð¸Ð¼ÐµÐµÑ Ð¿ÑеимÑÑеÑÑво над split-pos. split-pos по ÑмолÑÐ°Ð½Ð¸Ñ ÑабоÑÐ°ÐµÑ ÑолÑко на http и TLS ClientHello. ЧÑÐ¾Ð±Ñ Ð¾Ð½ ÑабоÑал на лÑбÑÑ Ð¿Ð°ÐºÐµÑÐ°Ñ , ÑкажиÑе --split-any-protocol.
Ðа пÑикладном ÑÑовне в обÑем ÑлÑÑае Ð½ÐµÑ Ð³Ð°ÑанÑиÑованного ÑÑедÑÑва заÑÑавиÑÑ ÑдÑо вÑплÑнÑÑÑ Ð±Ð»Ð¾Ðº даннÑÑ , поÑезаннÑм в опÑеделенном меÑÑе. ÐС деÑÐ¶Ð¸Ñ Ð±ÑÑÐµÑ Ð¾ÑÑÑлки (SNDBUF) Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑокеÑа. ÐÑли Ñ ÑокеÑа вклÑÑена опÑÐ¸Ñ TCP_NODELAY и бÑÑÐµÑ Ð¿ÑÑÑ, Ñо каждÑй send пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº оÑÑÑлке оÑделÑного ip пакеÑа или гÑÑÐ¿Ð¿Ñ Ð¿Ð°ÐºÐµÑов, еÑли блок не вмеÑаеÑÑÑ Ð² один ip пакеÑ. Ðднако, еÑли в Ð¼Ð¾Ð¼ÐµÐ½Ñ send Ñже имееÑÑÑ Ð½ÐµÐ¾ÑоÑланнÑй бÑÑеÑ, Ñо ÐС пÑиÑÐ¾ÐµÐ´Ð¸Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñе к немÑ, никакой оÑÑÑлки оÑделÑнÑм пакеÑом не бÑдеÑ. Ðо в ÑÑом ÑлÑÑае и Ñак Ð½ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ гаÑанÑии, ÑÑо какой-Ñо блок ÑообÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¹Ð´ÐµÑ Ð² наÑале пакеÑа, на ÑÑо ÑобÑÑвенно и заÑоÑÐµÐ½Ñ DPI. Разбиение бÑÐ´ÐµÑ Ð¿ÑоизводиÑÑÑ ÑоглаÑно MSS, коÑоÑÑй завиÑÐ¸Ñ Ð¾Ñ MTU иÑÑ Ð¾Ð´ÑÑего инÑеÑÑейÑа. Таким обÑазом DPI, ÑмоÑÑÑÑие в наÑало Ð¿Ð¾Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ TCP пакеÑа, бÑдÑÑ Ð¿Ð¾Ð»Ð¾Ð¼Ð°Ð½Ñ Ð² лÑбом ÑлÑÑае. ÐÑоÑокол http оÑноÑиÑÑÑ Ðº запÑоÑ-оÑвеÑнÑм пÑоÑоколам. Ðовое ÑообÑение поÑÑлаеÑÑÑ ÑолÑко Ñогда, когда ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð»ÑÑил запÑÐ¾Ñ Ð¸ полноÑÑÑÑ Ð²ÐµÑнÑл оÑвеÑ. ÐнаÑÐ¸Ñ Ð·Ð°Ð¿ÑÐ¾Ñ ÑакÑиÑеÑки бÑл не ÑолÑко оÑоÑлан, но и пÑинÑÑ Ð´ÑÑгой ÑÑоÑоной, а ÑледоваÑелÑно бÑÑÐµÑ Ð¾ÑÑÑлки пÑÑÑ, и ÑледÑÑÑие 2 send пÑиведÑÑ Ðº оÑÑÑлке ÑегменÑов даннÑÑ ÑазнÑми ip пакеÑами. РезÑме : tpws гаÑанÑиÑÑÐµÑ ÑÐ¿Ð»Ð¸Ñ ÑолÑко за ÑÑÐµÑ ÑазделÑнÑÑ Ð²Ñзовов send, ÑÑо на пÑакÑике вполне доÑÑаÑоÑно Ð´Ð»Ñ Ð¿ÑоÑоколов http(s).
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 Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ñного и Ñдаленного ÑоединениÑ.
ÐÑли не Ñказан ни один из паÑамеÑÑов модиÑикаÑии ÑодеÑжимого, tpws ÑабоÑÐ°ÐµÑ Ð² Ñежиме "tcp proxy mode". Ðн оÑлиÑаеÑÑÑ Ñем, ÑÑо в оба конÑа пÑименÑеÑÑÑ splice Ð´Ð»Ñ Ð¿ÐµÑебÑоÑки даннÑÑ Ð¸Ð· одного ÑокеÑа в дÑÑгой без копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² памÑÑÑ Ð¿ÑоÑеÑÑа. ÐÑакÑиÑеÑки - ÑÑо Ñо же Ñамое, но Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑÑÑ Ð¿Ð¾Ð±ÑÑÑÑее. TCP пÑокÑиÑование Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð¾Ð±Ñ Ð¾Ð´Ð° блокиÑовок, когда DPI ÑпоÑÑкаеÑÑÑ Ð½Ð° ÑкзоÑиÑеÑÐºÐ¸Ñ Ñ ÐµÐ´ÐµÑÐ°Ñ IP или TCP. ÐÑ Ð²ÑÑд ли ÑможеÑе попÑавиÑÑ Ñ ÐµÐ´ÐµÑÑ, иÑÑ Ð¾Ð´ÑÑие Ð¾Ñ Ð°Ð¹ÑонÑиков и гаджеÑиков, но на linux ÑможеÑе влиÑÑÑ Ð½Ð° Ð½Ð¸Ñ Ð² какой-Ñо ÑÑепени ÑеÑез sysctl. Ðогда Ñоединение пÑÐ¾Ñ Ð¾Ð´Ð¸Ñ ÑеÑез tpws, ÑакÑиÑеÑки пÑокÑи-ÑеÑÐ²ÐµÑ Ñам ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение к ÑÐ´Ð°Ð»ÐµÐ½Ð½Ð¾Ð¼Ñ ÑÐ·Ð»Ñ Ð¾Ñ Ñвоего имени, и на ÑÑо ÑаÑпÑоÑÑÑанÑÑÑÑÑ Ð½Ð°ÑÑÑойки ÑиÑÑемÑ, на коÑоÑой ÑабоÑÐ°ÐµÑ Ð¿ÑокÑи. tpws можно иÑполÑзоваÑÑ Ð½Ð° мобилÑном ÑÑÑÑойÑÑве, ÑаздаÑÑем инÑеÑÐ½ÐµÑ Ð½Ð° ÑаÑиÑе ÑоÑового опеÑаÑоÑа, где ÑаздаÑа запÑеÑена, в socks Ñежиме даже без ÑÑÑа. Ð¡Ð¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¾Ñ tpws неоÑлиÑÐ¸Ð¼Ñ Ð¾Ñ Ñоединений Ñ Ñамого ÑаздаÑÑего ÑÑÑÑойÑÑва. ÐÑлиÑиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко по ÑодеÑÐ¶Ð°Ð½Ð¸Ñ (Ñипа обновлений windows). Ðаодно можно и обойÑи блокиÑовки. 2 зайÑа одним вÑÑÑÑелом. Ðолее подÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¿Ð¾ вопÑоÑÑ Ð¾Ð±Ñ Ð¾Ð´Ð° огÑаниÑений опеÑаÑоÑов гÑглиÑе на 4pda.ru.
Режим "--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", Ñо подклÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾ именам Ñ Ð¾ÑÑов запÑеÑаÑÑÑÑ, а пÑл ÑеÑолвеÑов не ÑоздаеÑÑÑ. Тем ÑамÑм ÑкономÑÑÑÑ ÑеÑÑÑÑÑ.
ÐаÑамеÑÑ --hostpad=
--disorder - ÑÑо попÑÑка ÑимÑлиÑоваÑÑ Ñежим disorder2 nfqws, иÑполÑзÑÑ Ð¾ÑобенноÑÑи ÐС по ÑеализаÑии stream ÑокеÑов. Ðднако, в оÑлиÑие Ð¾Ñ nfqws, здеÑÑ Ð½Ðµ ÑÑебÑÑÑÑÑ Ð¿Ð¾Ð²ÑÑеннÑе пÑивилегии. Реализовано ÑÑо ÑледÑÑÑим обÑазом. У ÑокеÑа еÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð²ÑÑÑавиÑÑ TTL. ÐÑе пакеÑÑ Ð±ÑдÑÑ Ð¾ÑпÑавлÑÑÑÑÑ Ñ Ð½Ð¸Ð¼. ÐеÑед оÑпÑавкой пеÑвого ÑегменÑа ÑÑавим TTL=1. ÐÐ°ÐºÐµÑ Ð±ÑÐ´ÐµÑ Ð´ÑопнÑÑ Ð½Ð° пеÑвом же ÑоÑÑеÑе, он не Ð´Ð¾Ð¹Ð´ÐµÑ Ð½Ð¸ до DPI, ни до ÑеÑвеÑа. ÐаÑем возвÑаÑаем TTL в знаÑение по ÑмолÑаниÑ. ÐС оÑÑÑÐ»Ð°ÐµÑ Ð²ÑоÑой ÑегменÑ, и он Ñже Ð´Ð¾Ñ Ð¾Ð´Ð¸Ñ Ð´Ð¾ ÑеÑвеÑа. СеÑÐ²ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ SACK, поÑÐ¾Ð¼Ñ ÑÑо не полÑÑил пеÑвÑй кÑÑок, и ÐС его оÑпÑавлÑÐµÑ Ð¿Ð¾Ð²ÑоÑно, но здеÑÑ Ñже Ð¼Ñ Ð½Ð¸Ñего не делаем. ÐÑÐ¾Ñ Ñежим ÑабоÑÐ°ÐµÑ ÐºÐ°Ðº ожидаеÑÑÑ Ð½Ð° Linux и MacOS. Ðднако, на FreeBSD и OpenBSD он ÑабоÑÐ°ÐµÑ Ð½Ðµ Ñак Ñ Ð¾ÑоÑо. ЯдÑо ÑÑÐ¸Ñ ÐС оÑÑÑÐ»Ð°ÐµÑ ÑеÑÑанÑмиÑÑÐ¸Ñ Ð² виде полного пакеÑа. ÐоÑÐ¾Ð¼Ñ Ð²ÑÑ Ð¾Ð´Ð¸Ñ, ÑÑо до ÑеÑвеÑа Ð¸Ð´ÐµÑ ÑнаÑала вÑоÑой кÑÑок, а поÑом полнÑй запÑÐ¾Ñ Ð±ÐµÐ· ÑплиÑа. Ðа него Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑеагиÑоваÑÑ DPI ÑÑаÑнÑм обÑазом. --disorder ÑвлÑеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑм Ñлагом к лÑÐ±Ð¾Ð¼Ñ ÑплиÑÑ. Сам по Ñебе он не Ð´ÐµÐ»Ð°ÐµÑ Ð½Ð¸Ñего.
--tlsrec и --tlsrec-pos позволÑÑÑ Ð²Ð½ÑÑÑи одного tcp ÑегменÑа ÑазÑезаÑÑ TLS ClientHello на 2 TLS records. --tlsrec=sni ÑÐµÐ¶ÐµÑ Ð¼ÐµÐ¶Ð´Ñ 1 и 2 Ñимволами hostname в SNI, Ð´ÐµÐ»Ð°Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм бинаÑнÑй поиÑк паÑÑеÑна без анализа ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ . Ð ÑлÑÑае оÑÑÑÑÑÑÐ²Ð¸Ñ SNI Ñазбиение оÑменÑеÑÑÑ. --tlsrec-pos ÑÐµÐ¶ÐµÑ Ð½Ð° Ñказанной позиÑии. ÐÑли длина блока даннÑÑ TLS менÑÑе Ñказанной позиÑии, Ñежем на позиÑии 1. ÐаÑамеÑÑ ÑоÑеÑаеÑÑÑ Ñ --split-pos. Ð ÑÑом ÑлÑÑае пÑоиÑÑ Ð¾Ð´Ð¸Ñ ÑнаÑала Ñазделение на ÑÑовне TLS record layer, поÑом на ÑÑовне TCP. Ð¡Ð°Ð¼Ð°Ñ Ð¸Ð·Ð¾ÑÑÑÐ½Ð½Ð°Ñ Ð°Ñака --tlsrec, --split-pos и --disorder вмеÑÑе. --tlsrec Ð»Ð¾Ð¼Ð°ÐµÑ Ð·Ð½Ð°ÑиÑелÑное колиÑеÑÑво ÑайÑов. ÐÑипÑобиблиоÑеки (openssl, ...) на оконеÑнÑÑ http ÑеÑвеÑÐ°Ñ Ð±ÐµÐ· пÑоблем пÑинимаÑÑ ÑазделеннÑе tls ÑегменÑÑ, но мидлбокÑÑ - не вÑегда. РмидлбокÑам можно оÑнеÑÑи CDN или ÑиÑÑÐµÐ¼Ñ ddos-заÑиÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¿Ñименение --tlsrec без огÑаниÑиÑелей вÑÑд ли ÑелеÑообÑазно. РРФ --tlsrec обÑÑно не ÑабоÑÐ°ÐµÑ Ñ TLS 1.2, поÑÐ¾Ð¼Ñ ÑÑо ÑÐµÐ½Ð·Ð¾Ñ Ð¿Ð°ÑÑÐ¸Ñ ÑеÑÑиÑÐ¸ÐºÐ°Ñ ÑеÑвеÑа из ServerHello. РабоÑÐ°ÐµÑ ÑолÑко Ñ TLS 1.3, поÑколÑÐºÑ Ñам ÑÑа инÑоÑмаÑÐ¸Ñ ÑиÑÑÑеÑÑÑ. ÐпÑоÑем, ÑейÑÐ°Ñ ÑайÑов, не поддеÑживаÑÑÐ¸Ñ TLS 1.3, оÑÑалоÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾.
--mss ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¾Ð¿ÑÐ¸Ñ ÑокеÑа TCP_MAXSEG. ÐÐ»Ð¸ÐµÐ½Ñ Ð²ÑÐ´Ð°ÐµÑ ÑÑо знаÑение в tcp опÑиÑÑ SYN пакеÑа. СеÑÐ²ÐµÑ Ð² оÑÐ²ÐµÑ Ð² SYN,ACK вÑÐ´Ð°ÐµÑ Ñвой MSS. Ðа пÑакÑике ÑеÑвеÑа обÑÑно ÑнижаÑÑ ÑазмеÑÑ Ð¾ÑÑÑлаемÑÑ Ð¸Ð¼Ð¸ пакеÑов, но они вÑе Ñавно не впиÑÑваÑÑÑÑ Ð² низкий MSS, ÑказаннÑй клиенÑом. ÐбÑÑно Ñем болÑÑе Ñказал клиенÑ, Ñем болÑÑе ÑÐ»ÐµÑ ÑеÑвеÑ. Ðа TLS 1.2 еÑли ÑеÑÐ²ÐµÑ Ñазбил забÑÐ¾Ñ Ñак, ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð¼ÐµÐ½ из ÑеÑÑиÑикаÑа не попал в пеÑвÑй пакеÑ, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±Ð¼Ð°Ð½ÑÑÑ DPI, ÑекÑÑий оÑÐ²ÐµÑ ÑеÑвеÑа. Ð¡Ñ ÐµÐ¼Ð° Ð¼Ð¾Ð¶ÐµÑ Ð·Ð½Ð°ÑиÑелÑно ÑнизиÑÑ ÑкоÑоÑÑÑ Ð¸ ÑÑабоÑаÑÑ Ð½Ðµ на вÑÐµÑ ÑайÑÐ°Ñ . С ÑилÑÑÑом по hostlist ÑовмеÑÑимо ÑолÑко в Ñежиме socks пÑи вклÑÑенном Ñдаленном ÑеÑолвинге Ñ Ð¾ÑÑов. (firefox network.proxy.socks_remote_dns). ÐÑо единÑÑвеннÑй ваÑианÑ, когда tpws Ð¼Ð¾Ð¶ÐµÑ ÑзнаÑÑ Ð¸Ð¼Ñ Ñ Ð¾ÑÑа еÑе на ÑÑапе ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоединениÑ. Ðевозможен ÑилÑÑÑ Ð¿Ð¾ веÑÑии TLS. Ðзамен имееÑÑÑ ÑилÑÑÑ Ð¿Ð¾ поÑÑам --mss-pf. --mss-pf=443 пÑименÑÐµÑ Ð´ÑÑение ÑолÑко к https. ÐÑименÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð¿ÑÐ¸Ñ Ðº ÑайÑам TLS1.3, еÑли бÑоÑÐ·ÐµÑ Ñоже поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ TLS1.3, Ñо Ð²Ñ Ð´ÐµÐ»Ð°ÐµÑе ÑолÑко Ñ Ñже. Ðо Ð½ÐµÑ ÑпоÑоба авÑомаÑиÑеÑки ÑзнаÑÑ ÐºÐ¾Ð³Ð´Ð° надо пÑименÑÑÑ, когда неÑ, поÑколÑÐºÑ MSS Ð¸Ð´ÐµÑ ÑолÑко в 3-way handshake еÑе до обмена даннÑми, а веÑÑÐ¸Ñ TLS можно ÑзнаÑÑ ÑолÑко по оÑвеÑÑ ÑеÑвеÑа, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к ÑеакÑии DPI. ÐÑполÑзоваÑÑ ÑолÑко когда Ð½ÐµÑ Ð½Ð¸Ñего лÑÑÑе или Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑеÑÑÑÑов. РабоÑÐ°ÐµÑ ÑолÑко на linux, не ÑабоÑÐ°ÐµÑ Ð½Ð° BSD и MacOS.
--skip-nodelay Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½, ÑÑÐ¾Ð±Ñ Ð¿ÑивеÑÑи MTU к MTU ÑиÑÑемÑ, на коÑоÑой ÑабоÑÐ°ÐµÑ tpws. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ ÑкÑÑÑÐ¸Ñ ÑакÑа иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ VPN. ÐониженнÑй MTU - 1 из ÑпоÑобов обнаÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð·ÑиÑелÑного подклÑÑениÑ. С tcp proxy ваÑи ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾ÑлиÑÐ¸Ð¼Ñ Ð¾Ñ ÑÐµÑ , ÑÑо Ñделал Ð±Ñ Ñам ÑлÑз.
--local-tcp-user-timeout и --remote-tcp-user-timeout ÑÑÑанавливаÑÑ Ð·Ð½Ð°Ñение ÑаймаÑÑа в ÑекÑÐ½Ð´Ð°Ñ Ð´Ð»Ñ Ñоединений клиенÑ-пÑокÑи и пÑокÑи-ÑеÑвеÑ. ÐÑÐ¾Ñ ÑаймаÑÑ ÑооÑвеÑÑÑвÑÐµÑ Ð¾Ð¿Ñии ÑокеÑа linux TCP_USER_TIMEOUT. Ðод ÑаймаÑÑом подÑазÑмеваеÑÑÑ Ð²ÑемÑ, в ÑеÑение коÑоÑого бÑÑеÑизиÑованнÑе даннÑе не пеÑÐµÐ´Ð°Ð½Ñ Ð¸Ð»Ð¸ на пеÑеданнÑе даннÑе не полÑÑено подÑвеÑждение (ACK) Ð¾Ñ Ð´ÑÑгой ÑÑоÑонÑ. ÐÑÐ¾Ñ ÑаймаÑÑ Ð½Ð¸ÐºÐ°Ðº не каÑаеÑÑÑ Ð²Ñемени оÑÑÑÑÑÑÐ²Ð¸Ñ ÐºÐ°ÐºÐ¾Ð¹-либо пеÑедаÑи ÑеÑез ÑÐ¾ÐºÐµÑ Ð»Ð¸ÑÑ Ð¿Ð¾ÑомÑ, ÑÑо даннÑÑ Ð´Ð»Ñ Ð¿ÐµÑедаÑи неÑ. Ðолезно Ð´Ð»Ñ ÑокÑаÑÐµÐ½Ð¸Ñ Ð²ÑÐµÐ¼Ñ Ð·Ð°ÐºÑÑÑÐ¸Ñ Ð¿Ð¾Ð´Ð²Ð¸ÑÑÐ¸Ñ Ñоединений. ÐоддеÑживаеÑÑÑ ÑолÑко на Linux и MacOS.
СпоÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑпиÑка заблокиÑованнÑÑ 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. ÐаÑианÑÑ 2-9 дополниÑелÑно вÑзÑваÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ 1.
- ipset/get_config.sh. ÑÑÐ¾Ñ ÑкÑÐ¸Ð¿Ñ Ð²ÑзÑÐ²Ð°ÐµÑ Ñо, ÑÑо пÑопиÑано в пеÑеменной GETLIST из Ñайла config ÐÑли пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ опÑеделена, Ñо ÑеÑолвÑÑÑÑ Ð»Ð¸ÑÑ Ð»Ð¸ÑÑÑ Ð´Ð»Ñ ipset nozapret/nozapret6.
ÐиÑÑÑ Ð ÐРвÑе вÑÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑÑÑ. ÐозникаÑÑ Ð½Ð¾Ð²Ñе ÑенденÑии. ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº RAM могÑÑ Ð¼ÐµÐ½ÑÑÑÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð° неÑаÑÑаÑ, но вÑе же ÑегÑлÑÑÐ½Ð°Ñ ÑÐµÐ²Ð¸Ð·Ð¸Ñ ÑÑо же вообÑе Ñ Ð²Ð°Ñ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð½Ð° ÑоÑÑеÑе. Ðли Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑзнаÑÑ Ð¾ пÑоблеме лиÑÑ ÐºÐ¾Ð³Ð´Ð° Ñ Ð²Ð°Ñ Ð½Ð°ÑÐ½ÐµÑ Ð¿Ð¾ÑÑоÑнно пÑопадаÑÑ wifi, и вам пÑидеÑÑÑ ÐµÐ³Ð¾ пеÑезагÑÑжаÑÑ ÐºÐ°Ð¶Ð´Ñе 2 ÑаÑа (меÑод кÑвалдÑ).
СамÑе ÑадÑÑие ваÑианÑÑ Ð¿Ð¾ RAM - get_antifilter_allyouneed.sh, get_antifilter_ipsum.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 - гоÑаздо лÑÑÑе.
ФилÑÑÑаÑÐ¸Ñ Ð¿Ð¾ именам доменов
ÐлÑÑеÑнаÑивой ipset ÑвлÑеÑÑÑ Ð¸ÑполÑзование tpws или nfqws Ñо ÑпиÑком доменов. Ðба демона пÑинимаÑÑ Ð½ÐµÐ¾Ð³ÑаниÑенное колиÑеÑÑво лиÑÑов include (--hostlist) и exclude (--hostlist-exclude). ÐÑе лиÑÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñипа обÑединÑÑÑÑÑ, и Ñаким обÑазом оÑÑаÑÑÑÑ ÑолÑко 2 лиÑÑа. ÐÑежде вÑего пÑовеÑÑеÑÑÑ exclude list. ÐÑи Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ð¸ в него пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¾Ñказ Ð¾Ñ Ð´ÑÑениÑ. Ðалее пÑи налиÑии include list пÑовеÑÑеÑÑÑ Ð´Ð¾Ð¼ÐµÐ½ на Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ в него. ÐÑи Ð½ÐµÐ²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ð¸ в ÑпиÑок оÑказ Ð¾Ñ Ð´ÑÑениÑ. ÐÑÑÑой ÑпиÑок пÑиÑавниваеÑÑÑ Ðº его оÑÑÑÑÑÑвиÑ. РинÑÑ ÑлÑÑаÑÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð´ÑÑение. ÐÐµÑ Ð½Ð¸ одного ÑпиÑка - дÑÑение вÑегда. ÐÑÑÑ ÑолÑко 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 ÑиÑÑема запÑÑка пеÑÐµÐ´Ð°ÐµÑ nfqws или tpws вÑе лиÑÑÑ, ÑÐ°Ð¹Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð¿ÑиÑÑÑÑÑвÑÑÑ. ÐÑли вдÑÑг лиÑÑÑ include пÑиÑÑÑÑÑвÑÑÑ, но вÑе они пÑÑÑÑе, Ñо ÑабоÑа аналогиÑна оÑÑÑÑÑÑÐ²Ð¸Ñ include лиÑÑа. Файл еÑÑÑ, но не ÑмоÑÑÑ Ð½Ð° ÑÑо дÑÑиÑÑÑ Ð²Ñе, кÑоме exclude. ÐÑли вам нÑжен именно Ñакой Ñежим - не обÑзаÑелÑно ÑдалÑÑÑ zapret-hosts-users.txt. ÐоÑÑаÑоÑно ÑделаÑÑ ÐµÐ³Ð¾ пÑÑÑÑм.
ÐÐ¾Ð´Ð´Ð¾Ð¼ÐµÐ½Ñ ÑÑиÑÑваÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. ÐапÑимеÑ, ÑÑÑоÑка "ru" вноÑÐ¸Ñ Ð² ÑпиÑок ".ru". СÑÑоÑка ".ru" в ÑпиÑке не ÑÑабоÑаеÑ.
СпиÑок доменов Ð ÐÐ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑен ÑкÑипÑами ipset/get_reestr_hostlist.sh или ipset/get_antizapret_domains.sh
- кладеÑÑÑ Ð² ipset/zapret-hosts.txt.gz.
ЧÑÐ¾Ð±Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ ÑпиÑки, пеÑезапÑÑкаÑÑ nfqws или tpws не нÑжно. ÐбновлÑеÑе ÑайлÑ, заÑем даеÑе Ñигнал HUP. Ðо HUP лиÑÑÑ Ð±ÑдÑÑ Ð¿ÐµÑеÑиÑанÑ. ÐÑли вдÑÑг какого-Ñо лиÑÑа не окажеÑÑÑ, пÑоÑеÑÑ Ð·Ð°Ð²ÐµÑÑиÑÑÑ Ñ Ð¾Ñибкой. СкÑипÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð»Ð¸ÑÑов из ipset Ñами вÑдаÑÑ HUP в конÑе.
ÐÑи ÑилÑÑÑаÑии по именам доменов демон должен запÑÑкаÑÑÑÑ Ð±ÐµÐ· ÑилÑÑÑаÑии по 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 Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑвом пÑоÑеÑÑов. ÐÑе пÑоÑеÑÑÑ Ð¿ÑовеÑÑÑÑ Ð²ÑÐµÐ¼Ñ Ð¼Ð¾Ð´Ð¸ÑикаÑии Ñайла. ÐÑли Ñайл бÑл изменен в дÑÑгом пÑоÑеÑÑе, Ñо пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¿ÐµÑеÑиÑÑвание вÑÐµÑ include лиÑÑов, вклÑÑÐ°Ñ 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 по неÑколÑким заблокиÑованнÑм ÑайÑам и вÑÑвиÑÑ Ð¾Ð±Ñий Ñ Ð°ÑакÑÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовок. РазнÑе ÑайÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²Ð°Ð½Ñ Ð¿Ð¾-ÑазномÑ, нÑжно иÑкаÑÑ ÑакÑÑ ÑÐµÑ Ð½Ð¸ÐºÑ, коÑоÑÐ°Ñ ÑабоÑÐ°ÐµÑ Ð½Ð° болÑÑинÑÑве. ЧÑÐ¾Ð±Ñ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ð²Ñвод 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 Ð´Ð°ÐµÑ Ð¼Ð°ÐºÑимÑм пÑовеÑок даже в ÑлÑÑаÑÑ , когда ÑеÑÑÑÑ ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· Ð¾Ð±Ñ Ð¾Ð´Ð° или Ñ Ð±Ð¾Ð»ÐµÐµ пÑоÑÑÑми ÑÑÑаÑегиÑми.
СÐÐÐ ÐÐРТÐÐ ÐÑли в ÑиÑÑеме пÑиÑÑÑÑÑвÑÐµÑ ÑовмеÑÑимÑй 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 ip !!!!! 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
ÐÑновной Ñежим : tpws - tpws в Ñежиме transparent tpws-socks - tpws в Ñежиме socks веÑаеÑÑÑ Ð½Ð° localhost и LAN инÑеÑÑÐµÐ¹Ñ (еÑли задан IFACE_LAN или еÑли ÑиÑÑема - OpenWRT). поÑÑ 988 nfqws - nfqws filter - ÑолÑко заполниÑÑ ipset или загÑÑзиÑÑ hostlist custom - нÑжно ÑÐ°Ð¼Ð¾Ð¼Ñ Ð·Ð°Ð¿ÑогÑаммиÑоваÑÑ Ð·Ð°Ð¿ÑÑк демонов в init ÑкÑипÑе и пÑавила iptables
MODE=tpws
ÐÑименÑÑÑ Ð»Ð¸ дÑÑение к HTTP :
MODE_HTTP=1
ÐÑименÑÑÑ Ð»Ð¸ дÑÑение к поÑледоваÑелÑнÑм http запÑоÑам в одном tcp Ñоединении (http keeaplive). ÐÑноÑиÑÑÑ ÑолÑко к nfqws. ÐÑклÑÑение данной ÑÑнкÑии ÑпоÑобно ÑÑкономиÑÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ Ð¿ÑоÑеÑÑоÑа. tpws вÑегда ÑабоÑÐ°ÐµÑ Ñ http keepalive
MODE_HTTP_KEEPALIVE=0
ÐÑименÑÑÑ Ð»Ð¸ дÑÑение к HTTPS :
MODE_HTTPS=1
ÐÑименÑÑÑ Ð»Ð¸ дÑÑение к QUIC :
MODE_QUIC=0
Режим ÑилÑÑÑаÑии Ñ Ð¾ÑÑов : none - пÑименÑÑÑ Ð´ÑÑение ко вÑем Ñ Ð¾ÑÑам ipset - огÑаниÑиÑÑ Ð´ÑÑение ipset-ом zapret/zapret6 hostlist - огÑаниÑиÑÑ Ð´ÑÑение ÑпиÑком Ñ Ð¾ÑÑов из Ñайла autohostlist - Ñежим hostlist + ÑаÑпознавание блокиÑовок и Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑкого лиÑÑа
MODE_FILTER=none
ÐпÑии tpws :
TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3"
ÐпÑии nfqws Ð´Ð»Ñ Ð°Ñаки деÑÐ¸Ð½Ñ ÑонизаÑии DPI :
DESYNC_MARK=0x40000000 DESYNC_MARK_POSTNAT=0x20000000 NFQWS_OPT_DESYNC="--dpi-desync=fake --dpi-desync-ttl=0 --dpi-desync-fooling=badsum"
Ðадание ÑазделÑнÑÑ Ð¾Ð¿Ñий nfqws Ð´Ð»Ñ http и https и Ð´Ð»Ñ Ð²ÐµÑÑий ip пÑоÑоколов 4,6 :
NFQWS_OPT_DESYNC_HTTP="--dpi-desync=split --dpi-desync-ttl=0 --dpi-desync-fooling=badsum" NFQWS_OPT_DESYNC_HTTPS="--wssize=1:6 --dpi-desync=split --dpi-desync-ttl=0 --dpi-desync-fooling=badsum" NFQWS_OPT_DESYNC_HTTP6="--dpi-desync=split --dpi-desync-ttl=5 --dpi-desync-fooling=none" NFQWS_OPT_DESYNC_HTTPS6="--wssize=1:6 --dpi-desync=split --dpi-desync-ttl=5 --dpi-desync-fooling=none"
ÐÑли какаÑ-Ñо из пеÑеменнÑÑ NFQWS_OPT_DESYNC_HTTP/NFQWS_OPT_DESYNC_HTTPS не опÑеделена, беÑеÑÑÑ Ð·Ð½Ð°Ñение NFQWS_OPT_DESYNC. ÐÑли какаÑ-Ñо из пеÑеменнÑÑ NFQWS_OPT_DESYNC_HTTP6/NFQWS_OPT_DESYNC_HTTPS6 не опÑеделена, беÑеÑÑÑ Ð·Ð½Ð°Ñение NFQWS_OPT_DESYNC_HTTP/NFQWS_OPT_DESYNC_HTTPS.
ÐпÑии дÑÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ QUIC : NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake" NFQWS_OPT_DESYNC_QUIC6="--dpi-desync=hopbyhop" ÐÑли NFQWS_OPT_DESYNC_QUIC6 не задано, Ñо беÑеÑÑÑ NFQWS_OPT_DESYNC_QUIC.
ÐаÑÑÑойка ÑиÑÑÐµÐ¼Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²ÑбоÑоÑнÑм 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=3 AUTOHOSTLIST_FAIL_THRESHOLD=2 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.
ÐÐÐÐÐ : наÑÑÑойка маÑÑÑÑÑизаÑии, маÑкаÑада и Ñ.д. не Ð²Ñ Ð¾Ð´Ð¸Ñ Ð² задаÑÑ 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 include /opt/zapret/init.d/sysv/custom или /opt/zapret/init.d/openwrt/custom
ÐÑжно Ñвой код впиÑаÑÑ Ð² ÑÑнкÑии : zapret_custom_daemons zapret_custom_firewall zapret_custom_firewall_nft
Ð Ñайле custom пиÑиÑе Ð²Ð°Ñ ÐºÐ¾Ð´, полÑзÑÑÑÑ Ñ ÐµÐ»Ð¿ÐµÑами из "functions" или "zapret". СмоÑÑиÑе как Ñам Ñделано добавление iptables или запÑÑк демонов. ÐÑполÑзÑÑ Ñ ÐµÐ»Ð¿ÐµÑ ÑÑнкÑии, Ð²Ñ Ð¸Ð·Ð±Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи ÑÑиÑÑваÑÑ Ð²Ñе возможнÑе ÑлÑÑаи Ñипа налиÑиÑ/оÑÑÑÑÑÑÐ²Ð¸Ñ ipv6, ÑвлÑеÑÑÑ Ð»Ð¸ ÑиÑÑема ÑоÑÑеÑом, имена инÑеÑÑейÑов, ... ХелпеÑÑ ÑÑо ÑÑиÑÑваÑÑ, вам нÑжно ÑоÑÑедоÑоÑиÑÑÑÑ Ð»Ð¸ÑÑ Ð½Ð° ÑилÑÑÑÐ°Ñ {ip,nf}tables и паÑамеÑÑÐ°Ñ Ð´ÐµÐ¼Ð¾Ð½Ð¾Ð².
Ðод Ð´Ð»Ñ openwrt и sysv немного оÑлиÑаеÑÑÑ. Ð sysv нÑжно обÑабаÑÑваÑÑ Ð¸ запÑÑк, и оÑÑÐ°Ð½Ð¾Ð²ÐºÑ Ð´ÐµÐ¼Ð¾Ð½Ð¾Ð². ÐапÑÑк ÑÑо или оÑÑановка пеÑедаеÑÑÑ Ð² паÑамеÑÑе $1 (0 или 1). Ð openwrt за оÑÑÐ°Ð½Ð¾Ð²ÐºÑ Ð¾ÑвеÑÐ°ÐµÑ procd.
ÐÐ»Ñ ÑаеÑвола каÑÑом пиÑеÑÑÑ Ð¾ÑделÑно Ð´Ð»Ñ iptables и nftables. ÐÑе оÑÐµÐ½Ñ Ð¿Ð¾Ñ Ð¾Ð¶Ðµ, но оÑлиÑаеÑÑÑ Ð½Ð°Ð¿Ð¸Ñание ÑилÑÑÑов и Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿ÑоÑедÑÑ Ñ ÐµÐ»Ð¿ÐµÑов. ÐÑли вам не нÑÐ¶Ð½Ñ iptables или nftables - можеÑе не пиÑаÑÑ ÑооÑвеÑÑÑвÑÑÑÑÑ ÑÑнкÑиÑ.
ÐоÑовÑй custom ÑкÑÐ¸Ð¿Ñ custom-tpws4http-nfqws4https позволÑÐµÑ Ð¿ÑимениÑÑ Ð´ÑÑение tpws к http и nfqws к https. ÐÑи ÑÑом поддеÑживаÑÑÑÑ ÑÑÑановки из config. Ðго можно иÑполÑзоваÑÑ ÐºÐ°Ðº ÑÑаÑÑовÑÑ ÑоÑÐºÑ Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÑÐ²Ð¾Ð¸Ñ ÑкÑипÑов.
ÐÑоÑÑÐ°Ñ ÑÑÑановка
install_easy.sh авÑомаÑизиÑÑÐµÑ ÑÑÑнÑе ваÑианÑÑ Ð¿ÑоÑедÑÑ ÑÑÑановки (Ñм manual_setup.txt). Ðн поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ 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
ÐÑоÑÑÐ°Ñ ÑÑÑановка на openwrt
РабоÑÐ°ÐµÑ ÑолÑко еÑли Ñ Ð²Ð°Ñ Ð½Ð° ÑоÑÑеÑе доÑÑаÑоÑно меÑÑа.
ÐопиÑÑем zapret на ÑоÑÑÐµÑ Ð² /tmp.
ÐапÑÑкаем ÑÑÑановÑик : sh /tmp/zapret/install_easy.sh Ðн ÑкопиÑÑÐµÑ Ð² /opt/zapret ÑолÑко Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñй минимÑм Ñайлов.
ÐоÑле ÑÑпеÑной ÑÑÑановки можно ÑдалиÑÑ zapret из tmp Ð´Ð»Ñ Ð¾ÑÐ²Ð¾Ð±Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ RAM : rm -r /tmp/zapret
ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ гибкой наÑÑÑойки пеÑед запÑÑком инÑÑаллÑÑоÑа ÑледÑÐµÑ Ð²ÑполниÑÑ Ñаздел "ÐÑÐ±Ð¾Ñ Ð¿Ð°ÑамеÑÑов".
СиÑÑема пÑоÑÑой инÑÑалÑÑии заÑоÑена на лÑбое ÑмÑÑленное или неÑмÑÑленное изменение пÑав доÑÑÑпа на ÑайлÑ. УÑÑойÑива к ÑÐµÐ¿Ð°ÐºÑ Ð¿Ð¾Ð´ windows. ÐоÑле копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² /opt пÑава бÑдÑÑ Ð¿ÑинÑдиÑелÑно воÑÑÑановленÑ.
Android
Ðез ÑÑÑа забÑдÑÑе пÑо nfqws и tpws в Ñежиме transparent proxy. tpws бÑÐ´ÐµÑ ÑабоÑаÑÑ ÑолÑко в Ñежиме --socks.
ЯдÑа Android имеÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ NFQUEUE. nfqws ÑабоÑаеÑ.
Ð ÑÑоковÑÑ ÑдÑÐ°Ñ Ð½ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑжки ipset. РобÑем ÑлÑÑае ÑложноÑÑÑ Ð·Ð°Ð´Ð°Ñи по поднÑÑÐ¸Ñ ipset ваÑÑиÑÑеÑÑÑ Ð¾Ñ "не пÑоÑÑо" до "поÑÑи невозможно". ÐÑли ÑолÑко Ð²Ñ Ð½Ðµ найдеÑе гоÑовое ÑобÑанное ÑдÑо под Ð²Ð°Ñ Ð´ÐµÐ²Ð°Ð¹Ñ.
tpws бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð² лÑбом ÑлÑÑае, он не ÑÑебÑÐµÑ Ñего-либо оÑобенного. Ð android Ð½ÐµÑ /etc/passwd, поÑÐ¾Ð¼Ñ Ð¾Ð¿ÑÐ¸Ñ --user не бÑÐ´ÐµÑ ÑабоÑаÑÑ. ÐмеÑÑо нее можно полÑзоваÑÑÑÑ ÑиÑловÑми user id и опÑией --uid. РекомендÑÑ Ð¸ÑполÑзоваÑÑ 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 невозможно. ÐÑо, видимо, ÑвÑзано Ñ Ð¿ÐµÑеводом в suspend пÑоÑеÑÑов Ñ Ð¾Ð¿ÑеделеннÑм UID. UID ÑооÑвеÑÑÑвÑÐµÑ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑеÑвиÑÑ. Ðо UID android опÑеделÑÐµÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ power saving. Так же возможно, ÑÑо глÑк ÑвÑзан Ñ ÐºÑивÑм дÑайвеÑом ÑоÑового инÑеÑÑейÑа Ð¾Ñ ÐºÐ¸ÑайÑев, поÑколÑÐºÑ Ð¿Ñи иÑполÑзовании wifi Ñакого не наблÑдаеÑÑÑ. suspend обÑабоÑÑика nfqueue на обÑÑном linux не вÑзÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½ÑÑ ÑаÑалÑнÑÑ Ð¿Ð¾ÑледÑÑвий. Ðзменение 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.
ÐÐ ÐÐУÐÐ ÐÐÐÐÐÐÐ. Ðа ÑÑом модеме пÑоиÑÑ Ð¾Ð´ÑÑ Ñ Ð°Ð¾ÑиÑеÑкие ÑбÑоÑÑ Ñоединений 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
ÐпиÑано в docs/bsd.txt
Windows
ÐпиÑано в docs/windows.txt
ÐÑÑгие пÑоÑивки
ÐÐ»Ñ ÑÑаÑиÑеÑÐºÐ¸Ñ Ð±Ð¸Ð½Ð°Ñиков не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð½Ð° Ñем они запÑÑÐµÐ½Ñ : 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 поÑÑалÑ. ÐапÑимеÑ, Ð²Ð¾Ñ ÑÑÐ¾Ñ : https://vps.today/ ÐÐ»Ñ Ð¿ÐµÑÑоналÑного VPN ÑеÑвеÑа обÑÑно доÑÑаÑоÑно Ñамой минималÑной конÑигÑÑаÑии, но Ñ Ð±ÐµÐ·Ð»Ð¸Ð¼Ð¸ÑнÑм ÑÑаÑиком или Ñ Ð±Ð¾Ð»ÑÑим лимиÑом по ÑÑаÑÐ¸ÐºÑ (ÑеÑабайÑÑ). Ðажен и Ñип VPS. Openvz Ð¿Ð¾Ð´Ð¾Ð¹Ð´ÐµÑ Ð´Ð»Ñ openvpn, но Ð²Ñ Ð½Ðµ поднимеÑе на нем wireguard, ipsec, Ñо еÑÑÑ Ð²Ñе, ÑÑо ÑÑебÑÐµÑ kernel mode. ÐÐ»Ñ kernel mode ÑÑебÑеÑÑÑ Ñип виÑÑÑализаÑии, пÑедполагаÑÑий запÑÑк полноÑенного ÑкземплÑÑа ÐС linux вмеÑÑе Ñ ÑдÑом. ÐодойдÑÑ kvm, xen, hyper-v, vmware.
Ðо Ñене можно найÑи пÑедложениÑ, коÑоÑÑе бÑдÑÑ Ð´ÐµÑевле гоÑовой VPN ÑÑлÑги, но пÑи ÑÑом Ð²Ñ Ñам Ñ Ð¾Ð·Ñин в Ñвоей лавке и не ÑиÑкÑеÑе попаÑÑÑ Ð¿Ð¾Ð´ бан ÑегÑлÑÑоÑа, Ñазве ÑÑо "заодно" под ковÑовÑÑ Ð±Ð¾Ð¼Ð±Ð°ÑдиÑÐ¾Ð²ÐºÑ Ñ Ð±Ð°Ð½Ð¾Ð¼ миллионов IP. ÐÑоме Ñого, еÑли вам ÑовÑем вÑе кажеÑÑÑ ÑложнÑм, пÑоÑиÑанное вÑзÑÐ²Ð°ÐµÑ ÑÑÑпоÑ, и Ð²Ñ ÑоÑно знаеÑе, ÑÑо ниÑего из опиÑанного ÑделаÑÑ Ð½Ðµ ÑможеÑе, Ñо Ð²Ñ ÑможеÑе Ñ Ð¾ÑÑ Ð±Ñ Ð¸ÑполÑзоваÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑкое пеÑенапÑавление поÑÑов ssh Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑиÑÑованного socks proxy и пÑопиÑаÑÑ ÐµÐ³Ð¾ в бÑоÑзеÑ. ÐÐ½Ð°Ð½Ð¸Ñ linux не нÑÐ¶Ð½Ñ ÑовÑем. ÐÑо ваÑÐ¸Ð°Ð½Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÐµÐµ напÑÑжнÑй Ð´Ð»Ñ Ñайников, Ñ Ð¾ÑÑ Ð¸ не ÑамÑй ÑдобнÑй в иÑполÑзовании.
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