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

 

FibreChannel Target unter Solaris 11

Solaris ist ein wirklich gutes Enterprise System welches super stabil läuft. Jedoch muss man sich erst an die Konfiguration gewöhnen. Das System bietet aber die super Möglichkeit ein einen Server als FC-Target laufen zu lassen. Ein FC-Target ist dabei der Anbieter von Speicher. In Kombination mit Multipath kann man damit ein schnelles ausfallsicheres Storagesystem erstellen. Durch ZFS ( wie ich finde eines der besten Dateisysteme ) ist dieses Storage in meinen Augen gleichwertig mit vielen teuren Lösungen. Wer die shell nicht scheut kann sich so ein sehr preiswertes System aufbauen.

Ich finde ja das einige Storageanbieter die Preisschraube doch etwas zu heftig einsetzen. Ich habe wie hier beschrieben mehere Systeme im Rechenzentrum bei uns im Einsatz und die Installation hat nur ca. 1 Stunde gedauert. Die Server stellen Speicher für einen großen VMWARE-Cluster und mehrere Hosts zur Verfügung. Bis heute mehr als stabiel und schön schnell.

Als erstes muss man sich für eine Solaris Version entscheiden. Leider gibt es opensolaris nicht mehr wirklich aktuell und die Express Versionen sind von Oracle eingestampft. Daher kann man openindiana nehmen. Dies wird übrigens in leicht veränderter Form auch bei vielen kommerziellen Storageanbietern genutzt. Zum testen könnt ihr jedoch auch direkt Solaris 11 von Oracle nehmen.

Meine Konfiguration besteht aus:

Supermicro SC846 24 Einschubgehäuse mit SAS Anschluss und SAS Expander

1-2 Emulex FC Enterprise Adapter. Ich Verwende immer gerne den LPe11002 dieser läuft sehr gut und ist schon sehr Preiswert bei Ebay zu bekommen. Man kann jedoch auch Qlogic Adapter nehmen. Dies habe ich persönlich aber noch nicht gemacht. Die Kompatibilität zu COMSTAR muss gegeben sein. Dies ist das System welches unseren FC Adapter zu einen Target macht.

LSI M1015 Raidcontroller im IT Modus ( Ist für ZFS ideal sowas und als IBM Version die man umflashen kann sehr preiswert bei Ebay zu bekommen )

Supermirco X8DT3-LN4F (schönes Mainboard mit IPMI Schnittstelle und 4 Lanbuchsen. Damit kann man dann auch mal ISCSI schön anbieten ) Auch mit Onboardraid welches man nehmen kann da auch IT Modues unterstützt wird.

48 GB Ram und eine Intel 5620 CPU. Dazu dann noch 2 SSD Platten a 30 GB für das System und nochmal 2 x 256GB M4 Cruacial SSD’s als cacheplatten. Als Tipp bitte bei RAM-Speicher nicht geizen. Und als 2ter Tipp mehr RAM. Es gibt nicht besseres als ordentlich Speicher bei ZFS. Dann haben wir noch 24 TB Raidplatten von WD genommen. Macht euch selbst die Freude und investiert die Paar mehr Euro in eine Raidedition. Diese Platten beherrschen ein paar sinnvolle Optionen die Consumer Platten nicht besitzen, ausserdem sind diese für den Dauereinsatz zugelassen. Bei den Setup hier reichen SATA Platten da diese nur an einen Raidcontroller angeschlossen werden. Ich habe auch Systeme mit 2 Raidcontrollern im Einsatz nur muss hier auf SAS Platten gesetzt werden um 2 Pfade aufbauen zu können. Dies kann halt SATA nicht!!! Ok lasst uns loslegen…

Wichtig: Bitte beim Einsatz von ZFS niemals einen Raidcontroller nehmen und ein Raid darauf einrichten!!! ZFS ist optimiert selber sog. RAIDZ einzurichten und zu betreuen. Durch den Einsatz des Raidcontrollers gehen viele sehr nette Funktionen nicht mehr richtig.

