运行Solana RPC节点遇连接超时及公网IP识别问题求助
解决Solana RPC节点连接超时及公网IP识别问题
环境信息
- 系统:Ubuntu 22.04
- Solana版本:solana-cli 1.18.21 (src:818807a5; feat:4215500110, client:SolanaLabs)
问题分析
从日志看,核心问题有两个:
- 无法连接Solana主网entrypoint节点,持续出现连接超时
- 系统无法自动识别节点的公网IP地址,影响集群通信
解决方案
1. 排查网络连通性
- 测试entrypoint端口可达性:执行命令验证能否连接主网entrypoint
若输出"Connection refused"或超时,说明网络存在限制。nc -zv entrypoint.mainnet-beta.solana.com 8001 - 检查本地防火墙规则:Ubuntu默认使用ufw,执行
sudo ufw status查看规则,确保出站方向开放以下端口:sudo ufw allow out 8000:8020/tcp sudo ufw allow out 8001/tcp - 云服务器安全组检查:如果是云主机,需在安全组中配置出站规则,开放8000-8020、8001端口。
2. 手动指定公网IP
添加--public-ip参数强制指定节点公网IP,修复自动识别失败问题。修改启动脚本,在参数列表末尾添加:
--public-ip 你的公网IP地址 \
3. 调整entrypoint配置
- 替换为就近entrypoint:如果默认entrypoint延迟过高,可更换为区域节点(比如亚洲区节点),或直接使用解析后的IP地址避免DNS解析问题。
- 延长RPC超时时间:可尝试添加
--rpc-timeout 10000(单位毫秒)提升连接容错性。
4. 检查端口占用
验证动态端口范围8000-8020是否被其他进程占用:
sudo lsof -i :8000-8020
若有占用,杀掉对应进程或调整--dynamic-port-range参数更换端口范围。
5. 验证版本兼容性
虽然1.18.21是稳定版本,仍建议更新到最新稳定版确保与集群兼容:
solana-install update
修改后的启动脚本示例
#!/bin/bash set -e set -u export RUST_LOG=error solana-validator \ --identity /var/solana/data/config/validator-keypair.json \ --known-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \ --known-validator GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ \ --known-validator DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ \ --known-validator CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S \ --only-known-rpc \ --full-rpc-api \ --no-voting \ --ledger /var/solana/data/ledger \ --accounts /var/solana/accounts \ --log /home/r630/solana-rpc.log \ --rpc-port 8899 \ --rpc-bind-address 127.0.0.1 \ --private-rpc \ --dynamic-port-range 8000-8020 \ --expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \ --entrypoint entrypoint.mainnet-beta.solana.com:8001 \ --entrypoint entrypoint2.mainnet-beta.solana.com:8001 \ --entrypoint entrypoint3.mainnet-beta.solana.com:8001 \ --entrypoint entrypoint4.mainnet-beta.solana.com:8001 \ --entrypoint entrypoint5.mainnet-beta.solana.com:8001 \ --wal-recovery-mode skip_any_corrupted_record \ --init-complete-file /var/solana/data/init-completed \ --limit-ledger-size \ --public-ip 你的公网IP地址 \
内容的提问来源于stack exchange,提问作者Jack Liu
相关产品推荐
相关产品推荐

