MikroTik CHR на Proxmox — установка и настройка
MikroTik Cloud Hosted Router (CHR) — это полноценная версия RouterOS, предназначенная для работы в виртуальных средах. CHR позволяет развернуть маршрутизатор MikroTik на любом гипервизоре: Proxmox VE, VMware ESXi, Hyper-V, KVM, VirtualBox и даже в облаке (AWS, Azure, GCP). В этой статье мы подробно разберём установку CHR на Proxmox VE, лицензирование, настройку сети и типичные сценарии использования.
Руководство актуально для RouterOS 7.20+ и Proxmox VE 8.x.
Описание
Что такое CHR
CHR — это не урезанная версия RouterOS и не эмулятор. Это полноценная операционная система MikroTik, скомпилированная для архитектуры x86_64 и оптимизированная для работы поверх гипервизора. CHR поддерживает все функции RouterOS: firewall, routing (BGP, OSPF, MPLS), VPN (WireGuard, IPsec, L2TP, SSTP, OpenVPN), QoS, CAPsMAN/WiFiWave2 controller и многое другое.
Ключевые отличия от аппаратных RouterBOARD:
- Работает на любом x86_64 сервере
- Не имеет встроенных Wi-Fi модулей и физических портов
- Количество интерфейсов ограничено только гипервизором
- Производительность зависит от выделенных ресурсов и лицензии
- Обновляется как обычный RouterOS (System → Packages)
Лицензирование CHR
MikroTik использует уровневую систему лицензий для CHR. Это отдельная модель, не связанная с классическими Level 4–6:
| Лицензия | Цена | Ограничение скорости | Описание |
|---|---|---|---|
| Free | $0 | 1 Mbps на интерфейс | Для тестирования и обучения |
| P1 | $45 | 1 Gbps на интерфейс | Для небольших инсталляций |
| P10 | $95 | 10 Gbps на интерфейс | Для средних нагрузок |
| P-Unlimited | $250 | Без ограничений | Полная производительность |
Важные нюансы лицензирования:
- Бесплатная лицензия ограничивает 1 Mbps на каждом интерфейсе — это жёсткий лимит, обойти его нельзя
- Лицензия привязывается к System ID виртуальной машины, а не к серверу
- При миграции VM на другой хост лицензия сохраняется
- Пробный период (trial) даёт 60 дней P1-скорости после первой установки
- Лицензия покупается на account.mikrotik.com и активируется командой
/system/license/renew
Проверка текущей лицензии:
[admin@MikroTik] >/system/license/print
Активация купленной лицензии:
[admin@MikroTik] >/system/license/renew account=your@email.com password=yourpassword level=p1
Настройка
Подготовка образа для Proxmox
MikroTik предоставляет CHR в нескольких форматах: raw disk image (.img), VMDK, VHD и VHDX. Для Proxmox оптимальный вариант — использовать raw-образ и сконвертировать его в qcow2.
Скачайте последний стабильный образ с официального сайта. На сервере Proxmox выполните:
[admin@MikroTik] ># Скачиваем raw-образ CHR cd /tmp wget https://download.mikrotik.com/routeros/7.20/chr-7.20.img.zip unzip chr-7.20.img.zip # Конвертируем в qcow2 формат qemu-img convert -f raw -O qcow2 chr-7.20.img chr-7.20.qcow2 # Увеличиваем размер диска (опционально, 128MB достаточно для большинства задач) qemu-img resize chr-7.20.qcow2 256M
Создание виртуальной машины
Создадим VM через командную строку Proxmox (можно также через веб-интерфейс):
[admin@MikroTik] ># Создаём VM с ID 200 qm create 200 --name mikrotik-chr --memory 256 --cores 2 --sockets 1 \ --cpu host --ostype l26 --net0 virtio,bridge=vmbr0 \ --net1 virtio,bridge=vmbr1 --scsihw virtio-scsi-pci \ --serial0 socket --vga serial0 # Импортируем диск qm importdisk 200 /tmp/chr-7.20.qcow2 local-lvm # Подключаем диск к VM qm set 200 --scsi0 local-lvm:vm-200-disk-0 # Устанавливаем загрузку с диска qm set 200 --boot order=scsi0 # Запускаем VM qm start 200
Рекомендуемые параметры VM для CHR:
| Параметр | Минимум | Рекомендация | Максимум |
|---|---|---|---|
| CPU | 1 core | 2 cores | 4 cores |
| RAM | 128 MB | 256 MB | 1024 MB |
| Disk | 128 MB | 256 MB | 1 GB |
| NIC type | — | virtio | — |
| NIC count | 1 | 2–4 | Без ограничений |
Важно: всегда используйте virtio для сетевых адаптеров и дисков. Это даёт максимальную производительность. E1000 будет работать, но значительно медленнее.
Первоначальная настройка CHR
После запуска VM подключитесь через консоль Proxmox (noVNC или Serial). Логин: admin, пароль пустой.
Задайте пароль администратора:
[admin@MikroTik] >/user/set [find name=admin] password="SecureP@ssw0rd"
Назначьте IP-адрес на первый интерфейс (ether1 будет подключён к vmbr0):
[admin@MikroTik] >/ip/address/add address=192.168.1.200/24 interface=ether1 /ip/route/add dst-address=0.0.0.0/0 gateway=192.168.1.1 /ip/dns/set servers=1.1.1.1,8.8.8.8
Теперь можно подключиться через WinBox или SSH по адресу 192.168.1.200.
Настройте имя устройства и часовой пояс:
[admin@MikroTik] >/system/identity/set name=CHR-Proxmox /system/clock/set time-zone-name=Europe/Moscow /system/ntp/client/set enabled=yes /system/ntp/client/servers/add address=pool.ntp.org
Настройка сети: Bridge и VLAN passthrough
CHR часто используется как маршрутизатор между виртуальными сетями. Для этого на стороне Proxmox создаются несколько bridges (vmbr0, vmbr1, vmbr2…), каждый из которых подключается к отдельному интерфейсу CHR.
Для VLAN passthrough (trunk) на стороне Proxmox необходимо настроить bridge с поддержкой VLAN aware:
[admin@MikroTik] ># В /etc/network/interfaces на Proxmox auto vmbr1 iface vmbr1 inet manual bridge-ports eno2 bridge-stp off bridge-fd 0 bridge-vlan-aware yes
На стороне CHR создаём VLAN-интерфейсы:
[admin@MikroTik] >/interface/vlan/add name=vlan100-servers interface=ether2 vlan-id=100 /interface/vlan/add name=vlan200-users interface=ether2 vlan-id=200 /interface/vlan/add name=vlan300-mgmt interface=ether2 vlan-id=300 /ip/address/add address=10.0.100.1/24 interface=vlan100-servers /ip/address/add address=10.0.200.1/24 interface=vlan200-users /ip/address/add address=10.0.300.1/24 interface=vlan300-mgmt
Базовый firewall для CHR
CHR, в отличие от аппаратных MikroTik, по умолчанию не имеет преднастроенного firewall. Настройте минимальную защиту:
[admin@MikroTik] >/ip/firewall/filter add chain=input action=accept connection-state=established,related comment="Accept established" add chain=input action=drop connection-state=invalid comment="Drop invalid" add chain=input action=accept protocol=icmp comment="Accept ICMP" add chain=input action=accept src-address=192.168.1.0/24 comment="Accept from LAN" add chain=input action=accept src-address=10.0.0.0/8 comment="Accept from internal" add chain=input action=drop comment="Drop all other input" /ip/firewall/filter add chain=forward action=accept connection-state=established,related comment="Accept established forward" add chain=forward action=drop connection-state=invalid comment="Drop invalid forward" add chain=forward action=accept src-address=10.0.0.0/8 dst-address=10.0.0.0/8 comment="Accept inter-VLAN" add chain=forward action=drop comment="Drop all other forward"
Сценарии использования CHR
VPN-концентратор
CHR идеально подходит как централизованная точка VPN-подключений. Настроим WireGuard-сервер:
[admin@MikroTik] >/interface/wireguard/add name=wg0 listen-port=13231 mtu=1420 /ip/address/add address=10.10.10.1/24 interface=wg0 # Добавление пира (клиента) /interface/wireguard/peers/add interface=wg0 \ public-key="CLIENT_PUBLIC_KEY_HERE" \ allowed-address=10.10.10.2/32 \ comment="Remote office" # Разрешаем WireGuard в firewall /ip/firewall/filter/add chain=input action=accept protocol=udp dst-port=13231 \ comment="Accept WireGuard" place-before=5
Firewall для виртуальной инфраструктуры
CHR может выступать как центральный firewall между виртуальными машинами на Proxmox, заменяя встроенный firewall гипервизора. Это даёт полный контроль над трафиком: DPI, connection tracking, address lists, Layer7 фильтрация.
Лабораторная среда
CHR на Proxmox — идеальная среда для обучения и тестирования. Бесплатная лицензия с ограничением 1 Mbps не мешает изучать конфигурацию. Можно создать несколько CHR и связать их между собой для изучения BGP, OSPF, MPLS.
[admin@MikroTik] ># Пример: настройка OSPF между двумя CHR /routing/ospf/instance/add name=ospf-instance-1 router-id=1.1.1.1 /routing/ospf/area/add name=backbone instance=ospf-instance-1 area-id=0.0.0.0 /routing/ospf/interface-template/add area=backbone interfaces=ether2 type=ptp
Производительность: CHR vs RouterBOARD
Сравнение производительности CHR с аппаратными устройствами зависит от множества факторов: выделенные ресурсы, тип гипервизора, драйверы, лицензия.
| Метрика | CHR (2 core, P-Unlim) | hEX S (RB760iGS) | RB5009UG+S+IN |
|---|---|---|---|
| Routing (1518 byte) | ~8–10 Gbps | ~1 Gbps | ~2.5 Gbps |
| Routing (64 byte) | ~1.5 Mpps | ~0.6 Mpps | ~1.2 Mpps |
| IPsec AES-256 | ~2 Gbps | ~400 Mbps | ~900 Mbps |
| WireGuard | ~3 Gbps | ~500 Mbps | ~900 Mbps |
| BGP full table | 15–20 сек | 40–60 сек | 25–35 сек |
| Firewall rules impact | Минимальный | Заметный | Умеренный |
Примечание: результаты CHR получены на сервере с Intel Xeon E-2288G, 2 vCPU, 512 MB RAM, virtio NIC, Proxmox 8.2. Реальные показатели зависят от хост-системы.
Преимущества CHR:
- Масштабирование ресурсов (CPU, RAM) без замены оборудования
- Снэпшоты и бэкапы средствами Proxmox
- Миграция между серверами без downtime (live migration)
- Несколько CHR-инстансов на одном сервере
Недостатки CHR:
- Нет аппаратного ускорения (hardware offload)
- Зависимость от хост-системы (если сервер упал — упал и роутер)
- Нет Wi-Fi (можно управлять CAPsMAN, но сам CHR не является точкой доступа)
- Лицензия стоит денег при продуктивном использовании
Проверка
После установки и настройки CHR выполните следующие проверки:
[admin@MikroTik] ># Проверка версии RouterOS и лицензии /system/resource/print /system/license/print # Проверка интерфейсов /interface/print /ip/address/print # Проверка маршрутизации /ip/route/print /ping 1.1.1.1 count=5 # Проверка firewall (счётчики) /ip/firewall/filter/print stats # Проверка NTP /system/ntp/client/print /system/clock/print # Проверка ресурсов /system/resource/print # Обратите внимание на: uptime, cpu-load, free-memory, architecture-name (x86_64)
Для проверки производительности сети между CHR и другой VM используйте встроенный bandwidth-test:
[admin@MikroTik] >/tool/bandwidth-test address=192.168.1.100 protocol=tcp direction=both duration=10s
Типичные ошибки
1. Использование E1000 вместо virtio
Самая частая ошибка — выбор сетевого адаптера Intel E1000 при создании VM. E1000 работает, но производительность будет в 3–5 раз ниже, чем с virtio. Всегда используйте virtio для NIC и диска.
2. Забыли увеличить диск
Образ CHR поставляется с диском ~128 MB. Для продуктивного использования этого может не хватить — логи, файлы бэкапов и пакеты обновлений занимают место. Увеличьте диск до 256 MB–1 GB.
3. Не настроен firewall
CHR не имеет дефолтной конфигурации (в отличие от аппаратных MikroTik с предустановленным default config). После установки все порты открыты. Обязательно настройте firewall input chain.
4. Лицензия слетела после клонирования VM
При клонировании VM в Proxmox меняется System ID, и лицензия перестаёт работать. Решение: не клонируйте VM с активированной лицензией. Создавайте новую VM и покупайте отдельную лицензию, либо переносите существующую через MikroTik account.
5. Низкая производительность из-за конкуренции за CPU
CHR чувствителен к latency CPU. Если на хост-сервере работает много VM с высокой нагрузкой, CHR будет показывать плохие результаты. Решение: используйте CPU pinning в Proxmox (taskset) или выделите отдельные ядра для CHR.
[admin@MikroTik] ># CPU pinning в Proxmox (файл /etc/pve/qemu-server/200.conf) # Добавьте строку: affinity: 2-3
6. Не работает VLAN passthrough
Если VLAN-тегированный трафик не проходит через CHR, проверьте:
- На стороне Proxmox: bridge должен быть
VLAN aware - Сетевой интерфейс VM не должен иметь VLAN tag (tag ставится внутри CHR)
- Physical NIC сервера должен поддерживать jumbo frames, если используется MTU > 1500
[admin@MikroTik] ># Проверка VLAN на интерфейсе /interface/vlan/print detail /interface/ethernet/print # Мониторинг трафика на VLAN /interface/monitor-traffic vlan100-servers duration=10s
7. Проблемы с DNS после установки
CHR не имеет предустановленных DNS-серверов. Без настройки DNS не будут работать обновления, NTP по имени хоста и другие сервисы:
[admin@MikroTik] >/ip/dns/set servers=1.1.1.1,8.8.8.8 allow-remote-requests=no /ip/dns/print
CHR на Proxmox — это мощное и гибкое решение для виртуализации сетевой инфраструктуры. Бесплатная лицензия позволяет начать знакомство без затрат, а при необходимости масштабирования лицензия P1 за $45 покрывает большинство сценариев до 1 Gbps. Для домашних лабораторий и обучения CHR на Proxmox остаётся лучшим способом изучить RouterOS без покупки оборудования.
/system/license/print
/system/license/renew account=your@email.com password=yourpassword level=p1
# Скачиваем raw-образ CHR
cd /tmp
wget https://download.mikrotik.com/routeros/7.20/chr-7.20.img.zip
unzip chr-7.20.img.zip
# Конвертируем в qcow2 формат
qemu-img convert -f raw -O qcow2 chr-7.20.img chr-7.20.qcow2
# Увеличиваем размер диска (опционально, 128MB достаточно для большинства задач)
qemu-img resize chr-7.20.qcow2 256M
# Создаём VM с ID 200
qm create 200 --name mikrotik-chr --memory 256 --cores 2 --sockets 1 \
--cpu host --ostype l26 --net0 virtio,bridge=vmbr0 \
--net1 virtio,bridge=vmbr1 --scsihw virtio-scsi-pci \
--serial0 socket --vga serial0
# Импортируем диск
qm importdisk 200 /tmp/chr-7.20.qcow2 local-lvm
# Подключаем диск к VM
qm set 200 --scsi0 local-lvm:vm-200-disk-0
# Устанавливаем загрузку с диска
qm set 200 --boot order=scsi0
# Запускаем VM
qm start 200
/user/set [find name=admin] password="SecureP@ssw0rd"
/ip/address/add address=192.168.1.200/24 interface=ether1
/ip/route/add dst-address=0.0.0.0/0 gateway=192.168.1.1
/ip/dns/set servers=1.1.1.1,8.8.8.8
/system/identity/set name=CHR-Proxmox
/system/clock/set time-zone-name=Europe/Moscow
/system/ntp/client/set enabled=yes
/system/ntp/client/servers/add address=pool.ntp.org
# В /etc/network/interfaces на Proxmox
auto vmbr1
iface vmbr1 inet manual
bridge-ports eno2
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
/interface/vlan/add name=vlan100-servers interface=ether2 vlan-id=100
/interface/vlan/add name=vlan200-users interface=ether2 vlan-id=200
/interface/vlan/add name=vlan300-mgmt interface=ether2 vlan-id=300
/ip/address/add address=10.0.100.1/24 interface=vlan100-servers
/ip/address/add address=10.0.200.1/24 interface=vlan200-users
/ip/address/add address=10.0.300.1/24 interface=vlan300-mgmt
/ip/firewall/filter
add chain=input action=accept connection-state=established,related comment="Accept established"
add chain=input action=drop connection-state=invalid comment="Drop invalid"
add chain=input action=accept protocol=icmp comment="Accept ICMP"
add chain=input action=accept src-address=192.168.1.0/24 comment="Accept from LAN"
add chain=input action=accept src-address=10.0.0.0/8 comment="Accept from internal"
add chain=input action=drop comment="Drop all other input"
/ip/firewall/filter
add chain=forward action=accept connection-state=established,related comment="Accept established forward"
add chain=forward action=drop connection-state=invalid comment="Drop invalid forward"
add chain=forward action=accept src-address=10.0.0.0/8 dst-address=10.0.0.0/8 comment="Accept inter-VLAN"
add chain=forward action=drop comment="Drop all other forward"
/interface/wireguard/add name=wg0 listen-port=13231 mtu=1420
/ip/address/add address=10.10.10.1/24 interface=wg0
# Добавление пира (клиента)
/interface/wireguard/peers/add interface=wg0 \
public-key="CLIENT_PUBLIC_KEY_HERE" \
allowed-address=10.10.10.2/32 \
comment="Remote office"
# Разрешаем WireGuard в firewall
/ip/firewall/filter/add chain=input action=accept protocol=udp dst-port=13231 \
comment="Accept WireGuard" place-before=5
# Пример: настройка OSPF между двумя CHR
/routing/ospf/instance/add name=ospf-instance-1 router-id=1.1.1.1
/routing/ospf/area/add name=backbone instance=ospf-instance-1 area-id=0.0.0.0
/routing/ospf/interface-template/add area=backbone interfaces=ether2 type=ptp
# Проверка версии RouterOS и лицензии
/system/resource/print
/system/license/print
# Проверка интерфейсов
/interface/print
/ip/address/print
# Проверка маршрутизации
/ip/route/print
/ping 1.1.1.1 count=5
# Проверка firewall (счётчики)
/ip/firewall/filter/print stats
# Проверка NTP
/system/ntp/client/print
/system/clock/print
# Проверка ресурсов
/system/resource/print
# Обратите внимание на: uptime, cpu-load, free-memory, architecture-name (x86_64)
/tool/bandwidth-test address=192.168.1.100 protocol=tcp direction=both duration=10s
# CPU pinning в Proxmox (файл /etc/pve/qemu-server/200.conf)
# Добавьте строку:
affinity: 2-3
# Проверка VLAN на интерфейсе
/interface/vlan/print detail
/interface/ethernet/print
# Мониторинг трафика на VLAN
/interface/monitor-traffic vlan100-servers duration=10s
/ip/dns/set servers=1.1.1.1,8.8.8.8 allow-remote-requests=no
/ip/dns/print