kb

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
kb [2016/03/29 08:06]
flacco
kb [2016/03/29 08:07]
flacco [Active Directory und Firewall]
Zeile 49: Zeile 49:
 |SMB/​CIFS ​ |  TCP & UDP  |  445  |  Zugriff auf sysvol Freigabe ​ | |SMB/​CIFS ​ |  TCP & UDP  |  445  |  Zugriff auf sysvol Freigabe ​ |
 |RPC  |  TCP  |  135  |Früheres Microsoft Messaging Protokoll, wird genutzt für die Replikation der sysvol Freigabe. Dies wird von Samba noch nicht unterstützt. ​ | |RPC  |  TCP  |  135  |Früheres Microsoft Messaging Protokoll, wird genutzt für die Replikation der sysvol Freigabe. Dies wird von Samba noch nicht unterstützt. ​ |
 +
 +==== ISC DHCP mit ActiveDirectory ====
 +
 +Um den DHCP-Server des ISC mit einem Active Directory als Backend zu verwenden, muss dieser so gepatcht werden, dass er andere LDAP-Attribut- und Objektklassen-Namen akzeptiert. Dies ist notwendig, da Microsoft für seinen DHCP-Server teils identische Namen für Attribute und Objektklassen verwendet. Ohne das Patchen führt der Versuch einen ISC DHCP-Server Datenbestand aus einem OpenLDAP Verzeichnis in ein Active Directory zu migrieren zu "​Objectclass Violations"​ die nicht zu beheben sind.
 +
 +=== LDAP Patch erzeugen ===
 +
 +Den Patch zu erstellen ist etwas umständlich,​ da im openSUSE-Paket bereits Patches auf die von uns zu patchenden Dateien angewendet werden. D.h. um unseren Patch zu erzeugen müssen zunächst die anderen Patches auf den Quellcode angewendet werden.
 +
 +Zu patchen sind folgende Dateien:
 +
 +  * server/​ldap.c
 +  * contrib/​ldap/​README.ldap
 +  * contrib/​ldap/​dhcpd-conf-to-ldap
 +  * contrib/​ldap/​dhcp.shema
 +
 +Im ersten Schritt müssen aus dem Repository "​network:​dhcp"​ (https://​build.opensuse.org/​package/​show/​network:​dhcp/​dhcp) des openSUSE Buildservice das Quellcode-Archiv (dhcp-4.x.y.tar.gz),​ sowie die beiden Patches "​0007-dhcp-4.2.6-ldap-mt01.patch"​ und "​0022-dhcp-4.2.x-contrib-conf-to-ldap-reorder.886094.patch"​ heruntergeladen werden.
 +
 +Das Quellcode-Archiv ist in ein Arbeitsverzeichnis zu extrahieren. Danach sind die beiden heruntergeladenen Patches darauf anzuwenden:
 +
 +<​code>​
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ patch -p1 server/​ldap.c 0007-dhcp-4.2.6-ldap-mt01.patch
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ patch -p1 contrib/​ldap/​dhcpd-conf-to-ldap 0022-dhcp-4.2.x-contrib-conf-to-ldap-reorder.886094.patch
 +</​code>​
 +
 +Treten dabei Fehler auf, sind diese in einer auf **.rej** endenden Datei im Verzeichnis der zu patchenden Datei zu finden. Sind die Fehler überschaubar,​ lassen sich die Änderungen auch manuell durchführen.
 +
 +Jetz sind per suchen und ersetzen der Attributnamen und Objektklassen mit **//sed//** neue Dateien mit den gewünschten Änderungen zu erzeugen:
 +
 +<​code>​
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat server/​ldap.c | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > server/​ad.ldap.c
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat contrib/​ldap/​README.ldap | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > contrib/​ldap/​ad.README.ldap
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat contrib/​ldap/​dhcpd-conf-to-ldap | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > contrib/​ldap/​ad.dhcpd-conf-to-ldap
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat contrib/​ldap/​dhcp.schema | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > contrib/​ldap/​ad.dhcp.schema
 +</​code>​
 +
 +Jetzt werden mit //​**diff**//​ einzelne Patches für jede der Dateien erzeugt:
 +<​code>​
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u server/​ldap.c server/​ad.ldap.c > ../​ldap.c.patch
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u contrib/​ldap/​README.ldap contrib/​ldap/​ad.README.ldap > ../​README.ldap.patch
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u contrib/​ldap/​dhcpd-conf-to-ldap contrib/​ldap/​ad.dhcpd-conf-to-ldap > ../​dhcpd-conf-to-ldap.patch
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u contrib/​ldap/​dhcp.schema contrib/​ldap/​ad.dhcp.schema > ../​dhcp.schema.patch
 +</​code>​
 +
 +Jetzt müssen noch die Kopfzeilen der Einzelpatches angepasst werden. Aus:
 +
 +<​code>​
 +--- server/​ldap.c ​      ​2015-03-26 14:​24:​44.905456906 +0100
 ++++ server/​ad.ldap.c ​   2015-03-26 17:​12:​52.783318249 +0100
 +</​code>​
 +
 +wird:
 +
 +<​code>​
 +--- a/​server/​ldap.c ​      ​2015-03-26 14:​24:​44.905456906 +0100
 ++++ b/​server/​ldap.c ​   2015-03-26 17:​12:​52.783318249 +0100
 +</​code>​
 +
 +Danach werden alle Einzelpatches zum Gesamtpatch zusammengesetzt:​
 +
 +<​code>​
 +heinzb@knurps:​~/​baustelle>​ cat ldap.c.patch > 0099-AD-LDAP.patch ​
 +heinzb@knurps:​~/​baustelle>​ cat README.ldap.patch >> 0099-AD-LDAP.patch ​
 +heinzb@knurps:​~/​baustelle>​ cat dhcpd-conf-to-ldap.patch >> 0099-AD-LDAP.patch ​
 +heinzb@knurps:​~/​baustelle>​ cat dhcp.schema.patch >> 0099-AD-LDAP.patch
 +</​code>​
 +
 +Danach den Patch in unser Testing-Repositorie hochladen und die Spec-Datei des dhcp-Paketes anpassen:
 +
 +Ab Zeile 138 (ca.)
 +<​code>​
 +# invis-server.org Stefan Schaefer
 +Patch99: ​       0099-AD-LDAP.patch
 +</​code>​
 +
 +Ab Zeile: 282 (ca.)
 +<​code>​
 +%if %{with_ldap}
 +# Stefan Schaefer - invis-server.org
 +%patch99 -p1
 +%endif
 +%endif
 +## clean up after patching
 +find . -type f -name \*.orig\* -exec rm -f {} \;
 +find . -type f -name \*.rej\* -exec rm -f {} \;
 +</​code>​
 +
 +Die Zeilenangaben sind natürlich nicht genau, das sich das Spec-File mit jeder neuen Version ändern kann. Wichtig ist nur, dass unser Patch als letzter angewendete wird.
 +
 +=== Paketbenennung und Konfliktverhalten ===
 +
 +Um nicht mit den regulären DHCP-Paketen in den SUSE Repositories in Konkurrenz zu geraten, haben wir unsere Pakete umbenannt. Sie tragen jetzt die Vorsilbe "​invis":​
 +
 +  * invisdhcp
 +  * invisdhcp-server
 +  * invisdhcp-client
 +  * invisdhcp-relay
 +  * invisdhcp-devel
 +  * invisdhcp-doc
 +
 +Die Umbenennung erfolgt im Specfile. Weiterhin wurde in den Paketen die Direktive "​Conflict"​ im Specfile verwendet. Dadurch können nur entweder die ungepatchten oder die gepatchten Pakete auf einem System installiert werden. Auch dies wird im Specfile eingetragen:​
 +
 +**Namensdefinition**
 +ab Zeile 35:
 +<​code>​
 +Name:           ​invisdhcp
 +%define originname dhcp
 +....
 +Source0: ​       dhcp-%{isc_version}.tar.gz
 +Source1: ​       dhcp-%{isc_version}.tar.gz.asc
 +Source2: ​       %{originname}.keyring
 +</​code>​
 +
 +Die Variable %originname musste hinzugefügt werden, da der Originalname weiterhin beim Paketbau benötigt wird.
 +
 +**Conflict & Requires Direktiven**
 +ab Zeile 146
 +<​code>​
 +Conflicts: dhcp
 +
 +%package server
 +Summary: ​       ISC DHCP Server
 +Group: ​         Productivity/​Networking/​Boot/​Servers
 +Requires: ​      ​invisdhcp = %{version}
 +Requires: ​      ​net-tools
 +Conflicts:​ dhcp-server
 +PreReq: ​        ​%insserv_prereq %fillup_prereq /bin/cat /bin/mkdir /bin/cp /​usr/​sbin/​useradd
 +
 +%package client
 +Summary: ​       ISC DHCP Client
 +Group: ​         Productivity/​Networking/​Boot/​Clients
 +Requires: ​      /​sbin/​arping
 +Requires: ​      /​usr/​bin/​host
 +Requires: ​      ​invisdhcp = %{version}
 +Requires: ​      ​iproute2
 +Requires: ​      ​net-tools
 +Conflicts:​ dhcp-client
 +PreReq: ​        ​%insserv_prereq %fillup_prereq /bin/cat /bin/mkdir /bin/cp /bin/grep
 +
 +%package relay
 +Summary: ​       ISC DHCP Relay Agent
 +Group: ​         Productivity/​Networking/​Boot/​Servers
 +Requires: ​      ​invisdhcp = %{version}
 +Requires: ​      ​net-tools
 +Conflicts:​ dhcp-relay
 +PreReq: ​        ​%insserv_prereq %fillup_prereq /bin/cat /bin/mkdir /​bin/​cp ​
 +
 +%package devel
 +Summary: ​       Header Files and Libraries for dhcpctl API
 +Group: ​         Development/​Libraries/​C and C++
 +Requires: ​      ​invisdhcp = %{version}
 +Conflicts:​ dhcp-devel
 +Conflicts: ​     bind-devel
 +
 +%if %{with_doc_package}
 +
 +%package doc
 +Summary: ​       Documentation
 +Conflicts:​ dhcp-doc
 +Group: ​         Productivity/​Networking/​Boot/​Servers
 +%endif
 +</​code>​
 +
 +Wie gezeigt sind Anpassungen in allen Einzelpaketen erforderlich. Mittels Conflicts und Requires werden die erforderlichen Paketabhängigkeiten gelöst.
 ===== DNS-Server bind und LDAP (invis Classic) ===== ===== DNS-Server bind und LDAP (invis Classic) =====
  
  • kb.txt
  • Zuletzt geändert: 2020/10/20 10:47
  • von flacco