IP adres thuis

Met welk IP adres ben ik nu aan het werken.

Vaak is dat zo opgelost door naar oa de link https://whatsmyip.com/ te gaan en daar staat je IP adres.
Optie twee is om bij je modem in te loggen en te kijken wel WAN adres hij heeft.

Maar, als je niet thuis bent en je wilt je netwerk bereiken, dan heb je bij b.v Ziggo, met een dynamisch IP adres een uitdaging. Zeker bij Ziggo wisselt het IP adres niet, maar je zou het maar net nodig hebben als je in wilt loggen op je thuisnetwerk.

Als eerste oplossing wordt natuurlijk een DDNS geadviseerd. Die houd voor jou bij wat je IP adres is en geeft dan een URL naar jouw IP adres. Daarvoor moet je dan wel software laten draaien op jouw netwerk. (soms zit dat ook ergens in ingebakken, maar toch)

Ik heb een eigen website bij een Host draaien en zocht naar een andere oplossing.
Die was redelijk snel gevonden. Ik reserveer gewoon een plekje op mijn eigen website waar ik mijn IP van mijn thuiswerk neerzet. Omdat de website aan een domein hangt, kan ik die altijd vinden.

Maar hoe zorg ik dat die info op de website komt.
Als eerste heb ik een simpel formulier in HTML gemaakt. Daar vervolgens een PHP schil omheen gebouwd.
Ik kan met een "GET" opdracht in het formulier gegevens naar de website sturen. Die pak ik dan op met een PHP script, die dat vervolgens in de Database zet.

Vanaf mijn thuisnetwerk, stuur ik elk uur een bericht naar mijn website. In het PHP script kijk is of de juiste verificatie-code is gegeven. Zoja, dan weet ik dat die aanvraag van mijn thuisnetwerk kwam en in PHP weet ik ook het IP-adres van de afzender. Dus is het IP-adres van mijn thuis-netwerk op de server bekend. Die toon ik dan het volgend bezoek op het scherm.

Vanuit mijn thuisnetwerk heb ik een Raspberry Pi die om het uur een bevraging doet en daardoor mijn IP adres bijwerkt. Dat doe ik met een Curl opdracht, die ik start met een Cronjob.
D
aarvoor heb ik de regel "@hourly sh /home/pi/IP_doorgeven.sh > /home/pi/logs/cronlog 2>&1" in mijn crontab toegevoegd.

En die verwijst weer naar het bestand "IP_doorgeven.sh"

#!/bin/bash
curl -s 'https://www.mijn_website.nl/Mijn_thuis_ip_adres_is.php?veri=mijn_veiligheidscode_die_ik_ter_controle_en _veiligheid_mee_stuur&Submit=Verzenden' > /dev/null

En dan nog chmod +x IP_doorgeven.sh

Om het programma uitvoerbaar te maken

Op mijn_website staat dan het onderstaande PHP programma "Mijn_thuis_ip_adres_is.php"

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IP</title>
</head>
<body>
<?php

// -----------------------------------------------------------------------------
// database instellingen
// -----------------------------------------------------------------------------
$servername = "localhost";
$username = "gebruikersnaam van de database";
$password = "wachtwoord van de database";
$dbname = "de database naam";

// -----------------------------------------------------------------------------
// Maak verbinding voor opvragen huidige IP adres
// -----------------------------------------------------------------------------
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//$sql = "SELECT * FROM IP_vpn";
$sql = "SELECT IP_id, IP_adres, IP_date FROM IP_vpn WHERE IP_id = 1"; // Alleen het eerste record is nodig
$result = $conn->query($sql);
if ($result->num_rows == 1) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "IP " . $row["IP_adres"]. " van datum: " . $row["IP_date"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();

// -----------------------------------------------------------------------------
// Controle of een nieuw IP adres is verkregen en de code is gegeven (veri)
// -----------------------------------------------------------------------------
$datum_tijd = date("Y-m-d H:i:s"); // nodig voor update datum in de tabel
$veri = $_GET["veri"]; // kijk of er een veri (verificatiecode is meegegeven
if ($veri == "mijn_veiligheidscode_die_ik_ter_controle_en _veiligheid_mee_stuur") { // de verificatiecode

// -----------------------------------------------------------------------------
// Maak verbinding met de DB voor een update
// -----------------------------------------------------------------------------
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE IP_vpn SET IP_adres='".$_SERVER["REMOTE_ADDR"]."',IP_date='".$datum_tijd."' WHERE IP_id=1";

if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
$conn->close();
}
?>
</body>
</html>

De gemaakte code is niet mijn mooiste, maar een even snel geknipt en geplakt vanuit het internet.

Mocht je het na willen bouwen en je komt er niet uit, neem dan contact met me op via de contactpagina.

Bij mij draait het naar volle tevredenheid.