Server Sun Fire V20z

SunFire V20z je velmi výkonný 64 bitový dvouprocesorový server s procesory AMD Opteron. Je velmi vhodný pro aplikace náročné na paměť, protože se zde využije rychlost přístupu do RAM u Opteronu.

Hardware

  • CPU: 2x Opteron 248, 2190 GHz
  • RAM: 2 GiB
  • SCSI řadič: SymBios 53c1030
  • HDD: 2x 72 GiB SCSI U320
  • 2x Gb ethernet
  • LOM
  • CASE: 1U do racku

Solaris pro x86

Insataloval jsem Solaris 9 pro platformu x86 (release 4/04). Solaris na tomto 64b stroji pracuje pouze v 32b režimu. Instalace Solarisu z CD-ROM proběhla bez problémů. Ovladač pro X je vesa a jinak nic složitějsího při instalaci nepotkáte. Nezapomeňte stáhnout z webu sunsolve.sun.com a nainstalovat všechny patche pro tento počítač a Solaris!

Linux

Když jsem dostal tento kousek HW do ruky poprvé, okamžitě jsem na něj nainstaloval Debian abych si zkusil jak se počítač chová.

Debian

Vždy instaluji Debiana Woody (stable) a potom podle potřeby provadim dist-upgrade, proto zde popíšu instalaci Woodyho.

  • Protože je Debian Woody linuxový dědeček a při bootu z instalačního CD nenajde SCSI řadič, instaluji z Knoppixe v chrootu.
  • Boot posledního Knoppixe (jádro expert26)
  • V Knoppixu: modprobe sym53c8xx
  • Rozdělte v fdisku disk /dev/sda podle potřeby.
  • Vytvořte filesystem: mkfs.xfs /dev/sda1 a podobne
  • Připojte disk do adresáře: mount /dev/sda1 /mnt
  • Pomocí skriptu debootstrap nainstalujte Debiana do daného adresáře debootstrap woody http://source.rfc822.org/debian
  • Proveďte chroot do daného adresáře: chroot /mnt
  • Připojte adresář /proc: mount -n /proc
  • Vytvořte
    • /etc/fstab
    • /etc/resolv.conf
    • /etc/hosts
    • /etc/network/interfaces
    • /etc/apt/source.list
  • Pomocí APT si stáhněte potřebné věci pro kompilaci jádra:
    • gcc
    • libc6-dev
    • libncurses5-dev
    • bzip2
    • make
  • Stáhněte dostatečně nové jádro (v mém případě 2.6.7)
  • Přeložte jádro s potřebnýma volbama, osobně jsem ho překládal bez modulů, vše šlo pěkně do jádra.
  • pomocí APT stáhněte a nainstalujte GRUB (apt-get install grub)
  • vyskočte z chroot prostředí
  • V Knoppixu proveďte grub-install /dev/sda (se všema parametrama co jsou k tomu potřeba), tím se nainstaluje grub na /dev/sda a vytvoří se potřebné soubory.
  • Do souboru /mnt/boot/grub/menu.lst pridejte nove jadro.
  • 
        default 0
        delay 5
        title Debian
        root(hd0,1)
        kernel /boot/vmlinuz ro root=/dev/sda1
    

Konfigurace jádra

Pro SCSI řadič na desce potřebujete ovladač sym53c8xx, můj konfigurák jádra 2.6.7 (generoval jsem ho jen tak „z voleje“ takze omluvte nepřesnosti, nicméně je funkční)

Informace přímo ze stroje:

bonnie++

Porovnání výkonu disku s klasickým IDE diskem (Seagate Barracuda 7200.7, 80GB) a SCSI U160 Diskem Seagate

SCSI U320 Seagate ST373307LC – disk dodaný se serverem:
(Tesovany server mel 2048MB RAM)
demo:~# bonnie++ -s 4096 -m amd64 -r 2048  -u 100 -d /tmp


Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
amd64            4G 51028  99 64989  13 27682   7 42087  81 69636   8 481.7   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  2769  13 +++++ +++  4104  24  2856  16 +++++ +++  1152   6
IDE ATA100 Seagate 7200.7
(Testovaci pocitac mel 512MB RAM)
demo:~# bonnie++ -s 1025 -m klenot -r 512  -u 1000 -d /tmp

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
klenot        1025M 24050  97 47153  14 19380   7 20430  79 43637   8 180.7   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  3477  61 +++++ +++  3867  48  3149  63 +++++ +++   941  13

SCSI U160
demo:~# bonnie++ -s 1025 -m klenot -r 512  -u 0 -d /home/virtual/

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
klenot        1025M 23768  96 41519  12 15976   5 21432  83 33680   6 385.4   2
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  2357  39 +++++ +++  2617  39  2371  42 +++++ +++  1019  16

