Eu resolvi meu problema. O erro se deve ao fato de o ntp 4.2.8 descartar (e desabilitar por padrão) a ferramenta ntpdc
e o modo de comunicação que estava usando (também conhecido como mode7).
Do ntp 4.2.8 e versão mais recente, a ferramenta ntpq
deve ser usada no lugar de ntpdc. Agora suporta os mesmos comandos do ntpdc. Então eu posso rodar ntpq -c kerninfo <container_host>
com sucesso. O comando ntpq
usa um modo diferente (também conhecido como modo6) para a comunicação.
Com o ntp 4.2.8, ainda é possível reativar o mode7 para suportar a compatibilidade com ferramentas que ainda não migraram. Deve-se adicionar a seguinte linha no /etc/ntp.conf
:
enable mode7
No entanto, deve-se ter muito cuidado com a restrição. Como parece que o modo de ativação7 e a saída do servidor ntpd muito abertos, poderiam ser usados para conduzir ataques de amplificação de DDoS. Atualmente estou usando a restrição padrão para IPv4 e IPv6 no Ubuntu, que - eu acho que - bloqueia o uso desse modo:
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
Como collectd suporta apenas mode7 (veja issue # 932 ), eu decidi reativar este modo em minha configuração dentro do contêiner. Contanto que o ntp suporte a reativação deste modo, esta mudança deve corrigir o problema que o collectd não pode monitorar o ntpd no Ubuntu 16.04 (ou qualquer distro usando o ntp 4.2.8 +).
Observação: para que as pessoas encontrem uma solução melhor se encontrarem esse problema, irei editar a pergunta para que ela seja menos enganosa em relação ao NAT, que, embora inicialmente, fosse a causa raiz.