Linux 3

Aus wiki@ANOnet
Wechseln zu: Navigation, Suche

ergänzend zu Linux 1 und Linux 2

Inhaltsverzeichnis

LPI201

  • Kernel
    • Kernelcomponents
    • patching the kernel
    • kernelmodules
  • System-Startup
  • System-Recovery
  • Filesystemmanagement
  • udev
  • Softwareraid
  • LVM
  • networking
    • openVPN
    • wireless
  • system maintenance
  • Filesystem-options
  • Adjusting Storage
  • Install sources
  • backup
  • DNS
  • securing DNS

Dateisystem und Massenspeicher

  • mkdossf -F [size]: 32, da standardmäßig 16 verwendet wird
ext2 - kein Journal
ext3 - Journal: ggf weden Data+Inodes journalisiert. 
Mittels tune2fs -j kann von 2 auf 3 gewechselt werden.
ext4 steht zur Verfügung, es muss allerdings ein eigenes Paket installiert werden. 
Es ist performanter, und die Inode-Size ist veränderbar, mit tune4fs
yum install e4fsprogs
tune4fs -O extents,unit_bg,dir_index /dev/[DEV]
f4fsck -fDC0 /dev/[DEV]
reiserfs
xfs
mkfs.xfs /dev/sda5


filesystemcheck

e2fsck

es sollte nicht am gemounteten Device passieren, mittels -n passiert der check auf RO-Basis mit

-b

kann ein Backup-Suterblock angegeben werden (einer der bei dumpe2fs /dev/sda1 ausgelesen werden)


badblocks

greift auf der hardwareebene.

/var umlegen

fdisk /dev/sda
partprobe /dev/sda
mkfs.ext4 /dev/sda6
mkfs.ext4 -L var /dev/sda6
reboot
Runlevel S
mount /dev/sda6 /mnt
cd /var
tar --selinux -cvf - . | (cd /mnt; tar xpvf -)
mv /var /var.old
mkdir /var
umount /mnt
vi /etc/fstab
 LABEL=var /var ext4 defaults 1 2
mount -a
restprecon -R /var
reboot

ISO erstellen

mkisofs -rJ -o /tmp/NAME.img /home/another

brennen:

dvdrecord /tmp/NAME.img

testen:

mount -o loop /tmp/NAME.img /mnt

Software-Raid

Chunksize=64k, die Filesystemblocksite=4k. bei einem async. IO wied ins Memory geschrieben, ins FS wird alle 64k geschrieben. Raidlevels

  • 0 -> zwei disks werden zusammengefasst auf ein stripeset geteilt. ein junk wird immer auf eine Platte geschrieben (n=2n) Sicherheit - rw+
  • 1 -> disk wird gespiegelt (n=n). es sollten die beiden Disks auf zwei unterschiedliche Controller gelegt werden. Sicherheit +, r+, w=
  • 2, 3, 4, 5 -> brauchen mind. 3 Disks. Die Parität wird bei 4, 5, auf die Disks verteilt, 2, 3 auf alle Disks. Sicherheit +, r+, w=-
  • 6 braucht mind. 4 Disks,

SW-Raid erstellen

Partition-ID auf fd umstellen
/dev/sda7            4808        5051     1959898+  fd  Linux raid autodetect
/dev/sda8            5052        5295     1959898+  fd  Linux raid autodetect
/dev/sda9            5296        5539     1959898+  fd  Linux raid autodetect
/dev/sda10           5540        5783     1959898+  fd  Linux raid autodetect
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda7 /dev/sda8
mdadm: array /dev/md0 started.


cat /proc/mdstat
# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sda8[1] sda7[0]
     1959808 blocks [2/2] [UU]
mdadm -S /dev/md0 

"löscht" das Set wieder

mkfs.ext4 /dev/md0

FS erstellen


# mkdir /data1/
# mount /dev/md0 /data1
# mdadm --detail /dev/md0


  1. mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Mon May 17 18:25:59 2010
     Raid Level : raid5
     Array Size : 3919616 (3.74 GiB 4.01 GB)
  Used Dev Size : 1959808 (1914.20 MiB 2006.84 MB)
   Raid Devices : 3
  Total Devices : 3
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Mon May 17 18:27:58 2010
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : c93f3a98:8f5ecae6:12a0ec78:c6412475
         Events : 0.4
   Number   Major   Minor   RaidDevice State
      0       8        7        0      active sync   /dev/sda7
      1       8        8        1      active sync   /dev/sda8
      2       8        9        2      active sync   /dev/sda9