Als erstes installieren wir also Solaris, dabei konfigurieren wir gleich das Netzwerk mit. Bei der installation kann man leider kein (Software) Raid einrichten. Dies muss danach erfolgen. Ich verwende immer ssd Platten da wir wenig Speicherplatz benötigen und wir dort keine beweglichen Teile haben. Das System wird immer auf einen Pool namens rpool installiert. Diesen rpool kann man sehr einfach in ein Raid umwandeln siehe:

http://docs.oracle.com/cd/E19963-01/html/821-1448/gjtuk.html oder http://constantin.glez.de/blog/2011/03/how-set-zfs-root-pool-mirror-oracle-solaris-11-express

Nun ist das System ausfallsicher. Bitte achtet darauf immer den Grub ( Bootloader ) auch auf die 2te Platte zu schreiben. Geht ganz einfach z.B über

installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c7t1d0s0

So nun installieren wir noch einige Pakete um unser System in ein Storage umzuwandeln. Wir benötigen hier vorallem das Paket COMSTAR. Dies ermöglicht uns das Setup als FC Target oder aber auch als ISCSI Target. Leider wird dies nicht mehr so aktiv weiterentwickelt.

pkg install storage-server

Nun haben wir alle Pakete installiert. Kommen wir zum konfigurieren des FC-Adapters zum Target-Device.

nano /kernel/drv/emulex.cfg

Dort suchen wir die Zeilen

target-mode=0; und ändern diese nach target-mode=1; 

ddi-forceattach=0 und ändern diese nach ddi-forceattach=1

nun aktivieren wir den COMSTAR Service

svcadm enable stmf

Nun ist guter Zeitpunkt das System neu zu starten.

shutdown -y -i6 -g0

Nach dem neutstart solltet ihr bei der eingabe von

fcinfo hba-port

etwas ähnliches wie folgendes sehen, je nach Anzahl der Anschlüsse auch einige mehr:

HBA Port WWN: 10000000c97b5ea4
Port Mode: Target
Port ID: 611500
OS Device Name: Not Applicable
Manufacturer: Emulex
Model: A8003A
Firmware Version: 2.82a4 (Z3F2.82A4)
FCode/BIOS Version: none
Serial Number: MY10826ECA
Driver Name: emlxs
Driver Version: 2.60k (2011.03.24.16.45)
Type: F-port
State: online
Supported Speeds: 1Gb 2Gb 4Gb
Current Speed: 4Gb

Wichtig ist hier der Port Mode, dieser muss auf Target stehen. Sollte dies nicht der Fall sein, so müsst ihr nochmal den Adapter checken ob dieser auch mit COMSTAR läuft. Solltet ihr mehrere FC/Raidadpater oder mehrere Anschlüsse haben so lohnt es sich Multipath zu aktivieren. Dazu einfach folgendes eingeben:

multipath aktivieren  stmsboot -e ( Achtung Systemneustart!!! )

Nicht wundern danach dauert das booten etwas länger ^^

So nun ist das schlimmste schon eigentlich hinter uns. Wir erstellen nun einen ZPOOL.  In meinem Beispiel wird es ein POOL namens tank.

zpool create -f tank mirror c7t1d0 c7t2d0 mirror c7t3d0 c7t4d0 spare c7t5d0

Ich verzichte hier jetzt mal auf die Eigenschaften von ZPOOL und Co. Da gibt es wirklich super Anleitungen im Web. Solltet ihr es jedoch unter VMWARE wie ich einsetzen. So kann ich wirklich empfehlen ein mirror pool zu erstellen. Der macht am meisten Spass. Ok wenn ihr den POOL erstellt habt erstellen wir nun ein ZFS-Volume drauf.

zfs create -V 1000G tank/lun_0

Nun erstellen wir uns eine LUN mit der wir das Volume tank/lun_0 ansprechen können.

