LTE Mesh Backhaul: Інтернет від сусідньої вишки

Концепція

LTE Mesh Backhaul дозволяє вишкам без прямого інтернет-з'єднання отримувати доступ через сусідню вишку по LTE радіоканалу.

┌─────────────────┐         LTE Radio          ┌─────────────────┐
│    ВИШКА A      │◄──────────────────────────►│    ВИШКА B      │
│  (без інтернету)│                            │  (з інтернетом) │
├─────────────────┤                            ├─────────────────┤
│ • LTE Modem (UE)│                            │ • Starlink      │
│ • srsENB        │                            │ • srsENB        │
│ • WireGuard     │                            │ • Open5GS Core  │
│ • Свої клієнти  │                            │ • WireGuard Hub │
└────────┬────────┘                            └────────┬────────┘
         │                                              │
    ┌────▼────┐                                    ┌────▼────┐
    │Клієнти A│                                    │Клієнти B│
    └─────────┘                                    └─────────┘

Архітектура

Вишка B (Primary) — з інтернетом

Компоненти:
- Інтернет-канал (Starlink, оптика, радіорелейка)
- srsENB — базова станція LTE
- Open5GS Core — ядро мережі (MME, HSS, SGW, PGW)
- WireGuard Hub — центральна точка mesh-мережі

Функції:
- Обслуговує своїх клієнтів напряму
- Надає LTE-доступ для сусідніх вишок
- Роутить трафік в інтернет

Вишка A (Secondary) — без інтернету

Компоненти:
- LTE Modem (UE) — для підключення до Вишки B
- srsENB — своя базова станція для своїх клієнтів
- Локальний Open5GS Core (опційно)
- WireGuard Client — тунель через LTE

Функції:
- Підключається до Вишки B як звичайний LTE клієнт
- Роздає інтернет своїм клієнтам
- Підтримує автономну роботу при втраті зв'язку з Вишкою B

Варіанти реалізації

Варіант 1: Централізований Core

Вишка A                           Вишка B
┌──────────────┐                 ┌──────────────┐
│  srsENB      │                 │  srsENB      │
│      │       │     LTE         │      │       │
│  LTE Modem ──┼────────────────►│  Open5GS     │──► Internet
│      │       │                 │    Core      │
│  WireGuard ──┼── tunnel ──────►│  WireGuard   │
└──────────────┘                 └──────────────┘

Переваги:
- Простіша конфігурація
- Єдина база абонентів (HSS)
- Централізоване управління

Недоліки:
- Залежність від зв'язку з Вишкою B
- При втраті зв'язку — немає локальних сервісів

Варіант 2: Розподілений Core (рекомендований)

Вишка A                           Вишка B
┌──────────────┐                 ┌──────────────┐
│  srsENB      │                 │  srsENB      │
│      │       │     LTE         │      │       │
│  Open5GS ────┼────────────────►│  Open5GS     │──► Internet
│  (local)     │                 │  (primary)   │
│      │       │                 │      │       │
│  LTE Modem ──┼── backhaul ────►│              │
│      │       │                 │              │
│  WireGuard ──┼── tunnel ──────►│  WireGuard   │
└──────────────┘                 └──────────────┘

Переваги:
- Автономна робота при втраті зв'язку
- Локальні сервіси (Matrix, файли) працюють офлайн
- Масштабованість

Недоліки:
- Складніша конфігурація
- Потрібна синхронізація баз абонентів

Конфігурація

Вишка B: Primary Node

1. Open5GS Core

# /etc/open5gs/mme.yaml
mme:
  s1ap:
    - addr: 0.0.0.0  # Приймає з'єднання від усіх eNB
  gummei:
    plmn_id:
      mcc: 001
      mnc: 01
    mme_gid: 1
    mme_code: 1
  tai:
    plmn_id:
      mcc: 001
      mnc: 01
    tac: 1

2. srsENB

# /etc/srsran/enb.conf
[enb]
enb_id = 0x19B01
mcc = 001
mnc = 01
mme_addr = 127.0.0.1
gtp_bind_addr = 10.10.10.1
s1c_bind_addr = 10.10.10.1

[rf]
device_name = lime
device_args = auto

3. WireGuard Hub

# /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.1/24
PrivateKey = <PRIVATE_KEY_B>
ListenPort = 51820

# Вишка A
[Peer]
PublicKey = <PUBLIC_KEY_A>
AllowedIPs = 10.10.10.2/32, 10.10.20.0/24

Вишка A: Secondary Node

1. LTE Modem підключення

# Підключення через QMI/MBIM модем
sudo qmicli -d /dev/cdc-wdm0 --dms-get-operating-mode
sudo qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength

# Або через ModemManager
mmcli -m 0 --simple-connect="apn=internet"

2. WireGuard через LTE

# /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.2/24
PrivateKey = <PRIVATE_KEY_A>
# Роутинг через LTE інтерфейс
Table = off
PostUp = ip route add 10.10.10.1/32 via <LTE_GATEWAY> dev wwan0
PostUp = wg set %i fwmark 51820
PostUp = ip route add default dev %i table 51820
PostUp = ip rule add fwmark 51820 table 51820

[Peer]
PublicKey = <PUBLIC_KEY_B>
Endpoint = <ВИШКА_B_IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

3. Локальний srsENB для своїх клієнтів

# /etc/srsran/enb.conf
[enb]
enb_id = 0x19B02
mcc = 001
mnc = 01
# MME через WireGuard тунель
mme_addr = 10.10.10.1
gtp_bind_addr = 10.10.10.2
s1c_bind_addr = 10.10.10.2