SuSE Linux Enterprise Server 8 64bit

SLES8 je jednou z doporučovaných distribucí na tento server, SuSE bylo první distribucí připravených pro 64b procesor Opteron. Instalace této distribuce je bez problémů, zasunete CD a odklikáte si to pekne v grafickém instalátoru.

OpenVPN


Aktualizovaná verze článku o konfiguraci OpenVPN je k nalezení na BCVlogu: OpenVPN – propojení kanceláře a počítačů v terénu.


OpenVPN je jednoduše použitelná, robusní a velmi konfigurovatelná implementace VPN umožňující bezpečně propojit dvě a více sítí. Komunikace přez OpenVPN je šifrována pomocí SSL.

Projekt OpenVPN je Open Source a je šířen pod licensí GNU/GPL

Popis instalace a nastavení OpenVPN píšu vzhledem k OS Linux, ale podporované operační systémy jsou i MS Windows 2000/XP, MacOS X, OpenBSD, FreeBSD NetBSD a také Solaris. Kompletní výpis vlastností OpenVPN je k nalezení na stránkách projektu.

Instalace

Download

OpenVPN je ke stažení na adrese prdownloads.sourceforge.net/openvpn/, použil jsem verzi 2.0_beta10 a přeložil jsem si ji ze zdrových souborů. Aplikace závisí na knihovně LZO (dá se skompilovat i bez ní, ale proč se ochuzovat o kompresi?) a také potřebujete halvičkové soubory OpenSSL.

Kompilace

Zkompilujte a nainstalujte knihovnu LZO (klasika: ./configure --prefix=/usr && make && checkinstall), poté spusťte jako uživatel root ldconfig.

Překlad OpenVPN je také velmi jednoduchý:

tar -xjf openvpn-2.0_beta10.tar.gz
cd openvpn-2.0_beta10
./configure --prefix=/usr
make
checkinstall

Před tím než nainstalujete do systému balíček vytvořený checkinstallem, otestujte funkčnost šifrování (pořád jsme v adresáři se zdrojovýmy kódy OpenVPN):

./openvpn --genkey --secret key
./openvpn --test-crypto --secret key

Dál otestujeme navázání spojení pomocí TLS/SSL:

V jednom terminálu spustíme:

./openvpn --config sample-config-files/loopback-client

V druhém terminlu spustíme:

./openvpn --config sample-config-files/loopback-server

tun/tap

OpenVPN spoužívá pro komunikaci virtuální síťové zařízení tun nebo tap.

Podpora pro tun/tap je v linuxu součástí jádra, pokud používáte jádro z distribuce tak není co řešit. Pokud si překládáte jádro sami, nezapomeňte volbu(pro jádro řady 2.6):

Device Drivers --->
    Networking support  --->
        <M>   Universal TUN/TAP device driver support

Minimálně v distribuci Slackware budete muset vyrobit vyrobit zařízení /dev/net/tun:

mknod /dev/net/tun c 10 200

a nahrád modul zpřístupňující funkce tun do jádra:

modprobe tun

Nastavení

Firewall

Nastavte si maškarádu a povolte forward paketu.

Tunel bez zabezpečení

Tento tunel není nijak zabezpečen, komunikace probíhá protokolem UDP na portu 5000.

Na serveru 1 spusťte:

openvpn --remote server2.cz --dev tun1\
 --ifconfig 192.168.2.1 192.168.2.2 --verb 9

Na serveru 2 spusťte:

openvpn --remote server1.cz --dev tun1\
 --ifconfig 192.168.2.2 192.168.2.1 --verb 9

Funkčnost otestujete pomocí pingu na druhou stranu tunelu:

server 1: ping 192.168.2.2
server 2: ping 192.168.2.1

Tunel zabezpečený pevným klíčem

Nejdřív si vygenerujeme klíč, kterým zabezpečíme spojení:

openvpn --genkey --secret klic.key

Klíč musíte mít na obou počítačích na kterých končí tunel, přenos klíče by měl probbí9hat nějakým bezpečným způsobem.

První počítač:

openvpn --remote server2.cz --dev tun1 \
--ifconfig 192.168.2.1 192.168.2.2 --verb 5 --secret klic.key

Druhý počítač:

openvpn --remote server1.cz --dev tun1 \
--ifconfig 192.168.2.2 192.168.2.1 --verb 5 --secret klic.key

TLS/SSL

Předchozí varianty jsem popsal abych ukázal žejsou možné a funkční, ale nějak jsem pro ně nenašel vhodné využití. Protože trochu cestuji a chci se připojovat z notebooka z libovolného místa a chci to mít bezpečné, používám TLS/SSL.

