Por que o rsyslog só recicia infinitamente ao escutar com o UDP?

0

Este é um follow-up para esta questão . Estou tentando entender o potencial de recursão com o rsyslog. Eu tenho uma configuração rsyslog simples que envia syslogs para um pipe nomeado, bem como para 127.0.0.1 (ou seja, estou tentando intencionalmente causar recursão). Eu esperava que se eu emitisse um syslog, rsyslog seria infinitamente recursivo por causa da regra que encaminha o syslog para localhost, mas a experiência a seguir mostrou que isso só é verdade quando rsyslog está escutando pelo UDP e não pelo TCP. Alguém pode explicar por que isso é assim?

(Nota: eu fiz mkfifo /tmp/foopipe -m666 primeiro, para criar o pipe nomeado usado nos experimentos abaixo)

As seguintes configurações rsyslog ...

# dummy.conf

$ModLoad imudp.so
$UDPServerRun 514

local7.*                                  @127.0.0.1
&                                         |/tmp/foopipe

... produz recursão infinita se você fizer " cat < /tmp/foopipe " em um terminal e " logger -p local7.info "Test" " em outro (isto é, no terminal onde você faz cat , você verá uma inundação sem fim do " Teste "syslog impresso". Isso parece esperado. Mas por que, então, faz a seguinte configuração ...

# dummy.conf

$ModLoad imtcp.so
$InputTCPServerRun 514

local7.*                                  @127.0.0.1
&                                         |/tmp/foopipe

... não produz recursão infinita? O syslog "Test" é impresso apenas uma vez na janela em que você faz o cat . Tudo o que fiz foi mudar a escuta do UDP para o TCP.

Nota: Acredito que RepeatedMsgReduction esteja desativado por padrão e deve ser ativado explicitamente, porque se eu adicionar $RepeatedMsgReduction on ao primeiro arquivo de configuração (aquele com $UDPServerRun ), o syslog "Test" será impresso duas vezes no terminal onde você faz cat . Se eu adicionar $RepeatedMsgReduction off ao segundo arquivo de configuração (aquele com $ InputTCPServerRun), então o syslog "Test" ainda será impresso apenas uma vez no terminal onde você executará cat . Portanto, RepeatedMsgReduction parece ter alguma relevância para a escuta UDP, mas aparentemente não afeta a ausência inesperada de recursão na escuta TCP.

Grato por qualquer percepção que a comunidade possa oferecer.

    
por StoneThrow 17.07.2018 / 20:43

0 respostas