> It's reasonable if you don't use distributed Erlang.
Not sure I understand. When I ran "apt install ejabberd", it
auto-installed Erlang via apt.
> I can reproduce this, as far as I investigated, it is caused by the option
> BindIPv6Only=both
> in the socket file. When systemd binds to IPv6 address, it also listens to
> IPv4
> packets, which makes address already in use.
I was finally able to listen on "127.0.0.1" only, because opening 4369
publicly is asking for trouble[1].
# ss -tulpn|grep epmd
tcp LISTEN 0 4096 127.0.0.1:4369 0.0.0.0:*
users:(("epmd",pid=2370007,fd=3),("systemd",pid=1,fd=199))
To do this, I had to:
1. Run: systemctl edit epmd.socket
2. Add 2 lines line this:
### Editing /etc/systemd/system/epmd.socket.d/override.conf
### Anything between here and the comment below will become the contents
of the drop-in file
[Socket]
ListenStream=
ListenStream=127.0.0.1:4369
### Edits below this comment will be discarded
3. Run: systemctl restart epmd epmd.socket
> Anyway, I don't think that's a bug in epmd.socket. It works as intended.
I think there is a bug because when I edit like below, epmd failed to
restart.
[Socket]
ListenStream=127.0.0.1:4369
I need to add "ListenStream=" - unsure if this is a correct fix but some
people mentioned this on other forums.
[1] website "4369 Pentesting Erlang Port Mapper Daemon (epmd)"