SSL certifikáty

Pro to abysme mohli používat následující nastavení potřebujeme SSL certifikáty a klíče podepsane od jedné CA. Balíček OpenVPN obsahuje skripty s jednoduchou CA (adresář easy-rsa/), kterou použijeme.

V adresáři easy-rsa/ najdete soubor vars, který si musíte upravit v závislosti na tom kam jste si easy-rsa/ nakopírovali. Doporučuji abyste si přečetli README, ktere je v tom adresáři, je tam totiž kompletní popis výroby klíče.

Nastavení

Nastavení OpenVPN pro použití TLS/SSL mám v konfiguračních souborech, samozřejmě že to lze napsat jako prametry programu jako v minulých příkladech, ale to se mi moc nelíbí.

/etc/openvpn/

Všechny soubory, ktere zde budu popisovat jsou v adresáři /etc/openvpn, který má práva 700 a majitele uživatele root.

SSL certifikáty – Server

Na server si umístíme certifikát CA (ca.crt) a certifikát a klíč serveru (server.crt a server.key), které jsme si vygenerovali podle README v adresáři easy-rsa/, také bsyte neměli zapomenout na soubor dh1024.pem nebo dh2048.pem, záleží kterej jste si vyrobili.

server.conf

Tento soubor obsahuje nastaveni OpenVPN na straně serveru(pokud se kouknete do dokumentace k OpenVPN, zjistíte co která položka znamená.):

dev tun
ifconfig 192.168.2.1 192.168.2.2
up ./server.up
tls-server
dh dh2048.pem  
#nebo dh dh1024.pem
ca ca.crt
cert server.crt
key server.key
port 5000
comp-lzo
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
verb 3

Parametry ifconfigu jsou ifconfig <lokalni IP> <vzdalena IP>, jsou to koncove adresy tunelu. Server běží na UDP portu 5000.

server.up

Soubor server.up je shell skript, přidává routu do VPNky.

route add -net 192.168.2.0 netmask 255.255.255.0 add gw $5
start.sh

start.sh je skript, který nahazuje VPNku, pro vypnutí VPN stačí killnout proces openvpn

#!/bin/bash
dir=/etc/openvpn
echo 1 > /proc/sys/net/ipv4/ip_forward
openvpn --cd $dir --daemon --config server.conf
SSL certifikáty – Klient

Na klientský počítač umístíme certifikát CA (ca.crt) a certifikát a klíč klienta (klient.crt a klient.key), které jsme si vygenerovali podle README v adresáři easy-rsa/.

klient.conf
dev tun
remote 147.32.119.186   # VPN server
ifconfig 192.168.2.2 192.168.2.1
up ./klient.up
tls-client
ca ca.crt
cert klient.crt
key klient.key
port 5000
#user nobody
#group nobody
comp-lzo
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
verb 3
klient.up

Soubor klient.up je shell skript, který po nahození VPNky upravuje routovací tabulku klienta, musíte si napsat svůj v závislosti na vašich podmíkách na síti. Jako příklad zde ukážu svůj skript, kterým se připojuji když síťuji přez modem:

#!/bin/bash
route add 147.32.119.186 ppp0       # routa na VPN server
route del default                   # smažu výchozí gw
route add default gw 192.168.2.1    # vše budu routovat přez VPNku

V případě, že chcete všechen provoz tlačit přez VPNku, musíte přidt routovací pravidlo na VPN server.

start.sh

Jako klientský počítač mám notebook, který má vypnutý syslog a snažím se aby co nejméně zapisoval na disk. Proto mám /tmp přimountovaný jako tmpfs a OpenVPN nechavám logovat do souboru /tmp/openvpn.log

#!/bin/bash
dir=/etc/openvpn
modprobe tun
echo 1 > /proc/sys/net/ipv4/ip_forward
openvpn --log /tmp/openvpn.log --cd $dir --daemon --config klient.conf

Popis bootu Solarisu

Popis bootu počítače s operačním systémem Solaris na platformách x86 a SPARC.

