# 🚀 Shadowsocks VPN - Полное руководство

## 📋 Обзор

Shadowsocks VPN - **лучший выбор для обхода строгих блокировок**. Маскирует трафик под обычный веб-трафик, что делает его очень эффективным против DPI (Deep Packet Inspection) и интернет-цензуры.

**Преимущества:**
- ✅ **90-95% от пропускной способности** (очень быстрый)
- ✅ **Сложнее обнаружить** через DPI
- ✅ **Эффективен против цензуры** (разработан для Китая)
- ✅ **TCP протокол** (проходит через корпоративные прокси)

**Параметры подключения:**
```
Server: 209.38.32.21
Port: 8388
Password: bNkSbuMQXgMXmuBLPQCA5cSUE
Method: chacha20-ietf-poly1305
```

**URI для импорта:**
```
ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpiTmtTYnVNUVhnTVhtdUJMUFFDQTVjU1VFQDIwOS4zOC4zMi4yMTo4Mzg4
```

---

## 🔧 Развертывание сервера

### Автоматическое развертывание

```bash
bash scripts/deployment/deploy-vpn-shadowsocks.sh
```

Скрипт автоматически:
1. ✅ Проверит подключение к серверу
2. ✅ Сгенерирует безопасный пароль
3. ✅ Создаст необходимые директории
4. ✅ Настроит Docker контейнер
5. ✅ Обновит firewall правила
6. ✅ Запустит VPN сервер
7. ✅ Создаст клиентскую конфигурацию

### Статус сервера

**Контейнер:** `hunab-vpn-shadowsocks`  
**Статус:** ✅ Запущен и работает  
**Порт:** 8388 (TCP/UDP)  
**Firewall:** ✅ Настроен

**Проверка статуса:**
```bash
ssh hunab-prod "docker ps | grep shadowsocks"
```

---

## 📱 Настройка клиентов

### Android

1. Установите приложение **Shadowsocks** из Google Play (разработчик: Max Lv)
2. Нажмите **"+"** → **"Manual Settings"**
3. Введите параметры:
   ```
   Server: 209.38.32.21
   Remote Port: 8388
   Password: bNkSbuMQXgMXmuBLPQCA5cSUE
   Method: chacha20-ietf-poly1305
   ```
4. Нажмите **"Подключиться"**

**Альтернативные клиенты для Android:**
- ShadowsocksR - больше функций
- Outline - очень простой
- V2rayNG - много протоколов
- Clash for Android - правила маршрутизации

### macOS

#### Вариант 1: ShadowsocksX-NG (GUI)

```bash
brew install --cask shadowsocksx-ng
```

1. Откройте приложение → **Server Preferences** → **"+"**
2. Введите параметры подключения
3. Выберите сервер в меню и подключитесь
4. Включите **"System Proxy"**

#### Вариант 2: shadowsocks-libev (CLI) - Рекомендуется

```bash
brew install shadowsocks-libev
```

**Настройка:**
```bash
mkdir -p ~/.shadowsocks
cat > ~/.shadowsocks/config.json <<EOF
{
    "server": "209.38.32.21",
    "server_port": 8388,
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "password": "bNkSbuMQXgMXmuBLPQCA5cSUE",
    "method": "chacha20-ietf-poly1305",
    "timeout": 300,
    "fast_open": true
}
EOF
```

**Автозапуск:**
```bash
cat > ~/Library/LaunchAgents/com.shadowsocks.local.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.shadowsocks.local</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/bin/ss-local</string>
        <string>-c</string>
        <string>${HOME}/.shadowsocks/config.json</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/tmp/shadowsocks.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/shadowsocks.error.log</string>
</dict>
</plist>
EOF

launchctl load ~/Library/LaunchAgents/com.shadowsocks.local.plist
```

**Настройка системного прокси:**
1. System Settings → Network → Wi-Fi/Ethernet → Details → Proxies
2. Включите SOCKS Proxy: `127.0.0.1:1080`

**Или используйте скрипты:**
```bash
cd docs/servers/vpn
./scripts/enable-shadowsocks-full.sh  # Включить для всего трафика
./scripts/toggle-shadowsocks-proxy.sh  # Переключить прокси
./scripts/check-proxy-status.sh        # Проверить статус
```

**Альтернативные клиенты для macOS:**
- ClashX - очень популярный
- V2rayU - простой интерфейс
- Outline - очень простой
- Surge - платный, но мощный

---

## 🔧 Управление

### Проверка статуса

```bash
# На сервере
ssh hunab-prod "docker ps | grep shadowsocks"

# На клиенте (macOS CLI)
launchctl list | grep shadowsocks
```

### Просмотр логов

