您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>数值算法/人工智能>

通过AWS创建无服务器的动态DNS系统

大小:0.6 MB 人气: 2017-10-12 需要积分:1
网络中的系统,就需要了解网络的公共IP地址。初创公司、小型企业还有家庭网络经常会使用动态的公共IP地址,这些地址在变更时不会另行作出通知。由于地址是变更的,人们无法以可靠地方式从外部访问这些系统。动态DNS系统通过在网络中运行软件代理,保持DNS记录与公共IP地址同步更新,来解决这一问题。只要保证DNS记录是最新的,就能找到相应的网络。
  在本文中,我们讲述了如何通过一个小脚本与一些AWS服务来构建自己的动态DNS系统。也有其他系统能提供类似的解决方案,然而只用AWS服务与几行代码来构建无服务器系统确实简单合算;下面是在AWS上如何构建自己的无服务器解决方案的案例。
  我们用在动态DNS系统中的AWS服务
  在下文中,我们会展示如何使用下面的AWS服务来构建动态DNS微服务:
  (AWS Lambda)[https://aws.amazon.com/lambda/]可用于运行PythonJavaNode.js的代码,而无需管理底层服务器。代码随时可以运行,不过只有每次执行时才会加载,以100毫秒增量。Lambda可以通过AWS SDK管理其他AWS服务。Lambda的功能可以通过Amazon API Gateway或者其他AWS服务所发送的event,按预定计划触发。Amazon API Gateway是一种托管服务,可以为运行在Amazon EC2、Lambda或者其他网络应用之上的后端服务建立公共API前端。Amazon Route 53是一种托管的DNS服务,提供服务允许用户自全球DNS服务器对域名与DNS 区域进行注册与管理。与所有AWS服务一样,Route 53也是通过API来管理的。Amazon S3是一个具有高可用性、高耐久度的对象存储服务。通常用于存储图片之类的静态资源,不过用来存储配置信息、或者其他无服务器/无状态系统的信息也是很好的选择。
  动态DNS系统的逻辑流程
  下面的图片展示了客户端是怎样向API Gateway和Lambda服务包发起API请求,以获得IP地址的。
  通过AWS创建无服务器的动态DNS系统
  客户端知道自己的公共IP后,向我们的服务发送了另一个请求,设置DNS记录。Lambda通过咨询S3中的一个配置文件,来确认请求是否有效。如果核实有效,Lambda就会通过API调用,在Route 53中设置DNS条目。现在,网络当前的IP是公共DNS,可以通过标准的DNS查询来获取。
  通过AWS创建无服务器的动态DNS系统
  使用AWS Lambda与Amazon Route 53获取动态DNS的好处
  当然还有其他可用的动态DNS系统,下面列举了我们系统的一些优势。
  容易设置:样例客户端中包含了所有代码、设置与设置自己AWS账户的指南。架构单薄:更新API只需三个命令。支持大多语言,可以自行编写客户端,并能运行在Windows、Linux、OS X、Raspberry Pi、Chrome OS与DD-WRT/ Tomato USB路由固件之上。支持任意数量的客户端、主机名与域名。价格低廉,1-2美元/mo。Route 53 每个区域成本为0.5美元/月,DNS查询花费为0.01美元/25万个,e而更新DNS所需的Lambda请求为0.01美元/万次。无服务器微服务。因为代码在Lambda上运行,因此运行自己的Linux主机不需耗费成本或维护费用。安全。权限划分细致:只有获得授权的客户端才能更新自己的主机名。只有通过加入到DNS中的地址,客户端才能更新系统。调整当前DNS,只需简单的修改。可以在当前的DNS供应商处保留原本的example.com区域,并在AWS中使用第二个dynamic.example.com区域。代码开源,架构可扩展。想要向系统增加自己的功能,或请关注后续文章。我们打算演示该如何借助加强版系统,从网络或漫游的笔记本对Amazon EC2实例进行公开存取。
  前提条件
  AWS(Amazon Web Services)帐号。新账号有资格享受AWS Free Tier服务。自己的域:由Amazon Route 53或其他供应商托管。通过Route 53,只需每年10美元便可注册一个域。
  在自己的AWS帐号上构建动态DNS系统
  读到这里,信息量已经足够,你可以开始构建自己的系统副本了。如果想要了解更多相关信息,请往下看。如果想要开始构建,请访问Git repository下载图例说明,与所有必要的代码及配置信息。
  系统运作的详细描述
  首先,客户端需要知道分配给自己网络的公共IP。如果从自己的网络向互联网服务发送请求,则该服务会看到从你的外部IP地址发出请求。
  在我们的系统中,以Get mode调用API,就会返回相应的公共IP地址:
  https://….amazonaws.com/prod?mode=get
  {“return_message”: “176.32.100.36”, “return_status”: “success”}
  在后端,API Gateway将请求转化为JSON,并将请求发送方的IP地址发给了Python Lambda的函数。然后,Lambda会通过API Gateway将JSON回应与IP返回给客户端。

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!