Eu finalmente resolvi isso. Acontece que todos os malucos de rede mal-intencionados causados por tentar encaminhar o tráfego macvlan atrapalharam o filtro de caminho reverso do kernel, fazendo com que ele descartasse os pacotes. Eu tive que setar rp_filter = 0 para qualquer interface que o tráfego atravessasse.