DNSSEC en DLV

Debian 5.0 heeft de beschikking over BIND 9.5.1 en Debian Unstable heeft de beschikking over BIND 9.6.0 welke beide de mogelijkheid bieden om DNSSEC-validatie te gaan aan de hand van DLV. Met behulp van DLV is eigenlijk het probleem van chain-of-trust vanuit de root-zone “opgelost”. Door een derde partij te vertrouwen welke de DS-keys kan vertellen aan andere partijen wordt gevalideerde resolving mogelijk.

Een van de partijen die dit aanbiedt is ISC en is sinds BIND 9.4 te gebruiken, maar versie 9.5.1 of 9.6.0 (deze versie ondersteunt NSEC3-records) zijn aanbevolen. Gelukkig zijn er al toplevels zoals van Zweden en Brasilie welke als DNSSEC op ccTLD hebben ingevoed. Helaas heeft SIDN, de beheerder van de nl-zone, alleen een tijdelijk project gehad om DNSSEC te testen en hopelijk komt daar binnenkort verandering in met vorderingen van DRS4. Een andere toplevel welke een harde deadline heeft gekregen is het toplevel .gov welke onder de Verenigde Staten van Amerika valt. En alle overheidsinstellingen moeten met ingang van december 2009 voor zowel internet als intranet DNSSEC hebben ingevoerd. Op de dns-operations mailinglist werd ook aangekondigd dat per 1 mei 2009 .gov weer was opgenomen in dlv.isc.org zodat verificatie weer mogelijk werd. En tot nu toe lijkt deze actie redelijk probleemloos te gaan.

Sinds BIND op dit moment een van de weinige authoritive en resolving nameservers is die DNSSEC ondersteunt werd het weer tijd om te gaan testen. Helaas heeft Sun Solaris cq OpenSolaris nog geen bijgewerkte versie van BIND standaard meegeleverd en blijft alleen Debian voor mij over op dit moment. Een (virtuele) machine met Debian 5.0 met daarop BIND 9.5.1 of hoger en een werkende NTP-server zijn voorlopig voldoende om DNSSEC te gaan testen voor een resolving nameserver. Als de volgende aanpassingen worden gemaakt aan /etc/bind/named.conf.options:

trusted-keys {
dlv.isc.org. 257 3 5 "BEAAA...rBNh";
};
options {
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside . trust-anchor dlv.isc.org.;
};
logging {
channel dnssec_log {
file "/var/log/named/dnssec" size 20m;
print-time yes;
print-category yes;
print-severity yes;
severity debug 3;
};
category "dnssec" { "dnssec_log"; };
};

In het voorbeeld staat geen valide key om veiligheidsredenen en de key kan worden opgehaald bij ISC en het is verstandig om de sleutel te controleren met PGP voordat deze wordt toegevoegd. Dit is een kritiek punt in de vertrouwens relatie en door een foutieve key te importeren wordt ook de vertrouwensrelatie met de rest van de wereld beïnvloed.

Standaard is er geen directory voor logfiles van BIND binnen Debian aanwezig en met de eerste twee volgende commando’s wordt er een directory aangemaakt en de permissies goed gezet. Het commando erna zal BIND volledig opnieuw starten zodat alle instellingen worden geactiveerd en zal DNSSEC moeten werken.

sudo mkdir -m 0700 /var/log/named
sudo chown bind /var/log/named
sudo /etc/init.d/bind9 restart

Het onderstaande commando kan worden gebruikt om aan te tonen dat DNSSEC nu wordt gebruikt voor validatie. Bij de flags staat nu ook de flag ad (Authentic Data) welke alleen wordt gezet als er met behulp van DNSSEC en DLV een validatie is gedaan.

$ dig +dnssec -t any br. @127.0.0.1
; < <>> DiG 9.5.1-P2 < <>> +dnssec -t any br. @127.0.0.1
;; global options: printcmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 33043
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 13, AUTHORITY: 7, ADDITIONAL: 1