chkconfig --list mdmonitor

wäre das monitoring, die Konfigdatei wird mt

mdadm --detail --scan >> /etc/mdadm.conf

erstellt. in diese Datei muss mit MAILADDR noch eine Mailadresse eingefügt werden, danach lässt sich das Service starten:

service mdmonitor start
[root@station15 /]# mdadm -f /dev/md0 /dev/sda8 
mdadm: set /dev/sda8 faulty in /dev/md0

eine Disk wurde als "fehlerhaft" markiert

[root@station15 /]# mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/root": 2 messages 2 new
>N  1 logwatch@station15.e  Mon May 17 13:21  45/1675  "Logwatch for station1"
 N  2 root@station15.examp  Mon May 17 18:43  31/1161  "Fail event on /dev/md"

und root per Mail verständigt. Ebenso ist dieses Event auch in /var/log/messages

mdadm -r  /dev/md0 /dev/sda8

entfernt die Disk

mdadm -a /dev/md0 /dev/sda10

fügt eine neue disk hinzu

# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md0 : active raid5 sda10[3](S) sda8[1] sda9[2] sda7[0]
     3919616 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

eine weitere Disk wurde hinzugefügt, (hier sda10), sie ist als S markiert. "Sparedisk" würde nun eine ausfallende Disk ersetzen

#  mdadm -f  /dev/md0 /dev/sda8
mdadm: set /dev/sda8 faulty in /dev/md0
# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md0 : active raid5 sda10[3] sda8[4](F) sda9[2] sda7[0]
     3919616 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
     [>....................]  recovery =  4.8% (94336/1959808) finish=0.9min speed=31445K/sec

sda10 übernimmt

mdadm --grow /dev/md0 --raid-devices=4

würde die 4. Disk dem Verbund hinzufügen

Abschließend muss noch

resize4fs /dev/md0

verwendet werden, um dem Filesystem die geänderte Hardware mitzuteilen

mdadm -S /dev/md0

löscht den verbund

bestehende Disk spiegeln

  • fdist /dev/sda
  • partprobe
  • umount
  • platte verkleinern für configpart: resizef4fs
  • mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda5 /dev/sda14
  • resize4fs /dev/md1


mdadm --detail --scan >> /etc/mdadm.conf

soltle angelegt werden, um im Falle eines Ausfalles die Platten wieder zusammenzuführen


LVM

Der LVM wird als weitere Schicht zwischen SW-Raid und Filesystem eingebaut. In Zukunft soll LVM auch die Funktion von SW-Raid übernehmen

Das Device beim LVM heisst

/dev/(Vol-Group)/(LV)

Der Name ist frei wählbar.

BSP: Ein Server hat zwei Disks eingebaut, sda1 und sdb1, es wird ein raid1, md0 gebaut, und dies wird als /boot gebaut, da /boot LVM nicht unterstützt

Der Rest landet in einer weiteren Partition, sda2 und sdb2 --> md1. Dies wird dann in LVM gegeben. Der Vorteil hier ist, dass die Partitionen online vergrößert werden können. (Mittlerweile existiert auch eine GUI für den LVM)

Allgemeines

Am Anfang arbeitet man mit PV (Physical Volumes) dies können Raids, partitionen, USBs, ... sein, alled Blockdevices. Die Platte wird in 2 Teile unterteilt, in einen public und einen privatebereich

Kommandos:

lvm
pv...., vg..., lv...


beim Umlegen eines /tmp sollte chmod 1777 /tmp nicht vergessen werden

Anlegen

Per Fdisk:

t
Partition number (1-10): 10
Hex code (type L to list codes): 8e



Hier sollte eine Disk-DOKU geführt und gepflegt werden...

pvcreate /dev/sdc3 /dev/sdc4

nach dieser Aktion ist das ehemalige Filesystem darunter erledigt. Die Konfig des LVM liegt im Privatebereich, und wird automatisch gespiegelt, auf alle Platten

nun muss eine VG angelegt werden, in der die vorher erstellten Platten liegen:

vgcreate [name] [devices]

der Name kann frei gewählt werden, sinnvollerweise sollte er allerdings den Verwendungszweck wiederspiegeln. Nun befinden sich die Platten in einer VolumeGroup die Platte wird in kleinere "Einheiten" zerlegt, 4mb-Blöcke, PE, Physical Extents. Eine nachher erstellte Partition ist folglich ein vielfaches von den 4mb

