mehrere IPv6 Adressen + ezjails

nullu

Member
Hallo,
wie bekomme ich eine weitere feste Adresse an ein Jail gebunden. (reboot sicher)

hier meine configs bzw. was ich glaube was das machen sollte:

Code:
/etc/rc.conf
ifconfig_bce0_ipv6="inet6 2003:xxxx:xxxx:fb01::1 prefixlen 64"
ifconfig_bce0_alias60="inet6 2003:xxxx:xxxx:fb01::2/64"
-----------
/usr/local/etc/ezjail/syncthing_horst
export jail_syncthing_horst_hostname="syncthing.horst"
export jail_syncthing_horst_ip="10.13.37.3,2003:xxxx:xxxx:fb01::2"

Wenn ich dann neustarte sehe ich bei ifconfig nur die 2003:xxxx:xxxx:fb01::1

Dann helfe ich mir mit einem beherzten

Code:
ifconfig bce0 inet6 2003:xxxx:xxxx:fb01::2/64 add

und schon geht es.

Auf dem interface bce0 ist auch rtadv konfiguriert
Code:
/etc/rtadvd.conf
bce0:\
    :addr="2003:xxxx:xxxx:fb01::":\
    :prefixlen#64:\
    :rdnss="2003:40:2000::53":

Reicht /etc/rc.d/netif restart um die komplette Netzwerkonfiguration neu einzulesen (auschliesslich aus /etc/rc.conf?) oder muss man da noch mehr machen?
 
Danke das war zu einfach ;-)

Ich hatte auch schon IPv4 aliases. Also darf ich nicht je IP-Version ein alias0 machen sondern muss sie komplett einzeln behandeln.
Mit alias4 geht es nämlich jetzt.
 
Irgendwie drehe ich mich im Kreis. Ich habe im Prinzip dasselbe Problem, aber auch eine Durchnummerierung von alias0 bis alias8 schafft keine Abhilfe. Was mache ich falsch?

aus /etc/rc.conf
Code:
cloned_interfaces="${cloned_interfaces} lo1"
ifconfig_lo1_alias0="inet 192.168.30.2/24"
ifconfig_lo1_alias1="inet 192.168.30.3/24"
ifconfig_lo1_alias2="inet 192.168.30.4/24"
ifconfig_lo1_alias3="inet 192.168.30.5/24"
ifconfig_lo1_alias4="inet 192.168.30.6/24"
ifconfig_lo1="inet6 2a03:xxxx:x:xx::xx:3002 prefixlen 64"
ifconfig_lo1_alias5="inet6 2a03:xxxx:x:xx::xx:3003/64"
ifconfig_lo1_alias6="inet6 2a03:xxxx:x:xx::xx:3004/64"
ifconfig_lo1_alias7="inet6 2a03:xxxx:x:xx::xx:3005/64"
ifconfig_lo1_alias8="inet6 2a03:xxxx:x:xx::xx:3006/64"

Aber ifconfig zeigt, dass immer nur die eine IPv6-Adresse genommen wird - keiner der Aliase. Ich habe diverse Abwandlungen versucht, aber immer dasselbe:
Code:
lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
  options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
  inet6 ::1 prefixlen 128
  inet6 fe80::1%lo1 prefixlen 64 scopeid 0x4
  inet 192.168.30.2 netmask 0xffffff00
  inet 192.168.30.3 netmask 0xffffff00
  inet 192.168.30.4 netmask 0xffffff00
  inet 192.168.30.5 netmask 0xffffff00
  inet 192.168.30.6 netmask 0xffffff00
  inet6 2a03:xxxx:x:xx::xx:3002 prefixlen 64
  nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

Es liegt eindeutig an den Einträgen in der rc.conf - über die command line geht's problemlos:
Code:
ifconfig lo1 inet6 2a03:xxxx:x:xx::xx:3003 add

Ergebnis von ifconfig danach:
Code:
lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
  options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
  inet6 ::1 prefixlen 128
  inet6 fe80::1%lo1 prefixlen 64 scopeid 0x4
  inet 192.168.30.2 netmask 0xffffff00
  inet 192.168.30.3 netmask 0xffffff00
  inet 192.168.30.4 netmask 0xffffff00
  inet 192.168.30.5 netmask 0xffffff00
  inet 192.168.30.6 netmask 0xffffff00
  inet6 2a03:xxxx:x:xx::xx:3002 prefixlen 64
  inet6 2a03:xxxx:x:xx::xx:3003 prefixlen 64
  nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

Weiß jemand, wie es über die rc.conf geht?
 
Der hier ist zumindest falsch:
Code:
ifconfig_lo1="inet6 2a03:xxxx:x:xx::xx:3002 prefixlen 64"

Korrekt wäre:
Code:
ifconfig_lo1_ipv6="inet6 2a03:xxxx:x:xx::xx:3002 prefixlen 64"

Ob das nun alles war, weiß ich leider gerade nicht. Ich kann meine eigene Config gerade nicht einsehen.
 
Vielen Dank! Das war's offenbar wirklich - jetzt wurde nicht nur die eine IPv6-Adresse angenommen, sondern auch alle Aliasse. For the record: So sieht es aus und funktioniert
Code:
cloned_interfaces="${cloned_interfaces} lo1"
ifconfig_lo1_alias0="inet 192.168.30.2/24"
ifconfig_lo1_alias1="inet 192.168.30.3/24"
ifconfig_lo1_alias2="inet 192.168.30.4/24"
ifconfig_lo1_alias3="inet 192.168.30.5/24"
ifconfig_lo1_alias4="inet 192.168.30.6/24"
ifconfig_lo1_ipv6="inet6 2a03:xxxx:x:xx::xx:3002 prefixlen 64"
ifconfig_lo1_alias5="inet6 2a03:xxxx:x:xx::xx:3003/64"
ifconfig_lo1_alias6="inet6 2a03:xxxx:x:xx::xx:3004/64"
ifconfig_lo1_alias7="inet6 2a03:xxxx:x:xx::xx:3005/64"
ifconfig_lo1_alias8="inet6 2a03:xxxx:x:xx::xx:3006/64"

Und ifconfig bestätigt:
Code:
lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
  options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
  inet6 2a03:xxxx:x:xx::xx:3002 prefixlen 64
  inet 192.168.30.2 netmask 0xffffff00
  inet 192.168.30.3 netmask 0xffffff00
  inet 192.168.30.4 netmask 0xffffff00
  inet 192.168.30.5 netmask 0xffffff00
  inet 192.168.30.6 netmask 0xffffff00
  inet6 2a03:xxxx:x:xx::xx:3003 prefixlen 64
  inet6 2a03:xxxx:x:xx::xx:3004 prefixlen 64
  inet6 2a03:xxxx:x:xx::xx:3005 prefixlen 64
  inet6 2a03:xxxx:x:xx::xx:3006 prefixlen 64
  nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
 
Der hier ist zumindest falsch:
Code:
ifconfig_lo1="inet6 2a03:xxxx:x:xx::xx:3002 prefixlen 64"

Korrekt wäre:
Code:
ifconfig_lo1_ipv6="inet6 2a03:xxxx:x:xx::xx:3002 prefixlen 64"

Ob das nun alles war, weiß ich leider gerade nicht. Ich kann meine eigene Config gerade nicht einsehen.

Herrliches Beispiel mal wieder dafür, wie braindead diese rc.conf unter FreeBSD ist.
 
Herrliches Beispiel mal wieder dafür, wie braindead diese rc.conf unter FreeBSD ist.

Ich kann nur eins immer wieder betonen: Wenn man sich an die Manpages hält, wird man von soetwas nicht überrascht. Das schließt natürlich auch ein, dass man sich auf seinem Wissen nicht ausruht und eventuelle Änderungen in der Dokumentation bemerkt und berücksichtigt.

Rob
 
Und es gibt gute Grunde, dass IPv6 gesondert behandelt wird. Irgendwann zu Zeiten von 9-CURRENT oder so wurde die IPv6-Konfiguration grundüberarbeitet und damit ging eine sehr umfassende Diskussion einher, ob und wie man IPv6 zukünftig in der rc.conf behandelt. Meckern und sich aufregen, wie schlecht doch das Leben und wie dumm Designentscheidungen sind, können immer alle gut. Mal zu recherchieren warum die Entscheidungen so getroffen wurden und durchdenken, ob es eine bessere Lösung gäbe, die wenigsten. Eine gefundene bessere Lösung in Code gießen dann gar keiner mehr.
 
Worauf ich hier speziell abfahre, ist, dass man im Variablennamen _ipv6 hat und dann doch extra inet6 in den Inhalt schreiben muss. <edit> Und im konkreten Fall wird das sogar semantisch inkonsistent. Ich würde auf Anhieb nämlich auch annehmen, dass der Inhalt von $ifconfig_lo1 einfach an ifconfig lo1 angehängt wird und dann wäre das nämlich konsistent, wenn man flüchtig draufschaut. Entweder so, oder man darf das inet6 im Inhalt nicht dazuschreiben. Aber beides ist einfach Quatsch von der Usability her. </edit>

Dass die rc.conf in der man page umfassend dokumentiert ist, bestreite ich gar nicht. Es steckt aber kein simples Konzept dahinter. Es ist ein Wust aus Variablen mit Fallstricken ohne Ende, bei dem versucht wurde, alle möglichen Configs in Variablen abzubilden, was das Ganze inkonsistent und fehleranfällig macht.

Das mag zwar "einfach" sein im Sinne von "ich muss nicht viel machen, um xyz zu erreichen", aber es ist nicht "simpel" im Sinne von "durchschaubar und konsistent". Den Unterschied zwischen "easy" und "simple" kennt man bei FreeBSD nicht. Da wird immer mehr drangepflastert, um Zusammenhänge zu verstecken, anstatt K.I.S.S. zu befolgen. An anderer Stelle war doch das Thema, dass Aliase in zwingend lückenlos numerierten Variablen stehen müssen. Genau der gleiche Mist in grün. Das sind Abhängigkeiten und Einschränkungen, die einfach sinnlos sind und aus reinem Selbstzweck existieren. Wenn ich einen Alias temporär auskommentieren will, kann ich erstmal alle anderen umnumerieren. Flexibilität hat abgenommen, sinnloser Bloat hat zugenommen.

Wie es besser geht: einfach mal bei den anderen BSDs gucken und ein paar Schritte zurückrudern. War alles schonmal da...

</rant>
 
Mit anderen Worten: Wenn man über 32KB Shell-Zeug braucht (/etc/network.subr), um das rc.conf-Parsing nur fürs Netzwerk abzuhandeln, anstatt sowas wie /etc/ifconfig.$if reinzuziehen, wo man einfach ifconfig-Parameter reinhackt und Shell-Schnipsel mit !... dazuschreiben kann, dann weiß man schon, dass irgendwas falschläuft. Und das nur, um den Mist vom Admin wegzuabstrahieren, weil es ja so schwer ist, ein paar Interfaces zu konfigurieren.

Über zwei Seiten Manpage für rc.conf(5), nur um eine einzige Variable mit allen Fallstricken und Legacy-Bloat zu dokumentieren... K.I.S.S. sieht anders aus.

So, nu ist aber auch wieder gut. :)
 
long time no see.. oder so.

Wie bekomme ich wohl in ein jail dynamische IPv6?

Der Host bekommt von meiner FritzBox eine IPv6.

Code:
Host:
/etc/rc.conf
    ifconfig_vmx0="inet 192.168.178.10 netmask 255.255.255.0"
    defaultrouter="192.168.178.1"
    ifconfig_vmx0_ipv6="inet6 accept_rtadv"

    
/usr/local/etc/ezjail/syncbsd

    export jail_syncbsd_hostname="syncbsd"
    export jail_syncbsd_ip="192.168.178.11"

in die letzte Zeile könnte ich dann aus meinem akutellen prefix eine Adresse eintragen (und mir einen alias im Host anlegen wie im ersten Post) da das aber dynamisch bringt mir das so nichts.
 
Das sollte es eigentlich tun:

Bash:
#/bin/sh
JAIL=syncbsd
JAILDIR=/usr/local/etc/ezjail
PREFIX=`ndp -p | head -1 | awk '{print $1}' | sed 's/::\/64//g'`
echo $PREFIX > /tmp/CURRENTPREFIX
diff /tmp/OLDPREFIX /tmp/CURRENTPREFIX
if [ $? -eq 1 ]
    then
        #host settings
        OLDPREFIX=`cat /tmp/OLDPREFIX`
        ifconfig vmx0 inet6 $OLDPREFIX::178:11/64 delete
        ifconfig vmx0 inet6 $PREFIX::178:11/64 add
        # jail settings
        sed '/178/d' $JAILDIR/$JAIL > $JAILDIR/$JAIL.tmp
        mv $JAILDIR/$JAIL.tmp $JAILDIR/$JAIL
        echo export jail_$JAIL\_ip=\"192.168.178.11,$PREFIX::178:11\" >> $JAILDIR/$JAIL
        /usr/local/bin/ezjail-admin restart $JAIL
fi
echo $PREFIX > /tmp/OLDPREFIX
 
Zurück
Oben