DNSCrypt op de locale computer of netwerk server installeren en configureren. Is net zo snel als plain text DNS.
En wat bereik je daarmee?
Natuurlijk kun je daarmee het stukje tussen de client en de server versleutelen, maar dat is binnen je eigen netwerk. Zeker als je intern nog bronnen hebt die de client moet kunnen resolven. Je moet dan je eigen server DNSCrypt opzetten die wellicht met andere DNSCrypt servers buiten je netwerk kan praten. Maar *ergens* zal er een server staan die onbekende namen moet kunnen resolven. En hoe meer stappen je er tussen zet hoe trager het per saldo zal gaan.
Want stel, je wilt het forum van Tweakers resolven in een hypothetische omgeving waar caching uit staat dan zal er eerst verbinding gemaakt moeten worden met je eigen primaire DNS server, dan met die van je provider of een DNSCrypt aanbieder en dan met een van de root-servers om het net. tld te resolven. Daarna zal er verbinding gemaakt moeten worden met de servers die verantwoordelijk zijn voor het .net. domain om tweakers.net. te resolven. En vanaf dat moment is het mogelijk dat tweakers.net zijn eigen DNS servers heeft of dat gathering.tweakers.net. in dezelfde zone staat als tweakers.net. In het laatste geval kan die verbinding opnieuw gebruikt worden. Maar in het eerste geval moet er opnieuw een verbinding gemaakt worden met de servers van Tweakers om gathering.tweakers.net te resolven. Dus voor je het weet ben je al 5 servers verder.
Gebruik je dan het standaard DNS protocol dan heb je een grote kans dat de queries en replies binnen de MTU-size passen en er gebruik gemaakt kan worden van één enkel UDP packet voor de query heen en één enkel UDP packet voor de query terug. Omdat de DNS server iets moet opzoeken zal dat iets trager zijn dan een ping, maar veel zal het niet schelen.
Zet je dan een SSL-verbinding op dan moet je voor elke verbinding meerdere pakketten heen en weer sturen voor de handshakes en payload, moeten er crypto-berekeningen uitgevoerd worden en moet de DNS server nog de vraag beantwoorden. Stel dat zo'n verbinding 3 seconden duurt dan ben je al 15 seconden bezig voor je een antwoord hebt.
Maar gelukkig draait DNSCrypt waarschijnlijk alleen op de eerste of eerste twee verbindingen en gaat de rest via gewoon DNS. Die eerste twee verbindingen zijn doorgaans altijd dezelfde, wat betekent dat je gewoon een secure-channel open kunt laten voor de vervolgqueries. En gelukkig is caching een van de kernfuncties van een DNS server (het zit zelfs in het protocol én de zonedata ingebakken hoe oud entries mogen zijn) waardoor je nog performance haalt uit oplossingen als DNSCrypt.
Dus DNSCrypt is heel leuk als je niet wilt dat je provider kan loggen waar je naar toe surft op het web. Het is dan alleen wel te hopen dat de DNSCrypt server waar jij (of jouw DNSCrypt server) mee verbind dat dan ook niet logt. Anders schiet je er per saldo nog niets mee op.
Dan is het wellicht eenvoudiger om een HTTPS proxy te gebruiken. Als je het goed doet dan is je verkeer naar de HTTPS proxy versleuteld en neemt de proxy het DNS-resolven voor zijn rekening.