Привет, народ. Нужна подсказка по работе docker контейнеров на хосте, где есть два интерфейса - eno1 (lan) и wg0 (wireguard), при том, что через wg0 идет 0.0.0.0/0.
Проблема следующая. Если wg0 отключен, то контейнеры, у которых дефолтная docker0 сеть, т.е. не network=host, могут подключаться без ограничений ко всему и в пределах lan, и за пределами (1.1.1.1, линукс.орг.ру и т.д). Как только я поднимаю wg0, доступ у контейнеров ко всему, кроме lan, пропадает.
Правила nftables на хосте такие:
chain forward {
type filter hook forward priority 0; policy accept
ct state established, related accept
iifname $DOCKERIFC oifname { $MAINIFC, $VPNIFC } accept
oifname $DOCKERIFC iifname { $MAINIFC, $VPNIFC } accept
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept
ct state invalid drop
oifname $MAINIFC ip saddr $DOCKERNET snat to $SERVIP
oifname $VPNIFC ip saddr $DOCKERNET snat to $SERVIP_VPN
}
DOCKERIFC, MAINIFC, VPNIFC - интерфейсы докера, wan и wg соответственно. DOCKERNET - сеть докера, SERVIP - лан адрес хоста, SERVIP_VPN - wg адрес хоста.
Чую, что проблема в правилах построутинга, но не могу понять, в чем конкретно.