```bash
# Сервер
ssh hunab-prod "docker logs hunab-vpn-shadowsocks"

# Клиент (macOS)
tail -f /tmp/shadowsocks.log
tail -f /tmp/shadowsocks.error.log
```

### Перезапуск

```bash
# Сервер
ssh hunab-prod "cd /opt/app && docker compose -f docker-compose.vpn-shadowsocks.yml restart"

# Клиент (macOS)
launchctl unload ~/Library/LaunchAgents/com.shadowsocks.local.plist
launchctl load ~/Library/LaunchAgents/com.shadowsocks.local.plist
```

### Изменение пароля

```bash
ssh hunab-prod
cd /opt/app/vpn/shadowsocks

NEW_PASSWORD=$(openssl rand -base64 32 | tr -d "=+/" | cut -c1-25)
sed -i "s/\"password\": \".*\"/\"password\": \"${NEW_PASSWORD}\"/" config.json
docker restart hunab-vpn-shadowsocks
```

---

## 🧪 Тестирование

### Проверка подключения

```bash
# Через SOCKS5 прокси (macOS CLI)
curl --socks5 127.0.0.1:1080 ifconfig.me
# Должен показать: 209.38.32.21

# Прямое подключение
curl ifconfig.me
# Покажет ваш реальный IP
```

### Проверка через браузер

1. Настройте системный прокси (см. выше)
2. Откройте: https://whatismyipaddress.com/
3. Должен отображаться IP: **209.38.32.21**

---

## 🔧 Решение проблем

### Весь трафик не проходит через Shadowsocks

**Используйте скрипты:**
```bash
cd docs/servers/vpn
./scripts/check-proxy-status.sh  # Проверка статуса
./scripts/fix-shadowsocks.sh     # Автоматическое исправление
```

**Ручная диагностика:**

1. **Проверка Shadowsocks:**
   ```bash
   launchctl list | grep shadowsocks
   curl --socks5 127.0.0.1:1080 ifconfig.me
   ```

2. **Проверка системного прокси:**
   ```bash
   networksetup -getsocksfirewallproxy "Wi-Fi"
   # Должно показать: Enabled: Yes, Server: 127.0.0.1, Port: 1080
   ```

3. **Настройка прокси:**
   ```bash
   INTERFACE=$(networksetup -listallnetworkservices | grep -E "Wi-Fi|Ethernet" | head -1)
   networksetup -setsocksfirewallproxy "$INTERFACE" 127.0.0.1 1080
   networksetup -setsocksfirewallproxystate "$INTERFACE" on
   ```

### Chrome не использует системный прокси

1. **Отключите Chrome VPN расширение** (если активно)
2. **Проверьте настройки:** `chrome://settings/system` → "Use system proxy settings"
3. **Полностью закройте Chrome:** Cmd+Q (не просто закрыть окно)
4. **Откройте Chrome заново**

### Прокси не работает

1. Проверьте статус:
   ```bash
   launchctl list | grep shadowsocks
   ```

2. Проверьте логи:
   ```bash
   cat /tmp/shadowsocks.error.log
   ```

3. Перезапустите:
   ```bash
   launchctl unload ~/Library/LaunchAgents/com.shadowsocks.local.plist
   launchctl load ~/Library/LaunchAgents/com.shadowsocks.local.plist
   ```

### Порт 1080 занят

1. Проверьте, что использует порт:
   ```bash
   lsof -i :1080
   ```

2. Измените порт в `~/.shadowsocks/config.json`:
   ```json
   "local_port": 1081
   ```

3. Обновите системный прокси на новый порт

---

## 📊 Мониторинг

### Использование ресурсов

```bash
ssh hunab-prod "docker stats hunab-vpn-shadowsocks --no-stream"
```

### Активные подключения

```bash
ssh hunab-prod "docker exec hunab-vpn-shadowsocks ss-server -c /etc/shadowsocks-libev/config.json -v"
```

---

## 🔒 Безопасность

### Рекомендации

1. ✅ **Используйте порт 443** для маскировки под HTTPS трафик
2. ✅ **Регулярно меняйте пароль** (каждые 1-3 месяца)
3. ✅ **Используйте современные методы шифрования** (`chacha20-ietf-poly1305`)
4. ✅ **Мониторинг трафика** - следите за использованием
5. ✅ **Обновляйте контейнер** регулярно

---

## 🔗 Полезные ссылки

- [Shadowsocks Official](https://shadowsocks.org/)
- [Shadowsocks Docker Image](https://hub.docker.com/r/shadowsocks/shadowsocks-libev)
- [Shadowsocks Clients](https://shadowsocks.org/en/download/clients.html)
- [Shadowsocks GitHub](https://github.com/shadowsocks/shadowsocks-libev)

---

**Версия:** 2.0  
**Дата:** 2025-01-XX

