Tag Archives: dyndns

o2 Box 6431 IP auslesen für DynDNS & Co

Für die, die gerne an ihre IP im O2 Box 6431 Router gelangen möchten, damit sie DynDNS und andere Dienste nutzen können, habe ich hier ein kleines Workaround. Für die, die externe Webseiten zur Auflösung der IP nutzen kann dies auch von Vorteil sein. Euren Router kümmert es nicht wie oft ihr die IP auslest. Voraussetzung ist leider, dass ihr einen Rechner zur Verfügung habt, der ununterbrochen Anfragen and euren Router senden und Updates durchführen kann. Das kann ein Raspberry sein oder ein mini ITX Rechner oder eine “alte Möhre” die ihr noch rumstehen habt.

Abhängig von dem DynDNS Client den ihr nutzt müssen die Scripte abgestimmt werden. Beispiele  gibt es hier für Windows und Linux. Enjoy!

Update 17.03.2015:
Keine Probleme mehr. War wohl eher ein O2 Problem.

Update 30.11.2014:
Ich habe feststellen müssen, dass seitdem ich die IP über das Web-Interface beziehe, ich alle 2-3 Tage den Router neustarten muss. Es erfolgt sonst keine Neueinwahl mehr. Heute habe ich das Skript so geändert, dass es Daten aus der diagnostic.htm ausliest und nicht mehr aus der wan_ipaddr.htm. Ergebnisse folgen.

Update 06.12.2014:
Brachte keine Besserung.

 

Windows Powershell

Achtung! Falls das Ausführen von Powershell Scripten momentan nicht erlaubt sein sollte, kann es hilfreich sein die Policy auf RemoteSigned zu setzen. Dazu die Powershell als Administrator starten!

Befehl:

Set-ExecutionPolicy RemoteSigned

Powershell:

PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned

Ausführungsrichtlinie ändern
Die Ausführungsrichtlinie trägt zum Schutz vor nicht vertrauenswürdigen Skripts bei. Wenn Sie die Ausführungsrichtlinie
 ändern, sind Sie möglicherweise den im Hilfethema "about_Execution_Policies" beschriebenen Sicherheitsrisiken
ausgesetzt. Möchten Sie die Ausführungsrichtlinie ändern?
[J] Ja  [N] Nein  [H] Anhalten  [?] Hilfe (Standard ist "J"): J

 

Script:

<router-ip>;<passwort>; u.s.w. bitte entsprechend anpassen, aber aufgepasst, das funktioniert nur wenn niemand sonst am Router angemeldet ist.

$nw = New-Object system.Net.WebClient;
$gc = $nw.downloadString("http://<router-ip>/cgi-bin/Hn_login.cgi?idTextPassword=<passwort>");
$gc = $nw.downloadString("http://<router-ip>/wan_ipaddr.htm");
$test = echo $gc | findstr /R "wan_ip='[0-9]*.[0-9]*.[0-9]*.[0-9]*'";
$last = $test.LastIndexOf("'");
$first = $test.IndexOf("'");
$test = $test.substring($first+1,$last-$first-1);
echo $test;
$gc = $nw.downloadString("http://<router-ip>/cgi-bin/Hn_logout.cgi");

Hier wird an einer stelle mit echo die IP ausgegeben-> das Script kann ganz simpel mit einem Befehl erweitert werden um euren dyndnsclient über console bzw. Eingabeaufforderung auszuführen.

Zum Beispiel könnte man ddclient + Perl für Windows verwenden. Wenn ihr Hilfe braucht, sagt einfach bescheid.

Wegen der hohen Anfragen habe ich jetzt ein kleines Video erstellt als Guide für die Umsetzung der Perl + ddclient + Powershell Version.

 

Da ich auf Probleme mit SSL gestossen bin, war es notwendig neue Pakete einzuspielen:

Fehlermeldung Keywords:

SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

IO::Socket::INET configuration failed

Komplette Meldung:

IO::Socket::SSL: SSL connect attempt failed with unknown error error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at [scriptname] line 123456. IO::Socket::INET configuration failed error

 

Perl (Module) Pakete: http://www.sisyphusion.tk/ppm/

 

Ähnliche Fehlermeldungen:

IO::Socket::SSL: SSL connect attempt failed with unknown error error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at [scriptname] line 123456. IO::Socket::IP configuration failed error

Hier ist es immer hilfreich auf die neuesten Versionen der Module upzugraden. Aufmerksamkeit sollte bei den Modulen

  • IO-Socket-IP
  • IO-Socket-INET
  • IO-Socket-SSL

liegen.

 

oder ausschließlich SSL Fehler:

