我有一个Fortigate 100D,带有2个BT业务无限光纤连接,作为WAN1& WAN2.
BT线路每个都有5个静态公共IP,我通过CloudFlare托管我的DNS,指向其中一个WAN连接上的静态IP.
(假设您在mylesgray.com上执行nslookup,您将看到217.45.201.1作为公共IP).
我们希望A记录的冗余(对于托管网站,VPN,ssh等),但显然2x BT线路有2x不同的公共IP集合,所以如果WAN1发生故障,我们就死了 – 没有故障转移因为地址是静态的.
我查找了外部DNS故障转移,但这对我来说似乎很乱并且非常错误(循环赛让我烦恼).然后任播成为一个选项,然而,Anycast似乎需要和整个/ 24块或一些ISP的演员甚至/ 22.我们正在运行企业级路由器,因此使用BGP等不是问题.
任何人都可以了解如何实现DNS A-Records的故障转移,而不是购买/ 22块IP或使用循环DNS?
解决方法
只是几个注意事项:Anycast并没有真正提供A记录故障转移.你提到“外部DNS故障转移”和roundrobin – 这些都不是一回事. Roundrobin具有相同主机名的多个A记录.当链路断开时,DNS故障转移正在将单个A记录更改为不同的IP地址,理想情况下,在链接恢复时将其更改回来.
正如Lukas所提到的,由于他提到的原因,DNS故障转移通常不是最好的方式.它确实适用于大多数用户,但是缓存和DNS服务器的延迟会忽略TTL,这将影响故障转移到备用IP地址的时间.
如果您希望继续沿着这条道路前进,那么提供此服务的各种第三方DNS服务(DNSMadeEasy,Amazon Route 53,以及许多其他服务)都是如此.如果它们充当您的DNS服务器,一些各种链接平衡器(PepLink,Baraccuda)也可以执行DNS故障转移的变体.根据您的环境,您还可以编写自定义脚本来检查链接状态并根据需要更新IP地址.
除非您拥有并管理自己的ASN和IP地址块,否则BGP不会为您提供任何救济.理想的解决方案是将您自己的IP块和ASN应用于您当地的区域互联网注册机构(RIPE / ARIN /等),并运行您自己的路由器以通过适当的链接通告该路由.