Есть компьютеры А и Б.
На обоих компьютерах по две сетевых карты: А1, А2 и Б1, Б2. Одной картой каждый компьютер смотрит в общий медленный свич 100Mbps (А1, Б1), вторые карты 1Gbps соединены кроссом (А2, Б2).
Адрес медленной подсети 10.1.8.0/21, адрес подсети кросса - 192.168.10.0/24.
ИП-адреса компьютеров: А1 - 10.1.8.27/21, А2 - 192.168.10.2/24, Б1 - 10.1.8.20/21, Б2 - 192.168.10.1/24.
На компьютере А стоит proxmox ve (debian), там запущен KVM где крутятся виртуальные винды. Винды соединены с дебианом бриджами на интерфейс А1 и получают ип-адреса из медленной подсети от DHCP-сервера. Виртуальным машинам руками задаются мак-адреса. Эмпирическим путём установлено, что ип-адреса для виртуальных машин DHCP-сервер выдаёт из диапазона 10.1.13.0/24.
На компьютере Б стоит Solaris 11 Express, работает файлопомойкой.
Проблема собственно в том, что виртуальные машины общаются с файлопомойкой через медленный свич.
Задача - научить общаться виртуальные машины и файлопомойку через быстрый кросс.
Для этого надо сообщить компьютерам А и Б нужные маршруты.
Если в сторону файлопомойки к таблице маршрутизации компьютера А достаточно добавить всего один статичный маршрут с меньшей, чем дефолтная метрикой, то как задать маршруты в обратную сторону - от компьютера Б к виртуальным машинам я не знаю, ибо у виртуальных машин ип-адреса - динамические.
Возможно ли, например, перед отправлением пакета адресату, находящемуся в той же подсети, проверять мак-адрес назначения, и если этот адрес в списке адресов виртуальных машин - слать пакет через кросс?
Крайний вариант - выдать виртуальным машинам статик-адреса и добавлять статичный маршрут в компьютер Б до каждой виртуальной машины.
Ещё вариант - выдать А2 и Б2 адреса из 10.1.8.0/21, но что дебиан, что солярка крайне толково прописывают дефолтные маршруты, придётся их учить задавать маршрут на определённом интерфейсе не для всей подсети, а для конкретного ип-адреса, чего я тоже пока не умею и хочу оставить как другой крайний вариант.