nun wird ein LV, ein Logical Volume, gebaut

lvcreate (-l PE oder) -L (Größe in GB) -n (name) (VG)

-i 2 würde die Größe auf die beiden Platten aufteilen, und so ein Raid0 erstellen

dieses Device steht zur Verfügung Es wird bei

df -h

als

dev/mapper/[vgname]-[LVname]


mkfs.ext4 /dev/[VolumeGroupname]/[LVName]


vgextend /dev/(DEV) (VG)

würde eine weitere Platte der VG hinzufügen

vgreduce

würde eine Platte der VG entfernen

vgresize

würde beide vereinen. Bei allen dieser Tools ist augenmerk auf das Vorzeichen zu legen: kein vz (5G) würde bedeuten, dass das LV auf 5gig gesetzt wird, +5G würde um 5G erhöhen, -5G um 5G reduzieren

Prüfen

vgdisplay -v (VG)
pvdisplay (devicename)
lvdisplay (devicename) -m (zeigt, auf delcher phys. Platte sich das LMV befindet)
pvs
vgs
lvs


Anlegen praktisch

[root@station15 ~]# vgcreate datavg /dev/sda7 /dev/sda8 /dev/sda9
 Volume group "datavg" successfully created
[root@station15 ~]# pvs
 PV         VG     Fmt  Attr PSize  PFree
 /dev/sda10        lvm2 --    1.87G 1.87G
 /dev/sda2  vol0   lvm2 a-   17.56G 9.09G
 /dev/sda7  datavg lvm2 a-    1.87G 1.87G
 /dev/sda8  datavg lvm2 a-    1.87G 1.87G
 /dev/sda9  datavg lvm2 a-    1.87G 1.87G
[root@station15 ~]# vgs
 VG     #PV #LV #SN Attr   VSize  VFree
 datavg   3   0   0 wz--n-  5.60G 5.60G
 vol0     1   2   0 wz--n- 17.56G 9.09G
[root@station15 ~]# lvs
 LV   VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
 home vol0 -wi-ao 480.00M                                      
 root vol0 -wi-ao   8.00G            
[root@station15 ~]# lvcreate -L 3G -n data1vol datavg
 Logical volume "data1vol" created
mkfs.ext4 /dev/datavg/data1vol 
mount /dev/datavg/data1vol /data1

erweitern

[root@station15 ~]# vgextend datavg /dev/sda10
 Volume group "datavg" successfully extended
[root@station15 ~]# vgs
 VG     #PV #LV #SN Attr   VSize  VFree
 datavg   4   1   0 wz--n-  7.47G 4.47G
 vol0     1   2   0 wz--n- 17.56G 9.09G
[root@station15 ~]# lvs
 LV       VG     Attr   LSize   Origin Snap%  Move Log Copy%  Convert
 data1vol datavg -wi-ao   3.00G                                      
 home     vol0   -wi-ao 480.00M                                      
 root     vol0   -wi-ao   8.00G                                      
[root@station15 ~]# lvresize -L +2G /dev/datavg/data1vol 
 Extending logical volume data1vol to 5.00 GB
 Logical volume data1vol successfully resized
[root@station15 ~]# lvs
 LV       VG     Attr   LSize   Origin Snap%  Move Log Copy%  Convert
 data1vol datavg -wi-ao   5.00G                                      
 home     vol0   -wi-ao 480.00M                                      
 root     vol0   -wi-ao   8.00G                                      
[root@station15 ~]# pvs
 PV         VG     Fmt  Attr PSize  PFree  
 /dev/sda10 datavg lvm2 a-    1.87G   1.87G
 /dev/sda2  vol0   lvm2 a-   17.56G   9.09G
 /dev/sda7  datavg lvm2 a-    1.87G      0 
 /dev/sda8  datavg lvm2 a-    1.87G      0 
 /dev/sda9  datavg lvm2 a-    1.87G 616.00M

Nun muss dem Filesystem sein "M ehrplatz" mitgeteilt werden:

[root@station15 ~]# resize4fs /dev/datavg/data1vol 
resize4fs 1.41.5 (23-Apr-2009)
Filesystem at /dev/datavg/data1vol is mounted on /data1; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/datavg/data1vol to 1310720 (4k) blocks.
The filesystem on /dev/datavg/data1vol is now 1310720 blocks long.
pvmove

lässt zu, platten am laufenden system austztauschen mit

vgreduce

kann dann eine möglicherweise defekte platte aus dem LVM entfernt und danach ausgebaut werden

snapshots

Interessant für Backups, es wird eine Momentaufnahme des Systems erstellt. Es wird ein "zeitpunkt" gesetzt, ab dann werden alle Änderungen in den snapshot kopiert. "-L" gibt die Größe der Snapshotdatei an

lvcreate -s -L 1G -n data1vol.snap /dev/datavg/data1vol
mount /dev/datavg/data1vol.snap /mnt

nun können Vergleiche gezogen werden. Im /mnt bleiben die Daten quasi "unverändert"

Der snap wird dann mit tar gesichert, umounted und mit

lvremove /dev/datavg/datavol1.snap

Backup

Nachteile von tar

  • sehr langsam
  • kein index


Hauptoptionen:

c kreieren
t tell (list)
x extrahieren
v verbose
u update: hängt an ein archiv an
l: für local filesystem: es werden keine anderen Partitionen gesichert
z: gzip-> kann von winzip gelesen werden
j: bzip-> komprimiert etwas besser.
p: rechte
tar cvf /tmp/var.tar /var


Rücksichern von /var/log/messeges

tar xpvf /tmp/var.tar /var/log/messages

st-devices

unter /dev/

sie werden generiert, wenn ein SCSI-Tape angeschlossen wird

mit cdrecord kann ein scsi-reset ausgelöst werden, dann scheint in /proc/scasi/scasi das Tapedevice auf. Eine weitere Möglichkeit wäre das Verwenden der SCSI-Tools. Es werden 2 Devices angelegt: st0 und nst0 der Unterschied ist, dass bei

tar -cvf /dev/st0 /var

nach dem sichern das Tape zurückgespielt wird, bei

tar -cvf /dev/snt0 /var

wird stehengeblieben, es kann ein weiterer block gesichert werden

mt

(magnetic tape) damit können tapes gesteuert werden

dump

arbeitet mit einem index, und kann mit inkrementellen Updates arbeiten. dump funktioniert nur auf mountpoints, und bleibt im Filesystem

0 fullbackup
u legt eine Datei an (dunpdates)
dump 0uf /tmp/home.dump /home
[root@station15 ~]# cat /etc/dumpdates 
/dev/mapper/vol0-home 0 Tue May 18 17:57:20 2010 +0200
dump 1uf /tmp/home1.dump /home
[root@station15 ~]# cat /etc/dumpdates 
/dev/mapper/vol0-home 0 Tue May 18 17:57:20 2010 +0200
/dev/mapper/vol0-home 1 Tue May 18 17:58:57 2010 +0200

beim 2. dump wurden nur die Änderungen zum Vollbackup weggesichert

restore

Zum Wiederherstellen muss man sich am Mountpoint befinden, und danach erst die Wiedergerstellung starten

-i interaktiv
-x sofort
restore -if /tmp/home.dump

öffnet eine "restorekonsole", durch die man sich bewegen kann. mit "add" wird eine Datei zur Wiederherstellung vorgemerkt. Mit

extract

wird die Datei wiederhergestellt.


cpio

sichern

find /home | cpio -o > [file]

herstellen

cpio -iv < [file]

Quelleninstallation

IDR werden Quellen nach /usr/src gelegt
ein src.rpm wurde geholt, nach /usr/src bzw /usr/src, (bzw /usr/src/redhat/SOURCES/
) rpm -ivh brachte keinen Erfolg
[root@station15 src]# rpm2cpio dump-0.4-0.6.b42.fc14.src.rpm | cpio -iv
dump-0.4b42.tar.gz
dump-rh507948.patch
dump-rh568457.patch
dump-rh576525.patch
dump.spec
606 blocks
[root@station15 src]# 

nun liegen die Codes vor rpmbuild kann eine installierbare Datei erstellen

rpmbuild -bb dump.spec

würde nun ein RPM gebaut, der danach installiert werden könnte


rpm --rebuild

würde dieses in ein Kommando zusammenfassen

tar.gz

ebenso nach /usr/local/src, entpacken:

tar xpvf [tar]

Es wird ein Unterverzeichnis mit dem tar-Namen angelegt. Asl nächstes sollte die README gelesen werden, und anschließend die configure ausgeführt werden.