IO::Socket::SSL: SSL connect attempt failed with unknown error error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Das kann eventuell daran liegen, dass euer SSL kein SSL3 unterstützt. Ich umgehe es mit folgender zusätzlicher Zeile. Dieser Block ist bei etwa Zeile 1882 zu finden im ddclient Script selbst.

    } elsif ($use_ssl) {
            $sd = IO::Socket::SSL->new(
            PeerAddr => $peer,
            PeerPort => $port,
            Proto => 'tcp',
            MultiHomed => 1,
            SSL_verify_mode => 'SSL_VERIFY_NONE',
            Timeout => opt('timeout'),
        );

 

Download

Zu guter letzt, die ddclient Konfigurationsdateien aus dem Video: ddclient config files
Und das angepasste Powershell Script: Powershell Script getip

$nw = New-Object system.Net.WebClient;
$loc_ip = "192.168.1.1";
$pw = "1234567890";
$gc = $nw.downloadString("http://$loc_ip/cgi-bin/Hn_login.cgi?idTextPassword=$pw");
$gc = $nw.downloadString("http://$loc_ip/wan_ipaddr.htm");
$test = echo $gc | findstr /R "wan_ip='[0-9]*.[0-9]*.[0-9]*.[0-9]*'";
$last = $test.LastIndexOf("'");
$first = $test.IndexOf("'");
$test = $test.substring($first+1,$last-$first-1);
$gc = $nw.downloadString("http://$loc_ip/cgi-bin/Hn_logout.cgi");
return $test;

 

Das Video

 

Der Grund dafür, wieso ich das IP-Sammel Script in Powershell konstruiert habe ist einfach der, dass Powershell nunmal ein Hausmittel von MS ist und sich für eine Lösung anbietet. Damit dieses Script im Mittelpunkt verbleit, wurde die “Perl und ddclient” Lösung drumherum aufgebaut. Natürlich ist es möglich alles mit Perl zu erledigen. Durch die seperate Lösung mittels Powershell kann man jedoch auch jederzeit den Client wechseln, sofern dieser externe Befehle zum ermitteln der IP Adresse ausführen kann. So muss das Ermitteln nicht neu erfunden werden für diesen Router auf MS.

In der Regel wird das eigentliche Update des DNS-Eintrags durch den Aufruf einer https-Adresse angestoßen. Also bei DynDNS. Für euch selbst könntet ihr somit auch ein auf euren Anbieter abgestimmtes Powershell Script schaffen, indem ihr nur eine Hand voll Zeilen hinzufügt. Den Aufruf selbst und die Prüfung ob es erfolgreich war.

 

Zum Beispiel:

$lastupdate = get-content "update.cache";  // IP-Adresse mit der zuletzt am DNS geupdated wurde

...

Code zum Beziehen der IP (unser vorhandenes Script ohne return-Zeile)

...


$current_ip = $test; // nimm die ermittelte IP (aus unserem Script)  und schreib sie in "$current_ip"

if ($lastupdate) { // wurde bisher ein Update gefahren, würde dann hier eine IP-Adresse enthalten sein

    if($lastupdate -eq $current_ip) {  exit; } // hat sich die IP-Adresse nicht geändert? raus hier
    } else {  //ansonsten Update durchführen!!

    $update_status = $nw.downloadString("https://www.eueranbieter.de/nic/irgendeinpfad/update?myip=$current_ip&hostname=mein.dyndns.host.org");
...hier der Code um zu prüfen, ob das Update erfolgreich war (möglich, dass es schon ausreicht nach einem Stichwort zu suchen wie "Success". Bei dyndns2 kommt laut API zum Beispiel ein "good" wenn das Update erfolgreich war) Und um Himmels willen besorgt euch die richtigen Update Urls von eurem Anbieter...

    $update_status =  select-string "good" -InputObject $update_status; // nur als Beispiel!!!
    if ($update_status) { // wenn ja dann neue IP-Adresse in die cache schreiben:
        set-content "update.cache" $current_ip;
    } else {
        echo "nicht geklappt";

}

 

Continue reading

Home-Server™ with MSI J1900I and debian Linux

This is kind of a review but at the same time it's not. I'm not going to test audio or video right now nor will i benchmark anything down. The MSI J1900I has an onboard Intel® Celeron® Processor J1900 (2M Cache, up to 2.42 GHz, 4 Cores) Chip, which lacks instruction sets compared to other mainboards in this category, but comes with a good clockspeed and low energy consumption.

I decided to get me a new little server running at home. For fun and entertaining myself for sure.

Sorry, i flipped the wrapping of the board. Well here is the hardware list.

 

Components:

  • MSI J1900I Motherboard, Intel® Celeron® J1900 (2M Cache, up to 2.42 GHz), mini-ITX
  • Kingston SDD V300 120 GB
  • be quiet 300 Watts Power Supply
  • Xigmatek Case Nebula, mini-ITX
  • and of course some SO-DIMMs 4 GB in total (Teamgroup)

 

Once assembled i started to install debian with USB sticks and a lot of patience and problems and patience. Why debian? well i made this decision like 17 years ago. It's an old love.

An argument maybe would be that debian appears very clean to me. Some people maybe in turn would say the opposite. However...

Now i have a running system with cpufreqd (this changed), dynamic dns or dyndns, wordpress of course and the independency and freedom that comes with it.

 

Few words about the Xigmatek Nebula Case

I like it. You can take off 3 side panels and everything is easy to access. The bottom has a lot of tiny holes for good airflow. For installing a mini-itx board i can recommend a short screw driver and be patient when you install the power supply. Everything is new and sits tight. The hole case itselfs look pretty clean and "cool". I wish i had the money to get me a stack of them to create a wall. But my internet connection just couldn't make use of them.

If you buy one, be gentle! The panels sit very justified/flush. You may have to use your nails or some plastic stick to get the first panel off. Once you  have the first panel off, its easy. Additionally i bought some purple LED to light the undersurface.

 

 

 

Realtek you Schlitzohr (translate that please for me)

During installation you may  get in trouble with the network drivers. Possible that your kernel is shipped with Realtek 8169 support (grep for r816 in lsmod) and even that a driver is loaded your network is not working properly? Then open your brower and search for "Realtek 8168".

I ended up here and tried some mirrors for the UX drivers and as you can see i got it to work - otherwise you wouldn't see this website.

When compiled and installed using the autorun.sh there still might be a r8169.ko left. Rename it to something that doesn't end with *.ko and run:

update-initramfs -u -k $(uname -r)

otherwise your kernel may keep loading the "old" driver during boot.

root@bahuett:~# lsmod|grep -i r8
r8168                 248409  0

 You didn't even get to that point? Debian is not even booting? What device are you using to deploy debian love on your system?

 

CD/DVD/NetInst?

The painful truth about this system is, that even when you manage it to install the netinstall system or base system using USB sticks you end up with dead network drivers and an USB stick and no way to compile a new driver (when using 1 CD ISO Image only).

So i recommend using an DVD Image to make sure every package that could be useful is available. And please, check the Image you downloaded for corruption/integirity or the files you need are not there or not complete.

For "burning" my USB sticks on Windows i tested some programms and in the end i can recommend this one:

WinSetupFromUSB-1-4 - Click

 

Quiet but not cold?

The MSI J1900i comes with a passive heatsink and the Nebula case has a fan rotating at ~ 1000 rpm. You can't hear it thats what we want - but - under load the CPU can reach up to 60 ° C or 158° F. (Just keep in mind that this CPU comes with a turbo boost mode!) I dont like that but for now i leave it as it is. The first thing i did was to play with cpufreqd and start makeing powersaving modes for my little hamster.

governor "powersave" -- didn't work well for me

... because i want both, saving power when nothing to do and launch rockets when necessary.

At first i tried the governor (you will know what this is, when you start business with cpufreqd) "powersave". The result was that the CPU got throttled the way i wanted but didn't dethrottle the way i wanted. Or there was an "incredible" higher stress required to get this governor switch to the next higher frequency while in powersaving mode. Don't get me wrong, the CPU got clocked smoothly higher and higher but not to fullspeed.

And i had  5 Rules and 5 Profiles to cover the frequencies (9 steps) cpufreq can move in.

Steppings

2.0 GHz (100%) 1.91 GHz (95,5%) 1.83 GHz (91,5%) 1.74 GHz (87%) 1.66 GHz (83%) ->

1.58 GHz (79%) 1.49 GHz (74,5%) 1.41 GHz (70,5%) 1.33 GHz (66,5%)

 (and the turbo-boost frequency 2.4 GHz)

 

However some of the governor parameters in cpufreqd are not available for governor "powersave" thus i changed to governor "ondemand" and am happy with it. Name of the rules do not have to contain the name of the governor in it. And frequencies are allowed to overlap. Also its not necessary to provide exact frequencies. You can use % values instead in your config.

current active rule is being selected by cpufreqd according to it's rule parameters which scores most

root@bahuett:~# cpufreqd-get

Name (#1):      ondemand High
Active on CPU#: 0, 1, 2, 3                       (this line implies which profile is active which in turn gets selected by the rules you create)

Governor:       ondemand
Min freq:       1328000
Max freq:       1328000

Name (#2):      ondemand Med
Governor:       ondemand
Min freq:       1328000
Max freq:       1494000

Name (#3):      ondemand Low1
Governor:       ondemand
Min freq:       1411000
Max freq:       1660000

Name (#4):      ondemand Low2
Governor:       ondemand
Min freq:       1577000
Max freq:       1826000

Name (#5):      ondemand Low3
Governor:       ondemand
Min freq:       1826000
Max freq:       1993000

model name and its official clock speed and the actual speed of each core-#

root@bahuett:~# watch "grep Hz /proc/cpuinfo"

Every 2,0s: grep Hz /proc/cpuinfo             Fri Aug 15 21:08:17 2014

model name      : Intel(R) Celeron(R) CPU  J1900  @ 1.99GHz
cpu MHz         : 1328.000
model name      : Intel(R) Celeron(R) CPU  J1900  @ 1.99GHz
cpu MHz         : 1328.000
model name      : Intel(R) Celeron(R) CPU  J1900  @ 1.99GHz
cpu MHz         : 1328.000
model name      : Intel(R) Celeron(R) CPU  J1900  @ 1.99GHz
cpu MHz         : 1328.000

 

 

 

 Sensors / Temperatur

Unfortunately ACPI can't find the CPUs temperature or at least not from stock. Just the systems temp can be measured - but - lm-sensors is doing well AND you can use the values in cpufreqd!

lm-sensor output

root@bahuett:~# sensor
sacpitz-virtual-0
Adapter: Virtual device
temp1:        +26.8°C  (crit = +90.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:       +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 2:       +48.0°C  (high = +105.0°C, crit = +105.0°C)
Core 3:       +48.0°C  (high = +105.0°C, crit = +105.0°C)

ACPI output

root@bahuett:~# acpi -V
No support for device type: power_supply
No support for device type: power_supply
Thermal 0: ok, 26.8 degrees C
Thermal 0: trip point 0 switches to mode critical at temperature 90.0 degrees C
Thermal 0: trip point 1 switches to mode hot at temperature 85.0 degrees C
Thermal 0: trip point 2 switches to mode passive at temperature 85.0 degrees C
Thermal 0: trip point 3 switches to mode active at temperature 50.0 degrees C
Cooling 0: Processor 0 of 10
Cooling 1: Processor 0 of 10
Cooling 2: Processor 0 of 10
Cooling 3: Processor 0 of 10
Cooling 4: Fan 0 of 1

root@bahuett:~# acpi -t
Thermal 0: ok, 26.8 degrees C

 

The negative side is, that cpufreqd and turbo boost mode seem not to work together. However. Loading the msr module

modprobe msr 

and an additional stresstest discover that cpufreqd is the boss, but when you turn cpufreqd off, the turbo boost is working fine!

You could get cpufreqd working with "turbo" when you adjust the max frequency setting. But in my case i can now stick to msr only. So cpufreqd would just be extra overhead.

 

For plain powersavings i would recommend cpufreqd.  In my case, msr-only is the better choice. Frequency-changes during short stress-tests:

root@bahuett:~# turbostat
 CPU   GHz    TSC
 avg   2.35   2.00
   0   2.10   2.00
   1   2.41   2.00
   2   1.39   2.00
   3   1.33   2.00
 CPU   GHz    TSC
 avg   2.33   2.00
   0   2.12   2.00
   1   2.41   2.00
   2   1.33   2.00
   3   1.33   2.00
 CPU   GHz    TSC
 avg   2.30   2.00
   0   2.29   2.00
   1   2.38   2.00
   2   1.33   2.00
   3   1.33   2.00
 CPU   GHz    TSC
 avg   2.34   2.00
   0   2.22   2.00
   1   2.41   2.00
   2   1.33   2.00
   3   1.33   2.00
 CPU   GHz    TSC
 avg   2.34   2.00
   0   2.06   2.00
   1   2.41   2.00
   2   1.33   2.00
   3   1.33   2.00
 CPU   GHz    TSC
 avg   2.34   2.00
   0   2.06   2.00
   1   2.41   2.00
   2   1.33   2.00
   3   1.33   2.00
 CPU   GHz    TSC
 avg   2.34   2.00
   0   2.06   2.00
   1   2.41   2.00
   2   1.33   2.00
   3   1.33   2.00
 CPU   GHz    TSC
 avg   2.34   2.00
   0   2.19   2.00
   1   2.41   2.00
   2   1.33   2.00
   3   1.33   2.00
 CPU   GHz    TSC
 avg   2.36   2.00
   0   2.16   2.00
   1   2.41   2.00
   2   1.42   2.00
   3   1.43   2.00