Computer

DynDNS bei INWX.de via XML-RPC API mit PHP


02 Feb

Bisher habe ich in meiner FRITZ!Box als DynDNS Provider immer dyndns.org verwendet und hatte dort einen kostenlosen Hostnamen. Schon länger aber spielte ich mit dem Gedanken hierfür nicht dyndns.org zu verwenden, sondern eine eigene Sumdomain unter thomas-klumpp.de hierzu zu verwenden.

Meine Domain habe ich bei inwx.de registriert und da ich keine eigenen Nameserver betreibe nutze ich die Nameserver von INWX. INWX bietet eine XML-RPC Schnittstelle an um Änderungen an der Konfiguration, in meinem Fall am Nameserver, vorzunehmen. Am einfachsten erschien mir hier die Verwendung von PHP als Programmiersprache.

Glücklicherweise bietet meine FRITZ!Box neben den gängigen DynDNS Providern auch eine “Benutzerdefiniert” Option, bei der man seine eigene Ziel-URL eintragen kann.

dyndns

In der FRITZ!Box-Hilfe sind die Platzhalter definiert die in der URL durch die Parameter ersetzt werden.
Hier mal ein Beispiel:

https://www.mein-webspace.de/unterordner/update-inwx.php?domain=&user=&password=&ip4addr=

Es empfielt sich an dieser Stelle https zu verwenden um die Transportsicherheit des Passwortes in der URL zu garantieren.

 

Auf dem Server das zugehörige PHP-Script sieht die folgt aus:

< ?php
/*
 * update-inwx.php - Update INWX Nameserver-Record
 * 
 * Mit diesem Script kann man einen Nameserver-Record beim Provider inwx.de updaten.
 *   
 * by Thomas klumpp
 */

header('Content-type: text/plain; charset=utf-8');
error_reporting(E_ALL);
require "domrobot.class.php";

define("APIURL", "https://api.domrobot.com/xmlrpc/");

//GET variablen aus url holen
$usr = $_GET['user'];
$pwd = $_GET['password'];
$domain = $_GET['domain'];
$ip4addr = $_GET['ip4addr'];

//main
try {
	$recordId = requestRecordId($domain);
	updateRecord($recordId, $ip4addr);
} catch (Exception $e) {
	print $e->getMessage();
}

/**
 * Fragt die eindeutige Nameserver-Record ID ab
 *
 * @param String $domain enthält den abzufragenden Domainnamen
 * @return int ID liefert die unique ID des Nameserver-Records
 */
function requestRecordId($domain) {
	//globale variablen abrufen
	global $usr;
	global $pwd;

	//domrobot object instanziieren und einloggen
	$domrobot = new domrobot(APIURL);
	$domrobot->setDebug(false);
	$domrobot->setLanguage('de');
	$res = $domrobot->login($usr,$pwd);

	//domain zerlegen
	$domain_exploded = explode(".", $domain);
	$domain_exploded_length = count($domain_exploded);
	$domain = $domain_exploded[$domain_exploded_length - 2] . "." . $domain_exploded[$domain_exploded_length - 1];
	unset($domain_exploded[$domain_exploded_length - 1]);
	unset($domain_exploded[$domain_exploded_length - 2]);
	$name= implode(".", $domain_exploded);

	//do request
	if ($res['code']==1000) {
		$obj = "nameserver";
		$meth = "info";
		$params = array();
		$params['domain'] = $domain;
		$params['name'] = $name;
		$res = $domrobot->call($obj,$meth,$params);
		$recordId = $res['resData']['record'][0]['id'];
		if ($recordId != "")
			return $recordId;
		else
			throw new Exception('domain or name not found');
	} else {
		throw new Exception('connection error occured');
	}

	$res = $domrobot->logout();
}

/**
 * Setzt die IP-Adresse in den entsprechenen Nameserver-Record
 *
 * @param int $recordId enthält die unique ID des Nameserver-Records
 * @param String $ip4addr enthält die zu setzende IP-Adresse
 */
function updateRecord($recordId, $ip4addr) {
	//globale variablen abrufen
	global $usr;
	global $pwd;

	//domrobot object instanziieren und einloggen
	$domrobot = new domrobot(APIURL);
	$domrobot->setDebug(false);
	$domrobot->setLanguage('de');
	$res = $domrobot->login($usr,$pwd);

	//do update
	if ($res['code']==1000) {
		$obj = "nameserver";
		$meth = "updateRecord";
		$params = array();
		$params['id'] = $recordId;
		$params['content'] = $ip4addr;
		$res = $domrobot->call($obj,$meth,$params);
	} else {
		throw new Exception('connection error occured');
	}

	$res = $domrobot->logout();
}
?>

Der gewünschte Hostname muss vorher über die Konfigurationsoberfläche von inwx.de angelegt werden!

Den kompletten Code gibt es hier als Download:
DynDNS-INWX.zip

Gefällt dir das? Teile es mit deinen Freunden:

VPN mit FRITZ!Box via Shrew Soft VPN Client


13 Aug