Het is misschien onnodig om te vermelden, maar DNSSEC is geen oplossing om even te testen, neer te zetten en daarna te vergeten. De komende jaren zullen veel problemen ontstaan welke in het verleden stilletjes zijn ontstaan door slecht ontworpen infrastructuur en infrastructuur welke slecht of geen beheer heeft. En mijn persoonlijk vermoede is dat hier vooral e-mail hinder van gaat ondervinden, maar dat is iets wat tijd ons zal leren en hopelijk heb ik ongelijk.

INN zonder filesystemen

InterNetNews (INN) heeft verschillende mogelijkheden om artikelen op te slaan en tradspool is leuk newsservers met een lage hoeveelheid berichten. Maar al flink wat jaren bestaat er Cyclical News Filesystem (CNFS) om efficienter om te gaan met artikelen en de overhead van een filesystem te beperken. Ook het rekening houden met de hoeveelheid inodes er nodig zijn, de accesstime van bestanden bijhouden en vervuiling van directorylistings behoren daarmee tot de verleden tijd.

INN kan met behulp van CNFS in een groot bestand al zijn werk doen, maar ook direct met een raw-device zodat de overhead van een filesystem weg is. En hoewel ik zelf niet altijd voorstander van en menig dba’er weet dit ook werd het toch tijd om de proef op de som te nemen. Er zit wel een beperking op zoals dat je de volumes niet meer kan aanpassen qua omvang, maar een extra volume toevoegen kan altijd.

We beginnen om in volumegroup vg01 twee logical volumes aan te maken:

sudo lvcreate -L 1g -n cnfsnl00 vg01
sudo lvcreate -L 1g -n cnfsnl01 vg01

LVM op Linux zit niet zo goed in elkaar als bij Veritas bijvoorbeeld om ownership te waarborgen, maar Debian heeft voorzieningen getroffen en door /etc/default/lvm-common te voorzien van de volgende regels moet de devices bij een reboot de correct permissies krijgen voor INN op Debian.

MODE_vg01_cnfsnl00="news:disk 660"
MODE_vg01_cnfsnl01="news:disk 660"

Mocht je niet kunnen of willen rebooten dan kan het volgde statement ook worden uitgevoerd.

sudo /etc/init.d/inn2 restart

De devices kunnen nu worden opgenomen in /etc/news/cycbuff.conf om aan te wijzen als CNFS-volume:

cycbuff:NL00:/dev/mapper/vg01-cnfsnl00:1024000
cycbuff:NL01:/dev/mapper/vg01-cnfsnl01:1024000
metacycbuff:NL:NL00,NL01

Door nu aan INN te vertellen in /etc/news/storage.conf dat met behulp van CNFS de berichten moeten worden opgeslagen is de aanpassing na een reload compleet. In het voorbeeld worden alle artikelen uit de nl-tree opgeslagen in de zojuist aangemaakt CNFS-volumes.

method cnfs {
newsgroups: nl.*
options: NL
}

Bij een herstart zal te zien zijn in de syslog-file dat INN de volumes initialiseert en ingebruik neemt.

innd: CNFS-sm: No magic cookie found for cycbuff NL00, initializing

Extra ruimte kan worden gegeven door een etxra volume aan te maken en in cycbuff.conf te definiëren.

Linux gaat groen

Ben nooit zo’n voorstander geweest van daemons om processor frequency scaling te gaan regelen en bij wat onderzoek blijken deze ook niet nodig te zijn gelukkig. De Linux kernel kan geheel zelfstandig voor dit je regelen en bespaart dus ook weer op geheugen en processortijd. Gelukkig is het opzetten niet zo bijzonder lastig en op Debian moet je alleen package sysfsutils installeren voordat je begint.

Als eerste stap is het laden van de module welke de processor kan aansturen om de snelheid aan te passen. In mijn geval is dat p4-clockmod omdat ik nog een oudere Pentium 4 processor heb, maar als je zoekt in de directory /lib naar de directory cpufreq dan kon je andere modules ook tegen. De andere module is cpufreq_ondemand en waarom wordt later duidelijk.

