A rendszergazda trükkjei

A MathWikiből
(Változatok közti eltérés)
(Debian csomagkezelés)
a (A rendszergazda trükkjei moved to Admindoc:A rendszergazda trükkjei: Új névtérbe kerülnek a rendszergazdai dokumentációk)

A lap 2007. november 22., 11:44-kori változata

Ezen az oldalon a régi "TRUKKOK.TXT" állományban összeírt kisebb-nagyobb megoldásokat próbálom a kor szellemének megfelelő formára hozni. Ne várjon itt senki teljes értékű dokumentációt. Minden ami itt van, az csupán emlékeztető saját magam számára.

Tartalomjegyzék

Managable switchek adminisztrálása

3com switch adminisztrálása

Linksys switchek adminisztrálása

Boot CD készítése

mkdir -p iso/boot/grub
cp  /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub
vim iso/boot/grub/menu.lst
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
        -boot-load-size 4 -boot-info-table -o super.iso iso

Bootfloppy felrakása bootCD-re

A syslinux csomagban található memdisk kernel segítségére van szükségünk:

title Win 98 bootfloppy
kernel (cd)/boot/memdisk
initrd (cd)/images/win98_indito.img

2.88-as floppy-image készítése 1.44-es floppyról

Ha univerzális bootCD-t szeretnénk készíteni, szükség lehet rá, hogy a kétlemezes alkalmazásokból egy nagy, 2.88 MB-os floppy-image-et készítsünk.

dd if=/dev/zero of=disk.img bs=1024 count=2880
mformat -i disk.img -f 2880 -B /dev/fd0 ::
mcopy -i disk.img a:*.* ::

Hálózati trükkök

Hálózat párhuzamos porton (PLIP)

Szerver oldalon:

modprobe plip
plipconfig plip0 trigger 10000
ifconfig plip0 192.168.0.1 dstaddr 192.168.0.2
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.2 -j MASQUERADE

Kliens oldalon:

modprobe plip
plipconfig plip0 trigger 10000
ifconfig plip0 192.168.0.2 dstaddr 192.168.0.1
route add default gw 192.168.0.1
vim /etc/resolv.conf

Hálózat soros porton (SLIP)

Szerver oldalon:

modprobe slip
slattach -s 19200 /dev/ttyS0 &
ifconfig sl0 192.168.0.1 dstaddr 192.168.0.2
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.2 -j MASQUERADE

Kliens oldalon:

modprobe slip
slattach -s 19200 /dev/ttyS0 &
ifconfig sl0 192.168.0.2 dstaddr 192.168.0.1
route add default gw 192.168.0.1
vim /etc/resolv.conf

Hálózat USB porton

Szerver oldalon:

modprobe usbnet
modprobe plusb
ifconfig usb0 192.168.0.1 dstaddr 192.168.0.2
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.2 -j MASQUERADE

Kliens oldalon:

modprobe usbnet
modprobe plusb
ifconfig usb0 192.168.0.2 dstaddr 192.168.0.1
route add default gw 192.168.0.1
vim /etc/resolv.conf

Interaktivitás ADSL modem mögött

Nagy letöltések, rendszerfrissítések közben tapasztalható, hogy az internet használata nagyon lassúvá válik. Szeretnénk, ha egy-egy honlap letöltése nem várakozna hosszan a letöltések miatt:

DLHOST=0/0
tc qdisc add dev eth1 ingress
tc filter add dev eth1 parent ffff: \
   protocol ip prio 50 u32 match ip src $DLHOST \
   police rate 400kbit burst 400kbit drop flowid :1

NAT-olás T-Online ADSL modem mögött

Az ADSL modem MTU értéke kisebb, mint az ethernet kapcsolaté. Ezt a modemmel kapcsolatot tartó gép tudja, és lekezeli, de a NAT mögött ülő gépek nem tudnak róla, ezért mindenféle "misztikus" hálózati hiba lép fel. A megoldás:

iptables -t mangle -o ${DSL_DEV} --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN \
         -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

IPv6 kikapcsolása default kernel esetében

ex -s -c '%s/net-10-pf ipv6/net-10-pf off ipv6/|wq' /etc/modprobe.d/aliases

Ethernet deivce-ok névadása

Ha sok hálókártya van, és azokat még cserélgeti is az ember, akkor nem árt fixálni, hogy melyik kártyát milyen néven érjük el.

cat >> /etc/udev/rules.d/10_netinterfaces.rules <<END
 KERNEL=="eth*", SYSFS{address}=="00:11:22:33:44:55", NAME="eth0"
 KERNEL=="eth*", SYSFS{address}=="00:11:22:33:44:66", NAME="eth1"
