node-RED and HA don’t communicate ‘natively’ unless you want to spend a lot of time creating your own rest / websockets commands manually.
I may be wrong, but I think this ‘integration’ is the only one that’s actively maintained (and it is, very actively maintained).
As it says, node-RED and HA communication is done by websockets and rest, they can therefore live on separate hosts. Authentication is provided by a long-lived access token which you create in HA and configure in nodered (instructions in the installation docs for node-red-contrib-home-assistant-websocket).
There is also an HA custom component as which works with node-red-contrib-home-assistant-websocket. Most functionality works without it, but it gives you the ability to create, populate and directly change sensor nodes and switches in HA.