Initial commit: local_machine docs and scripts

This commit is contained in:
ahauimix
2026-03-14 20:03:57 +03:00
commit a39ef89125
85 changed files with 14500 additions and 0 deletions

View File

@@ -0,0 +1,163 @@
# Гайд по скриптам hotspot
Скрипты для настройки и использования хотспота с VPN на Mac: установка WireGuard, TTL, запуск и остановка VPN.
**Контекст:** [GUARANTEED_TETHERING_HIDE.md](../GUARANTEED_TETHERING_HIDE.md) — полная схема скрытия tethering (VPN на Mac, не на телефоне; TTL=65; USB модем).
---
## Обзор скриптов
| Скрипт | Назначение | Когда запускать |
|--------|------------|-----------------|
| `setup-wireguard-mac.sh` | Первичная установка WireGuard и конфига | Один раз при настройке |
| `set-ttl-macos.sh` | Установка TTL=65 (скрытие tethering) | Один раз, при необходимости — после перезагрузки |
| `vpn-up.sh` | Запуск WireGuard VPN | Каждый раз при использовании USB/хотспота |
| `vpn-down.sh` | Остановка WireGuard VPN | По окончании работы через хотспот |
---
## 1. setup-wireguard-mac.sh
**Назначение:** Установка WireGuard на macOS и разовая настройка (конфиг в `/etc/wireguard/wg0.conf`, первый запуск VPN).
**Запуск:**
```bash
cd /Users/eternal/code/local_machine
./docs/hotspot/scripts/setup-wireguard-mac.sh
```
**Что делает:**
1. Проверяет наличие `wg-quick`; при отсутствии ставит `wireguard-tools` через Homebrew.
2. Создаёт `/etc/wireguard` (права `700`).
3. Копирует `docs/hotspot/wg-ru.conf` в `/etc/wireguard/wg0.conf` (права `600`).
4. Запускает `wg-quick up wg0`.
5. Проверяет внешний IP (ожидается `83.136.235.230`).
**Требования:**
- Файл конфигурации: `docs/hotspot/wg-ru.conf` (относительно корня репозитория).
- Запуск из корня репо или с путём, где доступен `docs/hotspot/wg-ru.conf`.
- `sudo` для установки в `/etc/wireguard` и для `wg-quick up`.
**После установки:** VPN уже поднят; для следующих сессий используйте `vpn-up.sh` / `vpn-down.sh`.
---
## 2. set-ttl-macos.sh
**Назначение:** Установка TTL=65 на Mac, чтобы после прохождения через телефон (TTL-1) оператор видел TTL=64 и не определял tethering.
**Запуск:**
```bash
./docs/hotspot/scripts/set-ttl-macos.sh
```
**Что делает:**
1. Показывает текущий TTL.
2. Выполняет `sudo sysctl -w net.inet.ip.ttl=65`.
3. Проверяет, что TTL стал 65.
4. Добавляет `net.inet.ip.ttl=65` в `/etc/sysctl.conf`, если ещё нет (сохранится после перезагрузки).
**Требования:** `sudo`.
**Когда запускать:** Один раз после установки ОС/нового Mac; при необходимости — после каждой перезагрузки, если значение не подхватывается из `sysctl.conf`.
**Проверка:**
```bash
sysctl net.inet.ip.ttl
# net.inet.ip.ttl: 65
```
---
## 3. vpn-up.sh
**Назначение:** Быстрый запуск WireGuard VPN на Mac при использовании интернета через USB модем/хотспот.
**Запуск:**
```bash
./docs/hotspot/scripts/vpn-up.sh
```
**Что делает:**
1. Выполняет `sudo wg-quick up wg0`.
2. Ждёт 2 секунды.
3. Проверяет внешний IP через `api.ipify.org` (ожидается `83.136.235.230`).
4. Выводит `sudo wg show`.
**Требования:**
- WireGuard уже настроен (`setup-wireguard-mac.sh` выполнен хотя бы раз).
- Конфиг: `/etc/wireguard/wg0.conf`.
- `sudo`.
**Порядок при использовании хотспота:** сначала TTL=65 (если ещё не стоит), на телефоне включить USB модем **без VPN**, затем на Mac запустить этот скрипт.
---
## 4. vpn-down.sh
**Назначение:** Остановка WireGuard VPN на Mac.
**Запуск:**
```bash
./docs/hotspot/scripts/vpn-down.sh
```
**Что делает:** Выполняет `sudo wg-quick down wg0`.
**Требования:** `sudo`.
---
## Типичный сценарий
### Первая настройка (один раз)
```bash
cd /Users/eternal/code/local_machine
# 1. Установить WireGuard и конфиг, поднять VPN
./docs/hotspot/scripts/setup-wireguard-mac.sh
# 2. Установить TTL=65
./docs/hotspot/scripts/set-ttl-macos.sh
```
### Каждое использование хотспота
1. На телефоне: **не** включать VPN, включить **USB модем** (или WiFi точку доступа).
2. На Mac:
```bash
./docs/hotspot/scripts/vpn-up.sh
```
3. Проверка:
```bash
curl https://api.ipify.org
# 83.136.235.230
```
4. По окончании:
```bash
./docs/hotspot/scripts/vpn-down.sh
```
---
## Права на выполнение
Если скрипты не запускаются:
```bash
chmod +x docs/hotspot/scripts/setup-wireguard-mac.sh
chmod +x docs/hotspot/scripts/set-ttl-macos.sh
chmod +x docs/hotspot/scripts/vpn-up.sh
chmod +x docs/hotspot/scripts/vpn-down.sh
```
---
## Связанные документы
- [GUARANTEED_TETHERING_HIDE.md](../GUARANTEED_TETHERING_HIDE.md) — полная схема: TTL, VPN на Mac, USB модем, порядок действий, решение проблем.
- [QUICK_FIX_VPN_ROUTING.md](../QUICK_FIX_VPN_ROUTING.md) — быстрый фикс: VPN на Mac вместо телефона.
- [ANDROID_VPN_TETHERING_ROUTING.md](../ANDROID_VPN_TETHERING_ROUTING.md) — почему tethering не идёт через VPN на Android.
- [SPEED_LIMITATIONS_AND_USB_TETHERING.md](../SPEED_LIMITATIONS_AND_USB_TETHERING.md) — ограничения скорости и настройка USB tethering.