./configure

der Erfolg sollte mit

echo $?

geprüft werden

nun wird

make

gestartet, es wurde das Prog kompiliert. Vor einer erneuten komp. sollte "make clean"

make install

würde das Prog installieren

wenn ein

make uninstall 

könnte, wenn es vorhanden ist, wieder deinstallieren

Kompilierung

uname -r

liefert die verwendete Kernelversionsnummer.

auf www.kernel.org liegt der aktuellste Kernel zum Download bereit, allerdings sollte dieser nicht unbedingt verwendet werden, da der Kernel von den Distris angepasst wird

2.6.18-164.el5

hier wäre 2.6.18 der kernel, 164 die RedHat Versionsnummer.

[root@station15 ~]# rpm -qa | grep kernel
kernel-devel-2.6.18-164.el5
kernel-headers-2.6.18-164.el5

kernel-2.6.18-164.el5 nebenbei sind devel und headers vorghanden, welche im Hardening von Servern entfernt werden sollten!

unter /lib/modules findet sich alles, was der Kernel braucht, um dynamische Module zu verwenden. Hier findet sich auch eine Datei modules.dep, welche die Abhängigkeiten klärt


Basiskommandos

lsmod um module anzuzeigen
insmod um module hinzuzufügen (löst keine abhängigkeiten)
rmmod entfernt ein Modul wieder

bzw statt rmmod/insmod modprobe, da so Abhängigkeiten aufgelöst werden


um Module beim Starten zu laden, könnten

  • die module nach /etc/rc.d/rc.local bzw
  • init.rd zu legen, mkinitrd -f -v /boot/initrd-[xxx] [kernel] --with[modulname]
  • nach /etc/sysconfig/mkinitrd ein ausführbares Script legen, mit Inhalt "MODULES="udf", nun reicht mkinitrd -f -v /boot/initrd-[xxx] [kernel]


modprobe verwendet /etc/modprobe.conf

modinfo -F parm tg3

bringt die möglichen Parameter von tg3

options tg3 tg3_debug=1

würde für tg3 die o.a. Option mitliefern

unter /etc/modprobe.d/blacklist können module eingetragen werden, die nicht geladen werden sollen


drbt

http://de.wikipedia.org/wiki/DRBD installieren: www.drbd.org, DL,

tar xpvf drbd-8.3.2.tar.gz 
cd drbd-8.3.2
make
make install
grep -v '^[ ]*#' /etc/drbd.conf | grep -v '^$' > /etc/drbd.conf.new
global {
   usage-count yes;
}
common {
 syncer { rate 10M; }
}
resource r0 {
 protocol C;
 handlers {
   pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
   pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
   local-io-error "/usr/lib/drbd/notify-local-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
   fence-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";
 }
 startup {
   degr-wfc-timeout 120;    # 2 minutes.
   outdated-wfc-timeout 2;  # 2 seconds.
 }
 disk {
   on-io-error   detach;
 }
 net {
   after-sb-0pri disconnect;
   after-sb-1pri disconnect;
   after-sb-2pri disconnect;
   rr-conflict disconnect;
 }
 syncer {
   rate 10M;
   al-extents 257;
 }
 on host.1 {
   device     /dev/drbd0;
   disk       /dev/sda10;
   address    192.168.0.15:7788;
   flexible-meta-disk  internal;
 }
 on host.2 {
   device    /dev/drbd0;
   disk      /dev/sda9;
   address   192.168.0.11:7788;
   meta-disk internal;
 }
}
  • modprobe drbd
  • drbdadm create-md r0
  • drbdadm attach r0
  • drbdadm -- -o primary r0 (nur eine Seite!!)
  • mkfs.ext4 /dev/drbd0 (nur eine Seite!!)
  • drbdadm connect r0


mit

cat /proc/drbd

kann der Status abgefragt werden. Nun kann der Primary die Platte formatieren und mounten

drbdadm secondary r0

auf einem,

drbdadm primary r0

auf dem anderen Host lässt das Wechseln zu...


Kernel

[root@station15 src]# rpm -ivh kernel
kernel-2.6.18-194.3.1.el5.src.rpm  kernels/
[root@station15 src]# rpm -ivh kernel-2.6.18-194.3.1.el5.src.rpm 
/usr/src/redhat/SPECS
[root@station15 SPECS]# ls
kernel-2.6.spec

