Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
    Публичный IPv6 на интерфейсе контейнера

    Публичный IPv6 на интерфейсе контейнера

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Публичный IPv6 на интерфейсе контейнера, RouterOS
     
    Kentzo
    Guest
    #1
    0
    14.04.2025 05:45:00
    Я не вижу простого решения для динамического выделения IPv6-адреса из префикса, который мне назначает провайдер. NPTv6 / NATv6 кажется самым простым с точки зрения управления, но как-то неправильно это ощущается. Какой подход используете вы?
     
     
     
    kryptonian
    Guest
    #2
    0
    16.05.2025 14:41:00
    Я не уверен, есть ли другой способ, ведь с DHCPv6-PD префикс может неожиданно измениться. Думаю, один из вариантов — использовать скрипты, которые срабатывают при смене префикса. Назначать IPv6-адреса на veth-интерфейсы контейнеров тоже не самое удобное решение.
     
     
     
    tangent
    Guest
    #3
    0
    17.05.2025 22:45:00
    Я не могу проверить это прямо здесь из-за $REASONS, но если этот контейнер запущен на шлюзовом роутере (то есть том, который отправляет DHCPv6 PD-запрос провайдеру), то проброс VETH должен работать вместе с этим: /ipv6 address add address=::123 from-pool=ipv6 interface=veth1. Это назначит статический IPv6-адрес ::123 из префикса PD для veth1. Вся фишка в том, как связаться с этим же контейнером, если ты не знаешь динамический префикс? Какой толк ты получил от этого маленького успеха? Вторая проблема — я не вижу, как это может заработать на любом другом устройстве с RouterOS в сети, потому что они не поймут, что значит “from-pool=ipv6”. Мне кажется, что при смене префикса нужно обновлять кучу всего, включая локальный DNS, который позволяет не заморачиваться, какой конкретно IPv6-адрес достался конкретному контейнеру.
     
     
     
    Kentzo
    Guest
    #4
    0
    19.05.2025 02:49:00
    Думаю, вот эта часть меня сбивает с толку. Почему добавление интерфейса veth в бридж делает их «всё как одно»? Мне просто не понятно это предложение. На ссылке veth1 указан адрес маршрутизатора. А какой тогда адрес у контейнера? Ты хочешь сказать, что он будет настроен через SLAAC?
     
     
     
    tangent
    Guest
    #5
    0
    17.05.2025 22:52:00
    Новый, улучшенный план Б: выбираем случайный ULA для этой локальной сети и назначаем его контейнеру: /ipv6 address  
    add address=fddf:dffd:fdfd::123 advertise=no interface=veth1  
    add address=fddf:dffd:fdfd::1 advertise=yes interface=bridge  

    Так вы получите неизменяемый IPv6-префикс для использования в LAN. Причём, наличие нескольких IPv6-префиксов в одной локальной сети — не только нормально, но и практически неизбежно. Обычно я вижу примерно 4 адреса на каждом интерфейсе, которые активно используют IPv6.  

    Вам нужны оба этих адреса: второй рассылает сообщения RA другим узлам в сети, чтобы они получили алиасы в той же IPv6-сети, а первый позволяет хостам LAN обращаться конкретно к контейнеру, привязанному к veth1. (Кстати, второй адрес даёт роутеру, который рассылает эти RA, адрес ::1.)
     
     
     
    Kentzo
    Guest
    #6
    0
    18.05.2025 11:12:00
    В этих примерах вы присваиваете адрес роутеру, а не контейнеру.
     
     
     
    tangent
    Guest
    #7
    0
    18.05.2025 20:23:00
    Читайте внимательнее: «interface=veth1»
     
     
     
    Kentzo
    Guest
    #8
    0
    18.05.2025 21:31:00
    Сторона маршрутизатора на связке veth1. Сторона контейнера настроена в /interfaces/veth.
     
     
     
    tangent
    Guest
    #9
    0
    18.05.2025 21:35:00
    Тогда я должен предположить, что вы пропустили моё предложение соединить VETH.
     
     
     
    Kentzo
    Guest
    #10
    0
    18.05.2025 21:51:00
    Наверное, я совсем тупой, раз не могу связать факты воедино.
     
     
     
    tangent
    Guest
    #11
    0
    18.05.2025 22:39:00
    Если ты объединяешь VETH в мост, то можешь назначить ему любой IPv6-адрес, какой захочешь. Единственный логичный способ назначить GUA без знания префикса — это тот, что я описал в первом ответе, потому что он требует доступа к пулу PD. Во втором ответе я предложил альтернативу с использованием ULA как обходного пути, после чего можно сделать 1:1 NAT, чтобы показать адрес в публичной сети, если ты пытаешься настроить WAN-сервис.
     
     
     
    Kentzo
    Guest
    #12
    0
    19.05.2025 00:32:00
    Я могу назначить любой IPv6 как на стороне роутера, так и на стороне контейнера, не привлекая мосты, работая напрямую с интерфейсом veth. Также использую подход с ULA + NAT / NPT. Я не понимаю, чем помогает присвоение адреса через from-pool на стороне роутера для ссылки veth1. В контейнере нет SLAAC, откуда он должен получить адрес? Извините, я действительно не понимаю, как ваш совет здесь помогает…
     
     
     
    tangent
    Guest
    #13
    0
    19.05.2025 00:39:00
    Прежде чем отвечать на каждое ваше замечание, поймите, что у меня то, что я предложил выше, здесь работает на все 100%. Единственный случай, когда это может не сработать у вас — если вам нужно что-то, выходящее за рамки моего понимания. В этом случае ваша задача — чётче объяснить, чего именно вы пытаетесь добиться.  

    Когда вы подключаете veth к мосту, там нет «двух сторон». Это одно целое. В контейнере нет SLAAC — это функция стекa Linux, который в данном случае обеспечивает RouterOS. Я говорю, что RouterOS должен назначить IPv6-адрес veth контейнера. В чём здесь сложность?
     
     
     
    tangent
    Guest
    #14
    0
    19.05.2025 00:47:00
    Возможно, вам придётся полностью пересоздать контейнеры, чтобы изменения адреса вступили в силу. Некоторые элементы этого процесса фиксируются в RouterOS, например, в файле /etc/hosts.
     
     
     
    CGGXANNX
    Guest
    #15
    0
    19.05.2025 04:41:00
    По моим наблюдениям, SLAAC внутри контейнеров RouterOS работает не полностью. Похоже, что сам контейнер не отправляет multicast-сообщения Router Solicitation. Даже если добавить префикс на мосте с интерфейсом VETH и включить рекламу, нельзя рассчитывать, что контейнер сразу после запуска получит IPv6-адрес. Контейнер выбирает адрес для себя только тогда, когда получает сообщение Router Advertisement (RA) от моста. Это значит, что при стандартных настройках может пройти до 10 минут, пока контейнер не получит IPv6-адрес из префикса моста через SLAAC (интервал RA по умолчанию установлен на 200–600 секунд). Кроме того, контейнер не использует информацию о шлюзе из RA, а это значит, что если вы не задали «gateway6» на интерфейсе VETH, то даже при получении сообщения RA у контейнера не будет маршрута по умолчанию для IPv6. То есть, если вы хотите, чтобы контейнер сразу имел возможность выходить в интернет по IPv6, нужно сделать следующее: добавить статический IPv6-адрес на интерфейс VETH, но не через /ipv6 address, а в свойствах интерфейса VETH; указать адрес маршрутизатора на мосту как gateway6 для VETH. Если у вас нет статического глобального префикса, придется использовать случайный ULA-префикс. В этом случае потребуются NAT-правила, я предпочитаю правило srcnat netmap, чтобы связать ULA-префикс с GUA-префиксом исходящего WAN-интерфейса. Если вы хотите использовать только SLAAC, можно не добавлять статический IPv6-адрес на VETH, но «gateway6» все равно обязателен. И, конечно, нужно быть готовым к тому, что первые несколько минут контейнер не будет иметь IPv6-соединения, пока не получит RA-мультикаст-сообщение.
     
     
     
    mantouboji
    Guest
    #16
    0
    21.05.2025 14:26:00
    Я использую netmap. Получаю IPv6 /64 адрес для интерфейса моста "dockers" из пула PD и использую его префикс для каждого контейнера.

    /interface bridge add comment="Dockers bridge" igmp-snooping=yes name=dockers vlan-filtering=yes  
    /interface veth add address=192.168.88.52/24,fd80:1111:2222:3333:192:168:88:52/64 comment="iperf3 docker" gateway=192.168.88.1 gateway6=fd80:1111:2222:3333::1 name=veth-iperf  
    /interface bridge port add bridge=dockers interface=veth-iperf  
    /ipv6 address add address=fd80:1111:2222:3333::1 advertise=no interface=dockers  
    /ipv6 address add address=::1 comment=Dockers from-pool=v6pool interface=dockers  
    /ipv6 firewall nat add action=netmap chain=srcnat comment=DockerNETMAPv6 src-address=fd80:1111:2222:3333::/64 to-address=240e:1234:5678:1e0c::/64  
    /ipv6 firewall nat add action=netmap chain=dstnat comment=DockerNETMAPv6Rtn dst-address=240e:1234:5678:1e0c::/64 to-address=fd80:1111:2222:3333::/64  

    Использую скрипт, прикреплённый к /ipv6/dhcp-client, чтобы обновлять префикс на лету:  
    set pre [/ipv6/pool/used get [find info="dockers" pool="v6pool"] prefix]
    # заменяем ::/62 на ::/64  
    :local newpre2 ([ :pick $pre 0 ([:len $pre] - 1)]."4")

    /ipv6 firewall nat set [find comment=DockerNETMAPv6] to-address=$newpre2
    /ipv6 firewall nat set [find comment=DockerNETMAPv6Rtn] dst-address=$newpre2
     
     
     
    Kentzo
    Guest
    #17
    0
    22.05.2025 04:54:00
    Действия snpt и dnpt mangling также можно использовать вместо netmap ( https://github.com/Kentzo/routeros-scripts-custom/blob/9c37e5d76e78b302bb0932e2e4dc5aaf3abf85dc/ipv6-npt.rsc#L72-L110 ), если отслеживание соединений не требуется.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры