ifconfig in /etc/jail.conf

SolarCatcher

Well-Known Member
Ich habe jüngst einen Server von Iocage-Jails auf Vanilla-Jails per /etc/jail.conf umgestellt. An sich läuft alles rund, aber beim Neustart will der Webserver in der Jail nicht starten. Grund scheint zu sein, dass die IP-Adresse der Jail noch nicht gesetzt ist. Bevor ich das jetzt ändere, wollte ich hier mal fragen, ob das Sinn macht.

Ich habe in /etc/jail.conf folgendes für die web1-Jail stehen (verkürzt und zur besseren Lesbarkeit ohne Variable für den $name):
Code:
web1 {
  path="/jails/web1/root";  
  exec.start+="ifconfig e0b_web1 inet 10.0.0.1 netmask 255.255.255.0"
  exec.start+="route add default 10.0.0.5";
}

Wann wird das ausgeführt? Erst nachdem die /etc/rc.conf aus der Jail abgearbeitet ist? Das würde mein Problem erklären und ich müsste die Konfiguration der IP-Adresse doch dorthin verschieben (wäre schade, weil ich diese zentrale Konfiguration in der /etc/jail.conf eleganter finde). Oder gibt es noch eine andere Lösung?

Danke für Eure sachdienlichen Hinweise.
 
Versuche mal in der jail.conf als erste Zeile:
Code:
exec.start = "sleep 5";

Das gibt unschädlich etwas mehr Zeit beim Start, ggf. reicht das schon als Lösung.
 
Ich habe bei mir sogar nur exec.start="sleep 1" aber ich benutzte ip4.addr="10.0.0.X", vielleicht ist das der Unterschied?
 
Vielleicht noch zur Entwirrung: bei einer einfachen jail (kein vnet!) braucht es keinen gateway (bzw. die Adresse kennt der Host schon), nur ip4.addr
Bei einer vnet-jail kann man in der jail eine rc.conf wie gewohnt bestücken und kann sich das exec.start+sparen.
 
Ich habe jüngst einen Server von Iocage-Jails auf Vanilla-Jails per /etc/jail.conf umgestellt. An sich läuft alles rund, aber beim Neustart will der Webserver in der Jail nicht starten. Grund scheint zu sein, dass die IP-Adresse der Jail noch nicht gesetzt ist. Bevor ich das jetzt ändere, wollte ich hier mal fragen, ob das Sinn macht.

Ich habe in /etc/jail.conf folgendes für die web1-Jail stehen (verkürzt und zur besseren Lesbarkeit ohne Variable für den $name):
Code:
web1 {
  path="/jails/web1/root";  
  exec.start+="ifconfig e0b_web1 inet 10.0.0.1 netmask 255.255.255.0"
  exec.start+="route add default 10.0.0.5";
}

Wann wird das ausgeführt? Erst nachdem die /etc/rc.conf aus der Jail abgearbeitet ist? Das würde mein Problem erklären und ich müsste die Konfiguration der IP-Adresse doch dorthin verschieben (wäre schade, weil ich diese zentrale Konfiguration in der /etc/jail.conf eleganter finde). Oder gibt es noch eine andere Lösung?

Danke für Eure sachdienlichen Hinweise.
Der Aufruf von exec.start += "..." hängt Dein ifconfig an das vorhandene exec.start Argument an. Wenn dort also zuerst ein sh /etc/rc aufgerufen wird, dann wird das ifconfig in der Tat erst danach ausgeführt. Du müsstes also die Reihenfolge der exec.start Argumente ändern oder das ifconfig in einem anderen exec Bereich ausführen. Hier könntest Du exec.prestart verwenden, dass aber nicht in der Jail Umgebung sondern in der System Umgebung ausgeführt wird.
 
Vielen Dank an Euch alle!

@mr44er Guter Hinweis. Es handelt sich hier aber tatsächlich um eine VNET-Jail, weil ich da ein Valkey (Redis-Fork) laufen habe, der nur in dieser Jail und daher auf der 127.0.0.1 erreichbar sein soll.

Ich werde es diese Woche dann mal mit der direkten Angabe von ip4.addr="10.0.0.1" versuchen - ich verstehe nicht, warum ich das nicht gleich so gemacht habe. Vielleicht reicht das schon, so dass ich gar kein sleep benötige.

Danke auch an @jmt für die Erklärung der Abfolge.
 
Zurück
Oben