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