sbdadm create-lu /dev/zvol/rdsk/tank/lun_0
Created the following LU:

GUID                    DATA SIZE           SOURCE
--------------------------------  -------------------  ----------------
600144f0e8efcb000000dfds2bcc60001  10737418240          /dev/zvol/rdsk/tank/lun0

Ab jetzt gibt es 2 mögliche Wege diese LUN zur Verfügung zu stellen. Einmal alles Manuel mit mehr Möglichkeiten der Rechtevergabe wer was wo sehen darf. Oder halt der sehr sehr einfache weg allen einfach alles zu erlauben über

stmfadm add-view 600144f0e8efcb000000dfds2bcc60001

Beim anderen ( von mir empfohlene Weg ) brauchen wir noch die WWN von unseren Adaptern um eine Targetgroup zu bilden.

fcinfo hba-port | grep "HBA Port WWN"
HBA Port WWN: 10000000c97b5ea4
HBA Port WWN: 10000000c95fb27c

Durch eine Targetgroup geben wir welche Adpater unsere LUN anbieten dürfen.

stmfadm create-tg targetgroup1

Nun fügen wir unsere Adapter der Targetgroup zu…

stmfadm add-tg-member -g targetgroup1 wwn.10000000c97b5ea4
stmfadm add-tg-member -g targetgroup1 wwn.10000000c95fb27c

Sollte es hier zu einer Meldung kommen wie „stmfadm: STMF target must be offline“ muss man den Dienst kurz ausschalten:

svcadm disable svc:/system/stmf:default

und die Adapter nochmals hinzufügen. Danach den Service wieder neu starten:

svcadm enable svc:/system/stmf:default

Jetzt erstellen wir uns noch eine Hostgruppe. Dies sind die Clients denen es erlaubt ist auf die LUN zuzugreifen.

 stmfadm create-hg hostsgruppe1

Nun kommen in diese Hostgruppe noch die Hosts. Die WWNs der Adapter müsst ihr über den Host oder den Switch rausbekommen.

# stmfadm add-hg-member -g hostgruppe1 wwn.2100001b32da0003

Jetzt kommen wir zum Finale. Wir erstellen eine View die alles zusammensetzt und regelt welche Hostgruppe auf welche LUN’s zugreifen darf usw…

# sbdadm list-lu

Found 1 LU(s)

GUID                    DATA SIZE           SOURCE
--------------------------------  -------------------  ----------------
600144f0e8efcb0000004e52bcc80001  107374182400          /dev/zvol/rdsk/tank/lun_0

Die GUID ist das was wir jetzt benötigen um das View zu erstellen:

stmfadm add-view -h hostgruppe1 -t targetgruppe1 600144f0e8efcb0000004e52bcc80001

Dies bedeutet sozusagen das alle Hosts aus hostgruppe1 über die Adapter in der targetgruppe1 auf die LUN 600144f0e8efcb0000004e52bcc80001 zugreifen dürfen.

Nun ist das Target für alle sichtbar und kann eingehangen werden. Die Rechtevergabe ist zwar generell etwas aufwändiger macht jedoch schon bei mittleren installationen durchaus sinn.

Als letzten Schritt können wir nun noch das Bootenviroment sichern. Damit haben wir immer einen Snapshot unserer Installation.

beadm list
beadm create -e solaris11 solaris-storageserver

Das wars dann auch schon. Ich hoffe ich konnte euch etwas helfen. Ich finde halt FC besser geeignet für VM Umgebungen als ISCSI wenn viele VMs darauf laufen. Jedoch kann man hier auch noch darauf zurückgreifen.

Über ein Feedback euererseits würde ich mich freuen.

Hier noch ein paar nette Links wo man noch gute Infos herbekommt:

http://www.juhonkoti.net/2012/01/02/building-a-85tb-cheap-storage-server-with-solaris-openindiana ( Sehr nett mit diskpy )

http://constantin.glez.de Nette Seite mit vielen Infos zu ZFS und Co…

