« - »

Anycast DNS avec OSPF

28 January 2013

Pour faire simple, tu veux déployer un service critique (le DNS) sur ton réseau, sans devoir gérer pleins d’adresses IP pour tes différentes fermes de serveurs.
Principe de fonctionnement :
une ip anycast est une /32 injecté dans le réseau, elle ne fait pas parti d’un lan en particulier c’est une loopback annoncé par un protocole de routage.

Par exemple :

Tu as plusieurs routeurs sur plusieurs sites différents, R1.site1 et R1.site2 pour faire simple. Tu veux redonder le dns resolver afin qu’il ne soit plus localisé uniquement sur un seul et unique site ( Cela simplifie la maintenance)

Configuration routeurs :
R1.SITE1
interface Loopback0
ip address 10.0.0.1 255.255.255.255
!
interface GigabitEthernet1/0/1
description “direct interco to R1.SITE2″
ip address 192.168.42.1 255.255.255.252
!
interface GigabitEthernet1/0/2
description “direct interco to DNS.SITE1″
ip address 192.168.42.17 255.255.255.252
!
router ospf 1
router-id 10.0.0.1
passive-interface default
no passive-interface GigabitEthernet1/0/1
no passive-interface GigabitEthernet1/0/2
network 192.168.42.0 0.0.0.3 area 0
network 192.168.42.16 0.0.0.3 area 0

R1.SITE2
interface Loopback0
ip address 10.0.0.2 255.255.255.255
!
interface GigabitEthernet1/0/1
description “direct interco to R1.SITE1″
ip address 192.168.42.2 255.255.255.252
!
interface GigabitEthernet1/0/2
description “direct interco to DNS.SITE2″
ip address 192.168.42.21 255.255.255.252
!
router ospf 1
router-id 10.0.0.2
passive-interface default
no passive-interface GigabitEthernet1/0/1
no passive-interface GigabitEthernet1/0/2
network 192.168.42.0 0.0.0.3 area 0
network 192.168.42.20 0.0.0.3 area 0

Grosso modo ici, on a parametré les interfaces réseaux, les routeurs discutent en OSPF entre eux et vont discuter avec les DNS.

Configurations DNS :

Sur chaque serveur anycasté, il faut déployer un daemon de routage, ici on utilise Quagga sur FreeBSD.
/etc/rc.conf de DNS.SITE1
hostname=”DNS.SITE1″
gateway_enable=”YES”
quagga_enable=”YES”
quagga_daemons=”zebra ospfd”
ifconfig_em0=”inet 192.168.42.18/30″
cloned_interfaces=”lo1 lo2″
ifconfig_lo1=”inet 10.0.0.3/32″ #Loopback routeur
ifconfig_lo2=”inet 192.168.0.1/32″ #La fameuse ip anycast

/usr/local/etc/quagga/ospfd.conf
router ospf
ospf router-id 10.0.0.3/32
redistribute connected metric-type 1
passive-interface default
no passive-interface em0
network 192.168.42.16/30 area 0.0.0.0
distribute-list VIP out connected
!
access-list VIP permit 192.168.0.1/32

/etc/rc.conf de DNS.SITE2
hostname=”DNS.SITE2″
gateway_enable=”YES”
quagga_enable=”YES”
quagga_daemons=”zebra ospfd”
ifconfig_em0=”inet 192.168.42.22/30″
cloned_interfaces=”lo1 lo2″
ifconfig_lo1=”inet 10.0.0.4/32″ #Loopback routeur
ifconfig_lo2=”inet 192.168.0.1/32″ #La fameuse ip anycast
/usr/local/etc/quagga/ospfd.conf
router ospf
ospf router-id 10.0.0.4/32
redistribute connected metric-type 1
passive-interface default
no passive-interface em0
network 192.168.42.20/30 area 0.0.0.0
distribute-list VIP out connected
!
access-list VIP permit 192.168.0.1/32

Donc maintenant, chaque DNS envoi l’ip 192.168.0.1/32 à son voisin routeur en OSPF.

Il ne reste plus qu’a faire écouter le serveur dns sur 192.168.0.1/32.

 

 

 


Comments are closed.

Sorry, the comment form is closed at this time.