Benutzer-Werkzeuge

Webseiten-Werkzeuge


freebsd:jail

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
freebsd:jail [2022-01-28 18:31:11] manfredfreebsd:jail [2025-08-10 01:30:45] (aktuell) manfred
Zeile 6: Zeile 6:
  
 hilfreiche Links: hilfreiche Links:
 +  * [[https://docs.freebsd.org/de/books/handbook/book/index.html#jails]]
 +  * [[https://docs.freebsd.org/de/books/handbook/book/index.html#jails-ezjail]]
   * [[https://www.cyberciti.biz/faq/howto-setup-freebsd-jail-with-ezjail/|How To Setup FreeBSD Jails With ezjail]]   * [[https://www.cyberciti.biz/faq/howto-setup-freebsd-jail-with-ezjail/|How To Setup FreeBSD Jails With ezjail]]
   * [[http://scratching.psybermonkey.net/2010/06/freebsd-how-to-setup-configure-jail.html]]   * [[http://scratching.psybermonkey.net/2010/06/freebsd-how-to-setup-configure-jail.html]]
Zeile 13: Zeile 15:
   * [[https://www.freebsd.org/doc/handbook/jails-ezjail.html]]   * [[https://www.freebsd.org/doc/handbook/jails-ezjail.html]]
   * [[http://www.cyberciti.biz/faq/howto-setup-freebsd-jail-with-ezjail/]]   * [[http://www.cyberciti.biz/faq/howto-setup-freebsd-jail-with-ezjail/]]
 +
 +
 +===== Quick&Dirty =====
 +
 +  * [[https://docs.freebsd.org/de/books/handbook/book/index.html#jails|Kapitel 32. Jails]]
 +  * **[[https://docs.freebsd.org/de/books/handbook/book/index.html#jails-ezjail|32.6. Verwaltung von Jails mit ezjail]]**
 +
 +so kann das Skript einfach genutzt werden:
 +  > jail-classic_quick_and_dirty.sh testjail 10.10.10.10
 +
 +<file bash jail-classic_quick_and_dirty.sh>
 +#!/bin/sh
 +
 +################################################################################
 +# https://docs.freebsd.org/de/books/handbook/book/index.html#jails-ezjail
 +#
 +# Die meisten Netzwerkdienste laufen problemlos in einer Jail.
 +# Ein paar wenige Netzwerkdienste, vor allem ping(8) verwenden Netzwerk-Sockets.
 +# Aus Sicherheitsgründen werden Netzwerk-Sockets innerhalb der Jails
 +# deaktiviert, so dass Dienste, die diese Sockets benötigten,
 +# nicht funktionieren werden.
 +################################################################################
 +
 +if [ x == "x${2}" ] ; then
 + echo "${0} [Jail-Name] [Jail-IP]"
 + echo "${0} testjail 192.168.10.10"
 + echo "${0} testjail 10.10.10.10"
 + exit 1
 +fi
 +
 +JAIL_NAME="${1}"
 +JAIL_IP="${2}"
 +echo "
 +JAIL_NAME: ${JAIL_NAME}
 +JAIL_IP: ${JAIL_IP}
 +"
 +
 +JAIL_DIR="/usr/jails"
 +
 +JAIL_CMD="$(which ezjail-admin)"
 +if [ x == "x${JAIL_CMD}" ] ; then
 + echo "... ggf. muß ezjail vorher noch installiert werden:"
 + echo "> cd /usr/ports/sysutils/ezjail && make clean install clean"
 + echo "> ezjail-admin update -b"
 + exit 1
 +fi
 +
 +JLS_NAME="$(jls name | grep -E "^${JAIL_NAME}$")"
 +if [ x != "x${JLS_NAME}" ] ; then
 + echo "Eine Jail mit diesem Namen läuft bereits."
 + echo "so kannst Du sie betreten:"
 + echo "> ezjail-admin console ${JAIL_NAME}"
 + exit 1
 +fi
 +
 +IFCONFIG_IP="$(ifconfig -a | grep -F "inet ${JAIL_IP} netmask")"
 +if [ x != "x${IFCONFIG_IP}" ] ; then
 + echo "Die IP existiert schon."
 + exit 1
 +fi
 +
 +HOST_BASIS_RELEASE="$(uname -r | sed 's/[-]p.*//')"
 +echo "OS-Release: ${HOST_BASIS_RELEASE}"
 +
 +### die neue Jail bauen
 +# "lo1" sollte schon eingerichtet sein:
 +# > echo 'cloned_interfaces="lo1"' >> /etc/rc.conf
 +# > service netif cloneup
 +# Created clone interfaces: lo1.
 +#
 +#ezjail-admin create ${JAIL_NAME} "lo1|127.0.1.1,${NIC_ALIAS}|${JAIL_IP}"
 +#
 +NIC_ALIAS="$(cat /etc/rc.conf | grep -E 'ifconfig_[a-z0-9]+="inet ' | grep -Fv bridge | head -n1 | awk -F'=' '{print $1}' | awk -F'_' '{print $2}')"
 +ifconfig ${NIC_ALIAS} alias ${JAIL_IP}/32
 +ezjail-admin create ${JAIL_NAME} ${JAIL_IP}
 +#
 +cp /etc/resolv.conf /etc/localtime /etc/make.conf "${JAIL_DIR}/${JAIL_NAME}"/etc/
 +ls -lha "${JAIL_DIR}/${JAIL_NAME}"/etc/resolv.conf "${JAIL_DIR}/${JAIL_NAME}"/etc/localtime "${JAIL_DIR}/${JAIL_NAME}"/etc/make.conf
 +jls
 +
 +### die neue Jail starten
 +ezjail-admin start ${JAIL_NAME}
 +
 +echo "
 +Um diese Jail nach dem nächsten reboot erneut
 +starten zu können, ist das folgende Kommando nötig.
 +Allerdings ist die Nummer von 'alias0'
 +entsprechend richtig zu setzen:
 +> echo 'ifconfig_${NIC_ALIAS}_alias0="inet ${JAIL_IP}/32"' >> /etc/rc.conf
 +
 +einloggen in die neue Jail:
 +> ezjail-admin console ${JAIL_NAME}
 +
 +die neue Jail auf den neuesten Stand bringen:
 +> ezjail-admin update -b \"${JAIL_DIR}/${JAIL_NAME}\" fetch install
 +
 +die neue Jail wieder löschen:
 +> ezjail-admin stop ${JAIL_NAME}
 +ggf. von Hand eingerichtete Bind-Mounts entfernen...
 +> ezjail-admin delete -w ${JAIL_NAME}
 +> service netif restart
 +"
 +</file>
 +
 +Allerdings mit einer Einschränkung.
 +
 +__Die Jail braucht eine IP und diese wird nicht automatisch bootfest konfiguriert!!!__
 +Da es sich um eine "Quick&Dirty"-Lösung handelt, die einfach nur mal schnell benutzt werden soll, ist es wohl auch besser so.
 +
 +Will man die Jail jedoch dauerhaft bzw. länger betreiben, dann kann man das mit einer Zeile in der ''/etc/rc.conf'' bootfest machen.
 +Dabei muß allerdings das Beispiel-Kommando entsprechend anpassen:
 +  ifconfig_em0_alias0="inet 10.10.10.10/32"
 +
 +Die Nummer von ''alias**0**'' (in diesem Fall die **0**, für den aller ersten Alias) muß in der ''/etc/rc.conf'' absolut eindeutig sein und darf auf keinen Fall mehrfach für einen Alias vergeben werden!
 +
 +
 +===== Allgemeines =====
  
  
Zeile 251: Zeile 370:
 so kann man in allen Jails gleichzeitig die Ports-Trees aktualisieren ohne die Jails zu stoppen: so kann man in allen Jails gleichzeitig die Ports-Trees aktualisieren ohne die Jails zu stoppen:
   > ezjail-admin update -P   > ezjail-admin update -P
 +
 +die Jail-Umgebung neu kompilieren:
 +  > ezjail-admin update -b
  
  
Zeile 277: Zeile 399:
   > vi /etc/rc.conf   > vi /etc/rc.conf
   > ifconfig sk0 inet 192.168.2.100 -alias   > ifconfig sk0 inet 192.168.2.100 -alias
 +
 +
 +==== Beispiel: Test-Jail anlegen ====
 +
 +<code bash>
 +# Das Jail-Paket installieren:
 +# > cd /usr/ports/sysutils/ezjail
 +# > make clean
 +# > make config-recursive
 +# > make
 +# > make deinstall
 +# > make install
 +# > pkg info -ao | grep -Fi jail
 +# > make clean
 +#
 +# Die Jail-Umgebung kompilieren:
 +# > ezjail-admin update -b
 +#
 +# Den aktuell verwendeten Ports-Tree in die Jail-Umgebung kopieren:
 +# > mkdir /usr/jails/basejail/usr/ports
 +# > cp -a /usr/ports/ /usr/jails/basejail/usr/ports/
 +#
 +# Eine Jail einrichten:
 +# > ifconfig em0 alias 192.168.1.2/32
 +# > ezjail-admin create testjail 192.168.1.2
 +#
 +# Ein paar Einstellungen in der Jail vornehmen:
 +# > cat /etc/make.conf > /usr/jails/testjail/etc/make.conf
 +# > vi /usr/jails/testjail/etc/rc.conf
 +#   hostname="erde.fritz.box"
 +#   defaultrouter="192.168.1.254"
 +#   sshd_enable="YES"
 +# > vi /usr/jails/testjail/etc/resolv.conf
 +#   search fritz.box
 +#   nameserver 192.168.1.4
 +# > tar cf - /home/bin /home/sbin /home/etc | tar xf - -C /usr/jails/testjail/
 +# > chown -R 0:0 /usr/jails/testjail/home/
 +# > ls -lha /usr/jails/testjail/home/
 +#
 +# Jail starten
 +# > service ezjail start testjail
 +# > jls
 +# > netstat -4anp tcp | fgrep 192.168.1.2
 +#
 +# In die Jail einloggen und einige Kommandos ausführen:
 +# > ezjail-admin console testjail
 +#   > rm -f /etc/localtime
 +#   > ln -s /usr/share/zoneinfo/MET /etc/localtime
 +#   > exit
 +
 +# > ezjail-admin console testjail
 +#   > cd /usr/ports/shells/bash-static
 +#   > make clean
 +#   > make
 +#   > make install
 +#   > make clean
 +#   > cd /usr/ports/sysutils/screen
 +#   > make clean
 +#   > make
 +#   > make install
 +#   > make clean
 +#   > screen -mdS Pakete /root/bin/Update_-_FreeBSD_-_alle_Pakete_aus_dem_Ports-Tree.sh
 +#   > exit
 +#
 +# Jail wieder runter fahren:
 +# > service ezjail stop testjail
 +</code>
  
  
/home/http/wiki/data/attic/freebsd/jail.1643394671.txt · Zuletzt geändert: von manfred