Zur Info:

1. Bei einigen internen Tests habe ich Probleme mit Solaris 11.1 und VMWARE. Hier bricht der Durchsatz irgendwann extrem ein und läuft nur noch im KB Bereich. Es scheint als Wenn die LUN ein falschen Befehl bekommt.

2. Am Switch muss unser Storage im F Mode gefahren werden!!! Sonst wird es nicht erkannt…

Automatischer reboot bei Draytek Routern

Es gibt Situationen da ist es hilfreich wenn man den Router täglich neu startet… Wie bei uns im VPN Einsatz. Damit können wir indirekt die Zwangstrennung bestimmen… Hier nun ein weg wie es geht…

  1. Zuerst auf der Weboberfläche anmelden. Standard-IP: 192.168.1.1 Standard-Benutzer: Admin Standard-PW: admin oder leer lassen
  2. Jetzt die Zeit überprüfen, dazu unter System Maintenance -> Time and Date schauen
  3. Danach gehen wir in Applications -> Shedule und wählen uns dort eine freie Indexnummer aus. Diese müssen wir später vergeben, daher müssen wir uns diese merken.
  4. Klicken auf enable
  5. Das Startdatum ab wann der Task aktiv ist setzen unter Start-Date.
  6. Bei Start-Time die rebootzeit angeben.
  7. Duration Time auf 0 setzen.
  8. Bei Action wählen wir force on aus.
  9. Nun wählen wir aus wie oft und an welchen Wochentagen dieser Task ausgeführt werden soll. Hier kann man die Tage genau auswählen.
  10. Ok Drücken
  11. Nun gehen wir nach System Maintinance -> Reboot System
  12. Bei Auto Reboot Time Schedule tragen wir in das erste Kästchen die Indexnummer ein die wir eben bearbeitet haben.

Das war das ganze Hexenwerk. Nun startet der Router zu einer festgelegten Zeit neu und initialisiert sich komplett neu. Dadurch konnten wir unsere VPN Tunnel sauber neu aufbauen lassen bei dynamischen IPs…

VSphere 5 ESXi Server patchen/updaten

Oft vergessen oder nicht drum gekümmert, das einspielen von Patches unter einem ESXi Server. Bis zur Version 4 konnte man das ganze sehr schön mit dem UpdateManager erledigen. Ab 4.1 muss dies per „Hand“ passieren. Hier eine kurze Beschreibung wie man das ganze unter ESXi 5 machen kann. Dies ist ein Weg, jedoch gibt es mehrere Möglichkeiten, wie so oft 😉

1. Vorbereitung

Zuerst muss überprüft werde ob es Patches gibt. Dazu geht man auf http://www.vmware.com/patchmgr/findPatch.portal und sucht dort für seine Version die letzte Version vom Patch, da sie kumulativ sind. Dieser kann jetzt runtergeladen werden und muss auf einen Datastore des ESXi Hosts gelangen. Als Tipp von mir, man kann sich auch den LINK kopieren und auf der SSH-Konsole per wget direkt downloaden… Dazu muss jedoch das https entfernt werden. Für einen Server noch gut verwendbar, jedoch langwierig.

WICHTIG: Versetzen Sie Ihren VMWare ESXi 5.0.0 in den Wartungsmodus. Das geschieht mittels Rechtsklick auf den Host-> „In den Wartungsmodus wechseln“.

Updates einspielen

Nun können wir uns per ssh mit dem Server verbinden, wenn nicht bereits erledigt und geben dort folgenden Befehl ein:

esxcli software vib update --depot /vmfs/volumes/ds1/patch.zip

Der Pfad zum Debot muss hier natürlich noch an eure Umgebung angepasst werden. Der Befehl hie Rist sehr mächtig und hat noch weitaus mehr Funktionen die sehr interessant sind. So kann man den Host automatisch in den Wartungsmodus bringen usw… Bei den meisten Updates muss man den Host danach neu starten. Nach dem Neustart muss nur noch der Wartungsmodus beendet werden und die virtuellen Maschinen neu gestartet.

