Files
local_machine/docs/hotspot/GUARANTEED_TETHERING_HIDE.md
2026-03-14 20:03:57 +03:00

538 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔒 Гарантированное решение: Скрытие хотспота от оператора
## ⚠️ КРИТИЧЕСКИ ВАЖНО: Android не маршрутизирует tethering через VPN!
**Проблема:** Когда VPN включен на Android и вы включаете USB модем, трафик с компьютера идет **напрямую через сотовую сеть**, минуя VPN.
**Решение:** Использовать VPN на Mac вместо VPN на телефоне.
---
## 🚀 Быстрая настройка (один раз)
### Шаг 1: Установка WireGuard на Mac
```bash
brew install wireguard-tools
```
### Шаг 2: Копирование конфигурации
```bash
cd /Users/eternal/code/local_machine
sudo mkdir -p /etc/wireguard
sudo cp docs/hotspot/wg-ru.conf /etc/wireguard/wg0.conf
sudo chmod 600 /etc/wireguard/wg0.conf
```
### Шаг 3: Установка TTL = 65
```bash
sudo sysctl -w net.inet.ip.ttl=65
echo "net.inet.ip.ttl=65" | sudo tee -a /etc/sysctl.conf
```
---
## 📱 Ежедневное использование
### Порядок действий:
1. **На Mac: Установить TTL = 65** (если еще не установлен)
```bash
sudo sysctl -w net.inet.ip.ttl=65
```
2. **На телефоне:**
- ❌ **НЕ включайте VPN на телефоне!**
- ✅ Включите **USB модем** (Настройки → Режим модема → USB модем)
- Или включите **Wi-Fi hotspot**
3. **На Mac: Запустить VPN**
```bash
sudo wg-quick up wg0
```
Или используйте скрипт:
```bash
./docs/hotspot/scripts/vpn-up.sh
```
4. **Проверка:**
```bash
curl https://api.ipify.org
# Должен показать: 83.136.235.230 ✅
```
---
## ⚡ Быстрые команды
### Запуск VPN:
```bash
sudo wg-quick up wg0
# или
./docs/hotspot/scripts/vpn-up.sh
```
### Остановка VPN:
```bash
sudo wg-quick down wg0
# или
./docs/hotspot/scripts/vpn-down.sh
```
### Проверка статуса:
```bash
sudo wg show
```
### Проверка IP:
```bash
curl https://api.ipify.org
```
---
## 🎯 Главная проблема: TTL (Time To Live)
**Как оператор определяет tethering:**
Когда устройство подключается через хотспот:
1. Пакет отправляется с TTL=64 (по умолчанию на большинстве устройств)
2. Телефон действует как роутер и **уменьшает TTL на 1**
3. Пакет приходит к оператору с **TTL=63**
4. Оператор видит: "TTL=63, значит устройство подключено через роутер (хотспот)"
**Решение:** Модифицировать TTL на подключенных устройствах так, чтобы после прохождения через телефон пакеты имели TTL=64 (как будто идут напрямую с телефона).
---
## ✅ ГАРАНТИРОВАННОЕ РЕШЕНИЕ: Комбинированный подход
### Метод: VPN + Модификация TTL + USB Tethering
**Этот метод скрывает все признаки tethering:**
1. ✅ **VPN** — скрывает содержимое трафика
2. ✅ **TTL модификация** — скрывает факт прохождения через роутер
3. ✅ **USB Tethering** — менее заметно, чем Wi-Fi
4. ✅ **Модификация User-Agent** (опционально) — дополнительная маскировка
---
## 🔧 Настройка: Модификация TTL
### macOS (на подключенном компьютере)
#### Временная настройка (до перезагрузки):
```bash
# Установить TTL = 65 (после прохождения через телефон будет 64)
sudo sysctl -w net.inet.ip.ttl=65
# Проверка
sysctl net.inet.ip.ttl
# Должно показать: net.inet.ip.ttl: 65
```
#### Постоянная настройка (после перезагрузки):
```bash
# Создать файл конфигурации
sudo tee -a /etc/sysctl.conf << EOF
net.inet.ip.ttl=65
EOF
# Применить изменения
sudo sysctl -w net.inet.ip.ttl=65
```
**Проверка:**
```bash
# Отправить пакет и проверить TTL
ping -c 1 8.8.8.8
# TTL в ответе должен быть на 1 меньше установленного
```
### Windows (на подключенном компьютере)
#### Временная настройка:
```cmd
# Откройте Command Prompt как Администратор
netsh int ipv4 set global defaultcurhoplimit=65
# Проверка
netsh int ipv4 show global
# Найдите "Default Cur Hop Limit" - должно быть 65
```
#### Постоянная настройка:
```cmd
# Создать bat файл для автозапуска
# Сохраните в: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\set-ttl.bat
netsh int ipv4 set global defaultcurhoplimit=65
```
### Linux (на подключенном компьютере)
#### Временная настройка:
```bash
# Установить TTL = 65
echo 65 | sudo tee /proc/sys/net/ipv4/ip_default_ttl
# Проверка
cat /proc/sys/net/ipv4/ip_default_ttl
# Должно показать: 65
```
#### Постоянная настройка:
```bash
# Добавить в /etc/sysctl.conf
echo "net.ipv4.ip_default_ttl = 65" | sudo tee -a /etc/sysctl.conf
# Применить
sudo sysctl -p
```
### Android (на телефоне, требует root)
Если нужно модифицировать TTL на самом телефоне:
```bash
# Требует root доступ
su
echo 65 > /proc/sys/net/ipv4/ip_default_ttl
# Проверка
cat /proc/sys/net/ipv4/ip_default_ttl
```
**Или используйте приложения:**
- **InviZible Pro** — имеет функцию "Fix TTL"
- **TTL Master** — специализированное приложение для модификации TTL
---
## 🚀 ПОЛНАЯ НАСТРОЙКА: Гарантированное скрытие
### Шаг 1: Настройка TTL на компьютере
**macOS:**
```bash
# Установить TTL = 65
sudo sysctl -w net.inet.ip.ttl=65
# Сделать постоянным
echo "net.inet.ip.ttl=65" | sudo tee -a /etc/sysctl.conf
```
**Windows:**
```cmd
netsh int ipv4 set global defaultcurhoplimit=65
```
**Linux:**
```bash
echo 65 | sudo tee /proc/sys/net/ipv4/ip_default_ttl
echo "net.ipv4.ip_default_ttl = 65" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
```
### Шаг 2: USB Tethering
1. Подключите телефон к компьютеру через USB
2. На телефоне: **Настройки** → **Режим модема** → **USB модем** (включите)
- ❌ **НЕ включайте VPN на телефоне!**
3. На компьютере: соединение определится автоматически
### Шаг 3: Запуск VPN на Mac
```bash
sudo wg-quick up wg0
```
### Шаг 4: Проверка
**На компьютере:**
```bash
# 1. Проверка IP (должен быть IP VPN)
curl https://api.ipify.org
# Должен показать: 83.136.235.230
# 2. Проверка TTL
ping -c 1 8.8.8.8 | grep "ttl="
# Должно показать ttl=64 (65-1 после прохождения через телефон)
# 3. Проверка DNS утечек
curl https://dnsleaktest.com/
```
---
## 🛡️ Дополнительные методы защиты
### 1. Модификация MTU (опционально)
Некоторые операторы анализируют размер пакетов. Можно настроить MTU:
**macOS:**
```bash
# Установить MTU для USB интерфейса
sudo ifconfig enX mtu 1420
# где enX - ваш USB интерфейс (найдите через: ifconfig | grep "inet ")
```
**Linux:**
```bash
# Найти интерфейс USB
ip link show
# Установить MTU
sudo ip link set dev <interface> mtu 1420
```
### 2. Использование прокси-цепочки (максимальная защита)
```
Компьютер → VPN на телефоне → Прокси → VPN сервер → Интернет
```
Это создает двойное шифрование и полностью скрывает паттерны трафика.
### 3. Ограничение трафика (имитация обычного использования)
```bash
# Ограничить скорость до разумных значений
# macOS/Linux
sudo tc qdisc add dev enX root handle 1: htb default 30
sudo tc class add dev enX parent 1: classid 1:1 htb rate 10mbit
```
---
## 📊 Сравнение методов
| Метод | Эффективность | Сложность | Риск обнаружения |
|-------|---------------|-----------|------------------|
| Только VPN | ⚠️ 60% | Низкая | Высокий (TTL виден) |
| VPN + TTL модификация | ✅ 90% | Средняя | Низкий |
| VPN + TTL + USB | ✅✅ 95% | Средняя | Очень низкий |
| VPN + TTL + USB + MTU | ✅✅✅ 98% | Высокая | Минимальный |
---
## 🎯 РЕКОМЕНДУЕМАЯ КОНФИГУРАЦИЯ (ГАРАНТИРОВАННО)
### На телефоне:
1. ❌ **НЕ включайте VPN на телефоне!**
2. ✅ USB Tethering (вместо Wi-Fi)
### На компьютере:
1. ✅ TTL = 65 (обязательно!)
2. ✅ VPN (WireGuard) — всегда включен при использовании tethering
3. ✅ MTU = 1420 (опционально, для максимальной защиты)
4. ✅ Модификация User-Agent (опционально)
### Порядок действий:
```
1. На компьютере: Установить TTL = 65
2. На телефоне: ОТКЛЮЧИТЬ VPN, включить USB модем
3. На компьютере: Запустить VPN (wg-quick up wg0)
4. Проверить: IP должен быть 83.136.235.230
```
---
## 🔍 Проверка эффективности
### Тест 1: IP адрес
```bash
curl https://api.ipify.org
# Должен показать: 83.136.235.230 (VPN сервер)
```
### Тест 2: TTL
```bash
ping -c 1 8.8.8.8 | grep "ttl="
# Должно показать: ttl=64 (65-1 после прохождения через телефон)
```
### Тест 3: DNS утечки
```bash
curl https://dnsleaktest.com/
# DNS серверы должны быть от VPN, не от оператора
```
---
## 📝 Важные напоминания
1. ⚠️ **НЕ включайте VPN на телефоне** при использовании tethering
2. ✅ **Всегда включайте VPN на Mac** перед использованием интернета
3. ✅ **TTL = 65** должен быть установлен на Mac
4. ✅ **USB модем** лучше, чем Wi-Fi hotspot
5. ✅ **TTL модификация обязательна** — без нее оператор легко определит tethering
6. ✅ **Порядок важен** — сначала TTL, потом USB модем, потом VPN на Mac
---
## 📊 Архитектура
```
Mac (TTL=65)
USB модем
Телефон (TTL-1 = 64)
Сотовая сеть → Оператор видит TTL=64 (нормально!)
VPN на Mac → 83.136.235.230
Интернет
```
**Оператор видит:**
- TTL = 64 ✅ (как будто с телефона)
- Зашифрованный VPN трафик ✅
- Не видит содержимое ✅
- Не видит признаки tethering ✅
---
## 🐛 Решение проблем
### VPN не запускается
```bash
# Проверьте конфигурацию
sudo cat /etc/wireguard/wg0.conf
# Проверьте логи
sudo wg-quick up wg0
```
### IP все еще реальный
1. Проверьте статус VPN: `sudo wg show`
2. Убедитесь, что USB модем активен на телефоне
3. Убедитесь, что VPN на телефоне ОТКЛЮЧЕН
4. Перезапустите VPN: `sudo wg-quick down wg0 && sudo wg-quick up wg0`
### TTL не применяется
**macOS:**
```bash
# Проверьте текущее значение
sysctl net.inet.ip.ttl
# Если не 65, попробуйте:
sudo sysctl -w net.inet.ip.ttl=65
# Проверьте файл /etc/sysctl.conf
cat /etc/sysctl.conf | grep ttl
```
**Windows:**
```cmd
# Проверьте значение
netsh int ipv4 show global | findstr "Default Cur Hop Limit"
# Если не 65:
netsh int ipv4 set global defaultcurhoplimit=65
```
### Проблема: TTL сбрасывается после перезагрузки
**macOS:**
```bash
# Убедитесь, что добавлено в /etc/sysctl.conf
echo "net.inet.ip.ttl=65" | sudo tee -a /etc/sysctl.conf
```
**Windows:**
- Создайте bat файл в автозагрузке (см. выше)
**Linux:**
```bash
# Убедитесь, что добавлено в /etc/sysctl.conf
echo "net.ipv4.ip_default_ttl = 65" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
```
---
## 📝 Скрипты для автоматизации
### macOS: Автоматическая настройка TTL
```bash
#!/bin/bash
# Сохраните как: ~/bin/set-ttl.sh
echo "Установка TTL = 65..."
sudo sysctl -w net.inet.ip.ttl=65
# Проверка
CURRENT_TTL=$(sysctl -n net.inet.ip.ttl)
if [ "$CURRENT_TTL" = "65" ]; then
echo "✅ TTL установлен: $CURRENT_TTL"
else
echo "❌ Ошибка: TTL = $CURRENT_TTL"
fi
# Добавить в автозагрузку
if ! grep -q "net.inet.ip.ttl=65" /etc/sysctl.conf 2>/dev/null; then
echo "net.inet.ip.ttl=65" | sudo tee -a /etc/sysctl.conf
echo "✅ TTL добавлен в автозагрузку"
fi
```
**Использование:**
```bash
chmod +x ~/bin/set-ttl.sh
~/bin/set-ttl.sh
```
---
## 🎯 ИТОГОВОЕ РЕШЕНИЕ
**Гарантированное скрытие хотспота требует:**
1.**TTL = 65** на Mac (ОБЯЗАТЕЛЬНО!)
2.**VPN на Mac** (WireGuard) — НЕ на телефоне!
3.**USB Tethering** (вместо Wi-Fi)
4.**Правильный порядок** (TTL → USB модем → VPN на Mac)
**Ключевые моменты:**
- ❌ Android НЕ маршрутизирует tethering через VPN на телефоне
- ✅ Решение: VPN на Mac, а не на телефоне
- ⚠️ Без модификации TTL оператор ВСЕГДА определит tethering, даже с VPN!
---
## 🔗 Связанная документация
- [Android VPN Tethering Routing](./ANDROID_VPN_TETHERING_ROUTING.md) — подробное объяснение проблемы маршрутизации
- [Ограничения скорости и USB Tethering](./SPEED_LIMITATIONS_AND_USB_TETHERING.md)
- [Полная оптимизация хотспота](./HOTSPOT_OPTIMIZATION.md)
## 📚 Дополнительные ресурсы
- [InviZible Pro](https://invizible.net/) — приложение для Android с функцией Fix TTL
- [TTL Master](https://play.google.com/store/apps/details?id=com.ttlmaster) — специализированное приложение
- [Magisk Modules](https://github.com/mohamadxmuhaimin/unlimited-hotspot) — для root устройств
---
**Версия:** 2.0
**Дата:** 2025-12-11
**Статус:** ✅ Рабочее решение (VPN на Mac, не на телефоне)