背景与目标
正在设置基于 Unbound 的高可用性 DNS 服务器。实际上,两个 DNS 服务器都有 12 个针对不同路由器的 BGP 会话,但为了简化此操作,下面仅显示了一个路由器。
两个 DNS 服务器都在 localhost ( 10.100.0.1, 10.100.0.2)上配置了相同的两个地址,并且它们都使用 BGP 通告这些地址。问题是,如果其他路由器首选的 DNS 服务器挂起,则在 BGP 切换到两个地址的第二个 DNS 服务器之前会超时。我的目标是让每个 DNS 服务器对这两个地址之一负主要责任,因此 DNS 客户端不必等待 BGP 超时,而是按照他们最了解的方式处理故障转移。我不想在其他路由器上添加配置,只想在 DNS 服务器上添加配置。
+------------+
| |
+---+ Router 1 +---+
| | | |
| +------------+ |
| |
+-----+----+ +----+-----+
| | | |
| DNS 1 | | DNS 2 |
| | | |
+----------+ +----------+
(primary) 10.100.0.1 10.100.0.1
10.100.0.2 10.100.0.2 (primary)
问题与疑问
在下面的配置中,我如何让 DNS 110.100.0.1以更高的本地优先级宣布,以便其他路由器选择此服务器而不是 DNS 2,后者也宣布此 IP 但优先级较低?
router bgp 65002
bgp router-id 10.0.0.1
bgp confederation identifier 42xxx
bgp confederation peers 65001 65002
network 10.100.0.1/32
network 10.100.0.2/32
neighbor 10.0.0.10 remote-as 65001
neighbor 10.0.0.10 route-map only-local-ASes out
!
ip as-path access-list only-local-ASes permit ^$
!
route-map only-local-ASes permit 10
match as-path only-local-ASes
我应该创建一个只为匹配的前缀 10.100.0.1 添加本地首选项 200 的路由映射吗?我遇到的问题是,这使得路由器只宣布 10.100.0.1 前缀,而不是同时以不同的偏好宣布两者(也是 10.100.0.2)。
软件
Linux kernel 4.4.0
Ubuntu 16.04 server
Quagga 0.99.24.1