Unter Umständen ist es nun nötig die VMWare Tools von Hand zu aktualisieren. Dies sollte auch zeitnah passieren, da diese sonst Probleme verursachen könnten.

 

Wie bereits erwähnt ist dies nur ein Weg um Patches/Updates auf einen ESXi Server zu bringen. Man kann auch die VMWare vSphere CLI  installieren und spart sich so den Umweg über die SSH Konsole. Der eine mag es so der andere so… Ich nehme halt immer meine gute alte SSH Konsole…^^

 

 

 

Exchange 2010 AD Fehler beim verschieben der Mailbox

Beim verschieben eines Postfaches unter Exchange 2010 von einem Exchange 2007 oder 2003 kann es vorkommen das eine Fehlermeldung wie diese auftaucht:

Fehler:
Fehler bei Active Directory-Vorgang mit xxxxx.xxxxxxx.loc. Bei diesem Fehler ist kein Wiederholungsversuch möglich. Zusätzliche Informationen: Die Zugriffsrechte reichen für diesen Vorgang nicht aus.
Active Directory-Antwort: 00002098: SecErr: DSID-03150BB9, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
Der Benutzer verfügt nicht über die erforderlichen Zugriffsrechte.

Wie der Fehler ja bereits andeutet, haben wir nicht genug rechte im Active Directoy um die Daten zu verändern. Diese können wir uns jedoch sehr einfach beschaffen. Dazu müssen wir in die Sicherheitseinstellungen des Benutzerkontos.

Active Directory und Benutzer öffnen
Benutzerobject raussuchen
Rechtsklick auf Eigenschaften
Dort unter der Karteikarte Sicherheit auf Erweitertklicken und einen Hacken bei „Vererbbare Berechtigungen des übergeordneten Objektes einschließen

Jetzt nur noch Speichern und die Verschiebeanforderung erneut ausführen. Achtung die alte muss dazu gelöscht werden.

Exchange 2010 Installation vorbereiten…

Mit Exchange 2010 hat Microsoft in meinen Augen ein echt gutes Produkt entwickelt. Für die Installation wird zwingend ein Windows 2008 mit SP2 oder besser ein Windows 2008 R2 Server benötigt. Hier gehen nur die 64 Bit Versionen. Bevor es allerdings losgehen kann, müssen einige Vorraussetzungen erfüllt werden. Der Installer weist ein ja meistens auf die Probleme hin, jedoch können diese im Vorfeld schon gelöst werden. Ein typischer Fehler ist:

„Es können keine Daten aus der Metabase gelesen werden. Stellen Sie sicher, dass Microsoft Internet Information Services installiert ist“

Hier fehlen die Rollen um den Exchange zu installieren. Die wichtigsten um die Rollen Mailbox, Hub Transport und Client Access auf einem Windows 2008 R2 vorzubereiten sind:

Download und Installation des Microsoft Filterpacks

http://www.microsoft.com/downloads/details.aspx?FamilyId=60C92A37-719C-4077-B5C6-CAC34F4227CC&displaylang=en

Nun im Startmenü folgendes eintippen:

PowerShell

Bei der Fundstelle dann mit der rechten Maustaste anklicken und das  „Programm als Administrator ausführen“ auswählen.

Folgende Kommandos eingeben:

Import-Module ServerManager
Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Basic-Auth,Web-Windows-Auth,Web-Metabase,Web-Net-Ext,Web-Lgcy-Mgmt-Console,WAS-Process-Model,RSAT-Web-Server,Web-ISAPI-Ext,Web-Digest-Auth,Web-Dyn-Compression,NET-HTTP-Activation,RPC-Over-HTTP-Proxy –Restart

Jetzt startet der Server neu. Danach wieder in die Powershell wechseln wie oben und fohlendes eintippen:

Set-Service NetTcpPortSharing -StartupType Automatic

Dieser Vorgang dauert unter Umständen eine Weile, keine Sorge… Damit sollte die Überprüfung bei der Installation sauber durchlaufen.

 

Alternativ kann man auch per Servermanager folgende Rollen bzw. Features installieren:

 

.Net Framework 3.5
Die Installation muss über den Servermanager über “Features hinzufügen” ausgeführt werden. Mit dem .Net Framework 3.5 wird auch der Internet Information Server (IIS 7.0) installiert

Microsoft Office 2007 System-Konverter

Das Microsoft Filter Pack muss unter http://go.microsoft.com/fwlink/?LinkId=123380 heruntergeladen werden.

IIS 6-Verwaltungskompatibilität
Sofern nicht bereits vorhanden müssen folgende Rollendienste für den IIS installiert werden:
IIS 6-Metabasiskompatibilität
IIS 6-Verwaltungskonsole

Die Rollendienste können über den Servermanager durch Rechtsklick auf IIS und Auswahl von “Rollendienste hinzufügen” nachträglich installiert werden. Sollten diese Rollendienste nicht installiert sein, wird bei der Prüfung der Installationsvoraussetzungen für Exchange2010 die Fehlermeldung “Es können keine Daten aus der Metabase gelesen werden. Stellen Sie sicher, dass Microsoft Internet Information Services installiert ist” ausgegeben.

Nach der Installation
Für den Dienst Net.Tcp-Portfreigabedienst muss als Startart “Automatisch” eingestellt sein

 

Ich hoffe ich konnte euch helfen…

 

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

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 ^^

 

IPSEC VPN pfSense 2.0 -> Draytek 2910i

Heute zeige ich euch wie man ein VPN zwischen einer pfSense Firewall und einem Draytekrouter, bei mir der 2910i, herstellen kann. Ich konnte es auch erfolgreich durch einen Speedport 723 Router durchleiten um meine VDSL Verbindung dafür zu nutzen.

Zum Aufbau des ganzen. Ich habe auf der einen Seite einen redundanten pfSense Cluster mit festen IP Adressen. Der Cluster wird durch CARP gebildet und ist damit auch ausfallsicher. Auf der anderen Seite habe ich mehrere VDSl Anschlüsse mit Speedports als Modem bzw. Router. Diese haben nur dynamische IP’s und benötigen für dieses Setup zwingend einen Dyndns-Account… Ein anderer Anbieter geht selbstverständlich auch, jedoch arbeite ich nur mit dyndns.

pfSense Seite…

Als erstes konfigurieren wir mal die pfSense. Damit alles sauber läuft müssen wir unter

System -> Advanced -> Miscellaneous: IP Security:  Prefer older IPsec SAs

einen Hacken setzen…

Phase1 auf pfSense Seite…

Als nächstes gehen wir zu VPN -> IPSEC und setzen einen Hacken bei enable IPSec. Nun fügen wir einen neuen phase 1 Eintrag hinzu. Als Interface setzen wir das WAN Interface ein. Bei einem CARP Setup jedoch das CARP Interface. 😉 Bei Remote Gateway tragen wir den DYNDNS Namen unseres Routers ein. Als Beschreibung solltet ihr einen aussagekräftigen Namen wählen um ihn später in den Logs besser lokalisieren zu können.

Konfiguration der ersten Phase ( IKE )

