Samba 4.0.3 auf Ubuntu 12.04 LTS einrichten

Endlich gibt es Samba 4 als stabieles Release. 10 Jahre hat dies gedauert, jedoch finde ich das ganze ist schon gut gelungen. Leider gibt es für Ubuntu PRECISE 12.04 nur ältere Alpha-Pakete welche doch einige Funktionen nicht mitbringen. Daher habe ich mich ran gemacht und Samba 4 selbst erstellt. Da es hier jedoch einige Stolpersteine gab will ich hier meinen Weg mit euch teilen. Ich hoffe dem einen oder anderen damit zu helfen. Auch die PPA Quellen einiger Leute sind doch sehr sehr fehlerhaft und unsicher.

Ich habe mich grundlegend an das offizielle Howto von Samba 4 gehalten welches ihr hier findet. Jedoch gibt es hier unter Ubuntu 12.04 doch einige Probleme, zumindest bei mir. Zuerst richtige ich mir meine Umgebung ein und lade die Quellen runter…

$ mkdir /root/src
$ cd /root/src
$ git clone -b v4-0-stable git://git.samba.org/samba.git samba4

Nun brauche ich alle noch einige Bibliotheken damit das erstellen auch klappt. Hier helfe ich mir mit einem Trick. Ich lade erstmal alle Bibliotheken die das Ubuntu Packet von Samba benötigt runter…

$ apt-get build-dep samba4

Hier hatte ich nun Probiert mein Packet zu erstellen, leider gab es hier Fehler beim Kompilieren. Nach einigem googeln bin ich auf folgende Seite gestoßen. Nun also noch einige Pakete zusätzlich installieren. Also ein

$ apt-get install build-essential libacl1-dev libattr1-dev \
 libblkid-dev libgnutls-dev libreadline-dev python-dev \ 
 python-dns python gdb pkg-config libpopt-dev libldap2-dev \
 dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev

Leider ging es nun auch nicht sofort. Also noch schnell die die configure Anweisungen angepasst und nochmal das ganze Samba 4 Packet kompiliert.

$ ./configure --prefix=/usr \
--mandir=/usr/share/man \
--sysconfdir=/etc \
--localstatedir=/var \
--with-piddir=/var/run \
--disable-rpath --disable-rpath-install \
--libdir=/usr/lib/x86_64-linux-gnu \
--with-modulesdir=/usr/lib/x86_64-linux-gnu/samba/ \
--enable-fhs
$ make -j 4
$ make install -j 4

Das j 4 macht den ganzen Vorgang doch erheblich schneller da ich einen 4 Core CPU habe. Nun lief bei mir Samba 4 sauber auch als Domain Controller unter Ubuntu 12.04. Auch wbinfo läuft Prima und ohne Probleme. Auch die Scripte wie samba-tool laufen sauber ohne flüssig, genauso wie der KDC und so weiter. Bitte beachtet aber, das in der neuen Version der interne DNS Server von Samba 4 per default eingesetzt wird und nicht BIND oder BIND mit DLZ ( mein Favorit ). Hier muss man beim provision des DC’s aufpassen. Den Rest erklärt das offizielle Samba4 Howto Super…

Ich hoffe ich konnte den einen oder anderen Helfen über ein Feedback eurerseits würde mich wie immer freuen…

MfG

Thowie

 

Statische Routen unter Ubuntu automatisieren

Hallo zusammen,

ich musste für einen Kunden ein VPN auf seinen Webserver einrichten und dies durch ein eigenes Gateway schleusen. Da der Server jedoch eine öffentliche IP mit eigenem Default Gateway hat, auf diesem jedoch nicht das VPN eingerichtet wurde. Musste nun ein weg zum VPN Router gefunden werden… Weiterlesen

FTP unter Ubuntu Linux mounten

Wenn man mit häufig mit Webseiten arbeitet, muss man oft viele Dateien von und auf ein FTP Verzeichnis kopieren. Dies kann man wie üblich einfach mit einem FTP Programm erledigen, jedoch ist dies oftmals ehr nervig. Schöner wäre es doch das entfernte FTP Verzeichnis einfach in das Dateisystem einzubinden. Dies können wir unter Ubuntu sehr einfach machen.

Installation von curlftpfs

Zuerst müssen wir curlftpfs installieren. Dazu geben wir in einer shell als root folgendes ein:

apt-get install curlftpfs

Nun müssen wir fuse Fertig einrichten. Als erstes muss der Benutzer der curlftpfs verwenden soll unter /etc/fuse.conf eingetragen werden. Dies erledigt ein:

nano /etc/fuse.conf

Dort einfach den Benutzernamen eintragen. Nun müssen wir diese Datei für alle Lesbar machen.

sudo chmod a+r /etc/fuse.conf
 Wichtig ist es nun ein Verzeichnis anzulegen wo das FTP-Verzeichnis eingehangen werden soll. In unserem Beispiel unter /mnt/ftp.
mkdir /mnt/ftp

Nun können wir in einem Terminal die Verbindung testen oder auch bereits nutzen.

curlftpfs User:Passwort@ftp-server.de/pfad_auf_dem_server/ /mnt/ftp
Wir können nun auch die Verbindung in unsere /etc/fstab schreiben, so würde die Verbindung immer automatisch beim Systemstart wiederhergestellt werden.
curlftpfs#Benutzername:Password@ftp-server.de /mnt/ftp fuse auto,user,uid=1000,allow_other,disable_eprt 0 0
Wichtig ist hier alles in eine Zeile zu schreiben!!! Bitte keinen Zeilenumbruch.
Das ganze ist auch für Backups sehr praktisch.

