Child pages
  • The first jail
Skip to end of metadata
Go to start of metadata

Az első jail

Miután az előző fejezet végén eltakarítottuk a nyomokat magunk után, megejtjük a klónozást, és csinálunk egy jail-t, amelynek rövid életében feladata annyi lesz, hogy kipróbáljuk a jail lehetőségeit:

Parancssor
[root@freebsd:~]$ zfs clone dpool/jails/v8.1.0/template@base dpool/jails/v8.1.0/httpd
[root@freebsd:~]$ zfs get compression dpool/jails/v8.1.0/httpd
NAME                      PROPERTY     VALUE                     SOURCE
dpool/jails/v8.1.0/httpd  compression  off                       default
[root@freebsd:~]$ zfs set compression=on dpool/jails/v8.1.0/httpd
[root@freebsd:~]$ zfs get compression dpool/jails/v8.1.0/httpd
NAME                      PROPERTY     VALUE                     SOURCE
dpool/jails/v8.1.0/httpd  compression  on                        local

Nem kötelező a tömörített jail fájlrendszer, de én két dolog miatt szeretem:

  • ránézésre látom, hogy a tömörített mentés mennyi helyet fog elfoglalni.
  • több hely marad és teljesítményben sem roszabb, mivel a programokat csak egyszer kell betölteni - a jail indulásakor.

Ha megtekintjük az elfoglalt helyet, akkor látszik igazán, hogy mire képes a ZFS klónozás: a template fájlrendszerből létrehozott httpd fájlrendszer egyelőre 0 bájt helyet foglal el, mivel minden egyes fájl és könyvtár hivatkozik a template megfelelő állományára:

Parancssor
[root@freebsd:~]$ zfs list
NAME                                      USED  AVAIL  REFER  MOUNTPOINT
[...]
dpool/jails/v8.1.0                        254M  3.40G    21K  /dpool/jails/v8.1.0
dpool/jails/v8.1.0/httpd                     0  3.40G   254M  /dpool/jails/v8.1.0/httpd
dpool/jails/v8.1.0/template               254M  3.40G   254M  /dpool/jails/v8.1.0/template
dpool/jails/v8.1.0/template@base             0      -   254M  -

A létrehozott jail még nem üzemképes, ahhoz fel kell vennünk a /etc/rc.conf állományba a jail támogatást:

/etc/rc.conf
jail_enable="YES"
jail_devfs_enable="YES"
jail_procfs_enable="YES"
jail_list="httpd"
jail_httpd_rootdir="/dpool/jails/v8.1.0/httpd"
jail_httpd_hostname="httpd.jails.javaforum.hu"
jail_httpd_ip="192.168.2.6"

A _jail_ IP címe

A jail IP címe megér pár mondatot, hiszen a jail csak hálózaton keresztül tud a külvilággal kommunikálni. Minden jail rendelkezik egy és csakis egy IP címmel, amely lehet egy publikus IP cím is, ha a jail-nek érintkeznie kell a külvilággal, ha csak egy bizonyos szolgáltatás a célja, akkor célszerű az alias használata, amelyet már az előző fejezetben létrehoztunk, de csak parancssorból:

Parancssor
[root@freebsd:~]$ ifconfig bge1 alias 192.168.2.6 netmask 255.255.255.0
[root@freebsd:~]$ ifconfig bge1
bge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:1a:64:6f:0e:d8
        inet 192.168.2.254 netmask 0xffffff00 broadcast 255.255.255.0
        inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
        inet 192.168.2.6 netmask 0xffffff00 broadcast 192.168.2.255
        media: Ethernet autoselect (none)
        status: no carrier

Az alias megőrzéséhez módosítani kell a /etc/rc.conf állományt:

/etc/rc.conf
ifconfig_bge1_alias0="inet 192.168.2.6 netmask 255.255.255.0"

Visszatérve a httpd nevű – amúgy üres – jail használatára, most már el tudjuk indítani:

Parancssor
[root@freebsd:~]$ /etc/rc.d/jail start httpd
Configuring jails:.
Starting jails: httpd.jails.javaforum.hu.
[root@freebsd:~]$ jls
   JID  IP Address      Hostname                      Path
    24  192.168.2.6     httpd.jails.javaforum.hu      /dpool/jails/v8.1.0/httpd
[root@freebsd:~]$ ssh root@192.168.2.6
The authenticity of host '192.168.2.6 (192.168.2.6)' can't be established.
DSA key fingerprint is a4:ac:e7:f0:4a:43:16:3b:ce:d0:4b:68:7d:2b:eb:c4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.6' (DSA) to the list of known hosts.