Jetzt kommen wir zur Phase1. Diese lässt sich mit einem Draytek nur im Aggressive Modus herstellen. Es ist mir trotz fester IP’s nicht gelungen den Mainmode ( welcher etwas sicherer ist ) zum laufen zu bekommen. Als Auth method setzen wir Mutual PSK ein. Da wir die Verbindung mit einem PresharedKey absichern wollen. Wie bereits erwähnt ist der Negotiation Mode auf agressive zu belassen. Als Identifier nutze ich die My IP address. Als Peer identifier klappte am besten der User distinguished name welcher auf dem Draytek Local ID heisst.Hier trägt man am besten auf beiden Seiten eine eindeutige Emailadresse ein. Damit wird die Verbindung später bestimmt.  Der Preshared Key ist das Passwort womit die Verbindung verschlüsselt wird. Der Key sollte nicht zu kurz und auch etwas komplexer sein. Die Policy Generation und das Proposal Checking lassen wir auf default. Den Encryption algorithm stellen wir auf   3DES da hier die Performance zwischen den Routern noch ok ist. Bei AES kann der Draytek etwas einknicken. Der HASH algorithm ist bei uns auf SHA1 gestellt. Dies lief am besten. Die DH key Group stellen wir auf 1, also 768 bit wenn wir auf dem Draytek den IKE phase 1 proposal auf DES_MD5_G1 auswählen. Stellen wir diesen auf DES_MD5_G2 so müssen wir die DH key Group auf 2 stellen!!! Die Lifetime lassen wir auf 28800 und sollte nur geändert werden wenn ihr wisst was ihr da macht.

Phase 1 proposal

Phase 1 proposal

Jetzt kommen wir zu den Advanced Options der phase1. NAT Travensal sollte eingeschaltet werden wenn ihr hinter einem Router mit Firewall den Draytek aufstellt. Solltet ihr ihn direkt mit dem Netz verbinden so kann man dies austellen. DEAD PEER Detection schalte ich stets ein. Jedoch kann dies bei überlasteten Routern dazu führen das die Verbindung ohne Grund unterbrochen wird, da der PFSENSE Router glaubt den anderen Router nicht zu erreichen. Daher sollte man die retries nicht unter 5 stellen!!! Und den delay nicht zu niedrig.

Phase1 advanced

Phase 2 auf pfSense Seite…

Jetzt kommen wir zur Phase2, womit wir die Tunnel einrichten. Man kann mehrere Tunnel aufbauen lassen. Dies kann man z.B. machen wenn man mehrere Subnetze auf beiden Seiten miteinander Verbinden möchte.

Als Mode nehmen wir tunnel damit wir unsere beiden Netzwerke direkt miteinander verbinden. Local Network steht für das Netzwerk des pfSense Routers. Solltet ihr vlans oder mehrere Netzwerkkarten mit unterschiedlichen Subnetzen einsetzen so muss hier das Netzwerk ausgewählt werden mit welchem die Gegenseite interagieren darf. Das Remote Network stellt das entfernte auf den Drayteks eingerichtete Netzwerk da. Bitte achtet hier darauf das auch die selbe Subnetmaske wie auf dem Draytek eingestellt ist, da sonst keine Verbindung zustande kommt!!!

Phase2 proposal…

Hier müssen wir nun die Verschlüsselungen für die Phase2 einrichten. Unter Protocol nehmen wir ESP da hier die Daten auch verschlüsselt werden. Bei AH passiert dies nicht. Bei Encryption algorithm wählen wir 3DES aus. Den Hash lassen wir so wie er ist und bei PFS Key Group wählen wir wieder 1 für einen 768 Schlüssel. Die Lifetime kann auf 3600 gelassen werden.

Bei den Advanced Einstellungen, kann man eine IP des Remotenetzwerkes angeben. Damit wird der Tunnel getestet und bei nicht erreichen neu initialisiert. Ich pinge immer die IP Adresse des Draytekrouters an. Sprich die vom internen Netz dort.

Damit ist das Setup auf der pfSense Seite fertig und nun können wir uns um den Draytek kümmern. Wichtig ist das hier die selben Daten wie auf der pfSense Seite eingegeben werden.

Draytek Seite…

Auf der Draytek Seite gehen wir

VPN and Remote Access -> LAN to LAN 

