Задать вопрос

Подключение по одному ip через разные сетевые карты?

Дано:
локальный сервер из ноутбука (samsung np355v5c)
операционка - ubuntu server 26.04
Есть два сетевых интерфейса (ethernet и wif) у каждого из которых свой mac и ip
Настроил бандинг через netplan, что бы приоритетным подключением всегда был ethernet, но если он отвалится, подключение происходит через wif.

Я хочу подключаться к серверу по одному ip вне зависимости от того какой сетевой интерфейс работает - ethernet или wifi. Однако если ethernet отваливается, то ip меняется с ip ethernet на ip wifi. bond0 почему то просто подтягивает mac и ip сетевого интерфейса.

мой .yaml в netplan

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0:
      dhcp4: false

  wifis:
    wlp3s0:
      dhcp4: false
      access-points:
        "SSID-name":
          password: "password"

  bonds:
    bond0:
      dhcp4: true
      interfaces:
        - enp2s0
        - wlp3s0
      parameters:
        mode: active-backup
        primary: enp2s0
        mii-monitor-interval: 200
        up-delay: 400
        down-delay: 400
        gratuitous-arp: 5

  • Вопрос задан
  • 533 просмотра
Подписаться 3 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Хекслет
    Fullstack-разработчик на Node.js
    16 месяцев
    Далее
  • Stepik
    Основы работы в консоли Linux, настройка сетевых служб (кластер)
    4 недели
    Далее
  • Skillfactory
    Профессия C++ разработчик
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 4
@Zerg89
Добавте параметр fail_over_mac: none, хотя он вроде по умолчанию такой должен быть
Также может быть прикол с random mac на wifi, но и тут в ubuntu это дополнительно настраивается, по умолчанию используется mac железки(может в параметрах драйвера что-то похожее есть и он рандомит mac)

Ps опять ии глючит в документации net-plan
fail-over-mac-policy (scalar)
Set whether to set all ports to the same MAC address when adding them to the bond, or how else the system should handle MAC addresses. The possible values are none, active and follow.


none
Назначить всем резервным каналам один и тот же МАС-адрес. Это самое простое, но у промежуточных коммутаторов, когда они видят один и тот же МАС-адрес на нескольких портах сразу, запросто может съехать крыша.
active
MAC-адрес многоканального соединения всегда соответствует адресу текущего активного канала. МАC-адреса каналов не изменяются, вместо них при переходе на резервный канал изменяется адрес самого многоканального соединения. В этом случае хосты, пользующиеся данным соединением, не смогут возобновить передачу, пока у них не обновится кэш ARP.
follow
MAC-адрес многоканального соединения назначается обычным образом (по MAC-адресу первого канала, включённого в его состав). Адреса резервных каналов не изменяются до тех пор, пока они не включатся в работу. В этот момент новому каналу назначается MAC-адрес многоканального соединения, а старому — адрес от нового канала.
Ответ написан
Комментировать
Daemon23RUS
@Daemon23RUS
mii-monitor-interval: 200
Разве работает на WiFi - ?
у bound dhcp4: true Посмотрите, но мне кажется что он при переподключении будет запрашивать IP у DHCP, я бы поставил статику
ну и arp-monitor: на шлюз чуть ли не единственное средство в этом конфиге адекватно оценивать линию.
P.S. про fail_over_mac_policy: follow забыл упомянуть, в этом кейсе follow на мой взгляд лучше
Ответ написан
Комментировать
ValdikSS
@ValdikSS
Чтобы bonding работал, он должен быть настроен на обеих сторонах подключения (компьютер и роутер). Не уверен, что это полноценно возможно через Wi-Fi (может и возможно).

Если задача только в том, чтобы машина была доступна и через Ethernet, и через Wi-Fi, и это одна и та же логическая сеть, достаточно назначить одинаковый IP-адрес через оба подключения. Приоритеты метрикам NetworkManager назначит автоматически именно так, как вы хотите.
На машине дополнительно нужно:
1. sysctl net.ipv4.conf.eth0.arp_filter=1
2. sysctl net.ipv4.conf.wlan0.arp_filter=1

На роутере желательно уменьшить срок жизни ARP, иначе придётся ждать до 60 секунд переключения для приёма ответных пакетов, т.к. в не-bond-режиме gratuitous ARP не настроить на таймаут: sysctl net.ipv4.neigh.XXX.gc_stale_time=5 (но также см. net.ipv4.conf.INTF.arp_notify).
Ответ написан
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Альтернативное и более простое решение — отказоустойчивый DNS. Просто ставите и настраиваете у себя любой DNS сервис с поддержкой режима отказоустойчивости (failover) и работаете с вашим сервером через его имя, а не IP адрес.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы