开发者社区 > 域名解析DNS > 云解析DNS > 正文

建议OSS客户端加入静态DNS记录

我这边经过测试发现,很多地方的DNS服务都有无法解析 *.oss.aliyuncs.com 域名的可能,但OSS客户端(我用的Java)只能使用域名解析。


在这些地方客户端经常会出现 UnknownHostException,因此没办法在我们产品中加入了强制Java更改内部DNS缓存将域名 oss.aliyuncs.com 解析到IP地址 42.120.62.35 上才会好些。


我希望能在OSS内部就实现这个功能,例如在连接之前先 InetAddress.getByName("oss.aliyuncs.com"),如果出现 UnknownHostException,则改用内置的静态IP进行连接,这样就会减少因部分地方DNS服务不稳定导致的问题。

展开
收起
yipsilon 2013-10-09 11:35:43 12160 0
4 条回答
写回答
取消 提交回答
  • Re建议OSS客户端加入静态DNS记录
    2013-11-21 18:01:12
    赞同 展开评论 打赏
  • Re建议OSS客户端加入静态DNS记录
    IP无法保证不发生变化,如果内置在SDK里面,当阿里云官方IP变化了,SDK无法保证及时更新的。这时用户会出现无法使用。

    不支持泛域名解析应该是某些小运营商的DNS服务器不规范导致的
    2013-10-10 16:40:34
    赞同 展开评论 打赏
  • 回1楼mayle的帖子
    就算再强大的DNS也会出问题的,比如前段日子CN域名拒绝服务攻击使很多软件都出了问题,像QQ这样的使用IP访问的软件就没有问题,这就是个很好的反例。

    我觉得阿里云的客户端SDK应该具备自动检测域名解析功能,如果检测失败就是用内置的IP地址访问,这样不至于在将来的DNS攻击时影响到服务。

    -------------------------

    回3楼mayle的帖子
    如果IP很久不会更新的话,为什么不加上一个内置IP列表的特性呢。

    毕竟谁都不敢保证DNS还会不会出现之前那种问题,也无人可以保证所有地区的运营商DNS都可以解析阿里云的域名,而使用IP地址访问是最直接有效的手段。

    我们现在就是尽力在应用层缓存IP,但有个问题在于,bucket是动态的,也就是说 hello.oss.aliyuncs.com 或 world.oss.aliyuncs.com 都是指向一个IP,但我们无法知道客户使用什么 bucket 名字登录,而缓存所有的bucket很不现实,不至于打开软件先把所有的buckets都获取一遍吧,这样安全性也会有问题。

    为何SDK不能加入这个容错的功能呢?

    -------------------------

    Re建议OSS客户端加入静态DNS记录
    问题是有时候根本无法解析呀。比如一个铁通的网络,安装完软件后一次没用,但是启动不起来,就是因为域名解析失败。那样的话怎么办?软件还能不用了么,但软件也没有权限改windows下的hosts,这种情况只能在SDK里写死IP地址,应用层缓冲都没用。
    2013-10-09 12:45:10
    赞同 展开评论 打赏
  • DNS的问题,跟阿里云反映很久了,不只是OSS,其他比如RDS、OCS、CDN等等,都受域名的影响,只可惜他们一直都不改善DNS解析的问题,至于客户端做兼容处理,个人会觉得作用不是特别大

    -------------------------

    回 2楼(yipsilon) 的帖子
    SDK和QQ是有区别的,QQ三天两头更新,能保证内置的IP列表随时保持最新,但是SDK很可能被人引用后很久都不更新,内置的IP列表不一定适用。这个操作更合适在应用层实现,你在应用层缓存IP,稍加改动下SDK来适应你的IP缓存

    -------------------------

    回 4楼(yipsilon) 的帖子
    还是应用层缓存比较合适,每次解析完就缓存下来,下一次解析不了的时候就自动使用上一次缓存的IP,把这个IP列表写死到SDK里面真心不合适
    2013-10-09 12:29:15
    赞同 展开评论 打赏

阿里云云解析DNS产品相关资讯

相关产品

  • 云解析DNS
  • 相关电子书

    更多
    OSS运维进阶实战手册 立即下载
    《OSS运维基础实战手册》 立即下载
    OSS运维基础实战手册 立即下载

    相关镜像