» » DNS Views

DNS Views

Geplaatst in: Nieuws, Techniek | 0
Snowdon View
Snowdon View

DNS Views

U zult niet vaak een plaatje zoals rechts getoond associeren met een artikel over DNS Views. Het is echter een fraai uitzicht.

Al een heel aantal jaren gebruikt 3DN haar eigen DNS service. In het verleden hebben we besloten om hiervoor Power DNS te kiezen vanwege de zeer solide support voor meerdere verschillende back-ends. Recent hebben we tevens een secondary DNS geimplementeerd op onze POP in Vietnam. Door de veelzijdige backend implementatie van PDNS was het eenvoudig voor ons om een MySQL slave op te zetten waarvan PDNS gebruik maakt.

Echter, één feature missen we erg in PDNS. Er lijkt geen eenvoudige manier te zijn om DNS views op te zetten. De auteurs van PDNS hebben deze ontwerp keuze toegelicht en DNS views zullen niet worden geimplementeerd in PDNS. Hun redenatie is eenvoudig ‘Draai twee copies van PDNS, ze zijn beiden gratis! PDNS is een mooi, gratis, opensource product dus als 3DN gaan we ons daar zeker niet over beklagen.

Wat zijn Views

Stel u voor dat u wilt dat verschillende netwerken verschillende IP adressen moeten terug krijgen. Deze situatie is vrij vaak voorkomend, bijvoorbeeld:

  • U wilt dat hosts in een LAN interne IP adressen krijgen voor resources die zowel public als private zijn.
  • U wil spamlords redirecten naar de bitbucket nadat ze geidentificeerd zijn.
  • U wilt dat verschillende landelijke netwerken een lokaal datacenter IP adres terugkrijgen van de DNS

De laatste situatie is exact wat onze voornaamste reden is om DNS Views te implementeren. Vietnam heeft een vrij unieke geografie en is mede daardoor erg afhankelijk van suboceanische kabels. HEt lang gerekte land is aan de westkant begrensd door een lange bergketen. Historisch is deze bergketen van grote verdedigende waarde geweest, echter vandaag de dag vormt het tevens een obstakel om kabels te leggen.

Mede hierdoor is het soms problematisch om betrouwbare en snelle internet connectiviteit te krijgen. Echter, doordat Vietnam tevens vrij laat begonnen is haar internet infrastructuur te bouwen is het in staat geweest de modernste middelen in te zetten waardoor lokale internet aansluitingen vaak snel en betrouwbaar zijn tegen een betaalbare prijs. Mede hierdoor hebben we besloten om te proberen een infrastructuur op te zetten die het eenvoudig mogelijk maakt dat sites zowel in Vietnam als buiten Vietnam een snelle verbinding hebben.

IPTables

Een complicatie vwb. de voorgestelde implementatie van de PDNS auteurs is dat ieder DNS request vanaf het internet typisch op UDP port 53 binnenkomt. Op een Linux server, of eigenlijk op iedere server, kan slechts één applicatie naar een specifiek port nummer luisteren. Dus ‘draai twee copies van PDNS’ is nog zo eenvoudig niet.

Op linux is het echter tevens eenvoudig om met behulp van iptables te zorgen dat requests, gebaseerd op hun source adres, naar een andere port worden geredirect.

Op dit moment is dit de insteek die we hanteren teneinde meerdere views te implementeren. Op dit moment hebben we de (twee) PDNS servers draaien. IN combinatie met 3DN’s systool zullen we dit een mooi frontend geven waardoor het eenvoudig zal worden om verschillende netwerken naar verschillende poorten te forwarden. Functioneel is dit weergegeven in onderstaand SADT diagram.

DNS Filter
SADT DNS Filter

 

Virtual PDNS Server

Op Debian is het zeer eenvoudig om een tweede PDNS te configureren. We maken eenvoudigweg een nieuwe configfile aan in /etc/powerdns. We noemen deze configfile bijvoorbeeld pdns-VIETNAM.conf. Nadat we in deze nieuwe configfile ervoor zorgen dat onze nieuwe virtuele DNS gaat luisteren naar UDP port 55:

local-port=55

En hoogstwaarschijnlijk tevens een ander backend kunnen we deze virtuele instance opstarten dmv eenvoudigweg:

root@gamma:~# systemctl start pdns@VIETNAM

Zo eenvoudig is het! We kunnen snel controleren of de nieuwe virtuele instance ook draait:

root@gamma:~# ps xa|grep VIETNAM
13684 ? Ssl 0:00 /usr/sbin/pdns_server --config-name=VIETNAM --guardian=no --daemon=no --disable-syslog --write-pid=no

IPTables Redirect

Met behulp van de volgende iptables rule kunnen we eenvoudig testen:

root@gamma:~# iptables -t nat -A PREROUTING -i br0 -p udp -s 118.69.67.170 --dport 53 -j REDIRECT --to-ports 55

Deze regel verteld de kernel om alle UDP pakketjes (-p udp), komend van 118.69.67.170 en bestemd voor port 53 moeten worden geredirect naar port 55. Nadat we dit commando ingevoerd hebben kunnen we controleren:

root@gamma:~# iptables -L -t nat

Als het goed is ziet u in de output de volgende regel terug:

1 REDIRECT udp -- 118.69.67.170 anywhere udp dpt:domain redir ports 55

 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *