使用公网IP跨机器运行Corda节点时连接失败问题
排查Azure上Corda节点公网连接失败的解决方案
我来帮你捋捋这个公网连接失败的问题——Azure上部署Corda节点遇到这种内外网差异的情况挺常见的,咱们从几个核心方向一步步排查:
1. 先查Azure网络安全组(NSG)的端口规则
这是最容易踩坑的点:
- 确认两台VM的公网NSG(包括子网级和VM级)都开放了Corda节点的P2P通信端口(默认是10002),还有RPC端口(如果需要的话比如10003),而且是双向允许(入站和出站都要开)。
- 快速验证端口是否可达:在本地或者另一台公网机器上执行
telnet <目标公网IP> 10002或者nc -zv <目标公网IP> 10002,如果连接超时,那大概率是NSG或者防火墙的问题。
2. 检查Corda节点的配置文件
节点自身的地址配置错了,公网肯定连不上:
- 打开节点的
node.conf,确认p2pAddress字段填的是公网IP+端口,而不是内网IP。比如正确配置应该是:p2pAddress="your-public-ip:10002" - 另外,如果配置了
advertisedServices,里面的地址也要改成公网可访问的,不然其他节点从网络映射拿到的还是内网地址,自然连不通。
3. 确认Azure公网IP的关联与NAT设置
- 先看VM的公网IP是不是静态分配的——动态IP重启后会变,之前的配置就失效了。
- 如果用了NAT网关或者负载均衡,检查端口映射规则:公网的10002端口要准确转发到VM内网的10002端口,别搞混了端口号或者映射到了错误的VM。
4. 别忘了VM操作系统的防火墙
NSG开了端口,系统防火墙也可能拦:
- Linux系统:执行
sudo ufw allow 10002/tcp开放端口,或者用sudo iptables -L查看是否有拒绝公网流量的规则。 - Windows系统:打开防火墙高级设置,添加入站规则,允许10002端口的TCP流量。
5. 网络映射(Network Map)的注册地址要对
如果你们用了Corda的网络映射服务,一定要确保节点在映射里注册的是公网IP——其他节点会从这里获取你的节点地址,要是注册的是内网IP,公网环境下根本找不到你。
6. 最后检查路由与DNS解析
- 如果用了域名绑定公网IP,先执行
nslookup <你的域名>确认解析正常,别是DNS缓存或者解析错误导致连不上。 - 查看VM的路由表,有没有自定义路由把公网流量错误导向内网,导致公网请求无法到达VM。
你可以先从NSG和节点配置这两个最常见的点开始排查,先验证端口是否能通,再逐步缩小范围,应该能很快定位问题。
内容的提问来源于stack exchange,提问作者viswa
相关产品推荐
相关产品推荐

