You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2下Erlang/OTP长名称模式节点连接及net_adm:names()冻结问题

Erlang长名称(longnames)模式下RPC调用问题排查

问题场景

  • 本地机器名Pandora,启动后台节点命令:
    erl -detached -noshell -name 'node1@Pandora' -setcookie pandemic
    
  • 脚本使用name_domain => shortnames时运行正常,切换为name_domain => longnames后报错:
    =ERROR REPORT==== 6-Oct-2024::14:09:07.875238 ===
    ** System running to use fully qualified hostnames **
    ** Hostname Pandora is illegal **
    
  • 后续处理:创建本地erl_inetrc文件设置{domain, "myoffice.loc"},修改节点名为'testnode@Pandora.myoffice.loc'和'node1@Pandora.myoffice.loc'并配置ERL_INETRC环境变量后,脚本在net_adm:names()处冻结,但erl_epmd:names()可正常运行。

原因分析

  1. 两个函数的工作机制差异
    • erl_epmd:names()仅直接查询本地epmd服务,不依赖DNS解析,所以能正常执行。
    • net_adm:names()会尝试通过DNS反向解析匹配主机名,当系统无法解析Pandora.myoffice.loc这个FQDN时,会因DNS查询超时导致冻结。
  2. 长名称模式的解析要求
    longnames模式要求节点名中的主机部分必须是可解析的FQDN,不仅要正向解析到IP,还需要反向解析回对应主机名。仅通过erl_inetrc设置域名后缀,没有在系统层面完成解析配置,Erlang无法完成必要的DNS校验。

解决步骤

  • 配置本地hosts文件
    在/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)中添加以下内容,让系统直接解析该FQDN:
    127.0.0.1   Pandora.myoffice.loc Pandora
    ::1         Pandora.myoffice.loc Pandora
    
  • 重启节点
    关闭原有节点,使用正确的长名称重新启动:
    erl -detached -noshell -name 'node1@Pandora.myoffice.loc' -setcookie pandemic
    
  • 验证解析有效性
    先在终端执行ping Pandora.myoffice.loc,确认能正常解析到本地IP,再运行脚本测试net_adm:names()是否恢复正常。

补充:erl_inetrc的domain设置仅用于补全短主机名的后缀,前提是补全后的FQDN能被系统解析,否则仍会出现网络相关问题。

内容的提问来源于stack exchange,提问作者sthames42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:01:06