END

Lehetőség van saját nevek használatára is, így még egyértelműbbé tehetőek az ethernet device-ok:

 KERNEL=="eth*", SYSFS{address}=="00:11:22:33:44:55", NAME="lan"
 KERNEL=="eth*", SYSFS{address}=="00:11:22:33:44:66", NAME="dmz"
 KERNEL=="eth*", SYSFS{address}=="00:11:22:33:44:77", NAME="upc"

Több VLAN egyetlen fizikai interface-en

Tegyük fel a vlan csomagot, majd addjuk hozzá az alábbi sorokat az /etc/network/interface-hez

# DHCP az 500-as VLAN-ban
iface eth0.500 inet dhcp

# Statikus IP az 503-as VLAN-ban
iface eth0.503 inet static
  address 192.168.0.101
  netmask 255.255.255.0

# Második statikus IP az 503-as VLAN-ban
iface eth0.503:1 inet static
  address 192.168.0.102
  netmask 255.255.255.0

Link Aggregation (bonding)

Ha két darab 100 megabites hálókártyánkat egy 200 megabitesre cserélnénk, a Linuxnak arra is van megoldása.
Állítsuk be a bonding paramétereit az /etc/modprobe.d/options fájlban:

options bonding mode=4 miimon=100

Majd az interfaces fájlban definiáljuk a bonding eszközt:

iface bond0 inet static
  address 192.168.0.100
  netmask 255.255.255.0
  gateway 192.168.0.1
  slaves eth0 eth1

Gyorsan egyszerűen otthoni hálózatot

Legyen az eth0 a külső hálókártyánk, az eth1 pedig a belső hálózathoz tartozó. Első lépésként oldjuk meg a NATolást

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.23.0/24 -j MASQUERADE

Ezután már csak a DNS és DHCP szolgáltatást kell megoldanunk. Erre a legjobb a dnsmasq csomagot használni. A konfiguráció mindössze két sorból áll:

interface=eth1
dhcp-range=192.168.23.10,192.168.23.100,255.255.255.0,12h

Inkrementális backup rsync használatával

  1. a backup-serveren be kell kapcsolni az rsyncd-t. Ehhez tedd fel az rsync csomagot, és a /etc/defaults/rsync-ben kapcsold be, hogy daemonként fusson.
  2. a csatolt példa alpján csináld meg a backup-szerveren a /etc/rsyncd.conf-ot
  3. a backup szerveren az /etc/rsyncd.secrets -ben username:password formában (egy sor, egy user) csináld meg az rsync usereit. Ez független a linux usereidtől.
  4. /etc/init.d/rsync restart
  5. a kliensekre másold fel a backup.sh-t, és rakd be a cron-ba, hogy indítsa.
  6. a backup szerveren szintén érdemes valami cron scriptet csinálni a régi backupok törlésére.

A sok hardlink miatt elég nehéz megmondani, hogy egy adott napi backup törlésével mennyi hely szabadul fel a winyón. Megoldás:

du -csh $(ls | grep -v 2006-12-25) 2006-12-25| grep 2006-12-15

Ez megadja, hogy mennyi hely szabadul fel, ha a december 25.-i backupot törlöm.

Könyv nyomtatása

psbook eredeti.ps 1.ps
mpage -2 -o 1.ps > 2.ps
lpr -o sides=two-sided-short-edge 2.ps

Háttértárolók

Software RAID kezelése

mdadm --grow --raid-devices=2 /dev/md0
mdadm /dev/md0 --add /dev/sdb2

Partimage használata

partimage -b -d -o -z2 -f3 save /dev/hda1 /backup/hda1_image

Debian csomagkezelés

Debian repository készítése

Az egyetlen szükséges csomag a reprepro. Készítsük el a szükséges könyvtárakat:

 mkdir -p /var/debrepo/{conf,db,www}
 cd /var/debrepo

Hozzuk létre a conf/distributions állományt:

Origin: BMEMath
Label: BMEMath
Suite: oldstable
Codename: sarge
Version: 3.0
Architectures: i386 amd64 alpha
Components: main non-free
UDebComponents:
Description: Packages from BME Institute of Mathematics
#Update: security woody swoody
#SignWith: yes
  
Origin: BMEMath
Label: BMEMath
Suite: stable
Codename: etch
Version: 4.0
Architectures: i386 amd64 alpha
Components: main contrib non-free
UDebComponents:
Description: Packages from BME Institute of Mathematics
#Update: security woody swoody
#SignWith: yes
  
