Detect changing Public IP with PowerShell

I’m using an internet connection from an ISP called Telfort, and this week my public IP-address suddenly changed (without notice) which left me unable to receive email for 6 hours. Sadly, it’s not possible to get a static ip-address with this ISP.

To prevent future downtime I searched for a program that sends an email when my public IP-adress changes. I found an PowerShell script that fulfills all my needs.

This script checks the response every hour from the website ( the response is my external IP-address, generated with simple PHP code ). It checks whether the external IP is still the same as the one in the file ip.txt.

When it’s changed, an email is send to the user(s) that are defined in the .ps1 file. Of course, this is another email address then the one I host at my mail server at home.

Van nginx+PHP-FPM met memcached en APC naar nginx+HHVM

Ik draai nu een aantal weken op de combinatie van nginx en HHVM, waar ik eerder gebruik maakte van nginx en php-fpm, memcached en APC om de website www.maartenvandekamp.nl snel te serveren aan bezoekers.

Het grootste verschil is het geheugengebruik en de configuratie van MySQL.

Vroeger

Eerst draaide www.maartenvandekamp.nl op een nginx webserver met php-fpm als PHP daemon. Op een gegeven moment merkte ik dat het een seconde kon duren voordat een pagina getoond werd en dat vond ik te lang. Daarom besloot ik om APC toe te voegen zodat geparste PHP code gecached werd in het geheugen, wat de hoeveelheid rekentijd verminderde.

Dat bleek deels te helpen, maar alsnog duurde het soms lang voordat alle content geladen was. Daarom besloot ik om ook memcached te gaan gebruiken. De eerste keer dat een pagina bezocht werd, kon memcached nog niets serveren omdat het nog niet in de cache stond. Maar de tweede keer dat een pagina opgevraagd werd, kon dit wel uit de cache gehaald worden. Hierdoor werd MySQL minimaal belast en deze was geconfigureerd op minimaal gebruik.

Nu

Toen schakelde ik over op HHVM, na een paar dagen testen met deze blog. APC en memcached waren niet meer nodig omdat HHVM vele malen sneller is en minder resources nodig heeft. De grote uitdaging was nu de MySQL database, want de configuratie was niet geschikt voor de nieuwe situatie. De database klapte er regelmatig uit.

Nu wordt alle informatie direct uit de database gehaald, waardoor deze veel sneller queries moet kunnen verwerken dan eerder. Alle lagen van caching zijn er nu tussenuit, wat gelukkig het refreshen van de cache bij een update overbodig maakt.

Resultaat

Het resultaat is dat de website sneller is geworden en de tijd om een pagina te laden verkort is.

VPS Upgrade

Je zult het misschien de afgelopen drie uur gemerkt hebben: de website lag eruit. Dat komt omdat ik onderhuids een upgrade heb uitgevoerd aan het besturingssysteem waarop deze website, samen met andere, op draait.

Vanaf nu is de website weer volledig bereikbaar én sneller dan ooit!

HipHop

Nee, niet de muziek, maar HHVM (HipHopVM). Oorspronkelijk ontwikkeld door Facebook en ondertussen vrijgegeven op GitHub. Hiermee kun je PHP code om laten zetten naar machine code waardoor het veel sneller uit te voeren is. Cachen is niet meer nodig.

Het werkt momenteel alleen voor deze blog en voor fotobattle.nl, en nog niet voor maartenvandekamp.nl. Uiteindelijk wil ik alles overzetten naar HHVM zodat ik APC en Memcached niet meer hoef te gebruiken.

IPv6 adres aan TransIP.nl VPS toevoegen

Ik heb vorige week mijn domeinnamen verhuisd naar TransIP.nl. Met de verhuizing is nu ook de mogelijkheid ontstaan om AAAA-records aan te maken, de IPv6 versie van de A-record die gebruikt wordt bij IPv4 om een naam aan een IP te koppelen.

Mijn VPS kreeg geen IP adres aangereikt van de DHCP server die wel het IPv4 adres aanleverde. Deze moet je handmatig toevoegen.

Een IPv6 IP adres aanmaken.

De eerste stap is het aanvragen van een IPv6 adres. In tegenstelling tot een IPv4 adres worden er hier geen kosten in rekening gebracht. Log in op het Controlepaneel van TransIP.nl, en klik op het tabblad VPS.

Je bevindt je nu op het gedeelte VPS informatie en daar moet je ook zijn. In het rechtergedeelte zie je informatie over je VPS en onderin zie je informatie over het netwerk staan.

Daar staat het IPv4 adres met subnet en gateway, en mogelijk staat daaronder ook al een IPv6 adres.

TransIP.nl Controlepaneel - VPS informatie - Netwerk

Mocht dat niet zo zijn, klik dan op de knop Nieuw IPv6-adres toevoegen.

TransIP.nl Nieuw IPv6 adres toevoegen aan VPS

Je ziet de naam van je VPS, de IPv6-range waarbinnen je de IP-adressen kan aanmaken, en het lege vak van het IP-adres wat je gaat toevoegen.

Zet achter het IP-adres wat er al staat :1 of :2 of :100 neer om zo een nieuw adres aan te maken.

Vul bij Reverse DNS de hostname van je vps in. Heeft jouw VPS een A-record voor voorbeeld.nl met IP-adres 12.34.43.21, dan moet je hier bij Reverse DNS ook voorbeeld.nl invullen.

Het resultaat

TransIP.nl Nieuw IPv6 adres toegevoegd aan VPS

Nu is het zaak om dit IP-adres aan de VPS toe te voegen en deze werkend te krijgen.

IPv6 adres toevoegen aan de VPS

