Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dynamic DNS und pfSense - IP über custom URL aktualisieren

Frage Netzwerke Router & Routing

Mitglied: cantor

cantor (Level 1) - Jetzt verbinden

30.05.2013 um 22:00 Uhr, 4962 Aufrufe, 7 Kommentare

Ich möchte über meine pfSense (2.0.1) den A-Record einer Subdomain von mir automatisch mit der WAN-IP meines Heimnetzwerkes aktualisieren.

Dazu muß ein URL der folgenden Form
https://sub.domain.tld/dns.php?<mehrere parameter>?ip=<WAN-IP>?<weitere Parameter>
aufgerufen werden.

Mein Problem besteht darin, daß ich nicht weiß, wie ich pfSense dazu bringen kann, mit der vorhandenen WAN-IP den obigen URL zusammenzubauen und dann einmal täglich per cron aufzurufen.

Mit pfSense habe ich bisher lediglich über die GUI gearbeitet und ich verfüge bedauerlicherweise über so gut wie keine Linux-Kenntnisse.

Für Tipps, Hinweise und Hilfe bei der Lösung des Problems wäre ich daher sehr dankbar.

Gruß Jürgen
Mitglied: kingkong
30.05.2013 um 23:20 Uhr
Welchen DNS-Server setzt Du denn ein? Bzw. wie würdest Du im PHP-Skript das Update durchführen? Per nsupdate?

Ich frage, weil pfSense grundsätzlich in der Lage ist, als RFC2136-Client, d.h. als DynamicDNS-Client, zu arbeiten. Wenn Du beispielsweise bind einsetzt, dann könnte dieser als RFC2136-Gegenstelle agieren und Du bräuchtest das PHP-Skript nicht.

Ansonsten brauchst Du doch eigentlich nur mit pfSense und z.B. wget eine statische URL aufrufen, in der als einziger Parameter ein Passwort steht. Dynamisch müsste da nichts sein, weil das PHP-Skript ja die Adresse des anfragenden Routers als neue Zieladresse setzen kann, wenn das Passwort korrekt ist.
pfSense ruft nach jeder IP-Änderung auf dem roten Interface sowieso schon ein Skript auf, welches dann den RFC2136-Prozess startet. Da könntest Du u.U. auch Deine Befehle unterbringen.

Ich schätze aber, Du wirst etwas mit Deiner pfSense spielen müssen. Ich weiß gerade selbst nicht, wo die Skripte liegen und wie sie heißen, aber Google müsste zu diesem Thema eigentlich einiges finden.
Bitte warten ..
Mitglied: cantor
30.05.2013 um 23:29 Uhr
Ich verfüge über eine bei all-inkl.com gehostete Domain und kann dort mit der AutoKAS Schnittstellen-API den A-Record meiner Subdomain ändern. dazu muß ich aber besagte URL aufrufen, welche die aktuelle WAN-IP der pfSense als Parameter enthalten muß.

Gruß Jürgen
Bitte warten ..
Mitglied: C.R.S.
30.05.2013 um 23:29 Uhr
Am einfachsten wäre, das ins GUI zu integrieren.

In den beiden Dateien fürs Webinterface sind die Listen um einen eigenen Anbieter zu erweitern (je in zwei aufeinander folgenden Zeilen, entsprechend den voreingestellten):

/usr/local/www/services_dyndns.php
/usr/local/www/services_dyndns_edit.php

Die Anbieterkonfigurationen stehen in /etc/inc/dyndns.class

Ich möchte jetzt aus der Erinnerung kein Tutorial dazu verfassen. Aber wenn Du dich in die dyndns.class ein bisschen reindenktst und die curl_setopt-Zusammensetzung verschiedener Anbieter vergleichst, sollte das nicht mehr allzu schwer sein bzw. ein vorhandener Anbieter schon in etwa zu übernehmen sein.
Das Ganze überlebt ein Update nicht (was bei 2.0.1 zu empfehlen wäre).

Grüße
Richard
Bitte warten ..
Mitglied: cantor
31.05.2013 um 00:10 Uhr
Hmm ... Die pfSense habe ich gerade auf 2.0.3 aktualisiert und mir die angesprochenen drei Dateien angesehen. Da ich mehr oder minder als reiner "Anwender" unterwegs bin, steige ich bei dem PHP-Code definitiv nicht durch, um die Scripte und insbesondere die dyndns.class zu ergänzen.

Ich hatte mir eigentlich vorgestellt, ein kurzes PHP-Script zusammenzudengeln, welches lediglich die aktuelle IP in den URL integriert und den URL dann aufruft. Das Script seinerseits hätte ich dann versucht, über einen Cronjob zu starten. Ich scheitere im Moment schon daran, die Variable für die aktuelle WAN-IP zu identifizieren bzw. diese über PHP zu ermitteln.

Gruß Jürgen
Bitte warten ..
Mitglied: aqui
31.05.2013 um 11:13 Uhr
Du kannst das auch über einen CRON Job regeln. Im pfSense Forum mal suchen nach cron da wird man fündig.
Eigentlich ist das schnell erledigt...wenn man denn weiss was man macht ?!
Bitte warten ..
Mitglied: cantor
31.05.2013, aktualisiert um 23:14 Uhr
Zitat von aqui:
Du kannst das auch über einen CRON Job regeln. Im pfSense Forum mal suchen nach cron da wird man fündig.
Eigentlich ist das schnell erledigt...wenn man denn weiss was man macht ?!


Einen Schritt bin ich weitergekommen, aber leider funktioniert das noch nicht wie gewünscht.