Seit vergangener Woche bin ich begeisterter Besitzer der FRITZ!Box 7390 dem aktuellen Flagship von AVM. Die Möglichkeiten die dieses Gerät bietet sind denke ich mit keinem anderen Gerät auf dem Markt vergleichbar. Eine Möglichkeit ist, sind VPN Verbindungen. Man kann sich direkt über die Box nicht nur in ein bestehendes Netz einwählen, sondern die FRITZ!Box auch selbst als VPN-Einwahlpunkt konfigurieren. Somit kann ich nun von überall auf der Welt einen sicheren VPN-Tunnel zu meiner FRITZ!Box zuhause aufbauen und alles darüber tunneln. Dies eignet sich besonders wenn man mal nur ein unsicheres fremdes WLAN (z.B. im Urlaub) zur Verfügung hat.
Eine super Sache ist es auch wenn ich mich mit dem iPhone einwähle, dann kann ich nämlich dank der FRITZ!Box Fon App von überall aus den Telefonanschluss Zuhause nutzen.

Beispiel eines Tunnels in Rechnernetzen. Hier: SSH-Tunnel

AVM bietet von Haus aus einen VPN-Client für den Computer an, den ich aber nicht sehr gelungen finde, da man ihn nur über Konfigurationsdateien konfigurieren kann. Auf meinem Windows 7 64-bit Testsystem stürzte zudem die Installation beim ersten Versuch ab und auch eine Verbindung brachte ich beim ersten Versuch nicht zu stande. Auf dem VPN-Portal von AVM gab es aber glücklicherweise eine Anleitung für den Shrew Soft VPN Client den ich schon früher zur Einwahl ins HS-Mannheim VPN genutzt hatte, bis die Affen die dort unser Rechenzentrum administrieren meinten den Zugriff über diesen Client sperren zu müssen, da er “das VPN kaputt machen würde”.

Leider funktioniert die Einwahl nicht wenn man genau die Schritte der Anleitung befolgt. In der FRITZ!Box erscheint nur “wird aufgebaut”, aber eine VPN-Verbindung kommt nicht zustande. Meine Suche im Internet ergab, dass viele das selbe Problem haben, aber nirgendwo war eine Lösung zu finden. Nun, nach etwas Gehrin anstrengen und etwas herumprobieren fand ich die Lösung.

Zusätzlich habe ich noch eine XAUTH eingebaut um zusätzlich noch etwas Sicherheit zu bekommen. Desweiteren wir damit dieser Konfiguration nun alles getunnelt und nicht nur der Zugriff auf das lokal Netz hinter der FRITZ!Box.

Meine Konfiguration in der FRITZ!Box sieht nun so aus:

vpncfg {
        connections {
                enabled = yes;
                conn_type = conntype_user;
                name = "CONNECTIONNAME";
                always_renew = no;
                reject_not_encrypted = no;
                dont_filter_netbios = yes;
                localip = 0.0.0.0;
                local_virtualip = 0.0.0.0;
                remoteip = 0.0.0.0;
                remote_virtualip = 192.168.1.201;
                remoteid {
                        user_fqdn = "CONNECTIONNAME";
                }
                mode = phase1_mode_aggressive;
                phase1ss = "all/all/all";
                keytype = connkeytype_pre_shared;
                key = "PRESHAREDKEY";
                cert_do_server_auth = no;
                use_nat_t = yes;
                use_xauth = yes;
                use_cfgmode = no;
				xauth {
					valid = yes;
					username = "USERNAME";
					passwd = "PASSWORD";
				}
                phase2localid {
                        ipnet {
                                ipaddr = 192.168.1.0;
                                mask = 255.255.255.0;
                        }
                }
                phase2remoteid {
                        ipaddr = 192.168.1.201;
                }
                phase2ss = "esp-all-all/ah-none/comp-all/pfs";
                accesslist =
                             "permit ip 0.0.0.0 0.0.0.0 192.168.1.201 255.255.255.255";
        }
        ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
                            "udp 0.0.0.0:4500 0.0.0.0:4500";
}

Die Konfigurationsdatei für den Shrew Soft Client sieht nun so aus (einfach in eine Textdatei kopieren, speichern und importieren):

n:version:2
n:network-ike-port:500
n:network-mtu-size:1380
n:client-addr-auto:1
n:network-natt-port:4500
n:network-natt-rate:15
n:network-frag-size:540
n:network-dpd-enable:1
n:client-banner-enable:1
n:network-notify-enable:1
n:client-wins-used:1
n:client-wins-auto:1
n:client-dns-used:1
n:client-dns-auto:1
n:client-splitdns-used:0
n:client-splitdns-auto:0
n:phase1-dhgroup:2
n:phase1-keylen:256
n:phase1-life-secs:3600
n:phase1-life-kbytes:0
n:vendor-chkpt-enable:0
n:phase2-keylen:0
n:phase2-life-secs:3600
n:phase2-life-kbytes:0
n:policy-nailed:1
n:policy-list-auto:0
s:network-host:HOSTNAME
s:client-auto-mode:pull
s:client-iface:virtual
s:network-natt-mode:enable
s:network-frag-mode:enable
s:auth-method:mutual-psk-xauth
s:ident-client-type:ufqdn
s:ident-server-type:address
s:ident-client-data:CONNECTIONNAME
b:auth-mutual-psk:CRYPTEDPRESHAREDKEY
s:phase1-exchange:aggressive
s:phase1-cipher:aes
s:phase1-hash:sha1
s:phase2-transform:esp-aes
s:phase2-hmac:sha1
s:ipcomp-transform:deflate
n:phase2-pfsgroup:2
s:policy-level:require
s:policy-list-include:192.168.1.0 / 255.255.255.0,0.0.0.0 / 0.0.0.0

