Mastodon linux Archives - HermanRonk.nl

Plesk backup DNS (Slave-DNS-Manager)

Sinds kort heb ik de hosting van een aantal sites opnieuw ingeregeld. Hiervoor heb ik deze keer na jarenlang Directadmin gebruikt te hebben nu een keer voor Plesk gekozen. Tot op heden heb ik nog geen moment spijt gehad van mijn keuze en heb ik eigenlijk alles vrijwel direct werkend gekregen zoals ik dat wilde.

DNS was echter een van de dingen die op de Plesk server zelf goed werkte, maar het koppelen van de secundaire DNS server wilde niet helemaal werken zoals het hoort. Helaas bood het forum ook geen oplossing, maar na het nodige zoekwerk is het dan uiteindelijk toch gelukt :).

Mijn secundaire DNS server draait bij DigitalOcean in Canada (een deel van de sites worden veel in de VS en Canada gebruikt) en is een droplet van het goedkoopste type (grofweg $5 per maand). De machine hoeft ook niet schokkend veel te doen dus dat moet prima uit komen.

Qua OS heb ik afgeweken van mijn normale voorkeur voor Ubuntu, maar om voor mij nog steeds onduidelijke redenen heb ik het daar nooit op werkend gekregen. In dit geval heb ik de collectie CentOS 7 servers maar uitgebreid van 2 naar 3..

In plesk:

In Plesk maak ik gebruik van de “Slave-DNS-Manager” extension die je via de extension manager kan installeren.

Slave DNS Manager extension page

De configuratie in Plesk is verder niet heel complex, je opent de extension via de extension manager en drukt op de knop om een nieuwe slave toe te voegen:

Add slave to config

Op deze pagina staat ook een stukje voorbeeld configuratie, kopieer deze in een losse file, we gaan niet de hele config gebruiken, maar nemen er een paar stukjes uit over. De invoervelden wijzen verder voor zich.

Slave DNS Manager config example

Op de secundaire DNS server:

  • yum update
  • yum install bind bind-utils
  • systemctl stop named
  • vi /etc/named.conf

in /etc/named.conf maken we een aantal aanpassingen, een deel van de info kan je overnemen uit de voorbeeldconfiguratie uit de Slave DNS Manager uit Plesk en een deel moet je even zelf invoeren.

acl “trusted” {
**IP Adres Primaire DNS**;
**IP Adres lokale server**;
127.0.0.1;
};

options {
listen-on port 53 { 127.0.0.1; **IP Lokale server**; };
listen-on-v6 port 53 { ::1; **IPv6 Lokale server**; };
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-new-zones yes;
allow-transfer {trusted;};
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
auth-nxdomain no;

/* Path to ISC DLV key */
bindkeys-file “/etc/named.iscdlv.key”;

managed-keys-directory “/var/named/dynamic”;

pid-file “/run/named/named.pid”;
session-keyfile “/run/named/session.key”;
};

/*RNDC Key uit Primaire (Plesk) server*/
key “rndc-key-***” {
algorithm hmac-md5;
secret “****”;
};

controls {
inet * port 953 allow { ** IP Adressen primaire en lokale server, gescheiden door een ;**} keys { “rndc-key-***”; };
};

logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};
zone “.” IN {
type hint;
file “named.ca”;
};

 

include “/etc/named.rfc1912.zones”;
include “/etc/named.root.key”;

  • mkdir /var/named/
  • chown named:named /var/named/ -R
  • chmod 0770 /var/named -R
  • systemctl start name
  • reboot

Dit zou normaal voldoende moeten zijn, maar ik bleef authenticatie fouten krijgen vanuit de primaire DNS server (Plesk), deze server heb ik daarna nog een keer herstart en dat heeft uiteindelijk de problemen verholpen.

Ik heb me hier dan enkel gericht op het werkend maken van de slave DNS server, de vervolgstappen omvatten uiteraard het beveiligen van de server maar dat is buiten de scope van deze post.

Let’s encrypt

Sinds gisteren is Let’s Encrypt in public beta en daarmee dus ook voor iedereen beschikbaar. Nou zal dat niet iedereen direct wat zeggen, maar ik denk dat dit een ontwikkeling is die een grote verandering op het internet met zich mee zal brengen. Nou betreft het wel een verandering die voor 90% van de mensen niet zullen merken, maar dat maakt het niet minder belangrijk.

letsencrypt-logo_0

Wat veel mensen niet beseffen is dat verkeer van en naar een website in principe voor alle “hops” tussen jouw pc en de server vrij in te zien is. Voor banken zijn we al wel gewent aan het feit dat er een groen slotje bij de domeinnaam moet staan, maar bij veel andere websites denken we daar niet over na. Het gebruik van encryptie lost dat probleem op, het verkeer tussen de client en de server is met certificaten beveiligd en voor de tussenliggende systemen niet in te zien.

Het probleem is echter dat de certificaten hiervoor geld kosten, alhoewel ze niet heel duur zijn (12 euro per jaar grofweg) wordt het voor veel content niet echt als noodzakelijk gezien om de bezoeken te beveiligen. De complexiteit van het onderhouden van deze certificaten is echter een groter probleem. Niet alleen is het veel handwerk om een certificaat goed op je eigen server te installeren, maar het is ook nog eens iets wat je niet moet vergeten bij te houden (wederom handmatig).

Let’s encrypt brengt hier verandering in, niet alleen zijn de certificaten gratis, maar er wordt een tool meegeleverd die de hele aanvraag en implementatie voor je uitvoerd. Daarbij zorgt de tool ook voor een tijdige vervanging van de certifcaten wanneer de einddatum in de buurt komt (een “le” certificaat is 90 dagen geldig).

Het draaien van de tool geeft een wizard die er grofweg zo uit ziet:

Certificaat Aanvraag

En de rest gaat eigenlijk vanzelf, je kan nog even aangeven of de site zowel via HTTP als HTTPS bereikbaar moet zijn of enkel via HTTPS en dat was het dan.

Wanneer we dan controleren of het certificaat goed geïmplementeerd is zien we dat ook dat helemaal in orde is:

Certificaat Controle

Het mooie aan de automatische implementatie is ook dat er eigenlijk niets in de weg staat om dit ook bij shared hosting oplossingen te implementeren. Het gehele traject kan volledig geautomatiseerd worden en een gebruiker hoeft er dus helemaal niets aan te doen. Wat misschien wel nog een blokkade kan zijn is dat voor een groot aantal providers een aardig stukje omzet kan wegvallen doordat ze nu geen tussenpartij meer hoeven te zijn tussen de grote certificaat verstrekkers en de “consument”.

Voor het testen van dit soort zaken gebruik ik overigens meestal een VM bij Digital Ocean, het grote voordeel is dat je deze per uur betaald, wat een root voordeel is voor het even snel testen van nieuwe dingen. De bovenstaande link is overigens een referral link, die levert je 10 dollar aan start tegoed op (1 maand voor een server met 1 core en 1 GB ram). Mocht je mij geen extra tegoed gunnen kan je natuurlijk altijd zelf even het adres invullen als je een account wil :). De gebruikte testomgeving heb ik gebouwd op Ubuntu 15.10 met Apache, PHP en MySQL.

 

 

Joe syntax highlighting aanpassen

Soms loopt je tegen van die problemen aan die je eens in de zoveel tijd tegen komt, maar die net niet vaak genoeg voorkomen om de oplossing te onthouden.. In dit geval is het de kleur van de PHP Syntax Highlighting in Joe via Putty (volg je het nog?)

Standaard is de instelling voor “Constant_sq” blauw, donkerblauw om precies te zijn, en dat leest toch net niet lekker op een zwarte achtergrond:

Joe PHP Syntax

Dus daarom heb ik het liever zo:

Joe PHP Syntax aangepast

Gezien ik dus iedere keer weer op zoek moest naar hoe ik dit definitief aan kon passen (dus niet iedere keer handmatig een andere syntax highlighting selecteren) heb ik besloten er maar een korte blogpost aan te besteden zodat ik de volgende keer niet zo ver hoef te zoeken :).

De configfile staat op ubuntu op deze locatie:

