lug-in.de
Linux User Group Ingolstadt e.V.
Startseite
Der Verein
Technikecke
Mailingliste
Kalender
Impressum

Login

Ausgangslage :

Zwei Netzwerkarten mit 2 seperaten Netzwerkadressen, und 2 Gateways. Dazu reichlich Jails, die auf die beiden Netzwerkarten verteilt sind.

Aufgabenstellung:

Für jede Netzwerkkarte eine eigene Defaultroute, oder alternativ für jedes Jail ein eigenes Default Gateway.

Hier ein Lösungsansatz : http://forums.freebsd.org/showthread.php?t=19607

Zum Verständnis:

Wir setzten für ein bestimmes Jail eine alternative Netzwerkansicht. Sprich, wir weisen einem speziellen Jail eine eigene Routingtabelle (inkl. Default Gateway) zu. Normalerweise verwendet das Jail die Routing Tabelle des Hosts. Damit können wir jedem Jail sein eigenes Routing zuweisen.

Dafür müssen wir zuerst unseren Kernel um eine Option erweitern, und neu kompilieren. Siehe hier: http://www.freebsd.org/doc/handbook/kernelconfig-building.html

# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/KAGEROU1  
# ln -s /root/kernels/KAGEROU1

Jetz editieren wir die Datei KAGEROU1 und fügen am Ende folgende Zeilen hinzu.

options         ROUTETABLES=4           # default is 1, max 16

Damit sorgen wir dafür das unser handgemachter Kernel 4 unterschiedliche Routingtabellen zur Verfügung stellen kann. Nun noch den Kernel kompilieren und instalieren.

# cd /usr/src
# make buildkernel KERNCONF=KAGEROU1
# make installkernel KERNCONF=KAGEROU1

Nun einen Reboot.

Als nächstes müssen wir unserem Jail eine alternative Netzansicht verpassen. In der Standardkonfiguaration sieht er FIB 0. Wir weisen ihm FIB 1 zu .

ezjail-admin config -f 1 csg

Die Änderung tritt erst nach einem Neustart des Jails ein. Jetzt noch schnell die Netzkonfiguration von FIB 1 anpassen.

kagerou# setfib 1 route add default 192.168.0.1

Oder man kann auch eine shell unter der FIB 1 starten und dannn dort arbeiten:

kagerou# setfib 1 tcsh
kagerou# netstat -nr 
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.0.1        UGS         0        0    xl0
10.8.0.2           link#5             UH          0        0   tun0
.....................................
kagerou# exit
exit

und das Jail neu starten

kagerou# ezjail-admin stop csg 
kagerou# ezjail-admin start csg 

Nun sollte das natürlich bei jedem Bootup automatisch geschehen. Nur wo tragen wir das ein ? Wenn man man ezjail aufruft sieht man:

NOTES
       ezjail.sh enforces the execution of /etc/rc.d/jail, by prepending "one"
       to  the start, restart, and stop commands so it is NOT NECESSARY to set
       jail_enable in the /etc/rc.conf config file.

Also fügen wir in die Datei /etc/rcd./jail am ANFANG folgende Zeile ein:

...................

# WARNING: This script deals with untrusted data (the data and
# processes inside the jails) and care must be taken when changing the
# code related to this!  If you have any doubt whether a change is
# correct and have security impact, please get the patch reviewed by
# the FreeBSD Security Team prior to commit.

start_precmd="setfib 1 route add default 192.168.0.1"
stop_postcmd="setfib 1 route delete default 192.168.0.1"


.................................

Und hier noch ein Ansatz . http://www.mail-archive.com/freebsd-jail@freebsd.org/msg01161.html oder http://www.unix.com/man-page/FreeBSD/1/setfib/