Loading...
 
[Zobrazit/Skrýt nabídky vlevo]
[Zobrazit/Skrýt nabídky vpravo]

anycastDNS

V siti 2connect bezi 2 rekurzivni DNS, ktere pouzivaji anycastove smerovani provozu. Protoze i pri redundatnich DNS v resolv.conf je vypadek DNS serveru casto velice znat (aplikace pouzije jeden DNS, pripadne vysoky timeout na kazdy dns request atp), implementoval jsem anycastove adresovani DNS serveru, kdy vice DNS serveru sdili IP adresy a pomoci dynamickeho routingu je zajisteno, ze pri vypadku jednoho z nich obslouzi tuto IP adresu druhy DNS server.

Aby bylo mozne snadno debugovat problemy s DNS a bylo mozno zkouset pri problemu druhy DNS, je anycast udelan tak, ze jsou stale 2 IP adresy (+ 2xIPv6), oznacme je jako IP-DNSA a IP-DNSB. Routing je nastaven tak, ze server DNSA obsluhuje defaultne IP-DNSA a totez druhy, DNSB obsluhuje IP-DNSB. Druhou adresu nalezici defaultne druhemu serveru kazdy z nich oznamuje do OSPF s vetsi cenou. Cili v pripade vypadku jednoho serveru se v siti objevi routa na jeho IP s vyssi cenou, ale funkcni.

Adresace:

DNSA 109.205.72.80 2a00:1238:2c::1
DNSB 31.170.176.80 2a00:1238:2c::2


Lokace:
Jeden DNS server bezi na LH3 (ovz_2connect_dnsa), druhy bezi v Zabehlicich na jalovici (ovz_2connect_dnsb_prod)

OSPF

Kazdy server ma 3 interfacy, pricemz jeden (eth0) je spojovacku na svuj router (kazdy DNS pouziva jako ospf neighbor jiny router) a ostatni 2 interfacy slouzi jen jako "drzaky IP adres A a B. Normalne se pouziva dummy interface (napr.), ale ve VZ byl s dummy problem, takze jsou 2 ifacy pichnute do stejneho dummy bridge.

Takto udelano je to proto, abychom v birdu mohli jednotlivym IP adresam priradit ruzne OSPF cost, coz pri ospf stub interface nejde, pak je cost stejne velka (alespon se to ta jevilo podle testu).

Cili v birdu je definovan protocol ospf vuci juniperu na spojovacim interfacu a obe IP adresy A a B jsou propagovany do OSPF jako connected, pricemz ve filtru je jim nastavena rozdilna cena, viz prilozene bird configy pro ipv4 a ipv6.

Do OSPF importujeme pouze tyto 2 routy a exportujeme defaultni routu, vic neni potreba.


Overeni funkce:
Na serveru DNSA bezi bind, kdezto na DNSB bezi unbound, takze si muzeme overit, ze nam odpovida skutecne ten server, ktereho se ptame, napr dotazem:

[dan@zarja ~]$ dig version.bind txt chaos @31.170.176.80
;; ANSWER SECTION:
version.bind.           0       CH      TXT     "unbound 1.4.20"
[dan@zarja ~]$ dig version.bind txt chaos @109.205.72.80
;; ANSWER SECTION:
version.bind.           0       CH      TXT     "9.9.4-RedHat-9.9.4-29.el7_2.2"


Primo na serveru muzeme overit routing v birdc konzoli birda:

bird> show ospf neighbors 
ospf1:
Router ID       Pri          State      DTime   Interface  Router IP   
109.205.72.24   128         full/ptp    00:11   eth0       109.205.72.216


pripadne overit routy exportovane a importovane do/z OSPF protokolu (vc. metriky metriky/cost danych IP):

bird> show route all export ospf1
31.170.176.80/32   dev eth2 [direct1 14:51:47] * (240)
        Type: device unicast univ
        OSPF.metric1: 16777215
        OSPF.metric2: 1000
        OSPF.tag: 0x00000000
        OSPF.router_id: 0.0.0.0
109.205.72.80/32   dev eth1 [direct1 14:51:47] * (240)
        Type: device unicast univ
        OSPF.metric1: 16777215
        OSPF.metric2: 100
        OSPF.tag: 0x00000000
        OSPF.router_id: 0.0.0.0

bird> show route protocol ospf1
0.0.0.0/0          via 109.205.72.216 on eth0 [ospf1 14:51:56] * E1 (150/100) [109.205.72.24]


Created by darek. Last Modification: Úterý 01 of březen, 2016 11:52:15 CET by darek.