1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Erfahrungen mit vnet / VIMAGE in produktiven Einsatz

Dieses Thema im Forum "FreeBSD - Netzwerk" wurde erstellt von satriani, 20 September 2017.

?

Wie ist deine Meinung zu vnet / VIMAGE?

  1. Nie Aussetzer gehabt und easy einzurichten

  2. Nie Aussetzer gehabt, aber fummelig einzurichten

  3. Gabs Aussetzer ein bis zwei mal, dafür aber easy einzurichten

  4. Gabs Aussetzer ein bis zwei mal und fummelig einzurichten

  5. Gelegentliche Aussetzer, aber easy einzurichten

  6. Gelegentliche Aussetzer und fummelig einzurichten

Das Ergebnis kann erst nach Abgabe einer Stimme betrachtet werden.
  1. satriani

    satriani SysLion

    Registriert seit:
    29 April 2011
    Beiträge:
    95
    Hi liebe Leute,

    es steht mir ein umfangreiches Projekt bevor.
    Jail-1: Datenbank PostgreSQL
    Jail-2: Service - Python-Instances
    Jail-3: Fileserver SFTP
    Jail-4 bis Jail-8: Webserver mit API für unterschiedliche Einsatzzwecke

    Jede Jail von 4 bis 8 bekommt jeweils eigene Zugangsdaten zu Jails 1 bis 3, wobei diese nicht miteinander kommunizieren dürfen. Das ganze läuft zuerst auf einen Server bei Hetzner.

    Ich hab zwar mit vnet / VIMAGE, vor ca. 3 Jahren herumexperimentiert, aber irgendwie bin ich daraus nicht schlau geworden^^ Da war es noch ziemlich fummelig und irgendwie instabil.
    Ist es inzwischen für einen produktiven Einsatz ausgereift? Bitte teilt eure Erfahrungen damit, besonders Erfahrungen bei Hetzner sind sehr interessant. Über Tipps und Ratschläge würde ich mich sehr freuen.

    Danke euch im Voraus
     
  2. SolarCatcher

    SolarCatcher Active Member

    Registriert seit:
    24 August 2006
    Beiträge:
    713
    Ich hatte es kürzlich auf einem Hetzner-Server versucht und bin gescheitert: IPv6 wollte nach einiger Zeit immer nicht mehr und ich habe nicht herausgefunden, warum. Ich bin dann notgedrungen auf klassische Jails ohne VIMAGE umgestiegen und habe die notwendige Sicherung eines Dienstes (Redis) über PF/NAT bewerkstelligt. Ob es an mir lag, an FreeBSD oder am eingesetzten HardenedBSD kann ich leider nicht sagen. Ich musste das irgendwann zum Laufen bekommen und konnte nicht weiter herumtesten.
     
  3. satriani

    satriani SysLion

    Registriert seit:
    29 April 2011
    Beiträge:
    95
    Danke dir SolarCatcher,

    anscheinend hat sich nichts geändert in den letzten drei Jahren, schade eigentlich. Das Konzept von VNET / VIMAGE ist sehr verlockend.
    Ich habe irgendwie das Verdacht, dass es bei Hetzner nicht so einfach funktionieren dürfte. Denn VNET simuliert ja einen eigenen network stack.
    Und mit IPv4 war sonst alles ok?
     
  4. SolarCatcher

    SolarCatcher Active Member

    Registriert seit:
    24 August 2006
    Beiträge:
    713
    Ja, mit IPv4 schien alles zu laufen. Wie gesagt: Kann durchaus an mir liegen. Oder an etwas speziellem in HardenedBSD... Es war mein erster Versucht mit VIMAGE.

    Ich weiß, dass andere das produktiv einsetzen. punkt.de, z.B. bietet TYPO3 in VIMAGE jails an. Deren Gründer Patrick Hausen, war im Mai im BSDNow-Podcast interviewt worden... und spricht dieses Wochenende auch auf der EuroBSDCon in Paris: "From NanoBSD to ZFS and Jails – FreeBSD as a Hosting Platform, Revisited". Ich werde mir das einmal anhören.
     
  5. Yamagi

    Yamagi Possessed With Psi Powers Mitarbeiter

    Registriert seit:
    14 April 2004
    Beiträge:
    8.891
    Ort:
    Schleswig-Holstein
    VIMAGE hat mit 11.0 auch einen sehr großen Sprung in Sachen Stabilität gemacht. Für sich genommen läuft es nun im Großen und Ganzen gut. Problematisch wird es, wenn man beginnt etwas in die Peripherie zu gehen, als ich das letzte Mal geschaut habe war z.B. pf noch etwas wackelig. Produktiv einsetzen tue ich es aber auch nicht, auch da mir etwas der Einsatzzweck fehlt.
     
  6. satriani

    satriani SysLion

    Registriert seit:
    29 April 2011
    Beiträge:
    95
    Ich werde es nochmal probieren.
    Schade, dass niemand hier Erfahrungen damit über lange Zeit gemacht hat. Sieht nicht sonderlich gut aus, für einen produktiven Einsatz.
    @Yamagi Was wäre deiner Meinung nach der passende Einsatzzweck?
     
  7. SolarCatcher

    SolarCatcher Active Member

    Registriert seit:
    24 August 2006
    Beiträge:
    713
    @satriani Ich bin zurück aus Paris und ich fand die o.g. Präsentation von Patrick Hausen sehr interessant.

    Sie beteiligen sich an der Entwicklung von py-iocage und haben sich da etwas ausgedacht, was sie Blueprint-Jail nennen und von dem mehrere Teilnehmer übereinstimmend sagten, dass es ein Feature ist, was easyjail schon (lange?) hat. Die Idee dabei ist, eine Art Template-Jail, die man einmal erstellt und danch nicht wieder anfasst. Darin sind das OS und auch die für den jeweiligen Zweck benötigten Pakete drin. Diese wird dann per nullfs in eine "empty Jail" gemountet und einzelen ZFS-datasets dann vom User beschreibbar darüber für z.B. /etc, /usr/local/etc, Home usw. Die RC-Scripts aus /etc/rc.d/ werden allerdings wieder read-only drübergemounted, damit da jeweils die zur OS-Version passende Version dabei ist. Für ein Update der Software wird dann ein neuer Blueprint erstellt, die Kunden-Jail runtergefahren, die neu erstelle Jail und darüber die anderen Verzeichnisse gemounted und die Kunden-Jail wieder hochgefahren. Ich hoffe, ich habe das korrekt wiedergegeben.

    Jedenfalls benutzen sie erfolgreich VIMAGE-Jails mit IPv4 und IPv6 und können so dem Kunden ziemlich alle Wünsche erfüllen, was Networking betrifft.

    Aus meiner Sicht lohnt es sich, die (hoffentlich bald) veröffentlichten Video-Aufzeichnungen des EuroBSDCon-Vortrags anzuschauen.
     
  8. satriani

    satriani SysLion

    Registriert seit:
    29 April 2011
    Beiträge:
    95
    @SolarCatcher danke dir für die Infos
    Das mit dem Blueprint-Jail habe ich vor gut vier Jahren, mehr oder weniger auf ähnlicher Art und Weise umgesetzt, weil ezjail damals es nicht konnte.
    Was VIMAGE angeht, wenn sie das produktiv erfolgreich einsetzen, dann kann es durchaus Sinn machen sich daran zu trauen. Das macht Hoffnung :)
     
  9. SolarCatcher

    SolarCatcher Active Member

    Registriert seit:
    24 August 2006
    Beiträge:
    713
    goblin gefällt das.
  10. Crest

    Crest rm -rf /*

    Registriert seit:
    25 Juni 2008
    Beiträge:
    1.574
    Ort:
    /dev/random
    satriani: Deine Anforderung lassen sich problemlos ohne VIMAGE umsetzen mit einer Firewall im IP Stack des Hosts. Um die PostgreSQL Datenbank zwischen den Jails zu verteilen besteht auch noch die Möglichkeit das Unix Domain Socket per nullfs in den anderen Jails sichtbar zu machen und dies anstatt TCP/IP zu verwenden.
     
  11. satriani

    satriani SysLion

    Registriert seit:
    29 April 2011
    Beiträge:
    95
    Danke Crest, das habe ich bisher auch immer so gemacht. Doch ein eigenes stack per Jail ist schon 'ne feine Sache.
    Was eine Firewall angeht, da bin ich kein großer Freund von. Ich finde eine Firewall in nahezu allen Fällen überflüssig.
    Ist aber meine eigene Meinung ;)

    @SolarCatcher Das Video ist leider nicht verfügbar :(
     
  12. noize

    noize Member

    Registriert seit:
    11 Oktober 2010
    Beiträge:
    41
    Nach längerer Suche hier im Forum sowie auf https://forums.freebsd.org/threads/62026/

    Code:
    include GENERIC
    ident VIMAGE
    
    options VIMAGE
    device epair
    device if_bridge
    
    gefolgt von einem anschließendem Neubau des Kernels

    Code:
    ...
    # External Interface Settings
    # ---------------------------
    ifconfig_xx="DHCP"
    
    # Jail Network Settings
    # ---------------------
    cloned_interfaces="bridge0"
    ifconfig_bridge0_alias0="inet 10.x.x.y/24"
    gateway_enable="YES"
    ...
    firewall_enable="YES"
    firewall_script="/etc/ipfw.conf"
    firewall_nat_enable="YES"
    firewall_logging="YES"
    
    jail_enable="YES"
    jail_list="foo"
    ...
    
    devfs.conf anpassen:
    Code:
    # Devices usually found in a jail.
    #
    [devfsrules_jail=4]
    add include $devfsrules_hide_all
    add include $devfsrules_unhide_basic
    add include $devfsrules_unhide_login
    add path zfs unhide
    add path 'bpf*' unhide
    
    Auszug aus der jail.conf
    Code:
    cat /etc/jail.conf
    allow.mount;
    allow.raw_sockets  =  "1";
    allow.set_hostname  =  "0";
    allow.sysvipc  =  "1";
    
    host.hostname  =  "${name}.xxx.yyy";
    path  =  "/tank/jails/${name}";
    
    mount.devfs;
    devfs_ruleset  =  "4";
    
    exec.clean;
    exec.start  +=  "/bin/sh /etc/rc";
    exec.stop  =  "/bin/sh /etc/rc.shutdown";
    
    foo {
      $ip_addr  = "10.x.x.yy"; # Jail ip address
      $ip_route  = "10.x.x.y"; # Gateway -> bridge0 ip
      vnet;
      vnet.interface  = "epair0b";
      exec.prestart  = "ifconfig epair0 create up";
      exec.prestart  += "ifconfig bridge0 addm epair0a";
      exec.start  = "/sbin/ifconfig lo0 127.0.0.1 up";
      exec.start  += "/sbin/ifconfig epair0b inet ${ip_addr} netmask 255.255.255.0 up";
      exec.start  += "/sbin/route add default ${ip_route}";
      exec.start  += "/bin/sh /etc/rc";
      exec.stop  = "/bin/sh /etc/rc.shutdown";
      exec.poststop  = "ifconfig epair0a destroy";
      persist;
    }
    
    /etc/ipfw.conf auf dem Host:
    Code:
    cat /etc/ipfw.conf
    # NAT
    nat_if="xx"
    nat_ip="xx.xx.xx.yy"
    jail_lan="10.x.x.0/24"
    
    # CMD
    cmd="/sbin/ipfw -q"
    
    # -------------------------------------------------------------------- #
    
    # Alles raus
    /sbin/ipfw -q -f flush
    
    # -------------------------------------------------------------------- #
    
    # Alles was einen State hat darf durch
    $cmd add 10 check-state
    
    # Vom Host auf die Jails
    $cmd add 20 allow all from me to $jail_lan setup keep-state
    
    # -------------------------------------------------------------------- #
    #
    # NAT fuer die Jails
    $cmd nat 1 config if $nat_if
    $cmd add 30 nat 1 all from $jail_lan to any
    $cmd add 40 nat 1 all from any to $nat_ip
    
    # -------------------------------------------------------------------- #
    
    # Alles durchlassen
    $cmd add 50 allow all from any to any
    
    Resolv.conf des Hosts in die Jail kopieren
    cp /etc/resolv.conf /tank/jails/foo/etc/resolv.conf

    rc.conf des jails:
    Code:
    cat /etc/rc.conf
    hostname="foo.xxxx.yyyy"
    defaultrouter="10.x.x.yy"
    firewall_enable="YES"
    firewall_type="OPEN"
    sshd_enable="YES"
    
    Code:
    # jls
      JID  IP Address  Hostname       Path
      3                       foo.xxxx.yyyy  /tank/jails/foo
    
    Ich hoffe ich bin hier mit diesem Beitrag an der richtigen Stelle.
     
  13. SolarCatcher

    SolarCatcher Active Member

    Registriert seit:
    24 August 2006
    Beiträge:
    713
    @noize Mir ist nicht ganz klar: Willst Du uns damit sagen, dass es so bei Dir funktioniert? Oder hast Du eine Frage dazu? Und: Was ist der Grund für Dich, für dieses Setup VIMAGE zu verwenden - eine geNATtete Jail kann ich doch auch auf dem klassischen Wege haben, ohne VIMAGE...?
     
  14. noize

    noize Member

    Registriert seit:
    11 Oktober 2010
    Beiträge:
    41
    Das Setup läuft so auf meinem Vserver, deswegen auch das Nat. Eine geNATtete Jail würde es für meine Zwecke natürlich auch tun. War eher reine Neugier/Spieltrieb, als dass es einen produktiven Zweck erfüllt, was ich übersehen hatte, da es in diesem Thread um produktive Umgebungen geht.
     
  15. Yamagi

    Yamagi Possessed With Psi Powers Mitarbeiter

    Registriert seit:
    14 April 2004
    Beiträge:
    8.891
    Ort:
    Schleswig-Holstein
  16. satriani

    satriani SysLion

    Registriert seit:
    29 April 2011
    Beiträge:
    95
    Hört sich gut an, dann braucht man das Kernel nicht neubauen um VIMAGE zu nutzen. Langsam wird es richtig interessant :)