Files
shx-network/README.md
T

265 lines
10 KiB
Markdown
Raw 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.
# SHX Network Infrastructure
## Обзор сети
Данный проект описывает сетевую инфраструктуру с двумя провайдерами интернет-соединения и множественными GRE туннелями для обеспечения отказоустойчивости и географического распределения.
## Архитектура сети
### Основная схема
```mermaid
graph TB
subgraph "Шлюз (Gateway)"
GW[Основной шлюз]
end
subgraph "Провайдеры"
MTS[МТС]
RTK[Ростелеком]
end
subgraph "GRE Туннели"
subgraph "Ростелеком (RTK)"
RTK1[MSK-VPSVILLE-RTK]
RTK2[MSK-IHOR-RTK]
RTK3[SWE-HIPHOST-RTK]
end
subgraph "МТС (MTS)"
MTS1[MSK-VPSVILLE-MTS]
MTS2[MSK-IHOR-MTS]
MTS3[SWE-HIPHOST-MTS]
end
end
subgraph "Удаленные узлы"
VPSVILLE[VPSVILLE]
IHOR[IHOR]
HIPHOST[HIPHOST]
end
GW --> MTS
GW --> RTK
MTS --> MTS1
MTS --> MTS2
MTS --> MTS3
RTK --> RTK1
RTK --> RTK2
RTK --> RTK3
MTS1 --> VPSVILLE
MTS2 --> IHOR
MTS3 --> HIPHOST
RTK1 --> VPSVILLE
RTK2 --> IHOR
RTK3 --> HIPHOST
style GW fill:#e1f5fe
style MTS fill:#ffebee
style RTK fill:#e8f5e8
style VPSVILLE fill:#fff3e0
style IHOR fill:#fff3e0
style HIPHOST fill:#fff3e0
```
### Детальная схема туннелей
```mermaid
graph LR
subgraph "Шлюз"
GW[Gateway]
end
subgraph "Провайдер МТС"
MTS_ISP[МТС ISP]
end
subgraph "Провайдер Ростелеком"
RTK_ISP[Ростелеком ISP]
end
subgraph "GRE Туннели"
subgraph "Москва - VPSVILLE"
MTS_VPS[MSK-VPSVILLE-MTS<br/>GRE Tunnel]
RTK_VPS[MSK-VPSVILLE-RTK<br/>GRE Tunnel]
end
subgraph "Москва - IHOR"
MTS_IHOR[MSK-IHOR-MTS<br/>GRE Tunnel]
RTK_IHOR[MSK-IHOR-RTK<br/>GRE Tunnel]
end
subgraph "Швеция - HIPHOST"
MTS_HIP[SWE-HIPHOST-MTS<br/>GRE Tunnel]
RTK_HIP[SWE-HIPHOST-RTK<br/>GRE Tunnel]
end
end
subgraph "Удаленные серверы"
VPS[VPSVILLE Server<br/>Москва]
IHR[IHOR Server<br/>Москва]
HIP[HIPHOST Server<br/>Швеция]
end
GW --> MTS_ISP
GW --> RTK_ISP
MTS_ISP --> MTS_VPS
MTS_ISP --> MTS_IHOR
MTS_ISP --> MTS_HIP
RTK_ISP --> RTK_VPS
RTK_ISP --> RTK_IHOR
RTK_ISP --> RTK_HIP
MTS_VPS --> VPS
MTS_IHOR --> IHR
MTS_HIP --> HIP
RTK_VPS --> VPS
RTK_IHOR --> IHR
RTK_HIP --> HIP
style GW fill:#2196f3,stroke:#1976d2,stroke-width:2px,color:#fff
style MTS_ISP fill:#f44336,stroke:#d32f2f,stroke-width:2px,color:#fff
style RTK_ISP fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
style VPS fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#fff
style IHR fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#fff
style HIP fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#fff
```
### Схема отказоустойчивости
```mermaid
graph TB
subgraph "Основной путь"
GW[Gateway]
MTS[MТС - Основной]
RTK[Ростелеком - Резервный]
end
subgraph "Туннели по приоритету"
subgraph "VPSVILLE"
VPS_MTS[MSK-VPSVILLE-MTS<br/>Приоритет 1]
VPS_RTK[MSK-VPSVILLE-RTK<br/>Приоритет 2]
end
subgraph "IHOR"
IHR_MTS[MSK-IHOR-MTS<br/>Приоритет 1]
IHR_RTK[MSK-IHOR-RTK<br/>Приоритет 2]
end
subgraph "HIPHOST"
HIP_MTS[SWE-HIPHOST-MTS<br/>Приоритет 1]
HIP_RTK[SWE-HIPHOST-RTK<br/>Приоритет 2]
end
end
GW --> MTS
GW --> RTK
MTS --> VPS_MTS
MTS --> IHR_MTS
MTS --> HIP_MTS
RTK --> VPS_RTK
RTK --> IHR_RTK
RTK --> HIP_RTK
VPS_MTS -.->|Failover| VPS_RTK
IHR_MTS -.->|Failover| IHR_RTK
HIP_MTS -.->|Failover| HIP_RTK
style GW fill:#2196f3,stroke:#1976d2,stroke-width:3px,color:#fff
style MTS fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
style RTK fill:#ff9800,stroke:#f57c00,stroke-width:2px,color:#fff
```
## Конфигурация туннелей
### Ростелеком (RTK)
| Туннель | Назначение | Локация | Статус |
|---------|------------|---------|--------|
| MSK-VPSVILLE-RTK | Основной канал VPSVILLE | Москва | Активен |
| MSK-IHOR-RTK | Основной канал IHOR | Москва | Активен |
| SWE-HIPHOST-RTK | Основной канал HIPHOST | Швеция | Активен |
### МТС (MTS)
| Туннель | Назначение | Локация | Статус |
|---------|------------|---------|--------|
| MSK-VPSVILLE-MTS | Резервный канал VPSVILLE | Москва | Активен |
| MSK-IHOR-MTS | Резервный канал IHOR | Москва | Активен |
| SWE-HIPHOST-MTS | Резервный канал HIPHOST | Швеция | Активен |
## Преимущества архитектуры
1. **Отказоустойчивость**: Два независимых провайдера обеспечивают непрерывность работы
2. **Географическое распределение**: Серверы в разных локациях (Москва, Швеция)
3. **Балансировка нагрузки**: Возможность распределения трафика между провайдерами
4. **Масштабируемость**: Легкое добавление новых туннелей и серверов
## Мониторинг
- Отслеживание состояния всех GRE туннелей
- Мониторинг пропускной способности каналов
- Автоматическое переключение при отказе основного канала
- Логирование событий и статистики
## Технические детали
- **Протокол**: GRE (Generic Routing Encapsulation)
- **Шифрование**: IPSec (опционально)
- **Мониторинг**: Keepalive пакеты
- **Failover**: Автоматическое переключение при потере связи
---
## Рекомендации по адресации GRE туннелей
Для GRE туннелей рекомендуется использовать отдельный диапазон, например, `10.100.0.0/16`, чтобы избежать конфликтов с домашней сетью (`192.168.0.0/16`). Для каждого туннеля выделяется отдельная /30 подсеть (две точки).
### Пример распределения адресов для GRE туннелей
| Туннель | Подсеть | Gateway (ваш) | Remote (удалённый) |
|------------------------|-----------------|---------------|--------------------|
| MSK-VPSVILLE-MTS | 10.100.1.0/30 | 10.100.1.1 | 10.100.1.2 |
| MSK-VPSVILLE-RTK | 10.100.2.0/30 | 10.100.2.1 | 10.100.2.2 |
| MSK-IHOR-MTS | 10.100.3.0/30 | 10.100.3.1 | 10.100.3.2 |
| MSK-IHOR-RTK | 10.100.4.0/30 | 10.100.4.1 | 10.100.4.2 |
| SWE-HIPHOST-MTS | 10.100.5.0/30 | 10.100.5.1 | 10.100.5.2 |
| SWE-HIPHOST-RTK | 10.100.6.0/30 | 10.100.6.1 | 10.100.6.2 |
- Первый IP в /30 — ваш шлюз (CHR), второй — удалённая сторона.
- Такой подход обеспечивает прозрачность, масштабируемость и минимизирует конфликты.
### Безопасность и маршрутизация на RouterOS
- Использование диапазона `10.100.0.0/16` для GRE туннелей безопасно, если ваша домашняя сеть — `192.168.0.0/16`.
- Диапазоны не пересекаются, маршрутизация не сломается.
- На CHR (RouterOS) это стандартная практика: GRE туннели выносят в отдельный диапазон, чтобы не было конфликтов с LAN.
- Для GRE-интерфейсов прописывайте адресацию только из этого диапазона.
- В маршрутах на CHR не должно быть статических маршрутов, которые бы направляли `10.100.0.0/16` в локальную сеть.
#### Пример маршрутизации на RouterOS
- Для каждого GRE-интерфейса будет автоматически создан маршрут для /30 подсети.
- Например, если GRE-интерфейс имеет адрес 10.100.1.1/30, а удалённый — 10.100.1.2, то маршрут до 10.100.1.2 будет через этот GRE-интерфейс.
- Основная домашняя сеть (`192.168.0.0/16`) никак не пересекается с этими маршрутами.
#### Пример конфигурации GRE туннеля на RouterOS
```shell
/interface gre add name=gre-MSK-VPSVILLE-MTS remote-address=<REMOTE_IP> local-address=<YOUR_WAN_IP>
/ip address add address=10.100.1.1/30 interface=gre-MSK-VPSVILLE-MTS
/ip route add dst-address=10.100.1.2/32 gateway=gre-MSK-VPSVILLE-MTS
```
- `<REMOTE_IP>` — внешний IP удалённого сервера
- `<YOUR_WAN_IP>` — ваш внешний IP
- Аналогично для остальных туннелей, меняя адресацию по таблице выше
---