Представь, что тебе нужно протестировать конфигурацию маршрутизатора, развернуть домашний фаервол или создать изолированную сетевую лабораторию — и всё это без покупки дополнительного железа. Установка OpenWrt на Ubuntu даёт именно такую возможность. В этом руководстве мы разберём три основных метода виртуализации, от самого производительного (KVM) до самого простого (Docker).
Подготовка Ubuntu к установке OpenWrt
Перед началом убедись, что у тебя установлена Ubuntu 20.04 LTS или новее. Обнови систему и установи базовые утилиты:
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl git unzip
Выбор образа OpenWrt
Перейди на официальный сайт и выбери образ для своей архитектуры. Для большинства современных систем подойдёт x86/64.
# Скачиваем последний стабильный образ для x86_64
wget https://downloads.openwrt.org/releases/23.05.3/targets/x86/64/openwrt-23.05.3-x86-64-generic-ext4-combined.img.gz
# Распаковываем
gunzip openwrt-23.05.3-x86-64-generic-ext4-combined.img.gz
Метод 1: Установка OpenWrt в KVM (наиболее производительный)
KVM (Kernel-based Virtual Machine) — это встроенная в ядро Linux технология виртуализации. Давай разберём настройку по шагам.
Шаг 1 — Установка KVM и инструментов
sudo apt install -y qemu-kvm libvirt-daemon-system \
libvirt-clients bridge-utils virtinst virt-manager \
libguestfs-tools
Шаг 2 — Создание виртуальной машины
Используем virt-install для создания ВМ. Обрати внимание на параметры сети:
sudo virt-install \
--name openwrt-kvm \
--description "OpenWrt Router" \
--ram=512 \
--vcpus=1 \
--disk path=/var/lib/libvirt/images/openwrt.img,size=2 \
--os-type linux \
--os-variant generic \
--network bridge=virbr0,model=virtio \
--network bridge=virbr1,model=virtio \
--graphics none \
--console pty,target_type=serial \
--import \
--boot hd
sudo virsh net-list --all
Шаг 3 — Настройка сети в OpenWrt
После запуска ВМ подключись к консоли и настрой интерфейсы:
# В консоли OpenWrt
vi /etc/config/network
Пример конфигурации:
config interface 'lan'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option device 'eth1'
config interface 'wan'
option proto 'dhcp'
option device 'eth0'
Метод 2: Установка OpenWrt в VirtualBox (самый простой)
Если ты только начинаешь работать с виртуализацией, VirtualBox — отличный выбор благодаря графическому интерфейсу.
Шаг 1 — Установка VirtualBox
sudo apt install -y virtualbox virtualbox-ext-pack
Шаг 2 — Создание виртуальной машины
Запусти VirtualBox и создай новую ВМ со следующими параметрами:
- Тип: Linux
- Версия: Linux 2.6 / 3.x / 4.x (64-bit)
- Память: 512 MB
- Жёсткий диск: 2 GB (VDI)
- Сетевые адаптеры: 2 шт. (Adapter 1: NAT, Adapter 2: Internal Network)
Шаг 3 — Привязка образа OpenWrt
# Конвертируем raw образ в формат VDI
VBoxManage convertfromraw openwrt-23.05.3-x86-64-generic-ext4-combined.img openwrt.vdi --format VDI
# Привязываем к ВМ
VBoxManage storageattach "OpenWrt" --storagectl "SATA" --port 0 \
--device 0 --type hdd --medium openwrt.vdi
Метод 3: Запуск OpenWrt в Docker (для контейнеризации)
Docker-образ OpenWrt идеально подходит для тестирования сетевых конфигураций и CI/CD пайплайнов.
Шаг 1 — Установка Docker
sudo apt install -y docker.io docker-compose
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
# Перелогинься или выполни: newgrp docker
Шаг 2 — Запуск контейнера OpenWrt
# Создаём сеть Docker для LAN
sudo docker network create --subnet=192.168.100.0/24 openwrt-lan
# Запускаем контейнер
sudo docker run -d \
--name openwrt-docker \
--restart unless-stopped \
--network openwrt-lan \
--ip 192.168.100.1 \
--cap-add=NET_ADMIN \
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
openwrtorg/rootfs:x86-64
Шаг 3 — Настройка через Docker exec
# Подключаемся к контейнеру
sudo docker exec -it openwrt-docker /bin/sh
# Меняем пароль (по умолчанию пустой)
passwd
# Настраиваем сеть
uci set network.lan.ipaddr='192.168.100.1'
uci commit network
/etc/init.d/network restart
Сравнение методов установки OpenWrt
| Метод | Производительность | Сложность | Использование |
|---|---|---|---|
| KVM | Нативная (близко к железу) | Средняя | Продакшен-тесты, сетевая лаборатория |
| VirtualBox | Хорошая | Низкая | Обучение, быстрые тесты |
| Docker | Высокая (легковесный) | Низкая/Средняя | CI/CD, микросервисы, разработка |
Базовая настройка OpenWrt после установки
Независимо от выбранного метода, выполни эти обязательные шаги:
- Смена пароля:
passwd(по умолчанию пароль пустой!) - Обновление пакетов:
opkg update && opkg upgrade - Настройка фаервола: Открой веб-интерфейс по адресу
http://192.168.1.1или настрой через CLI - Установка LuCI (веб-интерфейс):
opkg install luci
# Пример настройки фаервола /etc/config/firewall
config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option network 'lan'
config zone
option name 'wan'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
option network 'wan'
Частые проблемы и решения
Проблема: Нет доступа к интернету из OpenWrt
Решение: Проверь настройки WAN интерфейса. В KVM/VirtualBox убедись, что первый адаптер подключён к NAT или мосту с доступом в интернет. Выполни в OpenWrt: ping 8.8.8.8
Проблема: Не открывается веб-интерфейс
Решение: Убедись, что LuCI установлен: opkg list-installed | grep luci. Проверь IP-адрес: uci get network.lan.ipaddr. Фаервол должен разрешать входящие подключения на порт 80.
Проблема: Docker-контейнер не запускается
Решение: Проверь логи: docker logs openwrt-docker. Убедись, что добавлена привилегия NET_ADMIN. Попробуй запустить с флагом --privileged для полного доступа к сети.
Итог: Что выбрать для своих задач?
- KVM — если нужна максимальная производительность и реалистичное тестирование сетевого оборудования
- VirtualBox — для обучения, демонстраций или если ты не знаком с CLI-инструментами
- Docker — для интеграции в DevOps-пайплайны, тестирования конфигураций или быстрого развёртывания
Установка OpenWrt на Ubuntu открывает огромные возможности для тестирования сетевых конфигураций без риска для основной инфраструктуры. Начни с VirtualBox, затем перейди на KVM для более серьёзных задач, а Docker используй для автоматизации.