sudo joe /usr/share/joe/syntax/php.jsf

Vrijwel boven in de config staat dit stuk:

# Define colors
=Idle
=Comment green
=Constant cyan
=Constant_sq blue
=Escape bold cyan
=Keyword bold
=Var red
=Methods bold

Je wil hier de dikgedrukte regel aanpassen, in mijn voorbeeld heb ik er dit van gemaakt:

# Define colors
=Idle
=Comment green
=Constant cyan
=Constant_sq yellow
=Escape bold cyan
=Keyword bold
=Var red
=Methods bold

Lampen aansturen deel 2

Technisch was het niet bijzonder complex om het aansturen van de KlikAanKlikUit schakelaars werkend te krijgen, het installeren van Raspbian duurder langer dan het werkend maken van de aansturing.

De grotere uitdaging zat in  het maken van een beetje normaal werkende “webinterface”, en alhoewel het er niet uit ziet heb ik nu wel een werkend systeem om op alles wat een website kan openen thuis de lampen te kunnen schakelen.

screenshot

Er wordt ook direct nog wat data opgehaald uit een losse database die ik al een paar maanden aan het vullen ben met statistieken over ons gas en stroomverbruik. Sinds kort zit daar ook een tabel met weergegevens bij zodat ik ook nog een patroon zichtbaar kan maken met bijvoorbeeld de invloed van het weer op het gasverbruik. Of gevolgen van het wisselen van zomer en wintertijd op stroomverbruik en dergelijken. Overigens zit er een foutje in het bovenstaande screenshot, het stroomverbruik moet nog even door 10 gedeeld worden :).

Ondanks dat het geheel alleen intern op mijn eigen netwerk beschikbaar is heb ik toch wel wat aandacht besteed aan het “beveiligen” van het geheel zonder dat dit hinder oplevert in het gebruik. Effectief doet de pagina niets anders dan een paar variabelen uit de URL pakken (locatie en status) en aan de hand daarvan wordt er middels een php shell_exec een script aangeroepen dat de schakeling uitvoert. Gezien de gebruikte variabelen met wat geluk en probeerwerk dus misbruikt zouden kunnen worden voor kwalijkere zaken wordt de input vergeleken met de beschikbare opties, als het in orde is wordt het script aangeroepen, klopt het niet gebeurt er verder niets. Dit voorkomt ook meteen dat een foutje van mijn kant niet direct te grote gevolgen heeft ;).

Wat ik nu nog wil maken is dat ik via dezelfde webpagina ook de mogelijkheid krijg om schema’s te maken die de lampen op gezette tijden automatisch aan of uit kunnen zetten.

Lampen aansturen met de Raspberry Pi

Een paar dagen geleden kwam ik een (oude) tweakblog post tegen over het aansturen van een “Klik aan Klik uit” systeem via een Raspberry Pi. Gezien ik sowieso al een Raspberry heb draaien voor het uitlezen van de energiemeter (daarover schijf ik een andere keer nog wel een stukje) was het een leuke uitbreiding die ik voor een paar euro wel kon maken.

kaku - overzicht

Gisteren is dus de 433Mhz zender die ik nodig had binnen gekomen, deze heeft iets meer dan 3 euro gekost, dus dat is nog wel te overzien :). Zoals op de foto’s te zien is stelt het ding zelf helemaal niets voor en na het lezen van de ervaringen van wat andere gebruikers had ik het idee dat het bereik van de zender nog wel eens een probleem zou kunnen worden. Gelukkig blijkt dat uiteindelijk wel mee te vallen. Het werkend maken van de zender in Raspbian is met de eerder genoemde tweakblog geen noemenswaardige uitdaging meer.

Ik gebruik in huis al wat oudere schakelaars, ze komen ongeveer overeen met dit model:

klikaanklikuit

Ik denk wel dat ik met het uitzoeken van de adresseringen van mijn schakelaars wel wat buren heb lastig gevallen met lampen die uit en aan gaan.. Maar na wat puzzelwerk is het me in ieder geval gelukt om via de commandline de lampen aan en uit te kunnen zetten. De volgende stap was om dit via een webinterface te doen, maar dat stelt na de andere stappen niets meer voor.