CARP unter Ubuntu Linux

Allgemeines zu CARP

Durch das Common Address Redundancy Protocol (CARP) lässt sich die Verfügbarkeit von IP-Systemen deutlich erhöhen. Dies wird durch den Einsatz virtueller IP/MACAdressen auf verschiedenen Rechnern erreicht. Das Haupteinsatz von CARP ist zwar die Hochverfügbarkeit von Gateways, jedoch lassen sich auch andere Dienste wie Datenbanken oder Mailserver sehr einfach redundant auslegen. Heute zeige ich euch wie wir dies unter Ubuntu machen können…

Weiterlesen

Plesk secondary DNS eventscript

Ich habe mir mal ein kleines Script gebastelt um mir die Einrichtung von Domains unter Plesk etwas zu vereinfachen. Ich betreibe mehrere Server in Rechenzentren und habe auch ein paar Pleskinstallationen am laufen. Ich selber finde Plesksysteme für die schnelle Verwaltung von Websitehostings nicht schlecht. Jedoch habe ich eigene DNS Server die ich für meine Dienste nutzen will. Diese laufen auch auf dem bekannten ISC Server Bind9…

Unter Plesk kann man zwar DNS Server angeben die als Slave anerkannt werden, jedoch werden diese nicht automatisch eingerichtet. Allerdings hat Plesk eine sehr nette Funktion, die Eventscripts. Dies sind Scripte die ich an verschiedene Aktionen von Plesk anhängen kann. Diesen Umstand nutzt mein DNS Script. Im Grunde ist es sehr einfach. Das Script wird bei jeglichen Aktionen die Domains bzw. DNS betreffen ausgeführt und fragt die Plesk Domains aus einer Datenbank ab und transferiert die Daten an einen zweiten Linux Server mit Bind.

Hier mal der Weg für die Installation:

cd /tmp
wget http://www.networkmonkey.de/scripts/dns_sync

Nun bearbeitet ihr das Script mit eurem Lieblingseditor ich nehme gerne nano für solche Aufgaben…

nano dns_sync
# Server IP from Master DNS Server of the Domain
MASTER_DNS_SERVER=“1.1.1.1;“
# Masterserver config dir
MASTER_DNS_CONFIG_DIR=“/var/named/run-root/etc/“
# Which Server should notify allow?
NOTIFY_DNS_SERVER=“first_ip_here; second_ip_here;“
# Servernames of the secondary DNS Servers for SSH connect
DNS_SLAVE_SERVERS=(ns1.yourdomain.de x.x.x.x)
# Store for secondary domain data
SLAVE_DNS_DATA_DIR=“/etc/bind/slave/“
# Configdir for secondary slave server
SLAVE_DNS_CONFIG_DIR=“/etc/bind/“
# User that can edit SLAVE_DNS_CONFIG an get shell access throug SSH
SLAVE_DNS_SSH_USER=“dnsadmin“
# Configfile of secondary DNS Server
SLAVE_DNS_BIND_CONFIG=“named.conf“

Die Variablen sollten sich selbst erklären. Die Datei danach speichern und in an einen Ort kopieren wo es ausgeführt werden kann… z.B.

mv /tmp/dns_sync /usr/sbin/dns_sync

Nun brauchen wir einen SSH key für unseren ssh Benutzer… Diesen erstellen wir uns kopieren ihn gleich auf den Server wo er benötigt wird. Bitte beim kopieren des ganzen darauf achten, die gleichen Daten wie im Script angegeben zu verwenden… Auch muss dieser Schlüssel auf alle Server die unter DNS_SLAVE_SERVERS angegeben sind. Beim erstellen des Keys darauf achten KEIN Passwort einzugeben und einfach Enter drücken!!!

ssh-keygen
ssh-copy-id user@servername

Wichtig ist das der Benutzer auf dem SlaveServer auch schreibrechte in dem Bind directory hat und das Programm rndc ausführen darf. Am besten fügt man den SSH Benutzer der Gruppe bind hinzu. Zumindest unter Debian und Ubuntu klappt das ohne Probleme. Jetzt können wir das Script testen in dem wir es einfach ausführen. Es sollte keine Passwortabfrage erscheinen und die Daten sollten kopiert werden. Nun sollte auch auf dem Slaveservern eine neue Datei im Bindkonfigverzeichniss erscheinen welche den Hostnamen eures Masterservers hat mit der Endung .slave. Diese Konfig sollte nun durch die named.conf am ende eingebunden werden!!! Wenn dies geklappt hat läuft alles einwandfrei. Und wir können die Events hinzufügen.

Die Eventkonfiguration könnt ihr hier finden.

Plesk 10

Tools und Einstellungen -> Ereignissmanager

Plesk 9.5

Start -> Eventmanager

Dort fügt ihr ein neues Event hinzu. Ich habe für jeden Domainevent ein Ereignis erstellt. Unter Plesk 10 heissen die Domainevents übrigens StandardDomain. Als Priorität könnt ihr geringste einstellen und als Benutzer solltet ihr root angeben. Dies ist der Benutzer unter welchem das Script ausgeführt wird. Dieses könnt ihr natürlich auch anpassen. Als Befehlt gebt ihr nur den Pfad zu dem Script an ohne irgendwelche Parameter und schon wird das Script jedes mal bei eines dieser Events ausgelöst.

Ich hoffe dieses Script macht euch das leben auch etwas einfacher wie mir ^^