Password:
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

FreeBSD 8.1-STABLE (JAVAFORUM) #0: Sat Nov 20 09:45:09 CET 2010

[root@httpd:~]$ df
Filesystem               1K-blocks   Used   Avail Capacity  Mounted on
dpool/jails/v8.1.0/httpd   3823104 259968 3563136     7%    /
[root@httpd:~]$ ps aux
USER    PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND
root  38827  0.0  0.0 13792  1388  ??  SsJ   3:04PM   0:00.00 /usr/local/sbin/syslog-ng -p /var/run/syslog.pid
root  38867  0.0  0.2 23812  8264  ??  SsJ   3:04PM   0:00.01 /usr/local/sbin/munin-node (perl)
root  38910  0.0  0.1 22876  2724  ??  SsJ   3:04PM   0:00.00 /usr/sbin/sshd
root  38916  0.0  0.1 10732  2836  ??  SsJ   3:04PM   0:00.00 sendmail: accepting connections (sendmail)
smmsp 38920  0.0  0.1 10732  2944  ??  IsJ   3:04PM   0:00.00 sendmail: Queue runner@00:30:00 for /var/spool/clientmqueue (sendmail)
root  38926  0.0  0.0  6744  1184  ??  SsJ   3:04PM   0:00.00 /usr/sbin/cron -s
root  39440  0.0  0.1 33768  3456  ??  SsJ   3:05PM   0:00.02 sshd: root@ttyp2 (sshd)
root  39446  0.0  0.0  9012  1996  p2  SsJ   3:05PM   0:00.01 -bash (bash)
root  39449  0.0  0.0  6788   988  p2  R+J   3:05PM   0:00.00 ps aux
[root@httpd:~]$ exit
logout
Connection to 192.168.2.6 closed.
[root@freebsd:~]$ zfs list
NAME                                      USED  AVAIL  REFER  MOUNTPOINT
dpool/jails/v8.1.0                        255M  3.40G    21K  /dpool/jails/v8.1.0
dpool/jails/v8.1.0/httpd                  773K  3.40G   254M  /dpool/jails/v8.1.0/httpd
dpool/jails/v8.1.0/template               254M  3.40G   254M  /dpool/jails/v8.1.0/template
dpool/jails/v8.1.0/template@base             0      -   254M  -

Mint látszik, mindössze 773kBájt helyet foglal a futó jail, amelyben működik a cron, a sendmail, az sshd, a munin-node és a syslog-ng is, egy dolog hiányzik: a ports fájlrendszer, amelyet – frissítés után – gyorsan be is csatolunk, majd belépünk a friss és ropogós httpd jail-be, és megnézzük van-e valami frissítenivaló:

Parancssor
[root@freebsd:~]$ zfs set mountpoint=/dpool/jails/v8.1.0/httpd/usr/ports/ dpool/jails/ports
[root@freebsd:~]$ ssh root@192.168.2.6
Password:
Last login: Sat Jan 17 15:05:10 2009 from 192.168.2.6
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

FreeBSD 8.1-STABLE (JAVAFORUM) #0: Sat Nov 20 09:45:09 CET 2010

[root@httpd:~]$ portupgrade -i -a
--->  Session started at: Sat, 17 Jan 2009 15:09:35 +0100
[Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... - 71 packages found (-1 +1) (...). done]
** None has been installed or upgraded.
--->  Session ended at: Sat, 17 Jan 2009 15:09:45 +0100 (consumed 00:00:10)
[root@httpd:~]$ portaudit -F
auditfile.tbz                                 100% of   53 kB   49 kBps
New database installed.
[root@httpd:~]$ portaudit
0 problem(s) in your installed packages found.

Szerencsére nincs semmi frissítenivaló és biztonsági hibát hordozó csomagunk sincs.

Az Apache telepítése

A httpd nevű jail azzal a céllal jött létre, hogy kipróbáljuk a jail lehetőségeit, ezért egy kezdetleges webszolgáltatást hozunk létre, amely látványos lehet, mégis egyszerű beállítani. Kiszolgáló programként az Apache httpd szerverét fogjuk használni, annak is a 2.2 verzióját. A telepítéshez egyszerűen be kell lépnünk a jail-be, és a portinstall használatával fel kell telepítenünk:

Parancssor
[root@httpd:~]$ portinstall -i apache
--->  Session started at: Sat, 17 Jan 2009 15:13:52 +0100
--->  Found 3 ports matching 'apache':
        www/apache13
        www/apache20
        www/apache22