unter SOURCES liegt auch der original-Kernel, linux-2.6.18.tar.bz2

rpmbuild -bp redhat/SPECS/kernel-2.6.spec 

Kompilieren

  1. einrichten der Konfigurationsdatei(.config):
    1. make menuconfig
    2. make config
    3. make xconfig
  2. make clean
  3. make bzImage
  4. make modules
  5. make modules_install
  6. installkernel
[root@station15 linux-2.6.18.x86_64]# cp /boot/config-2.6.18-164.el5 .config
[root@station15 linux-2.6.18.x86_64]# make oldconfig
yum -y qt-devel
make xconfig

startet die GUI, um die config anzupassen

makefile editieren, versionsnummer anpassen
make bzImage && make modules

somit wird der Kernel kompiliert

mit

installkernel

kann der Kernel installiert werden. Es bleibt nur mehr die grub anzupassen, denn der neue Kernel ist nicht der default-Kernel

Kerneloptionen können temporär in /proc/sys/ mittels echo gesetzt werden. um dieses dauerhaft zu machen, kann die /etc/sysctl.conf verwendet werden

sysctl -A |grep ttl

würde die Werte anzeigen.

installkernel 2.6.18-ANOtherKernel-0.1 arch/x86_64/boot/bzImage System.map


NFS, SMB

  1. UID und GID-Mapping



NFS

  • der Server hat eine einzige Konfig-Datei, die /etc/exports
[root@storage1 ~]# mkdir /share/nfsexp
[root@storage1 ~]# echo "/share/nfsexp 172.30.22.0/24(rw,no_root_squash)" >> /etc/exports 
[root@storage1 ~]# service nfs start


[root@node2 ~]# showmount -e storage1
Export list for storage1:
/share/nfsexp 172.30.22.0/24
[root@node2 ~]# mount storage1:/share/nfsexp /nfsmount/
[root@storage1 ~]# chmod 770 /share/nfsexp/
[root@storage1 ~]# groupadd nfsusers
[root@storage1 ~]# usermod -a -G nfsusers nfsnobody
[root@storage1 ~]# chgrp nfsusers /share/nfsexp/

somit ist schreibrecht für den gemappten NFS-User hergestellt, nur root nicht;)



  • unterstützt seit v3 Kerberos

eine Änderung an der Konfig kann dem laufenden Dienst mit

exportfs -r

werden die Änderungen aktiviert

mit

rpcinfo -p [localhost|server]

kann der portmapper abgefragt werden. So kann eine grundsätzliche Erreichbarkeit geprüft werden.

showmount -e [Server]

zeigt die freigaben


mount [Server]:/data /mnt


Automounter

Der Automounter mountet bei Bedarf, und baut wieder ab, wenn das gemountete Verzeichnis nicht mehr notwendig ist. Konfiguration unter

/etc/auto.master
verweist auch auf eine /etc/auto.misc
cd /misc/cd

mountet automatisch das CD-LW, da

cd              -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
data            -rw,soft,intr           instructor:/data

nun ist auch /data des instructors unter /data erreichbar

das Verzeichnis /misc wird vom Automounter angelegt, sollte daher vorher nicht existieren. Der Mountpoint (hier misc) kann in der auto.master bestimmt werden


/home/guests        /etc/auto.home

nach auto.master und

guest2013 -rw,soft,bg instructor:/home/guests/guest2013


nach auto.home würde den NFS-Usern ihr am Server liegendes Homeverzeichnis zur Verfügung stellen


* -rw,soft,bg instructor:/home/guests/&

würde jedem User (*) erlauben, sein jeweiliges (&) /home zu bekommen

WLAN

lspci zeigt den Netzwerkcontroller an
lsmod

findet den Treiber (ipw2200)

in /etc/udec/rules.d wäre unter Deb die Zuordnung der ethx


iwlist eth1 scanning

listet info zu den WLANS auf


iwconfig eth1 essid [xx]
iwconfig eth1 key s:[key]

VPN

Es gibt grundsätzlich drei Möglichkeiten, VPN ainzusetzen: site2site, client2site, vlient2server


  • openvpn tunnel


dev tun
ifconfig 172.16.2.1 172.16.2.2
secret geheim.key
verb 3
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
user nobody
group nobody
daemon


dev tun
remote [off-IP]
ifconfig 172.16.2.1 172.16.2.2
secret geheim.key
verb 3
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
user nobody
group nobody
daemon

