I have an internal server, which uses a certain service.
Geralmente dizemos que um cliente usa um serviço. Um servidor fornece um serviço. Eu acho que você quer dizer o último.
This service listens on a port, and speaks on a different port.
É incomum que um serviço exija duas portas, a maioria gerencia a comunicação bidirecional com uma única porta. O FTP é a única exceção comum.
The problem with the service is that it can't listen and speak on the same IP address,
Isso é extremamente incomum (até estranho).
so I have configured 2 IP addresses for that NIC, and so I "solved" the problem with the listening and speaking.
I have a problem though...
I need that server to be NATed, with a public IP address, and that server needs to be available from the outside (and as only one IP)...
Isso não é obviamente um problema.
The question is, how do I solve the situation here?
If I do a NAT for one IP address (the listening port), then he will be able to get requests from the outside, but won't be able to send out traffic (because the other IP won't have NAT).
Normalmente, o NAT se aplica a todos endereços IP na LAN. Então eu não entendo o problema. O roteador que está fazendo o NAT lembra quais números de portas estão associados a quais endereços IP internos + números de porta.
If I do NAT on both of the IPs, then when traffic comes in for the listening port, it won't necessarily arrive to the listening IP, but rather to the speaking one.
Não, você usa apenas o encaminhamento de porta (que é diferente do NAT) para conexões de entrada. O NAT se encarrega de distinguir entre conexões existentes e associar cada uma a um endereço IP interno.
I hope I made myself clear and that there is a sensible solution here that I am missing.
Talvez eu tenha me entendido mal, Se você puder esclarecer a questão, talvez valha a pena.