Plaats deze modules in /etc/modules:

p4-clockmod
cpufreq_ondemand

Nu moet nog worden duidelijk gemaakt welke policy er gebruikt moet worden als de machine opstart. En hoewel dit per processor-core is in te stellen heb ik dit alleen gedaan voor cpu0, omdat cpu1 een hyperthread is en daarmee afhankelijk is van cpu0. Het is dus belangrijk om dit voor elke fysieke processor-core in te stellen. Een tweede wat ik heb ingesteld is een ondergrens, want mijn huidige processor doet er te lang over om de snelheid te verhogen. Dit is een probleem in de Pentium 4 processoren en lijkt 1200 MHz een goede snelheid als ondergrens, maar moderne processoren zouden hier geen last van moeten hebben.

Plaats de regels in /etc/sysfs.conf:

devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 1200000

Nu is het enige wat nog nodig is is een reboot om alles te activeren of je met de aanpassingen met de hand activeren, maar een reboot is vaak makkelijker. Je zal in /proc/cpuinfo nu de actuele snelheid van je processor zien. En als je hier vanaf wilt dan zet overal een hash-teken voor en reboot.

Maar waarom geen daemon en alleen de policy ondemand? Er wordt gesteld dat de snelheid moet worden beperkt vanwege hitte productie, maar dit is iets wat de kernel moet oplossen en ook daadwerkelijk doet gelukkig. Zeker als je bedenkt dat een kernel altijd alle triggers heeft om dit te bewerkstelligen, maar ook de juiste prioriteiten heeft om dit uit te voeren waneer het nodig is. Een proces in userland kan bijvoorbeeld niet de juiste prioriteit krijgen of toevallig naar disk zijn verplaatst omdat het geheugen nodig was.

Een andere stelling is dat een lagere snelheid altijd bespaart, maar is dat wel zo? De mensen van lesswatts.org hebben er een mooi voorbeeld over wat misschien nog wel wat wenkbrauwen zal doen fronzen. Daarbij wil je je performance beperking en zeker nu de tickless kernel zijn intrede heeft gedaan om de processor zoveel mogelijk in idle-stand te brengen om daadwerkelijk energie te besparen.

I10n in Debian

Vertalingen zijn altijd lastig en een officieel vertaalbureau kan kostbaar zijn en ze moeten ook de materie begrijpen, want anders kreeg je situaties zoals bij StarTrek Voyager waarbij men een klaarkamer heeft. Deze klaarkamer is eigenlijk de briefingskamer cq vergaderkamer. Dit is ook een reden om buitenlandse series steed vaker zonder ondertiteling te kijken voor mij.

Deze problemen heeft Microsoft ook met vertalingen van oa Windows en Office waarbij meer dan eens een internationale crisis is ontstaan. Zeker als je je betalende klanten voor bloeddorstige wildemannen uitmaak en het je zuiderburen zijn zoals Microsoft de Mexicaanse bevolking beschreef halverwege de jaren negentig.

Gelukkig zal dit een stuk minder snel bij vrije software plaats vinden aangezien bijna alle vertalingen door mensen worden gedaan waarbij het de moedertaal is. En er ook steeds vaker een stuk trots bij komt kijken zoals bij de Fransen die hun taal koesteren ipv de Nederlanders die alles adopteren wat maar lekker klinkt in het lokale dialect. Toch blijken ook Nederlanders hun taal te koesteren, want bij veel vertalingen van vrije software zitten ze bij de top 10 van meest complete vertalingen en ook bij het Debian project.

Het overzicht laat zien in hoeveel talen het package systeem kan communiceren met de gebruiker. En hoewel dit onbelangrijk lijkt is communiceren in je eigen taal voor veel gebruikers van belang. Zeker bij de oudere en de jonge generatie welke een andere taal nog niet of niet goed genoeg beheersen. Het toont ook zeer zeker hoe internationaal vrije software wordt gedragen en gebruikt, want toch een positief teken is in deze kapitalistische wereld waar steeds meer dingen om geld draait.