View File

@@ -0,0 +1,47 @@
#!/bin/bash
# Скрипт для установки TTL = 65 на macOS
# Это критически важно для скрытия tethering от оператора!
echo "=== Установка TTL = 65 для скрытия tethering ==="
echo ""
# Проверка текущего TTL
CURRENT_TTL=$(sysctl -n net.inet.ip.ttl 2>/dev/null || echo "unknown")
echo "Текущий TTL: $CURRENT_TTL"
# Установка TTL = 65
echo ""
echo "Установка TTL = 65..."
sudo sysctl -w net.inet.ip.ttl=65
# Проверка
NEW_TTL=$(sysctl -n net.inet.ip.ttl)
if [ "$NEW_TTL" = "65" ]; then
echo "✅ TTL успешно установлен: $NEW_TTL"
else
echo "❌ Ошибка: TTL = $NEW_TTL (ожидалось 65)"
exit 1
fi
# Добавление в автозагрузку
echo ""
echo "Добавление в автозагрузку..."
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 > /dev/null
echo "✅ TTL добавлен в /etc/sysctl.conf (будет применяться после перезагрузки)"
else
echo " TTL уже добавлен в /etc/sysctl.conf"
fi
echo ""
echo "=== Проверка ==="
echo "Текущий TTL: $(sysctl -n net.inet.ip.ttl)"
echo ""
echo "✅ Готово! Теперь оператор не сможет определить tethering по TTL."
echo ""
echo "Следующие шаги:"
echo "1. Включите VPN на телефоне (WireGuard)"
echo "2. Подключите телефон к компьютеру через USB"
echo "3. Включите USB модем на телефоне"
echo "4. Проверьте IP: curl https://api.ipify.org"

View File

@@ -0,0 +1,65 @@
#!/bin/bash
# Скрипт для установки и настройки WireGuard на macOS
# Используется для маршрутизации tethering трафика через VPN
set -e
echo "=== Установка WireGuard на macOS ==="
echo ""
# Проверка установки
if ! command -v wg-quick &> /dev/null; then
echo "1. Установка WireGuard..."
brew install wireguard-tools
else
echo "✅ WireGuard уже установлен"
fi
# Создание директории для конфигураций
echo ""
echo "2. Создание директории для конфигураций..."
sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard
# Копирование конфигурации
echo ""
echo "3. Копирование конфигурации..."
CONFIG_FILE="docs/hotspot/wg-ru.conf"
if [ -f "$CONFIG_FILE" ]; then
sudo cp "$CONFIG_FILE" /etc/wireguard/wg0.conf
sudo chmod 600 /etc/wireguard/wg0.conf
echo "✅ Конфигурация скопирована: /etc/wireguard/wg0.conf"
else
echo "❌ Файл конфигурации не найден: $CONFIG_FILE"
exit 1
fi
# Запуск VPN
echo ""
echo "4. Запуск WireGuard VPN..."
sudo wg-quick up wg0
# Проверка
echo ""
echo "5. Проверка подключения..."
sleep 2
VPN_IP=$(curl -s --max-time 5 https://api.ipify.org)
if [ "$VPN_IP" = "83.136.235.230" ]; then
echo "✅ VPN работает! IP: $VPN_IP"
else
echo "⚠️ IP: $VPN_IP (ожидалось: 83.136.235.230)"
echo "Проверьте подключение к серверу"
fi
echo ""
echo "=== Готово! ==="
echo ""
echo "Управление VPN:"
echo " Запуск: sudo wg-quick up wg0"
echo " Остановка: sudo wg-quick down wg0"
echo " Статус: sudo wg show"
echo ""
echo "Проверка IP:"
echo " curl https://api.ipify.org"

View File

@@ -0,0 +1,7 @@
#!/bin/bash
# Остановка WireGuard VPN
echo "🛑 Остановка WireGuard VPN..."
sudo wg-quick down wg0
echo "✅ VPN остановлен"

27
docs/hotspot/scripts/vpn-up.sh Executable file
View File

@@ -0,0 +1,27 @@
#!/bin/bash
# Быстрый запуск WireGuard VPN на Mac для tethering
set -e
echo "🚀 Запуск WireGuard VPN..."
sudo wg-quick up wg0
sleep 2
echo ""
echo "✅ VPN запущен!"
echo ""
echo "Проверка IP:"
IP=$(curl -s --max-time 5 https://api.ipify.org)
echo "IP: $IP"
if [ "$IP" = "83.136.235.230" ]; then
echo "✅ VPN работает! IP корректный"
else
echo "⚠️ IP не соответствует VPN серверу"
fi
echo ""
echo "Статус VPN:"
sudo wg show