Initial commit: local_machine docs and scripts
This commit is contained in:
347
docs/connectivity/vpn/SHADOWSOCKS.md
Normal file
347
docs/connectivity/vpn/SHADOWSOCKS.md
Normal file
@@ -0,0 +1,347 @@
|
||||
# 🚀 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
|
||||
|
||||
Reference in New Issue
Block a user