Install 'www/apache13'? [yes] n
Install 'www/apache20'? [yes] n
Install 'www/apache22'? [yes]
[Gathering depends for www/apache22 ..................... done]
--->  Fresh installation of devel/autoconf-wrapper started at: Sat, 17 Jan 2009 15:13:56 +0100
[...]
        + www/apache22
--->  Packages processed: 7 done, 0 ignored, 0 skipped and 0 failed
--->  Session ended at: Sat, 17 Jan 2009 15:19:37 +0100 (consumed 00:05:44)
[root@httpd:~]$ exit
logout
Connection to 192.168.2.6 closed.
[root@freebsd:~]$ rm -Rf /dpool/jails/v8.1.0/httpd/tmp/*
[root@freebsd:~]$ zfs list
NAME                                      USED  AVAIL  REFER  MOUNTPOINT
[...]
dpool/jails/v8.1.0                        263M  3.39G    21K  /dpool/jails/v8.1.0
dpool/jails/v8.1.0/httpd                 9.17M  3.39G   260M  /dpool/jails/v8.1.0/httpd
dpool/jails/v8.1.0/template               254M  3.39G   254M  /dpool/jails/v8.1.0/template
dpool/jails/v8.1.0/template@base             0      -   254M  -

Ha a telepítés után kilépünk, majd letöröljük a felesleges fájlokat, akkor láthatjuk, hogy egy webszervert tartalmazó jail mindössze ~10MBájtot foglal el.

Az Apache beállítása

Lépjünk vissza a jail-be és üzemeljük be a feltelepített Apache kiszolgálót. Első dolgunk, hogy a /etc/rc.conf állományban engedélyezzük az Apache 2.2 futását:

/etc/rc.conf
apache22_enable="YES"

A httpd.conf állományt a /usr/local/etc/apache22 könyvtár alatt találjuk, első körben nem kell hozzányúlnunk, bár az Apache panaszkodni fog, de ezzel ne törődjünk, lépjünk ki a jail-ből és indítsuk újra azt, s ellenőrizzük a httpd processzek elindulását:

Parancssor
[root@httpd:~]$ exit
logout
Connection to 192.168.2.6 closed.
[root@freebsd:~]$ /etc/rc.d/jail restart httpd
Stopping jails: httpd.jails.javaforum.hu.
Configuring jails:.
Starting jails: httpd.jails.javaforum.hu.
[root@freebsd:~]$ ssh root@192.168.2.6
Password:
Last login: Sat Jan 17 15:23:29 2009 from 192.168.2.6
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

FreeBSD 8.1-STABLE (JAVAFORUM) #0: Sat Nov 20 09:45:09 CET 2010

[root@httpd:~]$ ps aux | grep httpd
USER    PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND
www   46999  1.0  0.1 73180  5488  ??  SJ    3:25PM   0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
www   47000  1.0  0.1 73180  5504  ??  SJ    3:25PM   0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
www   47001  1.0  0.1 73180  5504  ??  SJ    3:25PM   0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
www   47002  1.0  0.1 73180  5516  ??  SJ    3:25PM   0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
www   47003  1.0  0.1 73180  5520  ??  SJ    3:25PM   0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
root  46954  0.6  0.1 73180  5488  ??  SsJ   3:25PM   0:00.09 /usr/local/sbin/httpd -DNOHTTPACCEPT

Működni látszik, de egyelőre a gép publikus IP címén nem érhetjük el, mivel a jail egy privát IP címet használ, ezért lépjünk ki a jail parancssorából, és oldjuk meg a problémát.

A portforward beállítása

Meg kell írnunk a portforward utasítását, amelyet a /etc/ipnat.rules fájlba kell írnunk:

/etc/ipnat.rules
rdr bge0 91.83.48.130/32 port 80 -> 192.168.2.6 port 80 tcp

Már csak el kell indítanunk az ipnat szolgáltatást:

Parancssor
[root@freebsd:~]$ /etc/rc.d/ipnat reload
9 entries flushed from NAT table
1 entries flushed from NAT list

És már készen is vagyunk:

Van egy ~10MBájt helyet foglaló Apache alapú webszolgáltatást nyújtó jail-ünk, amely a feladatát megbízhatóan és gyorsan végzi... törüljük le, majd később újra létrehozzuk, már kicsit több hozzáértéssel és több lehetőséggel... (smile)

Parancssor
[root@freebsd:~]$ /etc/rc.d/jail stop httpd
Stopping jails: httpd.jails.javaforum.hu.
[root@freebsd:~]$ zfs set mountpoint=/usr/ports dpool/jails/ports
[root@freebsd:~]$ zfs destroy dpool/jails/v8.1.0/httpd
      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels