Openindiana-Opensolaris-Solaris-11-Zones
fehlt noch
Datenhaufen zu IT und Elektronik.
Openindiana-Opensolaris-Solaris-11-Zones
fehlt noch
Damit IPv4 im Ethernet funktioniert braucht man das ARP (Address Resolution Protocol) als Unterbau. Denn sonst würden die IPv4 Pakete ja ihren Weg nicht zur richtigen Netzwerkkarte finden. ARP und IPv4 sind dabei völlig unabhängige Protokolle, sie arbeiten nur seit Jahrzenhten Hand in Hand. Das vergessen viele schnell 🙂
Möchte man also nun herausfinden welche MAC Adresse das System (im gleichen Ethernet-Netzwerk) hat, mit welchem man sich gerade unterhält… Ja, dann bemüht man das ARP.
Unter Linux:
$ arp Address HWtype HWaddress Flags Mask Iface errorgrab.kernel-error. ether 00:ff:c9:05:01:c7 C enp2s0 wurstsuppe.kernel-error. ether 50:ff:5d:85:73:48 C enp2s0
Unter Openindiana/Solaris 11:
$ arp -a Net to Media Table: IPv4 Device IP Address Mask Flags Phys Addr ------ -------------------- --------------- -------- --------------- rge0 router.kernel-error 255.255.255.255 00:ff:42:72:2b:a6 rge0 192.168.1.31 255.255.255.255 00:ff:b0:ae:0b:eb rge0 sebastian-solaris.kernel-error 255.255.255.255 SPLA 80:ff:73:4a:38:c7 rge0 all-routers.mcast.net 255.255.255.255 S 01:ff:5e:00:00:02
Bei IPv6 schaut es nun etwas anders aus. Man könnte sagen, hier wurde ARP direkt mit in IPv6 integriert. Es findet sich im Neighbor Discovery wieder. Möchte man hier seine „Nachbarn“ sehen klappt es so:
Unter Linux:
$ ip -6 neigh show fe80::1 dev enp2s0 lladdr 50:ff:5d:85:73:48 router STALE fe80::2ff:c9ff:fe05:1c7 dev enp2s0 lladdr 00:ff:c9:05:01:c7 router REACHABLE
Unter Openindiana/Solaris 11:
$ netstat -pf inet6 Net to Media Table: IPv6 If Physical Address Type State Destination/Mask ----- ----------------- ------- ------------ --------------------------- rge0 33:33:ff:00:00:01 other REACHABLE ff02::1:ff00:1 rge0 00:ff:42:72:2b:a6 dynamic REACHABLE router.kernel-error rge0 33:33:00:00:00:01 other REACHABLE ff02::1 rge0 33:33:00:01:00:02 other REACHABLE ff02::1:2 rge0 33:33:ff:00:00:06 other REACHABLE ff02::1:ff00:6 rge0 33:33:ff:10:98:82 other REACHABLE ff02::1:ff10:9882 rge0 33:33:ff:ad:7a:dd other REACHABLE ff02::1:ffad:7add rge0 33:33:ff:00:00:11 other REACHABLE ff02::1:ff00:11 rge0 33:33:00:00:00:16 other REACHABLE ff02::16 rge0 46:ff:91:30:98:3d dynamic REACHABLE 2001:7d8:8001:0:ffff:bdb9:6810:9882 rge0 80:ff:73:4a:38:c7 local REACHABLE sebastian-solaris.kernel-error rge0 80:ff:73:4a:38:c7 local REACHABLE fe80::ffff:73ff:fe4a:38c7 rge0 00:ff:42:72:2b:a6 dynamic REACHABLE fe80::fff:42ff:fe72:2ba6 rge0 33:33:ff:4a:38:c7 other REACHABLE ff02::1:ff4a:38c7
Früher war es mit dem ARP „einfacher“. Zumindest musste man sich nur einen Befehl merken und dann halt die für das jeweilige Betriebsystem nötigen Schalter herausfinden. Mit IPv6 ist es nun mit in die jeweiligen IP-Tools gewandert. Ich halte es für sauberer auch wenn man sich nun nicht mehr mit den Befehlt „arp“ behelfen kann.
BSD und ihre Ableger nutzen „ndp„.
Bei Linux verschwindet alles in den iproute2-Tools mit dem Befehl: „ip“ (ifconfig, route, usw. usw…. alles im Tool ip)
Microsoft wirft alles in „netsh„.
Unixbasierendes hält sich ans gute alte „netstat„.
Also bis dahin…
Es ändert sich im Laufe der Zeit ja mal immer wieder etwas. So auch der Weg mit Netzwerkkarten umzugehen unter Solaris 🙂
Wer also gerade versucht die MAC Adresse seiner lokalen Netzwerkkarte / NIC herauszufinden, dem wird folgender Command helfen:
$ pfexec dladm show-phys -m LINK SLOT ADDRESS INUSE CLIENT rge0 primary 80:ee:73:4a:38:c7 yes rge0
Ich habe gerade meinen lieblings RSS-Feed Reader Liferea auf der Solariskiste kompiliert. Ich finde es gibt einfach keinen besseren! Spannenderweise konnte ich auch keinen „fertigen“ finden. Na bis auf Thunderbird…. Aber Thunderbird? So gefällt es mir besser *hüpf*.