Beim Shrew Soft Client ist die wichtigste Änderung im letzten Register “Policy”:

Policy Tab

Wer nicht möchte, dass alles getunnelt wird, der soll hier den letzten Eintrag weglassen und DNS und WINS im Register “Name Resolution” deaktivieren.

Zuletzt noch ein praktischer Tipp bei der Verwendung des Shrew Soft Clients:
Einfach auf dem Desktop eine Verknüpfung zur ipsecc.exe mit dem Parameter -r “CONNECTIONNAME” -u “USERNAME” anlegen zum schnellen Zugriff ohne jedesmal den Access Manager starten zu müssen.

Gefällt dir das? Teile es mit deinen Freunden:

GPU grillen beim HP Pavilion dv9000


23 Jul

Heute habe ich einen NVIDIA Grafikchip in einem HP Pavilion dv9000 gegrillt. Wieso fragt ihr euch? Nun ja der Reihe nach:

Ich hatte ein nicht mehr funktionierendes Notebook von einem Freund bekommen. Das Problem bei diesem Notebook war, dass direkt nach dem Einschalten auf dem Display weiße Streifen erschienen und ansonsten kein Bild mehr kam. Abgesehen von einem defekten DVD-Laufwerk funktioniert jedoch noch alles. Sogar das Betriebssystem fuht noch hoch, da man nach etwas warten irgendwann den Startsound von Windows 7 hören konnte. Es musste also irgendetwas an der Grafikarte sein. Der Ausfall hat sich auch schon langsam angekündigt, da der Rechner nach längerer Benutzung immer mit einem Bluescreen, verursacht durch den Grafiktreiber, abstürzte.

Nachdem ich Google befragt hatte, wusste ich, dass viele Benutzer der HP Pavilion Serie dieses Problem haben. Das in diesem Youtube Video beschriebene Vorgehen soll angeblich Abhilfe schaffen:

In diesem Video wird gezeigt wie man das Notebook komplett zerlegt um an das Mainboard heranzukommen, anschließend soll man den GPU-Chip mit einem Gasbrenner kurz erhitzen. Klang irgendwie spannend und es gab ja nichtsmehr zu verlieren an diesem Laptop. Es reizte mich das auzuprobieren. Also los geht’s…

Das Außeinanderschrauben war sehr mühsam, so ein Laptop wird von vielen kleinen Schrauben zusammengehalten. Erstmal einen geeigneten Schraubenzieher zu finden war gar nicht so leicht. War er zu dünn rutschte man ab, war er zu dick, dann kam man nicht richtig in die Versenkungen rein.
Als er endlich zerlegt war kam nun der spannende Teil, nämlich das Erhitzen der GPU mit einem Brenner. Da ist selbst keinen besitzte leihte ich mir einen aus (Danke an Mathias an dieser Stelle). Eigentlich ist das ein Crème brûlée Brenner, aber man kann ihn ja mal kurz zweckentfremden :-)
Die GPU ist leider fest auf dem Mainboard verlötet, daher deckte ich wie im Video beschrieben alle übrigen Bauteile mit Alufolie ab um nichts kaputt zu machen. Ich enfterne auch sicherheitshalber die CPU, da die direkt daneben lag. Echt sau doof konstruiert von HP. CPU & GPU sind über eine Heatpipe verbunden und am Ende der Pipe habe sie einen gemeinsamen Aktivkühlers, d.h. die Wärme der CPU wird direkt über die GPU geführt.
In kreisförmigen Bewegnungen erhitzte ich dann endlich den Grafikchip und lies ihn wieder auskühlen.

Nach dem Zusammenbauen war ich jedoch etwas enttäuscht. Es hat nichts gebracht. Nun kamen zwar keine weißen Streifen mehr, dafür blieb der Bildschirm nun komplett dunkel. Vielleicht hat ja ein anderer mehr Glück mit dieser Methode. Ich habe nun Festplatte und Arbeitsspeicher ausgeschlachtet, der Rest landet wohl auf dem Müll.

Übrigens hatte ich am Ende noch sechs Schrauben übrig…*kopfkratz*

Zum Schluss noch ein Bild vom Schlachtfeld:

Zerlegtes Notebook auf meinem Schreibtisch

Gefällt dir das? Teile es mit deinen Freunden:

thomas-klumpp.de

information about me and my life