~

openvpn --config openvpn.conf 

~

scripts

start/stop

Dieses kleine Script wird in die Runlevels eingebaut:

  1. cat /usr/local/sbin/date.sh
while true 
 do date >> /var/log/date.log 
 sleep 10 
done


Hier wurde crond modifiziert, um das script "mydate" in die runlevels zu integrieren:

#! /bin/bash
#
#          Start/Stop the datescript. 
# chkconfig: 2345 90 60
# description: issnich


prog="/usr/local/sbin/date.sh"

start() {
        echo  $"Starting $prog: "
        $prog &
        if [ $? -eq 0 ];then
        echo $prog started
        fi
        echo $! > /var/run/date.pid
}

stop() {
        echo -n $"Stopping $prog: "
        kill `cat /var/run/date.pid`
        if [ $? -eq 0 ];then
                echo $prog stopped
                rm /var/run/date.pid
        fi
 } 


restart() {
        stop
        start
}



 case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac




service mydate start

lässt nun den start zu

service mydate stop

stoppt das Script

service mydate restart

beendet und startet das Script

chkconfig --add mydate 

fügt das Script in die unter # chkconfig definierten Runlevels



Netzwerkmonitore und Fehlerdiagnose

(201/2/163)

mii-tool -v
ethtool [IF]

In /var/log/messages, lspci bzw mit "dmesg | grep eth" kann herausgefunden werden, welche Netzwerkkarte welchem Interface zugeordnet ist. Ebenso kann die Datei /etc/modprobe.conf gesichtet werden, bzw die Datei /etc/udev/rules.d/60-net.rules RedHat handelt die Zuweisung der ETH mit

cat /etc/sysconfig/network-scripts/ifcfg-eth0 (Austausch der MAC zur Anpassung)

Für den Einbau einer Netzwerkkarte ist das Servive

kudzu

wichtig. Dieses dient der Erkonnung neuer Hardware. Sollte dieses beim Booten aufgedreht werden, wird die Autokonfiguration der Hardware ermöglicht

in /var/lib/dhclient

werden Informationen zur DHCP-Info sichtbar

Fehlereingrenzung

netstat -rn 
netstat -i
netstat -taupen
netstat -s
route -n
ip route 
ping [GW]
arp -an
ifconfig

(mac, ip, mtp, ifup, counter wie colls, tx, rx)

iptables -mvL / iptables -t nat -nvL
(tcpwrapper, acl, configfiles)
traceroute -I 
lsof -i -n


wireshark (tcpdump -vv)

WLAN

In linux wird IDR Wireless ebenso als ETHx ausgegeben (selten/historisch wlan0)

[root@station19 ~]# iwlist 
Usage: iwlist [interface] scanning
             [interface] frequency
             [interface] channel
             [interface] bitrate
             [interface] rate
             [interface] encryption
             [interface] key
             [interface] power
             [interface] txpower
             [interface] retry
             [interface] ap
             [interface] accesspoints
             [interface] peers
             [interface] event
iwconfig

würde das WLAN.-dev konfigurieren, wieder für kurzfristige, händische Konfiguration. Für fixe Konfiguration wieder nach /ect/sysconfig/network-scripts

Mittels des "Network-Managers" wäre die WLAN-Steuerung grafisch, übersichtlich und es können "AP-Profile" angelegt werden

iwspy

liefert Statistiken

DNS

dig ns at.

liefert die NS für .at

;; QUESTION SECTION:
;at.                            IN      NS 

;; ANSWER SECTION:
at.                     172788  IN      NS      ns2.univie.ac.at.
at.                     172788  IN      NS      ns9.univie.ac.at.
at.                     172788  IN      NS      ns-uk.nic.at.
at.                     172788  IN      NS      ns-us1.nic.at.
at.                     172788  IN      NS      sss-nl.nic.at.
at.                     172788  IN      NS      d.nic.at.
at.                     172788  IN      NS      j.nic.at.
at.                     172788  IN      NS      ns1.univie.ac.at.

;; ADDITIONAL SECTION:
ns1.univie.ac.at.       370     IN      A       193.171.255.2
ns2.univie.ac.at.       370     IN      A       192.92.125.2
ns2.univie.ac.at.       370     IN      AAAA    2001:628:453:4302::53
ns9.univie.ac.at.       370     IN      A       194.0.10.100
ns9.univie.ac.at.       372     IN      AAAA    2001:678:d::cafe
ns-us1.nic.at.          429     IN      A       204.152.184.202
ns-us1.nic.at.          429     IN      AAAA    2001:4f8:4:b::202

