Dynamisches DNS (DynDNS): Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:
 
== Idee ==
 
== Idee ==
  
1. Es wird die Subdomain ''vpn.example.com'' in einem dedizierten Domain-Admin aufgeschaltet.  
+
# Es wird die Subdomain ''vpn.example.com'' in einem dedizierten Domain-Admin aufgeschaltet.  
2. Es werden die leichtgewichtigen Subdomains ''login.example.com'' und ''update.example.com'' verwendet.
+
# Es werden die leichtgewichtigen Subdomains ''login.vpn.example.com'' und ''update.vpn.example.com'' verwendet.
3. Die Subdomain ''update.vpn.example.com'' wird per HTTP Basic Authentication geschützt.
+
# Die Subdomain ''update.vpn.example.com'' wird per HTTP Basic Authentication geschützt.
4. Es wird das nachfolgende Skript verwendet, welche auf dem Ansatz basiert, dass lediglich eine vertrauenswürdige Quelle die Basic Authentication passieren kann. Für eine weitergehende Absicherung wären Eingabeprüfungen sinnvoll.
+
# Es wird das nachfolgende Skript verwendet, welches auf dem Ansatz basiert, dass lediglich eine vertrauenswürdige Quelle die Basic Authentication passieren kann. Für eine weitergehende Absicherung wären Eingabeprüfungen sinnvoll.
  
 
== Lösung ==
 
== Lösung ==
Zeile 24: Zeile 24:
  
 
if ($ip) {
 
if ($ip) {
     $filename = "/home/doms/vpn.example.com/etc/pri.example.com";
+
     $filename = "/home/doms/vpn.example.com/etc/pri.vpn.example.com";
 
     $zone  = "{HEADER}\n";
 
     $zone  = "{HEADER}\n";
 
     $zone .= "{SOA_RR}\n";
 
     $zone .= "{SOA_RR}\n";
 
     $zone .= "{NS_RR}\n";
 
     $zone .= "{NS_RR}\n";
 
     $zone .= "\n";
 
     $zone .= "\n";
     $zone .= "login.{DOM_HOSTNAME}. 60 IN A   ".$ip."\n";
+
     $zone .= "login.{DOM_HOSTNAME}.   60   IN   A     ".$ip."\n";
 
     $zone .= "\n";
 
     $zone .= "\n";
     $zone .= "update.{DOM_HOSTNAME}. 60 IN A   {DOM_IPNUMBER}\n";
+
     $zone .= "update.{DOM_HOSTNAME}.       IN   A     {DOM_IPNUMBER}\n";
     $zone .= "update.{DOM_HOSTNAME}. 60 IN AAAA {DOM_IP6NUMBER}\n";
+
     $zone .= "update.{DOM_HOSTNAME}.       IN   AAAA   {DOM_IP6NUMBER}\n";
  
 
     file_put_contents($filename, $zone);
 
     file_put_contents($filename, $zone);

Aktuelle Version vom 10. Juli 2022, 08:47 Uhr

Dies ist eine Skizze für die Einrichtung von DynDNS bei Hostsharing.

Annahme

Für die bei Hostsharing gehostete Domain example.com soll DynDNS eingerichtet werden um per VPN auf das Heimnetz zugreifen zu können.

Idee

  1. Es wird die Subdomain vpn.example.com in einem dedizierten Domain-Admin aufgeschaltet.
  2. Es werden die leichtgewichtigen Subdomains login.vpn.example.com und update.vpn.example.com verwendet.
  3. Die Subdomain update.vpn.example.com wird per HTTP Basic Authentication geschützt.
  4. Es wird das nachfolgende Skript verwendet, welches auf dem Ansatz basiert, dass lediglich eine vertrauenswürdige Quelle die Basic Authentication passieren kann. Für eine weitergehende Absicherung wären Eingabeprüfungen sinnvoll.

Lösung

Wenn im Router, z.B. der Fritz!Box, oder im sonstigen DynDNS-Client als Update-URL https://update.vpn.example.com/update.php?ip=<ipaddr> und die Credentials der Basic Authentication hinterlegt werden, kann über login.vpn.example.com auf das Heimnetz zugegriffen werden.

Skript

<?php

$ip = $_GET["ip"] ?? NULL;

if ($ip) {
    $filename = "/home/doms/vpn.example.com/etc/pri.vpn.example.com";
    $zone  = "{HEADER}\n";
    $zone .= "{SOA_RR}\n";
    $zone .= "{NS_RR}\n";
    $zone .= "\n";
    $zone .= "login.{DOM_HOSTNAME}.    60   IN   A      ".$ip."\n";
    $zone .= "\n";
    $zone .= "update.{DOM_HOSTNAME}.        IN   A      {DOM_IPNUMBER}\n";
    $zone .= "update.{DOM_HOSTNAME}.        IN   AAAA   {DOM_IP6NUMBER}\n";

    file_put_contents($filename, $zone);
}

?>