Виртуальный роутер DD-WRT x86 на VirtualBox

image

Введение:


По работе мне часто приходится работать с перепрошитыми роутерами на DD-WRT или OpenWRT. Все время как-то получалось обходиться без роутера дома, но те возможности, которые дают эти прошивки, реально классные. Вот и задумался о приобретении роутера, такого чтоб тянул все сервисы, которые мне могут понадобиться.  Остановился на выборе Asus RT-N16, но, правда, дороговата эта игрушка оказалась для меня. Это при том, что реальной необходимости в роутере не было, т.к. отлично спасала сетевая Wi-Fi карточка TP-LINK WN851ND.

Вот и пришла в голову идея о виртуальном роутере, опытом, по настройке которого, я сейчас с вами поделюсь.



Немного о плюсах и минусах:


1. +Низкая стоимость
               дополнительные расходы у меня составили 150р на покупку 2й сетевой карты,
               покупка сразу двух карточек обойдется в пределах 1000р


2. +Высокая производительность.
               Максимум чем мы ограничены – это характеристики самого компьютера.


3. +Нет привязки к четкому железу.
               Дает свободу по настройке нашего роутера


4. Зависимость от компьютера.
               Внешним фактором для этого роутера является ОС, которая не всегда работает стабильно.


5. Постоянная работа компьютера.
               После установки тихого кулера это вообще не проблема.


6. Есть сложности в настройке.
               Не каждый поймет и осилит, а тем более увидит в этом смысл



DD-WRT или OpenWRT?


OpenWRT крутая прошивка, но на x86 есть проблемы с загрузчиком.
(Не работала программная перезагрузка, т.е. только полное выключение виртуальной машины и заново ее включение.
После обновления VirtualBox до 4.3.4, вообще перестала запускаться.)



Проблем с DD-WRT тоже не получилось избежать, но она была всего одна и останавливаться на ней я не буду.



Начинаем:


image
Изначальная картина моих сетевых подключений



Для начала скачаем и установим VirtualBox, коль таковой
отсутствует, и архив, в котором присутствуют все необходимые программы и файлы.



Настраиваем (создаем) виртуальную машину. Не буду повторяться, как это сделать, можете прочитать в статье, только естественно в носителях указать наш образ прошивки скачанной раннее в архиве.



Первая настройка:


Первую настройку проще всего сделать через другую виртуальную машину с Гостевой ОС,
подключенную к роутеру по внутренней сети.
Настройку сети вы можете видеть на скришоте.



image

Запустите обе машины. Откройкте браузер в гостевой системе и
зайдите по адресу http://192.168.1.1/.



Если вы увидели следующую картинку, радуйтесь!
У вас получилось!



image

Тут достаточно просто ввести новый логин и пароль.
Смело нажимайте Change Password и после этого выключаем обе машины (роутер и ОС).



Настраиваем сеть:


1) Создаём новые интерфейсы.
В главном окне VirtualBox нажимаем комбинацию Ctrl+G.
Переходим Сеть->Виртуальные сети хоста. Создаем два
виртуальных адаптера и сразу в настройках ip поставим все в автомат:



image

2) Настраиваем сеть роутера.
Включаем все четыре сетевых адаптера.
Проверяем, чтобы везде тип адаптера был PCnet-FAST III.
Везде я разрешил неразборчивый режим.
В первом адаптере делаю сетевой мост с адаптером, в который у меня подведен интернет и
т.к. у меня идет привязка по MAC адресу, прописал точно такой же как у адаптера.



image

Второй адаптер делаем тип подключения Виртуальный адаптер хоста и
выбираем первый адаптер в имени.
Мак адрес для красоты я написал 000000000002
и в сетевых подключениях назвал подключение как 2) Router_02



image

Третий адаптер делаем по аналогии со вторым, только двойки
меняем на тройки.



image

Четвертый пока оставим неподключенным



image

А теперь договоримся:


Мы будем весь канал интернета перенаправлять на роутер и раздавать по виртуальным адаптерам.
Второй адаптер нам необходим для доступа в интернет именно этой (хостовой) машины,
а третий для раздачи сети по LAN. Иначе, если раздавать интернет, через который сидим, то
будут проблемы с маршрутизацией, как показала практика.



