Solana配置WebSocket URL后8900端口未在netstat显示排查
Solana修改WebSocket配置后端口未监听问题
问题描述
计划将WebSocket URL设置为如下地址:
http://0.0.0.0:8900
已执行操作:
- 执行
solana config get命令获取config.yaml文件存储路径 - 按目标地址修改文件内的WebSocket URL配置项
- 完成节点与服务重启后,执行
netstat -tulpn命令查看端口监听状态,发现8900端口并未出现在监听列表中
配置校验结果:
修改文件后再次执行solana config get,返回结果如下,可见WebSocket URL已成功更新为目标地址,但端口始终未正常监听:
Config File: /home/centos/.config/solana/cli/config.yml RPC URL: http://api.devnet.solana.com WebSocket URL: http://0.0.0.0:8900 Keypair Path: /home/centos/solana/validator-keypair.json Commitment: confirmed
待确认疑问:
- 是否需要完成其他额外配置?
- 是否节点无法识别config.yaml配置文件?
- 是否启动节点时需要传入额外的启动参数?
问题原因与解决方案
核心认知偏差:你修改的
/home/centos/.config/solana/cli/config.yml是Solana CLI客户端的配置文件,仅控制CLI工具发起请求时的连接目标,完全不会影响Solana节点服务端的监听配置,改这个文件不可能让节点开启8900端口的监听。
正确配置步骤如下:
- 节点服务端的端口监听必须通过启动参数指定,不会读取CLI的config文件配置。如果要让节点开启8900端口的WebSocket服务,启动节点时需要传入
--ws-port 8900参数。 - 如果需要允许非本地地址访问节点服务,还要同时传入
--bind-address 0.0.0.0参数,否则服务默认只会绑定127.0.0.1本地回环地址,外部无法访问。 - 注意
0.0.0.0是服务端绑定监听的专用地址,不能作为客户端连接的目标地址。如果CLI需要连接本地节点的WebSocket服务,要把CLI配置里的WebSocket URL改成ws://127.0.0.1:8900,否则CLI会连不上本地服务。 - 配置完启动参数重启节点后,再执行
netstat -tulpn就能看到8900端口处于正常监听状态。
内容的提问来源于stack exchange,提问作者KorayB
相关产品推荐
相关产品推荐