und erstellen dort eine neue Verbindung. Der Pfofile Name sollte wie immer aussagekräftig sein. Der Hacken bei Enable this Profile muss gesetzt werden. Wird halt gerne übersehen. Die Verbindung soll durch den Draytek initiiert werden, da hier ja die dynamische IP ist. Dadurch wird es leichter. Daher setzten wir bei Call Direction den hacken bei Dial Out. Always on ist zu empfehlen wenn man ständig auf diesen Tunnel zugreifen will. Dann muss man den Wert auf -1 setzen. So wird der Tunnel immer aufrecht gehalten. Bei Enable Ping to keep alive kann man eine IP des internen Netzes der Gegenseite einrichten welche in abständen von ca. 30 Sekunden angepingt wird. Wird der Ping 3 mal nicht beantwortet so baut der Draytek den Tunnel neu auf. Ich trage hier gerne eine Server IP ein von der Gegenseite ein.

Nun kommen wir zu den Dialout Settings.

Bei Type nehmen wir einen IPSEC Tunnel und die anderen Hacken entfernen wir. Bei Dial Number tragen wir die WAN IP des pfSense Routers ein. DNS Namen sind auch möglich, haben aber bei uns des öfteren zu Problemen geführt. Vorallem dürfen diese nicht zu lang sein. Bei Preshared Key muss der selbe Key wie oben bzw. auf der pfSense Seite eingegeben werden. Bei IPSEC Security Method wählt man High ESP und 3DES with Authentification. 

Die meisten Fehler passieren bei der Einstellung welche wir jetzt vornehmen. Wir klicken bei IPSEC Security Method auf advanced und geben damit die Phase 1 Daten an. IKE Phase 1 mode stellen wir auf aggressive. Die Proposal bleibt bei DES_MD5_G1, da wir ja auf dem pfSense System ein DH Group von 1 angegeben haben. Der IKE PHase2 proposal wird auf 3DES_SHA1 / 3DES_MD5 belassen. Die lifetimes können so gelassen werden. Das Perfect Forwarding Secret  lassen wir ausgeschaltet. Und bei Local ID müssen wir den Peer Identifier der pfSense eingeben. Damit wird dann dieser Tunnel identifiziert.

Dann müsst ihr auf der Draytekseite unten in den TCP/IP Netzwerkeinstellungen die Daten für das Remote Network mit der Subnetmask angeben. Und eure Locale IP mit der richtigen Subnetmask. Hier kann man auch angeben das der komplette Netzwerkverkehr, also auch Internetverndungen usw. über diesen Tunnel geschickt werden soll.

Wichtig ist jetzt das der Draytek auch im dyndns registriert wird. Bitte achtet darauf, da sonst kein Tunnel aufgebaut wird. Es muss der selbe DynDnS Name verwendet werden  den ihr auf der pfSense Seite benutzt habt.

Sind alle Daten richtig eingetragen sollte jetzt der Tunnel aufgebaut werden. Ich werde in den nächsten Tagen noch einen Eintrag mit den meisten Fehlermeldungen machen und wie man sie beheben kann. Bis dahin viel Erfolg…

Outlook Email-Kontoeinstellungen sichern

In früheren Outlookversionen konnte man seine Kontoeinstellungen einfach in das Internet Account Format (.iaf) exportieren… In neueren Outlookversionen ist dies leider nicht mehr vorgesehen…

Mit diesem Trick könnt ihr die Outlookkonten ab Version 2002 sichern und auf einem anderem System wiederherstellen. Dazu müsst ihr nur folgendes machen:

 

  • Regedit ausführen ( Start -> Ausführen -> Regedit eingeben -> Ok klicken )
  • Sucht nun den folgenden Schlüssel bzw. Ordner:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A667

  • Diesen Schlüssel müsst ihr exportieren ( Rechtsklick->Exportieren )
  • Speicherort und Dateinamen vergeben
  • Speichern und fertig

Durch den export dieses Schlüssels habt ihr nun ALLE Kontoeinstellungen von Outlook gesichert. Durch den einfachen Import ( Doppelklick auf die Datei ) könnt ihr die Daten auf einem anderen Rechner wiederherstellen.