您的位置:首页 > 其它

解决由于内外网导致的无法访问dubbo上面的服务

2018-04-18 15:16 288 查看
内网: 172.21.16.8

外网:140.143.38.68

在服务器部署了dubbo服务和 一个提供方

启动后dubbo看到的提供方的ip是172.21.16.8:20880

这样消费服务从其他服务器访问该dubbo服务,就无法调用,由于172.21.16.8是内网。

这是由于dubbo绑定的本机ip

InetSocketAddress address = new InetSocketAddress(port);
Channel serverChannel = bootstrap.bind(address);

public InetSocketAddress(int port) {
this(InetAddress.anyLocalAddress(), port);
}


InetAddress.anyLocalAddress()一般就是0.0.0.0/0.0.0.0,如果我们有两块网卡,一块内网,一块外网,那么都能访问这个socket,这通常是不安全的。

InetAddress.getLocalHost().getHostAddress()取回的 结果是 hostname 这个结果,结果拿到的就是内网172.21.16.8

要解决这个问题需要在/etc/hosts 加入外网ip

140.143.38.68 test
127.0.0.1  localhost
::1         localhost localhost.localdomain


这样hostname 取到的结果就是外网IP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