[rf]
device_name = lime
device_args = auto
# Інша частота щоб не заважати Вишці B
dl_earfcn = 3350

Автоматичний failover

Скрипт моніторингу зв'язку

#!/bin/bash
# /usr/local/bin/backhaul-monitor.sh

PRIMARY_GW="10.10.10.1"
CHECK_INTERVAL=30
FAIL_THRESHOLD=3

fail_count=0

while true; do
    if ping -c 1 -W 5 $PRIMARY_GW > /dev/null 2>&1; then
        fail_count=0
        # Зв'язок є — використовуємо primary backhaul
        if [ -f /tmp/offline_mode ]; then
            echo "$(date): Connection restored, switching to online mode"
            rm /tmp/offline_mode
            systemctl restart wg-quick@wg0
        fi
    else
        ((fail_count++))
        echo "$(date): Primary gateway unreachable ($fail_count/$FAIL_THRESHOLD)"

        if [ $fail_count -ge $FAIL_THRESHOLD ]; then
            if [ ! -f /tmp/offline_mode ]; then
                echo "$(date): Switching to offline mode"
                touch /tmp/offline_mode
                # Активуємо локальні сервіси
                systemctl start open5gs-mmed
                systemctl start open5gs-sgwcd
                systemctl start matrix-dendrite
            fi
        fi
    fi

    sleep $CHECK_INTERVAL
done

Systemd сервіс

# /etc/systemd/system/backhaul-monitor.service
[Unit]
Description=LTE Backhaul Monitor
After=network.target wg-quick@wg0.service

[Service]
Type=simple
ExecStart=/usr/local/bin/backhaul-monitor.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Частотне планування

При розгортанні декількох вишок в межах радіовидимості важливо уникати інтерференції:

Вишка Band EARFCN Частота DL Частота UL
A B7 3100 2655 MHz 2535 MHz
B B7 3350 2680 MHz 2560 MHz
C B3 1575 1842.5 MHz 1747.5 MHz

Правила:
- Мінімальна відстань між каналами: 10 MHz
- Для сусідніх вишок використовувати різні bands якщо можливо
- При використанні одного band — рознести частоти максимально

Тестування

Перевірка LTE backhaul

# На Вишці A — перевірити підключення модема
mmcli -m 0

# Перевірити IP адресу від Вишки B
ip addr show wwan0

# Перевірити WireGuard тунель
wg show

# Перевірити маршрути
ip route show table all | grep -E "wg0|wwan0"

# Тест швидкості через backhaul
iperf3 -c 10.10.10.1 -t 30

Перевірка клієнтів на Вишці A

# Моніторинг підключених UE
sudo srsran_enb_metrics

# Перевірка S1 з'єднання до MME
sudo tcpdump -i wg0 port 36412

Діагностика проблем

Немає LTE з'єднання з Вишкою B

# Перевірити рівень сигналу
mmcli -m 0 --signal-get

# Перевірити реєстрацію в мережі
mmcli -m 0 --3gpp-scan

# Логи модема
journalctl -u ModemManager -f

WireGuard тунель не встановлюється

# Перевірити endpoint доступність
ping <ВИШКА_B_IP>

# Перевірити handshake
wg show wg0

# Логи WireGuard
dmesg | grep wireguard

Клієнти не отримують інтернет

# Перевірити NAT на Вишці A
iptables -t nat -L -n -v

# Перевірити forwarding
sysctl net.ipv4.ip_forward

# Перевірити GTP тунелі
ip link show | grep gtp

Безпека

Рекомендації

  1. Шифрування: Весь трафік між вишками через WireGuard
  2. Автентифікація: Унікальні IMSI/Ki для кожної SIM
  3. Firewall: Обмежити доступ до management інтерфейсів
  4. Моніторинг: Логування всіх підключень

Firewall правила для Вишки B

# Дозволити LTE трафік тільки від відомих eNB
iptables -A INPUT -p sctp --dport 36412 -s 10.10.10.0/24 -j ACCEPT
iptables -A INPUT -p sctp --dport 36412 -j DROP

# Дозволити GTP тільки від WireGuard
iptables -A INPUT -p udp --dport 2152 -i wg0 -j ACCEPT
iptables -A INPUT -p udp --dport 2152 -j DROP

Масштабування

                    ┌─────────────┐
                    │   INTERNET  │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │   ВИШКА A   │
                    │  (Primary)  │
                    └──┬───────┬──┘
              LTE      │       │      LTE
           ┌───────────┘       └───────────┐
           │                               │
    ┌──────▼──────┐                 ┌──────▼──────┐
    │   ВИШКА B   │                 │   ВИШКА C   │
    │ (Secondary) │                 │ (Secondary) │
    └──────┬──────┘                 └──────┬──────┘
           │ LTE                           │ LTE
    ┌──────▼──────┐                 ┌──────▼──────┐
    │   ВИШКА D   │                 │   ВИШКА E   │
    │ (Tertiary)  │                 │ (Tertiary)  │
    └─────────────┘                 └─────────────┘

При такій топології:
- Кожна вишка може бути relay для наступного рівня
- WireGuard mesh забезпечує автоматичний failover
- Втрата однієї вишки не руйнує всю мережу


Останнє оновлення: Січень 2026
UMTC Project — Ukrainian Military Tactical Communications

Шлях: lte/mesh-backhaul.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications