Eu não posso dizer com certeza porque você config não funciona, mas eu uso rsyslog para enviar mensagens para logstash e não tenho problemas. Se você puder enviar tráfego para logstash usando nc, e o logstash estiver configurado para receber logs tanto no UDP quanto no TCP, e você estiver usando as mesmas portas, como você diz, isso deve funcionar.
Você é capaz de simplificar sua configuração? Você diz que há um firewall entre as duas máquinas, você pode desativá-lo para fins de teste ou reproduzir em uma VM sem firewalls?
Na minha configuração eu uso a seguinte configuração, esta deve ser uma maneira muito confiável de enviar logs. Eu recomendaria usar o TCP (ou seja, @@ over @), pois ele deve ser mais confiável que o UDP e, se falhar ao enviar a seguinte configuração, as mensagens serão enfileiradas no disco e na memória, para que você possa corrigi-las sem perder mensagens:
# start forwarding rule 2
$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName logstash # set file name, also enables disk mode
$ActionResumeRetryCount -1 # infinite retries on insert failure
$ActionResumeInterval 10 # Attempt resuming after 10 seconds
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down
$ActionQueueMaxDiskSpace 200M #Limit the amount of space used on disk to 200M
$ActionQueueSize 20000 # Limit the amount of messages to queue in memory to 20000, average size is 512 bytes, so shouldn't be greater than 10M
*.* @@logstash:5114;RSYSLOG_SyslogProtocol23Format # end forwarding rule 2
Lembre-se de que, se você estiver enviando com o UDP e as mensagens não forem recebidas, o remetente não saberá e continuará perdendo as mensagens até que alguém identifique o problema.