Ich habe das folgende PHP-Script erstellt:
01.
<?php 
02.
$ifinfo      = get_interface_info(wan); 
03.
$ip_provider = $ifinfo[ipaddr]; 
04.
 
05.
$url_get     = "http://kasapi.kasserver.com/kas.php?kas_action=get_dns_settings&kas_login=xxxxx&kas_auth_type=sha1&kas_auth_data=yyyyy&zone_host=meinedomain.tld.&nameserver=ns5.kasserver.com"
06.
$url1_set    = "https://kasapi.kasserver.com/kas.php?kas_action=update_dns_settings&kas_login=xxxxx&kas_auth_type=sha1&kas_auth_data=yyyyy&record_name=subdomain&record_type=A&record_data="
07.
$url2_set    = "&record_aux=0&record_id=xxxxx&nameserver=ns5.kasserver.com"
08.
$url_set     =  $url1_set . $ip_provider . $url2_set
09.
 
10.
 
11.
/* IP-der Subdomain ueber AutoKAS API abfragen *
12.
 
13.
$dns_abfrage = file($url_get); 
14.
$ip_nameserver = ereg_replace(".*\'(.*)\'.*","\\1",$dns_abfrage[50]); 
15.
 
16.
 
17.
 
18.
/* Abfrage ob IP-Aenderung auf Nameserver noetig ist *
19.
 
20.
if($ifinfo[pppoelink] == 'up' && $ip_provider != $ip_nameserver){ 
21.
	$curl = curl_init($url_set);  
22.
	curl_setopt($curl, CURLOPT_FAILONERROR, true);  
23.
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  
24.
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);    
25.
	curl_exec($curl); 
26.
	}; 
27.
?>
Wenn ich den Code zwischen <?php und ?> bei pfSense in das Feld "PHP Execute" (unter "Diagnostics" -> "Command Prompt") einfüge und ausführe, klappt alles wie gewünscht und der A-record für die Subdomain wird aktualisiert.

Im nächsten Schritt habe ich die PHP-Datei unter /usr/local/pkg/change_provider_ip.ph abgespeichert und die Rechte 0755 vergeben.

Der Eintrag unter den Cron-Settings (ich habe das Paket Cron installiert) sieht wie folgt aus:
01.
minute hour mday month wday who   command			 
02.
[...] 
03.
*/1    *    *    *     *    root   /usr/local/bin/php /usr/local/pkg/change_provider_ip.php 0
Das Kommando im Cron-Tab orientiert sich an diesem Beitrag im pfSense-Forum.

Ich bin mit meinem (begrenzten) Wissen leider am Ende; ich kann nicht erkennen, wo der Fehler steckt. Vielleicht kann mir ja noch jemand einen Schubs in die richtige Richtung verpassen.

Eintweilen herzlichen Dank im voraus.

Gruß Jürgen
Bitte warten ..
Mitglied: cantor
02.06.2013, aktualisiert 04.06.2013
Das Problem ist gelöst.
Für das Ursprungsscript bzw. die dort aufgerufene Funktion get_interface_info() hätte ich noch guiconfig.inc mittels require bzw. require_once einbinden müssen. Aus für mich nicht nachvollziehbaren Gründen bricht mein Script aber reproduzierbar ab, wenn ich eine beliebige Ressource mittels require oder require_once einbinde. Auf meine diesbezügliche Anfrage im pfSense-Forum ist keine Antwort eingegangen.

Das Script sieht mittlerweile wie folgt aus:

01.
<?php 
02.
$wan        = pfsense_get_interface_addresses('pppoe0'); 
03.
$ip_wan     = $wan[ipaddr]; 
04.
$status_wan = $wan[status]; 
05.
 
06.
$url_get    = "https://kasapi.kasserver.com/kas.php?kas_action=get_dns_settings&kas_login=xxxxx&kas_auth_type=sha1&kas_auth_data=yyyyy&zone_host=meinedomain.tld.&nameserver=ns5.kasserver.com"
07.
$url1_set   = "https://kasapi.kasserver.com/kas.php?kas_action=update_dns_settings&kas_login=xxxxx&kas_auth_type=sha1&kas_auth_data=yyyyy&record_name=subdomain&record_type=A&record_data="
08.
$url2_set   = "&record_aux=0&record_id=zzzz&nameserver=ns5.kasserver.com"
09.
$url_set    =  $url1_set . $ip_wan . $url2_set
10.
 
11.
 
12.
/* IP-der Subdomain ueber AutoKAS API abfragen *
13.
 
14.
$dns_abfrage = file($url_get); 
15.
$ip_nameserver = ereg_replace(".*\'(.*)\'.*","\\1",$dns_abfrage[50]); 
16.
 
17.
 
18.
/* Abfrage ob IP-Aenderung auf Nameserver noetig ist *
19.
 
20.
if($status_wan == 'up' && $ip_wan != $ip_nameserver){ 
21.
	$curl = curl_init($url_set);  
22.
	curl_setopt($curl, CURLOPT_FAILONERROR, true);  
23.
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  
24.
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);    
25.
	curl_exec($curl); 
26.
	}; 
27.
?>
Die Funktion pfsense_get_interface_addresses() kann ich direkt verwenden. Auch wenn ich nicht verstehe, warum das so ist - es funktioniert jedenfalls wie gewünscht.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Netzwerke
Pfsense recd unexpected protocol IP (10)

Frage von thomasreischer zum Thema Netzwerke ...

DNS
gelöst DNS wird nicht aufgelöst nach PFSense-Update (4)

Frage von droehn zum Thema DNS ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...