zu bemerken ist, dass die Server per round-robin rotieren und die TTL bei jeder Abfrage heruntergesetzt wird

IN steht für Internet
A IPv4
AAAA ipv5


SOA

telekom.at. 3403 IN SOA dns1.telekom.at. hostmaster.telekom.at. 2010042700 10800 3600 3600000 3600

die Zeiten definieren die Antwortzeiten und die Zeit, nachdem der DNS das Recht der Auskunftserteilung verliert

2010042700 wäre das Datum (und Zähler) der letzten Bearbeitung
10800 die Zeit, in der sich der Slave mit seinem Master syncronisiert
3600 die Zeit, die er wartet, wenn der Master nicht erreichbar ist, um einen neuen Versuch zu starten
3600000 die Zeit, in der der Slave von seinem Master zu hören hat
3600 die Cachezeiten

Server

  • Cache-Server
  • Forwarder
  • Master: dieser enthält die Originale Zonendatei
  • Slave: dieser enthält die Kopie der Master-Zone
rpm -ql bind

auch hier ist ein 2. Fenster mit

tail -f /var/log/messages

hilfreich;)

[root@station19 etc]# ls -lZ /etc/named.conf 
-rw-r-----  root named system_u:object_r:named_conf_t   /etc/named.conf

wenn NICHT:

restorecon -v /etc/named.conf

named.conf

in den Options wird das Port festgelegt, aber auch, wer auf diesen Server zugreifen kann. Weiters ist das Haupt-Configverzeichnis angegeben, /var/named Ebenso ist hier festgelegt, wer abfragen darf

view Hier besteht die Möglichkeit, "split-dns" zu betreiben, so bekommen verschiedene Hostbereiche verschiedene Auskünfte

 include "/etc/named.rfc1912.zones";

am Ende würde die unbeantwortbaren Fragen an die Root-Server weiterleiten

Zone erstellen

Die Files sind wie folgt aufgebaut:

HOST   TTL IN TYPE(SOA,NS,A,MX,...) DATA

ist ein Feld nicht befüllt, hat es den Wert der vorherigen Zeile oder den Default $TTL muss angegeben werden:

[root@station19 ~]# cat /var/named/t.anonet.at.zone

$TTL 3600
t.anonet.at.    IN      SOA                     station19.t.anonet.at. root.t.anonet.at.( 2010042901 10 60 2W 1H )

t.anonet.at.    IN      NS                      station19.t.anonet.at.

t.anonet.at.    IN      MX                      10 station19.t.anonet.at.

station19       IN      A                       192.168.0.19
client1         IN      A                       192.168.0.111

www             IN      CNAME                   station19.t.anonet.at.


würde nun vereinfacht so aussehen:

[root@station19 ~]# cat /var/named/t.anonet.at.zone 
$TTL 3600
@                IN      SOA                     station19 root( 2010042901 10 60 2W 1H )
                IN      NS                      station19

                IN      MX                      10 station19

station19       IN      A                       192.168.0.19
client1         IN      A                       192.168.0.111

www             IN      CNAME                   station19


Abschließend noch in die named.conf den Hinweis auf die Zone:

zone "t.anonet.at" {
       type master;
       file "t.anonet.at.zone";
};


Zone transferieren

Um abzufragen, ob eine Zone transferierbar ist, kann

dig -t axfr [domain] @[NAMESERVER]

verwendet werden


wird die Zonendatei erweitert, wird auch das Downloaden der Zone möglich

zone "t.anonet.at" {
       type master;
       file "t.anonet.at.zone";
       allow-transfer {192.168.0.0/24; };
};

nun kann die Zone exportiert werden.

um einen Slave zu betreiben, muss eine neue Zone angelegt werden:

zone "at" IN {
 type slave;
 masters { 192.168.0.254; };
 file "slaves/at.zone";
};

Danach werden noch die neuen NS in die Zonendatei eingetragen

Sicherheiten

  • bind-chroot sollte mitinstalliert werden, damit eine chroot-Umgebung erstellt wird

Diverses

arp -s [ip] [mac] pub

würde einen "mac-proxy" einrichten


pwd recovery

  1. singleuser booten (s nach kernel)
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Navigation
Werkzeuge