Files
local_machine/docs/connectivity/vpn/SHADOWSOCKS.md
2026-03-14 20:03:57 +03:00

348 lines
9.8 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.
# 🚀 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