It supports clients connecting over TCP (which can be encrypted) and Websockets (can also be encrypted), you can configure it to pick on any port you want and it works through Network Address Translation (see
https://docs.nats.io/running-a-nats-service/configuration#co...). Even supports MQTT clients directly (
https://docs.nats.io/running-a-nats-service/configuration/mq...)