538 lines
16 KiB
Markdown
538 lines
16 KiB
Markdown
# 🔒 Гарантированное решение: Скрытие хотспота от оператора
|
||
|
||
## ⚠️ КРИТИЧЕСКИ ВАЖНО: 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, не на телефоне)
|