Nu is het zaak om de server te laten weten op welke adressen hij moet reageren. Het IP-adres wordt toegevoegd op een Ubuntu server, voor andere distributies kunnen commando’s of bestandslocaties afwijken.

Je hebt het IP-adres nodig wat je in de vorige stap hebt aangemaakt, samen met de gateway (te vinden in de kolom Gateway) die je bij de netwerkinformatie terug kan vinden.

Open het bestand /etc/network/interfaces met je favoriete teksteditor voor Linux.

Voeg het volgende toe aan het bestand onder de bestaande regel iface eth0 inet dhcp

iface eth0 inet6 static
        pre-up modprobe ipv6
        address 
        netmask 48
        gateway

De eerste regel verteld Ubuntu dat iface(interface) eth0 (de eerste of enige netwerkkaart in de VPS) een statisch (static) IPv6 (inet6) gaat krijgen, wat daaronder gedefinieerd wordt.

De regel pre-up modprobe ipv6 zorgt ervoor dat, voordat de interface geactiveerd wordt, de module voor IPv6 wordt geladen. Laat je dit weg, dan zal de server niet op het IPv6 IP-adres reageren.

Zet bij address je zojuist aangemaakte IPv6 adres en zet bij gateway het IP-adres van de gateway die je terugvindt in de kolom Gateway.

Sla deze configuratie op en herstart de netwerkservice met /etc/init.d/networking restart

Controleren of alles gelukt is

Typ ifconfig in de terminal van je server, er vanuit gaan dat je werkt vanuit de terminal.

Als alles goed is gegaan, dan zie je nu een IP-adres wat lijkt op inet6 addr: 2a01:7c8:aaad:450::2/48 Scope:Global staan tussen de andere regels. Natuurlijk staat daar jouw IP-adres en niet die van mij.

Testen

Tijd om te testen of je goed werk heb geleverd. Ga naar de website https://mebsd.com/ipv6-ping-and-traceroute en vul daar het IPv6 adres in van jouw VPS.

Het resultaat moet lijken op het onderstaande:

IPv6 Ping resultaten

Het is gelukt! Nu hoef je alleen nog maar een AAAA-record aan te maken met daarin het IPv6 adres voor jouw domeinnaam en dan ben je ook bereikbaar via IPv6 😉

SPF record voor eigen mailserver op netwerk Telfort Glasvezel

Telforg Glasvezel heeft geen SPF record waarnaar verwezen kan worden in de DNS voor het verzenden van email. Daarnaast moet je SMTP authenticatie toepassen wanneer je een eigen mailserver op het netwerk van Telfort, eigenlijk het netwerk van Concepts.nl, wil gebruiken.

SPF is iets waar ik al een jaar mee heb geëxperimenteerd, maar ik kwam er nooit uit. Vandaag echter, is het gelukt om een record te maken wat een pass krijgt.

Gebruik onderstaande code om toe te voegen als txt-record aan jouw DNS.

v=spf1 a:smtp-3.concepts.nl a:smtp-2.concepts.nl a:smtp-1.concepts.nl ~all

Het ontleden van deze code gaat als volgt:

De smtp-1.concepts.nl, smpt-2.concepts.nl en smtp-3.concepts.nl adressen zijn de adressen van de uitgaande mailservers die gebruikt worden op het netwerk van Telfort Glasvezel. Deze servers leveren jouw email af bij bijvoorbeeld Gmail, of Outlook.com

~all op het einde geeft aan dat mails geaccepteerd moeten worden, maar tevens gemarkeerd moeten worden. Strengere controle kan toegepast worden door dit te wijzigen naar -all. Alle email die niet voldoet wordt geblokkeerd.

SPF record genereren

Deze SPF-record is gegenereerd via de website spfwizard.net.

Daarvoor zijn de volgende velden ingevuld.

Instellingen SPF Wizard
Instellingen SPF Wizard

Testen

Ga naar de website AppMailDev.com en klik op de knop Volgende stap.

Je krijgt nu een willekeurig gegenereerd emailadres. Stuur een lege email naar dit adres en binnen een paar minuten ontvang je een mail waarin staat of je SPF-record goed ingesteld is voor jouw domein.

Als alles goed gegaan is dan zie je ergens in het emailtje de volgende regel staan:

============================================================
SPF result: Pass
============================================================

Geen sliders

Ik vind sliders een mooie manier om aandacht te trekken op websites, je toont groot de (voor mij) belangrijkste artikelen die de bezoeker moet lezen, of in ieder geval opgevallen moet zijn.

Maar na het lezen van dit artikel – Our themes don’t have sliders… Because sliders suck. – heb ik besloten om de slider te verbannen van MaartenvandeKamp.nl. De positieve effecten die in het artikel beschreven worden wil ik graag testen.

Over een maandje kom ik erop terug om te zien of het een positief effect heeft gehad.

Telfort Glasvezel Mail Relay

Op het internet staat veel tekst over mail relay van Telfort, maar er was geen eenduidig antwoord beschikbaar. In mijn geval gebruik ik een eigen mailserver met verschillende domeinnamen waar ik mee wil mailen.

Om te kunnen mailen met je eigen mailserver via het netwerk van Telfort Glasvezel doe je het volgende:

  • Maak een mailbox aan (als je deze nog niet hebt via Telfort.nl/mijntelfort)
  • Noteer de gebruikersnaam en het wachtwoord, deze heb je later nodig
  • Ga naar de instellingen van je mailserver
  • Ga naar het venster SMTP authenticatie en vul hier je gegevens in van de mailbox

Waarom moet dit? De SMTP server van Telfort Glasvezel wil graag weten wie je bent, en daarom moet je je inloggegevens verstrekken om mail te kunnen versturen.