Boot Solarisu na x86

  • Primary boot
  • Boot from FDD
  • 0. sektor na FDD obsahuje Master Boot Block
  • MBB nacte image boot loaderu strap.com
  • strap.com nacte boot.bin
  • boot.bin natahuje jadro
  • Boot z CD-ROM
    • je stejny jako z FDD, jen je MBB nahrazeny podle specifikaci El-Torito
  • Boot z HDD
    • 0. sektor na HDD obsahuje MBB a FDISK tabulku (rozdeleni disku)
    • MBB najde v FDISK tabulce prvni aktivni oddil
    • nacte z nej prvni sektor a skoci na jeho prvni byt v pameti
    • (az potud to je standardni PC-kompatinilni rezim boot)
    • boot solarisu:
    • slice s0
    • 1 cylindr – slice boot
    • 1. sektor – obsahuje partition boot program (pboot)
    • 2. a 3. sektor – obsahuje VTOC (tabulka rozdeleni na slices)
    • 4. a dalsi sektory – obsahuje bootblk
    • Master boot program (mboot) nacte partition boot program (pboot) a spusti ho
    • pboot nacte bootblk a spusti ho
    • pokud disk obsahuje dalsi partisny, tak muze user nabootovat z jine
    • bootblk nebo strap.com nacte boot.bin z UFS / a spusti ho
  • Boot ze site
    • boot z FDD
    • PXE
  • Secondary boot
    • boot.bin
    • prepne CPU do 32bit, paget, protectet rezimu
    • provede omezenou inicializaci stroje
    • Configuration Asistant
    • pokud je auto-boot?=false, tak se zastavi boot
    • Disky (i CDROM) zvladne v pripade, ze pouzivaji UFS
    • network
      • rarp
      • dhcp
      • root se mountuje pres NFS
    • po namountovani / spusti nacte /etc/bootrc
  • Jakmile jsem uz v prikazovem radku, tak muzu zadat prikaz ekvivalentni boot -as, příkaz b -as
  • Soubory
    • /etc/bootrc
    • /platform/`uname -i`/boot/solaris/boot.bin

    Boot Solarisu na platformě SPARC

    OBP

             +--------------+
             | diag-switch? |-----true----+
             +--------------+             |
                    |                +--------+
                    |                |  POST  |
                  false              +--------+
                    |                     |
                    |---------------------+
                    |
             +-------------+           +------------+
             |  auto-boot? |---false---|  OK Prompt |
             +-------------+           +------------+
                    |
                  true
                    |
    +----------------------------------------+
    |                boot device   boot-file |
    | boot-command +             +           |
    |                diag-device   diag-file |
    +----------------------------------------+
    
    • boot -s – single user režim
      • z disku – chce heslo
      • cdrom – nechce heslo
      • /usr, /var – jsou potřeba i v single režimu
    • boot -r – rekonfigurační režim
    • boot -a – umožní zadávat různé parametry bootu (lze tím vyřešit problémy s /etc/system a podobně)

    z disku

    • Načtení VTOC (= 1. sektor disku), rozdeleni slice. Příkazy, které vás můžou zajímat:
      • format
      • fmthard
      • prtvtoc
    • načte se boot block (nahraje se do paměti program bootblk), 2.-16. sektor na slice, pozor, HW závislý!
      • /usr/sbin/installboot – nainstaluje bootblk, je to skript používající dd Pokud obnovujete systém ze zálohy, většinou musíte ručně obnovit boot block. Vlastní program bootblk je v adresáři /usr/platform/`uname -i`/lib/fs/ufs.
    • bootblk načte sekundární bootovací program ufsboot, program ufsboot je HW závislý a je umístěný v adresáři /platform/`uname -i`/
    • načte se /etc/system a pak 32b nebo 64b jádro a jeho moduly.
      • 32b/platform/`uname -m`/kernel/
      • 64b/platform/`uname -m`/kernel/sparcv9
      • moduly/kernel/, /usr/kernel/
    • Po inicializaci jádra se jako první proces spouští /sbin/init
    • init načte konfiguraci z /etc/inittab (jako první sysinit a initdefault), porvede sysinit a pak pokračuje runlevelem který je zaznamenán v initdefault. Soubor /etc/inittab se načítá a provádí od začátku do konce v tom pořadí jak jsou záznamy zapsány.

    ze sítě

    Pro boot ze sítě se používá protokolo RARP nebo jeho nastupce DHCP

    • klient pošle broadcastem dotaz
    • server odpoví klientovi jeho IP adresou
      • /etc/ethers
      • rarpd -a
    • Na serveru musí být aktivní tftp server a v adresáři /tftpboot musí být soubor s nazvem IP v hexadecimálním tvaru, který si klient stáhne. Po stažení se spustí a přez RPC dotaz na server zjistí své jméno. Odpověď dostane od daemona bootparamd, jeho nastavení je v /etc/bootparams.

    installboot

      boot z CD-ROM:
    
        ok boot cdrom -s
    
      instalace bootblk na disk:
    
        # cd /usr/platform/`uname -i`/lib/fs/ufs
        # installboot bootblk /dev/rdsk/c0t0d0s0
      
      reboot:
      
        # init 6