Jetzt mal unter Freunden, was ist bloß los mit meinem Kopf? Da aktiviere ich gerade für einen Kunden am Microsoft Exchangeserver Outlook Anywhere. Der Kunde hat ein selbstsigniertes Zertifikat auf seinem Server. Also quängelt Outlook natürlich bei der Verbindung über https „Das böse Zertifikat vom bösen Proxyserver… bla bla“. Nun will ich einfach mal schnell das Zertifikat haben um es auf der Windose importieren zu können und reiße schnell auf meiner Solariskiste ein Terminalfenster auf und tippe:
# openssl öhm ähhh öhm… *MIST*
Warum kann ich mir das nicht merken? Irgendwas mit sclient slclient?!?! Dann aber sicher -connect und host:port. Es kann doch nicht sein dass ich jedes mal in die Manpage schauen muss oder?
Folgendes ist natürlich der richtige Aufruf:
$ openssl s_client -connect www.kernel-error.de:443
Vielleicht schaffe ich es ja jetzt mir mal zu merken das es s_client heißt, nachdem ich es hier aufgeschrieben habe 🙂 Warum zum Teufel kann ich mir s_client einach nicht merken? Das regt mich auf!
Ich nenne schon seit einigen Jahren einen Creative ZEN Mozaic mein Eigen. Diesen konnte ich damals gegen einen Creative Muvo v100 eintauschen, welcher seither eine Telefonanlage mit Warteschleifenmusik füttert. Ja, der Muvo war schon ein feines Gerät… Der ZEN Mozaic hat mehr Platz und mehr Möglichkeiten. Für meine Zwecke ein schönes Gerät. Leider lässt sich dieser nur per MTP (http://de.wikipedia.org/wiki/Media_Transfer_Protocol) mit Daten befruchten. Unter Windows natürlich kein Problem, Linux Syteme bringen selbst Fuse Treiber mit usw. usw… Solaris selbst bringt hier erstmal nichts mit.
Jetzt möchte ich natürlich meine Podcast Sendungen und vor allem meine Musik auf den Creative ZEN Mozaic packen. Google hat mir gMTP (http://gmtp.sourceforge.net/) empfholen.
Es installiert sich //fast// von alleine und es funktioniert überraschend gut. Die beste Lösung die ich besher gefunden habe.
Einfach schnell hier herunterladen:
http://gmtp.sourceforge.net/#Downloads
Auspacken:
$ gunzip gmtp-1.3.1-i386.pkg.gz
Installieren:
$ pkgadd -d gmtp-1.3.1-i386.pkg
The following packages are available:
1 gmtp gMTP - A Simple MP3 Player Client for Solaris
(i386) 1.3.0
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:
Es fehlen noch ein paar Abhängigkeiten. Diese installiere ich schnell mit:
$ pkg install medialib libid3tag id3lib
Ich habe natürlich vorher das SFE eingebunden!
Libmtp fand sich leider nicht als Paket. Daher musste ich es schnell selbst kompilieren.
Hier ist das Tarball zu finden:
http://sourceforge.net/projects/libmtp/
Auspacken:
$ gunzip libmtp-1.1.1.tar.gz $ tar xvf libmtp-1.1.1.tar x libmtp-1.1.1, 0 bytes, 0 tape blocks x libmtp-1.1.1/missing, 11419 bytes, 23 tape blocks x libmtp-1.1.1/AUTHORS, 1587 bytes, 4 tape blocks x libmtp-1.1.1/ChangeLog, 99246 bytes, 194 tape blocks x libmtp-1.1.1/libmtp.sh, 1257 bytes, 3 tape blocks x libmtp-1.1.1/libmtp.pc.in, 334 bytes, 1 tape blocks x libmtp-1.1.1/config.rpath, 0 bytes, 0 tape blocks x libmtp-1.1.1/libmtp.pc, 334 bytes, 1 tape blocks x libmtp-1.1.1/configure.ac, 5439 bytes, 11 tape blocks x libmtp-1.1.1/config.h.in, 5373 bytes, 11 tape blocks x libmtp-1.1.1/util, 0 bytes, 0 tape blocks x libmtp-1.1.1/util/mtp-hotplug.c, 10884 bytes, 22 tape blocks x libmtp-1.1.1/util/Makefile.in, 19249 bytes, 38 tape blocks x libmtp-1.1.1/util/mtp-probe.c, 2327 bytes, 5 tape blocks x libmtp-1.1.1/util/Makefile.am, 216 bytes, 1 tape blocks x libmtp-1.1.1/TODO, 5124 bytes, 11 tape blocks x libmtp-1.1.1/config.guess, 44892 bytes, 88 tape blocks x libmtp-1.1.1/install-sh, 13663 bytes, 27 tape blocks x libmtp-1.1.1/examples, 0 bytes, 0 tape blocks x libmtp-1.1.1/examples/files.c, 3755 bytes, 8 tape blocks x libmtp-1.1.1/examples/connect.h, 1523 bytes, 3 tape blocks x libmtp-1.1.1/examples/pathutils.h, 1147 bytes, 3 tape blocks x libmtp-1.1.1/examples/getplaylist.c, 2531 bytes, 5 tape blocks x libmtp-1.1.1/examples/emptyfolders.c, 3117 bytes, 7 tape blocks x libmtp-1.1.1/examples/newplaylist.c, 3090 bytes, 7 tape blocks x libmtp-1.1.1/examples/thumb.c, 3181 bytes, 7 tape blocks x libmtp-1.1.1/examples/getfile.c, 2495 bytes, 5 tape blocks x libmtp-1.1.1/examples/trexist.c, 1815 bytes, 4 tape blocks x libmtp-1.1.1/examples/albumart.c, 4283 bytes, 9 tape blocks x libmtp-1.1.1/examples/playlists.c, 2358 bytes, 5 tape blocks x libmtp-1.1.1/examples/albums.c, 3433 bytes, 7 tape blocks x libmtp-1.1.1/examples/common.h, 1143 bytes, 3 tape blocks x libmtp-1.1.1/examples/connect.c, 4395 bytes, 9 tape blocks x libmtp-1.1.1/examples/filetree.c, 4062 bytes, 8 tape blocks x libmtp-1.1.1/examples/util.h, 987 bytes, 2 tape blocks x libmtp-1.1.1/examples/util.c, 1956 bytes, 4 tape blocks x libmtp-1.1.1/examples/newfolder.c, 2220 bytes, 5 tape blocks x libmtp-1.1.1/examples/delfile.c, 2850 bytes, 6 tape blocks x libmtp-1.1.1/examples/sendtr.c, 12189 bytes, 24 tape blocks x libmtp-1.1.1/examples/evolution-sync.sh, 3186 bytes, 7 tape blocks x libmtp-1.1.1/examples/pathutils.c, 7308 bytes, 15 tape blocks x libmtp-1.1.1/examples/sendfile.c, 2731 bytes, 6 tape blocks x libmtp-1.1.1/examples/Makefile.in, 25800 bytes, 51 tape blocks x libmtp-1.1.1/examples/format.c, 2288 bytes, 5 tape blocks x libmtp-1.1.1/examples/tracks.c, 4804 bytes, 10 tape blocks x libmtp-1.1.1/examples/folders.c, 3661 bytes, 8 tape blocks x libmtp-1.1.1/examples/Makefile.am, 1645 bytes, 4 tape blocks x libmtp-1.1.1/examples/reset.c, 2230 bytes, 5 tape blocks x libmtp-1.1.1/examples/detect.c, 8427 bytes, 17 tape blocks x libmtp-1.1.1/depcomp, 18615 bytes, 37 tape blocks x libmtp-1.1.1/Makefile.in, 27139 bytes, 54 tape blocks x libmtp-1.1.1/aclocal.m4, 80086 bytes, 157 tape blocks x libmtp-1.1.1/config.sub, 33387 bytes, 66 tape blocks x libmtp-1.1.1/README, 36487 bytes, 72 tape blocks x libmtp-1.1.1/doc, 0 bytes, 0 tape blocks x libmtp-1.1.1/doc/Doxyfile.in, 46716 bytes, 92 tape blocks x libmtp-1.1.1/doc/examples.h, 405 bytes, 1 tape blocks x libmtp-1.1.1/doc/Makefile.in, 10846 bytes, 22 tape blocks x libmtp-1.1.1/doc/mainpage.h, 528 bytes, 2 tape blocks x libmtp-1.1.1/doc/Makefile.am, 397 bytes, 1 tape blocks x libmtp-1.1.1/README.windows.txt, 2878 bytes, 6 tape blocks x libmtp-1.1.1/libmtp.sh.in, 1257 bytes, 3 tape blocks x libmtp-1.1.1/configure, 505284 bytes, 987 tape blocks x libmtp-1.1.1/Makefile.am, 649 bytes, 2 tape blocks x libmtp-1.1.1/ltmain.sh, 282765 bytes, 553 tape blocks x libmtp-1.1.1/hotplug.sh.in, 5055 bytes, 10 tape blocks x libmtp-1.1.1/src, 0 bytes, 0 tape blocks x libmtp-1.1.1/src/playlist-spl.c, 25484 bytes, 50 tape blocks x libmtp-1.1.1/src/libmtp.sym, 2551 bytes, 5 tape blocks x libmtp-1.1.1/src/libmtp.c, 304334 bytes, 595 tape blocks x libmtp-1.1.1/src/device-flags.h, 11410 bytes, 23 tape blocks x libmtp-1.1.1/src/libusb-glue.c, 64392 bytes, 126 tape blocks x libmtp-1.1.1/src/libusb-glue.h, 5990 bytes, 12 tape blocks x libmtp-1.1.1/src/music-players.h, 69263 bytes, 136 tape blocks x libmtp-1.1.1/src/libmtp.h, 34743 bytes, 68 tape blocks x libmtp-1.1.1/src/util.h, 1615 bytes, 4 tape blocks x libmtp-1.1.1/src/unicode.h, 1546 bytes, 4 tape blocks x libmtp-1.1.1/src/ptp-pack.c, 60195 bytes, 118 tape blocks x libmtp-1.1.1/src/util.c, 3223 bytes, 7 tape blocks x libmtp-1.1.1/src/libmtp.h.in, 34751 bytes, 68 tape blocks x libmtp-1.1.1/src/playlist-spl.h, 1367 bytes, 3 tape blocks x libmtp-1.1.1/src/ptp.c, 179847 bytes, 352 tape blocks x libmtp-1.1.1/src/Makefile.in, 21543 bytes, 43 tape blocks x libmtp-1.1.1/src/ptp.h, 107562 bytes, 211 tape blocks x libmtp-1.1.1/src/gphoto2-endian.h, 4610 bytes, 10 tape blocks x libmtp-1.1.1/src/README, 716 bytes, 2 tape blocks x libmtp-1.1.1/src/unicode.c, 5492 bytes, 11 tape blocks x libmtp-1.1.1/src/Makefile.am, 2560 bytes, 5 tape blocks x libmtp-1.1.1/src/_stdint.h, 76 bytes, 1 tape blocks x libmtp-1.1.1/INSTALL, 9480 bytes, 19 tape blocks x libmtp-1.1.1/m4, 0 bytes, 0 tape blocks x libmtp-1.1.1/m4/ltversion.m4, 686 bytes, 2 tape blocks x libmtp-1.1.1/m4/ltsugar.m4, 4372 bytes, 9 tape blocks x libmtp-1.1.1/m4/ltoptions.m4, 11950 bytes, 24 tape blocks x libmtp-1.1.1/m4/lt~obsolete.m4, 6126 bytes, 12 tape blocks x libmtp-1.1.1/m4/stdint.m4, 24070 bytes, 48 tape blocks x libmtp-1.1.1/m4/libtool.m4, 281197 bytes, 550 tape blocks x libmtp-1.1.1/m4/byteorder.m4, 12349 bytes, 25 tape blocks x libmtp-1.1.1/m4/iconv.m4, 6865 bytes, 14 tape blocks x libmtp-1.1.1/COPYING, 26426 bytes, 52 tape blocks
Ins Verzeichnis wechseln, konfigurieren, mit gmake kompilieren und installieren.
$ cd libmtp-1.1.1 $ ./configure --prefix=/usr $ gmake $ gmake install
Schon lässt sich gMTP per /usr/local/bin/gmtp starten und nutzen.
Für die Bilderliebhaber:



Man man man… Jetzt habe ich mich doch tatsächlich 1 Stunde lang in etwas sehr sinnlosem verrannt. *kopfschüttel*
Da will ich mal eben ein Bild mittels xsane von einem USB-Scanner einlesen. Da findet xsane auf dem Solaris 11 System den Scanner nicht. Genau so verhält es sich mit einer USB Digitalkamera….. Ich habe ja überall nachgeschaut, nur wohl ohne Verstand!
Die Lösung war natürlich recht simpel. Einfach mal das Paket: libusbugen installieren. *Narf*
openindiana und iSCSI mit COMSTAR
Die Jungs von SUN haben sich irgedwann einmal gedacht, wäre es nicht toll wenn wir Dinge wie iSCSI, FCoE, FC usw… Einfach in einem großen Framework zusammenfasst.
Damit ersetzt nun COMSTAR den alten iSCSI Target Deamon. Damit ändert sich natürlich auch die Konfiguration… Wie an so vielen Stellen beim Wechsel von Solaris 10 auf Solaris 11 / Opensolaris…
Ich möchte hier im Kurzen die Einrichtung eines einfachen iSCSI Targets basierend auf ZFS für einen Microsoft Windows Host beschreiben. Ich nutze dafür ein Openindiana System. Dieses basiert auf dem letzten Opensolaris welches dann später ins aktuelle Oracle Solrais 11 übergegangen ist.
Na dann mal los!
In diesem Testsystem habe ich für dieses Beispiel eine gesonderte Festplatte vorgesehen. Auf dieser erstelle ich zuerst einen neuen ZFS Pool:
root@iscsi-host:/# zpool create iscsi-target-pool c4t2d0 root@iscsi-host:/# zpool list iscsi-target-pool NAME SIZE ALLOC FREE EXPANDSZ CAP DEDUP HEALTH ALTROOT iscsi-target-pool 19,9G 124K 19,9G - 0% 1.00x ONLINE -
In diesem Pool lege ich nun ein weiters ZFS Volume an, welches später das eigentliche Ziel wird:
root@iscsi-host:/# zfs create -V 10g iscsi-target-pool/iscsi_10gb-lun01 root@iscsi-host:/# zfs list iscsi-target-pool/iscsi_10gb-lun01 NAME USED AVAIL REFER MOUNTPOINT iscsi-target-pool/iscsi_10gb-lun01 10,3G 19,6G 16K -
Wie man sieht habe ich das ZFS Volume auf eine Größe von 10GB begrenzt. Das macht natürlich Sinn wenn man kurz darüber nachdenkt. Sonst würde die Poolgröße das jeweilige Target begrenzen und wenn man mehrere davon in einem Pool hat… Um die nötigen Grundlagen abzuschließen starte ich nun noch die nötigen Dieste.
root@iscsi-host:/# svcs stmf STATE STIME FMRI disabled 12:32:40 svc:/system/stmf:default root@iscsi-host:/# svcadm enable stmf root@iscsi-host:/# svcs stmf STATE STIME FMRI online 13:02:50 svc:/system/stmf:default root@iscsi-host:/# stmfadm list-state Operational Status: online Config Status : initialized ALUA Status : disabled ALUA Node : 0
Zuerst schaue ich mir den Status des stmf (SCSI Target Mode Framework) an; es ist deaktiviert. Nach dem aktivieren und prüfen frage ist das stmf mit dem eigenen stmfadm(in) nach dem Status. Es soll ein iSCSI Target werden, dafür fehlt mir noch das folgende Packet:
root@iscsi-host:/# pkg install -v /network/iscsi/target Zu installierende Pakete: 1 Geschätzter verfügbarer Speicherplatz: 9.91 GB Geschätzter Speicherplatzverbrauch: 234.32 MB Boot-Umgebung erstellen: Nein Sicherung der Boot-Umgebung erstellen: Ja Zu ändernde Services: 1 Boot-Archiv neu erstellen: Ja Geänderte Pakete: openindiana.org network/iscsi/target None -> 0.5.11,5.11-0.151.1.8:20130721T131345Z Services: restart_fmri: svc:/system/manifest-import:default DOWNLOAD PAKETE DATEIEN ÜBERTRAGUNG (MB) Completed 1/1 37/37 0.3/0.3 PHASE AKTIONEN Installationsphase 74/74 PHASE ELEMENTE Paketstatus-Updatephase 1/1 Abbildstatus-Updatephase 2/2
Den Service wieder aktivieren und prüfen:
root@iscsi-host:/# svcs iscsi/target STATE STIME FMRI online 13:23:56 svc:/network/iscsi/target:default
Alles läuft, es kann also mit der logical unit weiter gehen. Ich lege also das logische Gerät an mit dem Ziel des vorhin angelegten ZFS Volumes:
root@iscsi-host:/# sbdadm create-lu /dev/zvol/rdsk/iscsi-target-pool/iscsi_10gb-lun01 Created the following LU: GUID DATA SIZE SOURCE -------------------------------- ------------------- ---------------- 600144f051c247000000523ed0050001 10737418240 /dev/zvol/rdsk/iscsi-target-pool/iscsi_10gb-lun01
Vertrauen ist gut, Kontrolle ist besser! Also mal nachsehen ob alles angelegt ist und ob es auch „online“ ist 🙂 hier hilft wieder der stmfadm(in):
root@iscsi-host:/# stmfadm list-lu -v LU Name: 600144F051C247000000523ED0050001 Operational Status: Online Provider Name : sbd Alias : /dev/zvol/rdsk/iscsi-target-pool/iscsi_10gb-lun01 View Entry Count : 0 Data File : /dev/zvol/rdsk/iscsi-target-pool/iscsi_10gb-lun01 Meta File : not set Size : 10737418240 Block Size : 512 Management URL : not set Vendor ID : OI Product ID : COMSTAR Serial Num : not set Write Protect : Disabled Writeback Cache : Disabled Access State : Active
Damit der eigentliche Initiator es sehen kann, müssen wir dazu noch einen „view“ erstellen. Ich erstelle diesen mit Hilfe der eindeutigen GUID und prüfe ihn direkt im Anschluss:
root@iscsi-host:/# stmfadm add-view 600144F051C247000000523ED0050001 root@iscsi-host:/# stmfadm list-view -l 600144F051C247000000523ED0050001 View Entry: 0 Host group : All Target group : All LUN : 0
Zwischenstand:
– Ich habe alle nötigen Dienste.
– Ich habe 10GB ZFS Volume in einem extra Pool das ich nutzen möchte.
– Ich habe eine logical unit angelegt, welche dieses ZFS Volume wiederspiegelt.
– Ich habe dafür gesorgt das der initiator diese logical unit sehen kann.
Fehlt noch? Genau das Target:
root@iscsi-host:/# itadm create-target Target iqn.2010-09.org.openindiana:02:6c3939bf-f5e5-4f28-a8d0-d0f0bbb2e1c4 successfully created root@iscsi-host:/# itadm list-target -v TARGET NAME STATE SESSIONS iqn.2010-09.org.openindiana:02:6c3939bf-f5e5-4f28-a8d0-d0f0bbb2e1c4 online 0 alias: - auth: none (defaults) targetchapuser: - targetchapsecret: unset tpg-tags: default
Wie gehabt… Anlegen und zur Sicherheit noch einmal prüfen. Natürlich könnte ich den Namen des Targets ändern, soll aber schnell und einfach gehen, richtig?
Jetzt kann ich schon fast zur Microsoft Windows Maschine wechseln. Vorher sorge ich mit einem kurzen:
root@iscsi-host:/# devfsadm -i iscsi
…noch dafür dass mein konfiguriertes iSCSI Target ganz sicher im Discovery auftaucht!
Windows….
Ich lasse mich immer wieder von diesem Betriebssystem verarschen! Da will ich nur eben den Microsoft iSCSI-Initiator auf der Windows 7 Pro VM aktivieren um den Windows Part zu zeigen…. Da kommen bei der Installation so hässliche Fehlermeldungen wie:
"You do not have permission to update Windows. Please contact your system administrator." "Setup could not find the update.inf file needed to update your system." "Initiator-2.08-build3825-x64fre.exe"
Eine kurze Recherche zeigte mir meinen Fehler. Das Teil ist bei mir bereits installiert. Im Grunde habe ich für diese Erkentniss länger gebraucht als für die komplette Vorbereitung auf der Solaris Kiste 🙁 Nicht falsch verstehen, ich suche die Schuld nicht bei Windows! Ich habe halt einfach keine Ahnung von den Kisten.
Aber weiter im Text. Auf der Windows Seite habe ich folgendes gemacht:
– Das Portal über die IPv6 Adresse ermitteln lassen.
– Das Ziel gesucht und verbunden.
– Die neue „Festplatte“ in der Datenträgerverwaltung inizialisiert und auf diesem ein einfaches NTFS Volume erstellt.
Für den Microsoft Windows Teil habe ich ein paar Bilder erstellt 🙂
ZFS Dateisystem verschlüsseln
Ab der ZFS Version 30 gibt es endlich die Möglichkeit sein ZFS Dateisystem zu verschlüsseln. Diese mit AES-128, 192 oder auch 256. Bei Schlüsseln größer 128 Bit macht es natürlich Sinn eine Hardwarebeschleunigung zu haben. SPARC User haben mit z.B.: T2 oder T3 gewonnen, Intel User mit z.B.: der 5600 CPU also den meisten großen Xeon CPUs.
Davon mal abgesehen… Sollte ein AES-128 Schlüssen mehr als ausreichen 🙂 Ich habe da etwas gelesen:
Für den normalen „Notebook-, Workstation- oder Serverklau“ sollte es reichen!
Wie geht es nun? Tja, so wie bei zfs fast immer. Extrem einfach:
$ zfs create -o encryption=on rpool/export/home/kernel/DatenSafe Enter passphrase for 'rpool/export/home/kernel/DatenSafe': Enter again:
Schon habe ich in meinem Homeverzeichnis einen DatenSafe. Natürlich sollte man das Kennwort nicht vergessen (wie immer) sonst hat man ein echtes Problem an seine Daten zu kommen! Starte ich mein System nun neu, kann das ZFS Dateisystem mangels fehlendem Kennwort nicht eingebunden werden. Dieses müsste ich also nachholen wenn ich auf dieses zugreifen möchte:
$ zfs mount rpool/export/home/kernel/DatenSafe Enter passphrase for 'rpool/export/home/kernel/DatenSafe':
Es geht natürlich auch bequemer. Man könnte beim anlegen des ZFS Dateisystems sagen, der Schlüssel solle bitte als Datei auf dem USB-Stick liegen:
$ zfs create -o encryption=on -o keysource=raw,file:///media/usb-stick/schluessel rpool/export/home/kernel/DatenSafe
Dann müsste man immer diesen USB-Stick von dem eigentlichen System fern halten, damit nicht beides gleichzeitig abhanden kommt. Wäre dann ja so wie die PIN-Nummer auf der EC-Karte zu notieren! Dann müsste man den USB-Stick oder besser den Schlüssel kopieren und diesen zusätzlich sicher ablegen. Der Stick könnte ja mal kaputt gehen oder „verschwinden“. Hier müsste also die Lagerstelle der Sicherungskopie zusätzlich sicher sein. Ein Kennwort im Kopf ist da vielleicht doch besser. Kommt halt wieder darauf an 🙂
Unter Solaris 11 gibt es dieses natürlich auch in „schön“. Es gibt ein PAM Module! Damit kann man extrem einfach verschlüsselte Benutzerverzeichnisse realisieren.
Grob kann man es sich wie folgt vorstellen. Das PAM Module ermöglicht einen Abgleich zwischen dem Unix-Kennwort und dem Encryption Key des ZFS Dateisystems des Benutzerverzeichnisses. Zusätzlich wird beim ersten Login des Benutzers gleich das verschlüsselte Benutzerverzeichnis angelegt. Der Benutzer meldet sich also einfach am System an und das Filesystem wird gleichzeitig entschlüsselt und eingehangen.
Das PAM Module arbeitet dabei Hand in Hand mit ssh, dgm und natürlich dem normalen Konsolenlogin.
Eine erste Konfiguration könnte so aussehen:
Damit PAM diese Fähigkeit nutzt müssen wir dieses noch mitteilen. Dazu muss folgendes in der Konfigurationsdatei /etc/pam.conf ergänzt werden:
login auth required pam_zfs_key.so.1 create other password required pam_zfs_key.so.1 sshd-kbdint auth requisite pam_authtok_get.so.1 sshd-kbdint auth required pam_unix_cred.so.1 sshd-kbdint auth required pam_unix_auth.so.1 sshd-kbdint auth required pam_zfs_key.so.1 create sshd-kbdint auth required pam_unix_auth.so.1 gdm auth requisite pam_authtok_get.so.1 gdm auth required pam_unix_cred.so.1 gdm auth required pam_unix_auth.so.1 gdm auth required pam_zfs_key.so.1 create gdm auth required pam_unix_auth.so.1
Schon lässt sich ein neuer Benutzer anlegen. Diesem verpassen wir gleich ein initiales Kennwort:
$ useradd sebastian $ passwd sebastian
Damit der Benutzer beim ersten Login sein Kennwort ändert, mit welchem das Homedirectory angelegt bzw. verschlüsselt wird, geben wir noch folgendes mit:
$ passwd -f sebastian
Wenn sich nun der User: „sebastian“ anmeldet passiert folgendes:
errorlap console login: sebastian Password: Choose a new password. New Password: Re-enter new Password: login: password successfully changed for sebastian Creating home directory with encryption=on. Your login password will be used as the wrapping key. Last login: Tue Apr 10 21:56:42 on console Oracle Corporation SunOS 5.11 11.0 November 2011 $
Schon ist der Benutzer sebastian angemeldet, hat ein encrypted homedirectory und ein Kennwort welches nur er kennt. Damit sind die Daten auf dem ~Notebook~ nun so sicher wie das Kennwort vom User Sebastian.
Mal schauen?
$ zfs get encryption,keysource rpool/export/home/sebastian NAME PROPERTY VALUE SOURCE rpool/export/home/sebastian encryption on local rpool/export/home/sebastian keysource passphrase,prompt local
Ich habe bereits einen User inkl. Daten. Ein ZFS Dateisystem lässt sich bisher nicht im Nachhinein verschlüssel. Aus diesem Grund muss die Option der Verschlüsselung beim erstellen des ZFS Filesystems angegeben werden. Ich könnte jetzt meine Daten sichern, den Benutzer löschen, den Benutzer neu anlegen und meine Daten zurücksichern… Leider bin ich faul und habe keinen Bock alle Rollen und Gruppenzugehörigkeiten neu anzulegen. Also habe ich folgendes gemacht:
Ich habe mir einen anderen User gegriffen der das Recht hat in die ROOT-Rolle zu wechseln. Mit diesem User habe ich dann das Homedirectory meines User umbenannt. Dieses musste ich aber erzwingen.
$ zfs rename -f rpool/export/home/kernel rpool/export/home/wurst
Dann soll beim nächsten Login direkt ein neues Kennwort gesetzt werden:
$ passwd -f kernel
Nach dem Login habe ich ein neues und verschlüseltes Benutzerverzeichnis. In dieses kopiere ich nun einfach wieder meine Daten aus /home/wurst und schon ist alles wie zuvor. Nur halt verschlüsselt! Natürlich liegen die Daten nun noch unverschlüsselt auf der Platte und in alten Snapshots. Dieses muss ich alles löschen. Da die Daten damit noch immer nicht zu 100% von der Platte verschwunden sind könnte man sie noch mit etwas Mühe von der Platte herunterknibbeln. Dieses muss man im Hinterkopf behalten. Die Daten werden erst langsam und Stück für Stück überschrieben. Ein wirklich sicherer Weg ist dieses also nicht!
Natürlich habe ich auch noch etwas für die Bilderliebhaber. So schaut der ganze Vorgang am Gnome Display Manager aus. Vom ersten Login des Users, über Kennwortänderung bis hin zur Bestätigung des angelegten und verschlüsselten Benutzerverzeichnis. Wie man sehen kann ist es sogar für den einfallslosen, mausschubsenden Anwender zu bewältigen. Fragt sich nur welcher dieser Anwender an einem Solaris Desktop arbeiten O_o???



SMB Freigaben erstellen
Bevor ich mit um die Einrichtung von SMB Freigaben kümmern kann muss ich dafür sorgen das die nötigen Grundlagen dafür gegeben sind.
Als erstes installiere ich also die SMB Server kernel root components nach:
$ pkg install SUNWsmbskr
Zu installierende Pakete: 1
Boot-Umgebung erstellen: Nein
Sicherung der Boot-Umgebung erstellen: Ja
Zu ändernde Services: 1
DOWNLOAD PAKETE DATEIEN ÜBERTRAGUNG (MB)
Completed 1/1 29/29 0.5/0.5
PHASE AKTIONEN
Installationsphase 84/84
PHASE ELEMENTE
Paketstatus-Updatephase 1/1
Abbildstatus-Updatephase 2/2
Installiert ist er damit schon mal. Damit nun am Ende die lokalen Benutzer mittels Benutzername / Kennwort zugriff auf die Freigaben haben muss noch folgende Zeile in die Datei /etc/pam.conf aufgenommen werden:
other password required pam_smb_passwd.so.1 nowarn
So nun nur noch den SMB-Server anwerfen:
$ svcadm enable -r smb/server
Jetzt schaue ich mal schnell nach ob er auch läuft (wenn er sinnlos hängen bleibt sucht man sonst so lange):
$ svcs smb/server STATE STIME FMRI online 20:11:41 svc:/network/smb/server:default
So gefällt es mir fast schon. Als nächstes hänge ich Kiste noch in die Workgroup meiner wahl:
smbadm join -w kernel-error.de After joining kernel-error.de the smb service will be restarted automatically. Would you like to continue? [no]: yes Successfully joined kernel-error.de
Nun sollte alles bereit sein um SMB-Shares zu erstellen. Für meinen Test erstelle ich einen neues ZFS Dateisystem, welche ich später freigeben möchte:
$ zfs create rpool/windoof-freigabe $ zfs list rpool/windoof-freigabe NAME USED AVAIL REFER MOUNTPOINT rpool/windoof-freigabe 31K 190G 31K /rpool/windoof-freigabe
Die eigentlich Freigabe erstellt sich nun fast von alleine:
$ zfs set sharesmb=on rpool/windoof-freigabe $ zfs get sharesmb rpool/windoof-freigabe NAME PROPERTY VALUE SOURCE rpool/windoof-freigabe sharesmb on local
Wooohooo….
Auf mehrfache Nachfrage hier noch etwas zu ZFS und CIFS-Shares >>klick<<
© 2026 -=Kernel-Error=- — RSS
Theme von Anders Norén — Hoch ↑