Origin: BMEMath
Label: BMEMath
Suite: sid
Codename: sid
Version: 5.0
Architectures: i386 amd64 alpha
Components: main contrib non-free
UDebComponents:
Description: Packages from BME Institute of Mathematics
#Update: security woody swoody
#SignWith: yes

És most kezdjük el bepakolni a csomagjainkat a repositoryba:

reprepro -Vb ./www --confdir ./conf --dbdir ./db includedeb etch ./maple9-convex_1.1.2-2_i386.deb

CPAN csomagból Debian csomag

Ha olyan Perl csomagot szeretnénk használni, ami nincs benne a Debian disztribúcióból, és nem szeretnénk elbukni a csomagkezelő által nyújtott előnyöket, akkor kénytelenek vagyunk a CPAN-on található forrásból debian csomagot készítenünk. Példaképpen készítsük el a PDF::Reuse::Barcode csomagot. Két csomagra lesz szükségünk hozzá:

apt-get install devscripts dh-make-perl

Töltsök le és tömörítsük ki a forrást:

cd /usr/src
wget "http://search.cpan.org/CPAN/authors/id/L/LA/LARSLUND/PDF-Reuse-Barcode-0.05.tar.gz"
tar -pzxvf PDF-Reuse-Barcode-0.05.tar.gz

Debianizáljuk a forrást:

dh-make-perl PDF-Reuse-Barcode-0.05/

Látjuk, hogy panaszkodik, mert olyan perl csomagokra van szüksége, amik nem elérhetőek debian csomagban. Készítsük el ezeket is:

wget "http://search.cpan.org/CPAN/authors/id/L/LA/LARSLUND/PDF-Reuse-0.33.tar.gz"
tar -pzxvf PDF-Reuse-0.33.tar.gz
dh-make-perl PDF-Reuse-0.33
cd  PDF-Reuse-0.33
debuild
cd ..

wget "http://search.cpan.org/CPAN/authors/id/W/WR/WRW/Barcode-Code128-2.01.tar.gz"
tar -pzxvf Barcode-Code128-2.01.tar.gz
dh-make-perl Barcode-Code128-2.01
cd Barcode-Code128-2.01
debuild
cd ..

Pakoljuk fel a két szükséges csomagot:

dpkg -i libbarcode-code128-perl_2.01-1_all.deb
dpkg -i libpdf-reuse-perl_0.33-1_all.deb

Mivel az apt-file parancs továbbra sem fogja tudni, hogy melyik csomagba kerültek a PDF::Reuse és a Barcode::Code128 fájljai, ezért kézzel addjuk meg a függőségi listát:

vim PDF-Reuse-Barcode-0.05/debian/control
Depends: ${perl:Depends}, ${misc:Depends}, libgd-barcode-perl, libbarcode-code128-perl, libpdf-reuse-perl

Telepítsük fel a helyesen felismert függőséget, a libgd-barcode-perl csomagot:

apt-get install libgd-barcode-perl

Ezek után végre elkészíthetjük a csomagunkat:

cd PDF-Reuse-Barcode-0.05
debuild
cd ..

És már fel is telepíthetjük:

dpkg -i libpdf-reuse-barcode-perl_0.05-1_all.deb

Debian csomag készítése

Akkor is érdemes csomagot készítenünk,

Egyebek

Vékonykliens-rendszerek készítése

ltsp-build-client --base /usr/src/ltsp --dist etch 
                  --mirror http://ftp.hu.debian.org/debian/ 
                  --extra-mirror http://ftp.debian.org/debian/ etch 
                  --security-mirror http://security.debian.org etch/updates 
                  --arch i386

CPIO archivum létrehozása

cd xxx
find | cpio -o -H newc > ../xxx.cpio

bináris fájlból hexadump készítése és visszaállítás

od -tx1 -An -w25 xxx.bin | sed 's/^ //' > xxx.hex
cat xxx.hex | tr ' ' $'\n' | while read i; do eval echo -e -n \\\\x$i; done > xxx.bin

Sorok törése adott karakterszám után (vim)

Első próba:

:%s/\(.\{,75\}\) /\1\r/g

Ezzel az a gond, hogy a 30 karakteres sorokat is töri az utolsó szóköznél. A második ötlet:

%s/.\{75}/\=strpart(submatch(0),0,match(submatch(0)," [^ ]*$"))."\<CR>".strpart(submatch(0),match(submatch(0)," [^ ]*$")+1)/

Ennek a gondja az, hogy sokszor ki kell adni.

Szerver telepítés

Usergroup:rendszergazda

Intézeti számítástechnika

Személyes eszközök