What uses port 4369
Erlang and Elixir nodes register with the Erlang Port Mapper Daemon on 4369, which tells other nodes which port to use for distribution. RabbitMQ and CouchDB clusters depend on it. Combined with a leaked Erlang cookie, an exposed epmd allows remote code execution, so keep it on the cluster network.
Should port 4369 be open to the internet?
Keep private. Never expose this port to the internet. Keep it on localhost, a private network or behind a VPN or SSH tunnel.
Check what is listening on port 4369
sudo ss -ltnp 'sport = :4369'
sudo lsof -nP -iTCP:4369 -sTCP:LISTEN
Get-NetTCPConnection -LocalPort 4369 -State Listen
netstat -ano | findstr :4369
No output means nothing is listening. If a service should be, check that it is running and which address it binds to: 127.0.0.1 only accepts local connections, 0.0.0.0 or :: accepts them on every interface.
Fix “address already in use” on port 4369
Another process already holds the port. Find it with the commands above, then stop that service properly, or end the process:
sudo kill $(sudo lsof -t -iTCP:4369 -sTCP:LISTEN)
Stop-Process -Id (Get-NetTCPConnection -LocalPort 4369 -State Listen).OwningProcess
Allow port 4369 from trusted networks only
The examples allow 4369 only from 10.0.0.0/8; replace it with your own private network, office IP or VPN range.
sudo ufw allow from 10.0.0.0/8 to any port 4369 proto tcp
# Close it again:
sudo ufw delete allow from 10.0.0.0/8 to any port 4369 proto tcp
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="4369" protocol="tcp" accept'
sudo firewall-cmd --reload
New-NetFirewallRule -DisplayName "Erlang Port Mapper (epmd) 4369/TCP" -Direction Inbound -Protocol TCP -LocalPort 4369 -Action Allow -RemoteAddress 10.0.0.0/8
On AWS, Google Cloud and Azure, also allow the port in the security group or network firewall rules; host firewalls and cloud firewalls are separate.
Test port 4369 from another machine
nc -zv example.com 4369
Test-NetConnection example.com -Port 4369
Related ports
- Port 5672 (AMQP (RabbitMQ)): the AMQP port used by RabbitMQ and other message brokers.
- Port 15672 (RabbitMQ management): the web UI and HTTP API of the RabbitMQ management plugin.
More messaging and queues ports
1883 (MQTT) , 4222 (NATS) , 5060 (SIP) , 5222 (XMPP client) , 8883 (MQTT over TLS) , 9092 (Apache Kafka) . See all ports in the port lookup.
Sources
Spotted a mistake? Email hello@devtoolsmith.com and we’ll fix it.
Frequently asked questions
What is port 4369 used for?
Port 4369 is used by epmd, which lets Erlang nodes such as RabbitMQ find each other. Erlang and Elixir nodes register with the Erlang Port Mapper Daemon on 4369, which tells other nodes which port to use for distribution. RabbitMQ and CouchDB clusters depend on it. Combined with a leaked Erlang cookie, an exposed epmd allows remote code execution, so keep it on the cluster network.
Is it safe to open port 4369?
Never expose this port to the internet. Keep it on localhost, a private network or behind a VPN or SSH tunnel. Allow it only from the networks that need it, as in the firewall examples on this page.
How do I check if port 4369 is open?
On the server, list listening sockets with "sudo ss -ltnp 'sport = :4369'" on Linux or "sudo lsof -nP -i :4369" on macOS. From another machine, run "nc -zv host 4369" or, on Windows, "Test-NetConnection host -Port 4369". Connection refused means nothing is listening; a timeout means a firewall is dropping the traffic.