Сейчас для домашней сети есть запасной канал выхода в интернет - это usb Yota модем. Модем подключается к ноде Proxmox, на который запущена виртуальная машина с OPNsense. В Proxmox это выглядит как отдельный bridge, но он привязан к ноде, в которую воткнут модем.

Зачем

Для поддержки удобной миграции машин (в идеале автоматически, в режиме HA) нужно отказаться от физического подключения модема к ноде Proxmox и дать возможность работать сразу по сети, доступной на всех трех нодах.

Самое простое решение

Самым простым решение, как мне кажется, является покупка 4g модема с сетевым портом или роутера с лотком для SIM-карты. Но для этого нужно искать, выбирать и платить деньги. У меня же уже есть модем Yota, есть Orange Pi Zero2 c usb и ethernet портом, нужно только собраться и настроить их для работы вместе.

Сетевой план

Так как порт ethernet только одни, это будет своеобразная вариация на тему Router-on-a-Stick. Максимальные скорости для Yota были намерены плюс-минус такими:

Измерение скорости Yota

А значит имеющегося gigabit-ного порта хватит с запасом. Можем в момент подключения будет создавать виртуальный ethernet адаптер в системе. Этот вирутальный адаптер раздает ip адреса по DHCP. Что бы не пересекаться с DHCP от ДОМ.РУ или DHCP локальной сети, нужно закинуть виртуальный интерфейс в виртуальную сеть (VLAN). Инфраструктура в виде управляемых свитчей уже есть, и “донести” интернет до кластера внутри VLAN не представляется чем-то сложным. Но и доступ из локальной сети к Zero2 нужно оставить. Итого план:

  • создать bridge;
  • создать vlan подключение на Zero2;
  • добавить в bridge подключение от модема и подключение с vlan.

Настройка

На Zero2 установлен Armbian 24.8.4, и есть NetworkManager (nmcli), именно через него и будет производиться настройка. Для начала создаем bridge:

1
nmcli con add type bridge ifname yotabr con-name yotabr connection.autoconnect yes
  • type bridge - установка типа подключения как bridge;
  • con-name yotabr - название подключения;
  • ifname yotabr - название интерфейса для привязки соединения.

Далее добавляем VLAN подключение сразу в новый bridge yotabr:

1
nmcli con add type vlan con-name end0.10 dev end0 id 10 master yotabr connection.autoconnect yes
  • type vlan - установить тип подключения vlan;
  • con-name end0.10 - название подключения, обычно состоит из устройства и номера vlan разделенных точкой;
  • dev end0 - основное физическое устройство, на которое vlan будет находиться;
  • id 10 - номер vlan (vlan tag);
  • master yotabr - указывает, к какому bridge интерфейсу подключиться это соединение.

Далее нужно добавить второй интерфейс в bridge, а именно модифицировать интерфейс созданный модемом ( enxac50431aeefd):

1
nmcli con modify enxac50431aeefd master yotabr
  • master yotabr - указывает, к какому bridge интерфейсу подключиться это соединение.

После этого нужно перезагрузить все соединения:

1
nmcli con reload

Вывод списка соединений:

1
2
3
4
5
6
7
zero2:~:# nmcli con
NAME             UUID                                  TYPE      DEVICE          
end0             64e76368-2378-3d3a-a0f0-fe3c38fade98  ethernet  end0            
yotabr           036256de-8f8e-4af1-a5e3-e0f1daef8ae9  bridge    yotabr          
end0.10          53ba1a30-1e61-42bd-811a-5bc8efed44ad  vlan      end0.10         
enxac50431aeefd  0cc8a663-882d-3387-b788-dedba9a11749  ethernet  enxac50431aeefd 
lo               6d969597-5e5d-4f21-9cc1-60cddbd8e1d0  loopback  lo

Итог

Теперь на свитч попадают 2 сети от Zero2:

  • vlan 1 - общая локальная сеть;
  • vlan 10 - сеть с доступов в интернет Yota.

Благодаря этому сам Zero2 остается доступным из локалки, а интернет “доставляется” до OPNsense и не виден из общей сети. На уровне подключения виртуальной машины в Proxmox теперь нужно только выставить нужный тег:

Настройка vlan-ов для подключения в OPNsense