Заводим полностью интернет на роутер:


Отключаем в свойствах сетевого интерфейса интернета все службы, клиенты и протоколы,
кроме VirtualBox Bridged Networking Driver



image

Раздаем интернет по Lan:


Т.к. все четыре адаптера роутера у нас будут заняты, делаем сетевой мост средствами ОС.


Октлючаем всё в свойствах второй сетевой карты и уже потом объединяем в сетевой мост с 3) Router_03



image

Раздаем интернет по Wi-Fi:


Мне нравится программа MyPublicWiFi, которая тоже есть в архиве.
В принципе, вы можете выбрать любую другую. Скажу, что мне нравится многие другие аналоги, но для этой задачи она подходит идеально.
Вы ее один раз настроите и после этого она самостоятельно будет включать точку доступа.



image

После запуска точки доступа в сетевых подключениях
у вас появится еще один виртуальный адаптер Microsoft Virtual WiFi Miniport Adapter.
Все настройки IP ставим автоматически и добавляем в сетевой мост с четвертым адаптером роутера



image

Silent mod:


Скрытый запуск роутера.
Открываем с помощью procexp.exe свойства процесса роутера и копируем параметры запуска.
Редактируем файл StartRouterVirtualBox.VBS и заменяем параметры на свои.



image

Можно скрипт кинуть просто в автозагрузку.
Я предпочел другой вариант – Планировщик заданий
Создал задачу с названием «1) StartRouterVirtualBox», указал выполнять с наивысшими правами.
В триггерах создал условие при входе в систему и в действиях указал путь до скрипта.



Скрытый запуск программы MyPublicWiFi.
Создаем задачу «2) MyPublicWiFi».
Меняем учетную запись на «система» (если у вас Windows 8, то «Система») (написать ручками)
Делаем наивысшие права и делаем задачу скрытой.
В действиях указываем запуск программы,
а в триггере создаем «запуск при входе любого пользователя» с задержкой в 30 сек.



Настройка роутера:


Я не буду повторяться о том как настроить DD-WRT.
Настройку интернета и всей прошивки вы можете прочитать здесь и естественно гугл в помощь, а также видео, которое я записал.



Все файлы и видео.



Желаю всем успехов в экспериментах! До новых встреч!


Поделиться публикацией

Комментарии 38

    +1
    Прошу прощения, я пригласил этого пользователя из песочницы, а оказалось что сам пост автоматически публикуется. Получился легкий некропостинг. Исходник аж за 2013 год.
      +2
      Надеюсь, с тех пор он перешёл таки на OpenWRT
        +1
        DDWRT был весьма неплох. Хотя сейчас я бы Mikrotik виртуализировал.
          +1
          С Микротиком это не так интересно — они сразу готовые рабочие образы распространяют (Mikrotik CHR).
          Ну и к текущему моменту всё же проброс сетевых карт методами SR-IOV и/или pci passthrough более выгоден. Плюс это даст возможность управлять wifi сетями в самом виртуальном роутере.
            0
            Ткни, что почитать на эту тему, если не трудно. Мне достаточно актуально по работе. Я так понимаю, что это прямой проброс железа карточки для виртуальной машины? А обычно это просто виртуализация средствами vt-d с софтовой обработкой на CPU?
              0
              Про SR-IOV от RedHat:
              rhelblog.redhat.com/2016/05/23/sr-iov
              redhatstackblog.redhat.com/2015/03/05/red-hat-enterprise-linux-openstack-platform-6-sr-iov-networking-part-i-understanding-the-basics
              redhatstackblog.redhat.com/2015/04/29/red-hat-enterprise-linux-openstack-platform-6-sr-iov-networking-part-ii-walking-through-the-implementation

              Pci Passthrough и технология VT-D — это как раз аппаратный проброс реального устройства в виртуальную машину. Требуется поддержка от процессора и материнской платы. Аналог AMD — IOMMU. При этом гостевая система считает, что к ней подключено полноценное pci устройство с соответствующей же производительностью. Помимо сети так ещё часто подключают видеокарты для игр/расчётов на виртуальной машине. Временами — raid контроллеры, когда гостю требуется полное управление дисковой подсистемой.

              В простых ситуациях (и в этом посте) используют сетевой мост для связи виртуальной машины с реальным адаптером. При этом практически вся работа ложится на центральный процессор, что не очень хорошо сказывается на времени отклика при высоких нагрузках на систему.

              Разница между SR-IOV и pci passthrough в том, что для первого метода требуется дополнительная поддержка конкретным устройством (сетевой картой, например). При втором методе пробросить можно что угодно (но тут уже зависит от жадности производителя — nvidia очень не любит проброс видеокарт и пытается заставить людей покупать карты серии quadro).
                0
                а разве для гостя будет разница с физическим устройством? Или Nvidia детектит сам факт установки драйверов на виртуалке?
                  0
                  Да, именно факт установки драйверов на виртуалке. Причём одновременно используют несколько методов сразу.
                    0
                    А у них это лицензией запрещено?
                      0
                      Официально я такого запрета в лицензионном соглашении не вижу. Но драйвера их этим занимаются, а модифицировать их запрещено. Без драйверов же использовать видеокарту не получится.
                  0
                  Я бы сказал SR-IOV позволяет на одной сетевой карте создать несколько Virtual Function устройств и пробрасывать в виртуалку уже их, а не всю сетевую карту целиком.
                  В итоге они работают почти так же как macvlan, но силами сетевухи: отлавливая пакеты с определенным MAC-адрессом. Сделать виртуальный бридж на них не получится.
                    0
                    То есть нарезать ресурсы реальной карты на несколько виртуальных машин, и при этом каждая будет почти на уровне bare-metal работать со всем этим?
                      0
                      Именно так, сами VF, без включения IOMMU можно активировать и на хостовой машине, определяться они будут как отдельное PCI-устройство.
                      Технология IOMMU нужна как раз для того что бы осуществить этот проброс устройства непосредственно в виртуалку.
                        0
                        image
                        Нашел схему
                    0
                    nvidia очень не любит проброс видеокарт и пытается заставить людей покупать карты серии quadro


                    В KVM это обходится опцией сокрытия виртуализации для гостевой системы
                +1
                Однозначно неплох, если сравнивать со стоковой прошивкой. Но по сравнению с OpenWRT/LEDE, единственный его плюс — доступ к проприетарным драйверам.
                  0
                  Я с таким хоть и не сталкивался, но разве нет возможности в том же OpenWRT/LEDE собрать проприетарный модуль руками (нативным или кросс-компилятором — роли не играет) и поставить драйвер в систему явным образом (руками)?
                  Заголовочники то всяко доступны ИМХО
              +1
              Ну не совсем некропостинг ИМХО.
              Сама идея актуальна и по сей день. Особенно на тестинге, где одна физическая машина и куча виртуалок.

              Я в 2017-м использовал подобную схему на тестинге:
              — Хостовая OS debian jessie, ядро 2.6.32-vz, OpenVZ 6
              — Внутри контейнеры OpenVZ+виртуалки KVM

              Была задача, для которой надо было xtables-addons. Собираться на кастомном ядре данный аддон отказался. В итоге я поднял VM (стандартная jessie), которая служила шлюзом, тем самым решив проблемы со сборкой xtables-addons, и, попутно освободив хостовую ОС от задач шлюза.

              P.S. Задача, по сути, та же, что и у автора, только заместо WRT был использован debian
              0
              Заводил как-то Mikrotik CHR под VBox на удаленной машине (рабочая станция SCADA с доступом в сеть АСУ) за кучей NATов. Оттуда поднимал VPN к своему офисному маршрутизатору, и уже через туннель имел из офиса полный доступ к сети АСУ и SCADA станции.
                0
                В бесплатном варианте там bandwidth зарезан?
                  0
                  Да, пользовался бесплатным, с ограничением на интерфейс 1Mbps. Но для моих задач «выше крыши» хватало.
                    +1
                    Не обязательно. Делаете на сайте триальную лицензию на 60 дней и скорость 1Гб/10Гб.
                    По истечении ничего не происходит. Только нельзя обновится. Но многие идут дальше и перевыпускают лицензию на еще 60 дней и так далее.

                    image

                    Эта якобы «дырка» работает уже не первый год и была озвучена на MUM.

                      0
                      /system license generate-new-id

                      /system license renew account=#####@gmail.com password=##### level=p-unlimited

                      /system license print
                        0
                        Санкции не прилетят?)
                          0
                          А разве вы что-то нарушаете? Я же выше написал, что этот «хак» был озвучен на официальной конференции MikroTik.
                          На профильном форуме по хакам ни о каких последствиях ничего не пишут. Напомню, что это работает уже полтора года. Если бы латыши думали что это плохо, то наверно бы прикрыли это.
                            0
                            Я попробую) Спасибо.
                    0
                    Вчера мне за 5мин. до начала матча Россия-Египет приспичило мне достать с полки неиспользуемый (но заранее настроенный) декодер IPTV от Ростелекома. Декодер шёл по акции вместе с пакетом интернет+тв за 300руб./50Мбит и нафиг не был нужен. Но я вспомнил, что РТК аннонсировал бесплатные HD-трансляции ЧМФ 2018.
                    Внезапно (с), выяснилось, что мой роутер (не так давно был перепрошит OpenWRT) by default, оказался без поддержки igmp мультикастинга. В результате, я почти весь первый тайм имел секс с настройкой роутера. Хорошо, что голы пошли именно во втором тайме :)
                    Я к чему это всё… в dd-wrt, насколько я помню, галочка включить поддержку igmp proxy доступна «из коробки».
                      +1
                      К слову, igmpproxy в OpenWrt включается одной командой установки opkg. Ну и разрешить igmp snooping на нужном интерфейсе.
                      А вот дальше начинается увлекательное приключение по отлову сетей из которых идет вещание через syslog и добавление их в altnet'ы.

                      Вообще интересно, как это реализовано одной галочкой в DD-WRT, ибо igmprpoxy там тот же самый, просто конфиг заполняется автоматически.
                        0
                        Udpxy и забыть igmpproxy как страшный сон. (плейлист придётся немного переделать)
                          0
                          плейлист в приставке ростелекома? у них не поддерживаются софт-плееры.
                          0
                          попробовал igmpproxy. обычные каналы работают отлично, а вот часть HD-каналов рассыпаются (как назло, матч-HD и Россия-1 HD). непонятно почему. нагрузка на проц. роутера около 1%. альтнет прописал тот, что нужно.
                          пока остановился на бридже порта приставки с wan-портом.
                        0
                        А кто-нибудь, для простого домашнего использования, пробовал отечественную прошивку Wive-NG?
                        Мне визуально показалось, что эта прошивка на дешевом роутере уделывает по скорости дорогие и навороченные роутеры.
                        Но, правда, не даёт глубоко разбирать пакеты данных.
                          0
                          Почему никто не вспоминает про pfsense? Для виртуального роутера эта система просто на порядок лучше, чем openwrt. Да и для физического тоже.
                            0
                            А чем лучше? Просто интересно, я его никогда не щупал.
                              0
                              Удобнее и мощнее. Буквально любое действие делается из web интерфейса, есть плагины. По количеству функций сравнима, наверное, с микротиком, или даже превосходит его. Имеет просто лучший, web интерфейс из всех, что я видел, который полностью избавляет от необходимости лезть в консоль. Но на любой дешевый роутер эту систему не поставишь, так как под капотом там полноценная FreeBSD.
                              Вот посмотрите только, как оно выглядит, информативно, красиво и настолько же функционально. Категорически советую попробовать.
                              Заголовок спойлера
                              image
                                0
                                Красиво, но у меня уже везде микротики. Буду иметь в виду.
                                  0
                                  pfsense/opnsense удобны, когда нужно организовать софтовую маршрутизацию с дополнительными фичами какими-либо. Например — отказоустойчивая маршрутизация с сохранением соединений при переключении на резерв и автоматичесим реплицированием конфигурации (CARP+pfsync+XMLRPC Sync). И встроенным haproxy. И squid. А ещё отследить попытки взлома (IPS). И при этом авторизовать пользователей в Active Directory.
                            0
                            Здесь документ не найден

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое