Многие сервисы умного дома (тот же AdGuard Home или шлюзы) требуют работы на портах, которые уже заняты на хосте (например, 53 или 80 порт). Вижу вариант использовать macvlan сеть, чтобы выдавать контейнерам отдельные IP-адреса из подсети роутера. Подводные камни?[cite: 1]
Главный подводный камень macvlan: по соображениям безопасности контейнер с macvlan не может связываться с хост-машиной по сети. То есть, если у тебя HA и MQTT на одном сервере, и MQTT в macvlan — HA до него просто не достучится без хитрых маршрутов.[cite: 1]
Решается созданием bridge интерфейса на хосте. Заморочено, но работает. Я использую macvlan только для Pi-hole, чтобы он получал нормальный IP и я мог прописать его в DHCP роутера.[cite: 1]
Зачем такие сложности? Ставишь Nginx Proxy Manager (или Traefik) на 80/443 порты, и разруливаешь трафик к контейнерам по доменным именам, а не по портам. Для 53 порта (DNS) да, лучше повесить на другой интерфейс.[cite: 1]
Я маквлан использую для контейнера с торрентами, чтобы роутер мог отдельное правило QoS для него применять.
Кстати, если использовать ipvlan вместо macvlan, то связь с хостом работает из коробки.
С ipvlan есть свои баги на старых ядрах, лучше через bridge интерфейс разруливать.