ubuntuusers.de

Samba4 Update eines DNS-Eintrags via Skript für eigenen DynDNS Dienst

Status: Gelöst | Ubuntu-Version: Server 14.04 (Trusty Tahr)
Antworten |

gregms80

Anmeldungsdatum:
8. April 2014

Beiträge: Zähle...

Hallo zusammen,

ich versuche mich gerade an einer Samba 4 Installation mit AD, DNS und dem ganzen Zeugs. Das funktioniert mittlerweile auch recht gut. Es gibt ja einschlägige Literatur im Internet.

Der Samba4-Server heißt sagen wir pdc.my.domain, wobei my.domain eine öffentliche Domain ist. Ich habe außerdem eine NAT-Freigabe auf meinem Router (der hat übrigens die Adresse home.my.domain) für den DNS-Dienst auf pdc.my.domain erstellt. Funktioniert super ☺

Ich habe außerdem noch einen vServer mit einer festen IP-Adresse im Internet stehen. Den nennen wir mal vserver.my.domain. Auf vserver.my.domain läuft bind9, der nur die Aufgabe hat, alle Anfragen nach home.my.domain, also damit an pdc.my.domain weiterzugeben. Man ahnt es: Ich will meinen eigenen DNS-Server aus dem Internet benutzen. Das hat zwei Gründe:

1. Ich find´s cool 😉 2. Ich will damit auch direkt einen eigenen DynDNS-Dienst haben.

Die Sache hat jetzt einen Haken: Woher weiß mein pdc.my.domain, welche öffentliche IP home.my.domain hat? Habe ich schon gelöst mit diesem Skript.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#!/bin/bash

OLD_IP=`nslookup home.my.domain | grep "Address" | tail -1 | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'`
echo "Old IP: $OLD_IP"

CURRENT_IP=`ssh -i /home/ipchecker/.ssh/id_rsa ipchecker@vserver.my.domain -t "grep 'Accepted publickey for ipchecker from' /var/log/auth.log | tail -1 | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'"`
echo "Current IP: $CURRENT_IP"

if [ "$OLD_IP" = "$CURRENT_IP" ]; then
        echo "no changes - exiting"
else
        echo "IP-Address of home.my.domain has changed from $OLD_IP to $CURRENT_IP"
        echo "Performing DNS-Update"
        echo
        echo "...und jetzt kommt ihr :-)"
        samba-tool dns update 127.0.0.1 my.domain home A $OLD_IP $CURRENT_IP -UAdministrator --password=mysecretpassword
fi

Das Skript gibt folgendes zurück:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
root@pdc:/home/me# update_home_ip.sh 
Old IP: 128.124.2.159
Connection to 128.124.2.159 closed.
Current IP: 55.43.66.121
IP-Address of home.my.domain has changed from 128.124.2.159 to 55.43.66.121
Performing DNS-Update

muss ich noch hinkriegen
ERROR(runtime): uncaught exception - (-1073741811, 'Unexpected information received')
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.run(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/dns.py", line 1132, in run
    del_rec_buf)

BTW: Wenn ich den letzten Befehl aus dem Skript per Hand auf der Konsole ausführe, funktioniert es. Ich muss also schon auf der Zielgeraden sein 😬

Ich hatte vorher in meinem Heimnetz ebenfalls bind9 im Einsatz. Damit hatte ich das alles schon automatisch am laufen. War zwar etwas holprig programmiert - mit sed in den bind-configs rumgepfuscht, aber es funktionierte reibungslos.

In dem Skript kann man sehen, dass ich mit Samba 4 samba-tool dazu benutzen muss. Deshalb meine Frage an die Samba-Experten unter euch:

Wie kann ich das Problem lösen?

Danke vorab! Greg

cflinux

Anmeldungsdatum:
14. Januar 2013

Beiträge: 685

Hallo

Ich verwende für meinen Samba4 einen eigenen DNS-Server (bind) und nicht den aus Samba4. Was spricht gegen diese Konfiguration, wenn diese bereits lief?

Gruß cflinux

gregms80

(Themenstarter)

Anmeldungsdatum:
8. April 2014

Beiträge: 3

Hi und danke für Deine Antwort, ich benutze Bind auch weiterhin über Samba4, allerdings kommen die Informationen über meine Domain aus Samba4 und stehen nicht direkt in einer Config von Bind. In Bind wird anscheinend für die Domain "my.domain" das Samba4 Verzeichnis abgefragt und da komme ich so einfach nicht ran, sondern nur über samba-tool. Gruß, Greg

gregms80

(Themenstarter)

Anmeldungsdatum:
8. April 2014

Beiträge: 3

Hi, hab es geschafft mit:

expect -c 'spawn /usr/bin/samba-tool dns update 127.0.0.1 nepomuk.name home A '$OLD_IP' '$CURRENT_IP' -UAdministrator; expect assword ; send "mynotsosecretpass\n" ; interact'

Gruß, Greg

Antworten |