Het enige wat ik nu nog wil kunnen doen is via een webinterface een schema in te kunnen stellen waarop lampen “vanzelf” en en uit kunnen gaan, maar dat is een uitdaging voor volgend jaar :).

 

Nieuwe server

Tot deze week draaide in ons appartement een klein servertje op basis van een Intel Atom, alhoewel het de zaken die er op draaiden op zich goed gingen was het allemaal maar net aan, daarnaast had ik nog een aantal wensen die ik met deze hardware domweg niet voor elkaar kon krijgen. Toen Andries tijdens The Party zijn nieuwe server hardware binnen gekregen had en daarmee aan de gang ging was voor mij al vrij snel duidelijk dat zijn server krachtig genoeg was om te kunnen draaien wat ik voor ogen had en ook nog eens binnen het gestelde budget zou vallen. Dus, de nieuwe server was onderweg, door wat leverproblemen van het moederbord heb ik helaas wat langer moeten wachten dan gehoopt, maar afgelopen maandag was dan eindelijk alles binnen.

De hardware:

CPU: Intel Core i5 2500 (3,3 Ghz Quadcore)
Moederbord: Intel DQ67OW B3 iQ67, SATA600 RAID, DVI
RAM: 16GB, DDR3, PC10666, CL9
VoedingCorsair Voeding CX430 430W
HDD: 3x Western Digital Harddisk 3.5″ 2TB, SATA300, 64MB
HDD: 1x Western Digital Harddisk 3.5″ 1TB, SATA300
SSD: 1x Intel 160GB
SSD: 1x Corsair 115GB
Case: Fractal Design R3

Zowaar is het me gelukt om deze keer alles in 1x goed in elkaar te zetten en werkend te maken, normaal zit er altijd wel ergens een stekkertje of kabeltje nog niet helemaal goed, maar deze keer ben ik blijkbaar goed te werk gegaan. De case heeft daarbij wel geholpen moet ik zeggen, normaal ga ik voor een zo goedkoop mogelijke case, maar deze keer heb ik daar eens in geinvesteerd.. En ik moet zeggen dat dat het zeker wel waard geweest is, de kabels zijn netjes weg te werken, casefans zijn mee geleverd en bovenal, de hele case zit vol met geluidsisolerend materiaal.

Server met voeding
Server met voeding

 

Dat laatste is niet geheel onbelangrijk, bij de hardware keuze is het energieverbruik en de geluidsproductie van belang geweest, de machine staat in de huiskamer en mag dus eigenlijk geen geluid produceren, wat ook gelukt is. Op meer dan 1 meter afstand hoor je helemaal niets meer van het ssyteem, de casefans draaien wel (aangestuurd door het moederbord), maar zijn onhoorbaar, de CPU blijft koud waardoor die fan ook lekker rustig blijft. De disken zitten op rubber doppen waardoor de resonantie niet doorgegeven wordt aan de case enzovoorts.

 

Server ingericht 1
Server ingericht 1

Softwarematig moest er ook het een en ander gebeuren om gebruik te kunnen maken van de mogelijkheden van het systeem, zo draait er nu ESXi op met daarop een aantal Windows en Linux VM’s die een aantal verschillende zaken regelen, zo heb ik nu eindelijk een Windows 7 VM  waarop ik mijn office zaken kan regelen, is het VPN gebeuren goed ingeregeld en heb ik de storage van Linux naar Windwos over gezet (ik miste in Linux een stukje overzicht op dit gebied) en zo zijn er nog wat meer zaken eindelijk netjes zoals ik het hebben wil.

 

Server ingericht 2
Server ingericht 2

Misschien nog wel het mooiste van dit alles is dat mijn oude Intel Atom server met 1 disk minder en zonder de SSD’s een verbruik had van 58 Watt en de nieuwe tussen de 60 en 85 Watt zit, alleen dan wel met 10 Ghz en 12 GB Ram meer dan de oude.

Al met al een erg goede upgrade die gelukkig zo goed als perfect verlopen is, vooral dankzij al het voorwerk dat Andries al voor zijn eigen server gedaan heeft (waarvoor dank).