jail: nur 1 IP verbrauchen ("name based")

So, Sonntag Abend, mal wieder etwas Zeit, mein jail zum rennen zu bekommen ;-)
Hier also meine Routingtabelle

#:netstat -rnfinet
Routing tables

Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.3.1 UGS 1 12617 em0
127.0.0.1 127.0.0.1 UH 0 7201 lo0
192.168.3 link#2 UC 0 0 em0
192.168.3.1 00:90:27:c1:30:09 UHLW 2 1088 em0 698
192.168.3.5 00:0f:b5:25:ad:56 UHLW 1 3860 em0 1193
192.168.3.200 00:50:9c:32:bf:ea UHLW 1 162 em0 1105
192.168.3.255 ff:ff:ff:ff:ff:ff UHLWb 1 480 em0
192.168.5 192.168.5.1 UGS 0 58 fxp0

Stefan
 
Jo es ist doch genau so wie cnopers sagt.
Das verhalten ist ganz normal.

Die Lösung steht von mir hier auch schon. Wo ist jetzt das Problem?
Oder sollen wir dir noch die rc.conf schreiben?

(Eine Formatierte ausgabe hätte aber auch nicht geschadet um es besser lesen zu können. So hat doch keiner lust sich das anzuschauen.)
 
Die Defaultroute muss auf 192.168.5.1.
Und dann ein route die dein 192.168.3/24 Netz regelt.
Warum? - Weil dir eine route nur dann was bringt, wenn Du auch beschreiben kannst was geroutet werden soll (in dem Fall 192.168.3/24).

Wo zu ein 3. Subnetz?
 
Hallo

leider muss ich diesen Thread aus aktuellem Anlass aufwärmen. Ich bin momentan auch am Basteln mit Jails und bekomme das leider überhaupt nicht gebacken. Meine Situation ist ähnlich wie schon gehabt, eine öffentliche IP Adresse 213.X.X.X und jetzt möchte ich auf diesem Host meine Jails betreiben. Dazu hab ich mal 2 Jails angelegt
192.168.1.100 mysql
192.168.1.101 apache
Soweit so gut, Netzwerkinterface ist jetzt fxp0 mit IP Adresse 213.X.X.X und hat 2 aliase, nämlich 192.168.1.100 und 192.168.1.101.
Da ich NAT ohnehin brauche, wollte ich mich mal hier informieren, wie ich das mit Verwendung von NAT hingekommen könnte, dass auch die Jails Zugriff nach "Außen" haben und ich somit in den Jails Software übers Internet installieren kann.
Sorry für die sicher triviale Frage, aber ich steige bei den Jails irgendwie nicht ganz durch. Hab zwar auch das Howto von grunix gelesen, aber so richtig was von NAT usw. ist da nicht drin.

danke schon im Voraus

[edit]
also wenn ich das richtig verstehe, muss ich das Ding zunächst mal als "Router" konfigurieren, also dass 192.168.1.* an 213.xxx.xxx.xxx geroutet wird und dann noch NAT für die einzelnen Dienste in den Jails... oder steh ich aufm Schlauch??
[/edit]
 
Zuletzt bearbeitet:
in die pf.conf des host:
Code:
jail_if = "fxp0"
jail1 = "192.168.1.100"
jail2 = "192.168.1.101"
nat on $jail_if inet from { $jail1 $jail2 } to any -> $jail_if:0
rdr pass on $jail_if inet proto ? from ???.???.???.??? port ??? to $jail_if port ??? -> $jail1:0 port ???
rdr pass on $jail_if inet proto ? from ???.???.???.??? port ??? to $jail_if port ??? -> $jail2:0 port ???
Software kannst Du vom host installieren.
Als Router musst Du nichts konfigurieren.
 
hi morromett

danke für deine schnelle Hilfe. Ich hab das Ganze jetzt auf einem Testserver nachgebaut, deshalb ist das Interface nicht mehr fxp0, sondern ed0 und nicht an eine öffentliche IP gebunden, sondern an 192.168.0.250, deshalb hab ich die Jails einfach in ein anderes Subnetz gestellt.
Leider klappt es trotzdem noch nicht. Hier mal ein paar Werte:
testjail# ifconfig
ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.250 netmask 0xffffff00 broadcast 192.168.0.255
inet 192.168.1.101 netmask 0xffffffff broadcast 192.168.1.101
inet 192.168.1.102 netmask 0xffffffff broadcast 192.168.1.102
ether 52:54:00:12:34:56
media: Ethernet 10baseT/UTP <full-duplex>
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
testjail# kldstat
Id Refs Address Size Name
1 6 0xc0400000 7a05b0 kernel
2 1 0xc0ba1000 5c304 acpi.ko
3 1 0xc353b000 4000 nullfs.ko
4 1 0xc3547000 3000 fdescfs.ko
5 1 0xc3778000 2d000 pf.ko
testjail# jls
JID IP Address Hostname Path
2 192.168.1.101 mysql /usr/jails/mysql
1 192.168.1.102 www /usr/jails/www
testjail# sysctl security.jail.allow_raw_sockets
security.jail.allow_raw_sockets: 1
testjail# jexec 1 ping 209.85.129.104
PING 209.85.129.104 (209.85.129.104): 56 data bytes
^C
--- 209.85.129.104 ping statistics ---
7 packets transmitted, 0 packets received, 100% packet loss
testjail#
So, wie man sehen kann geht da nix raus. woran es liegt...keine Ahnung, die pf.conf ist so wie du sie mir gepostet hast.

Software kannst Du vom host installieren.
Achso? Kann ich per portinstall vom Hostsystem direkt in ne Jail installieren??? wie geht das denn?
 
Wenn Du aus der jail eine öffentliche IP-Adresse anpingen willst, musst Du nat und rdr über eine externe NIC verwenden. Mit der netmask 0xffffffff kannst Du die Aliase im gleichen Subnetz haben wie die ed0. Für die Softwareinstallation vom host, musst Du .../ports/, .../obj/ und .../src/ in die jail mounten (mit mount_nullfs).
Edit: Die make.conf der jail solltest Du dann auch noch anpassen. Die Ordner "ports, obj und src" müssen in der jail vorhanden/angelegt sein.
 
Zuletzt bearbeitet:
Wenn Du aus der jail eine öffentliche IP-Adresse anpingen willst, musst Du nat und rdr über eine externe NIC verwenden. Mit der netmask 0xffffffff kannst Du die Aliase im gleichen Subnetz haben wie die ed0.

Sorry, aber ich versteh nur Bahnhof.

Für die Softwareinstallation vom host, musst Du .../ports/, .../obj/ und .../src/ in die jail mounten (mit mount_nullfs).
Edit: Die make.conf der jail solltest Du dann auch noch anpassen. Die Ordner "ports, obj und src" müssen in der jail vorhanden/angelegt sein.

aber dann erfolgt die Installation doch auch in der Jail, und nicht vom host aus, oder?
 
Ist ed0 ein externes Interface? Kannst Du aus dem host "ping 209.85.129.104" ausführen? Wenn ja, poste die pf.conf des host.
 
also vom host aus kann ich pingen, ja! und meine pf.conf besteht zur Zeit lediglich aus den Zeilen, die du mir oben gepostet hast!
 
Diese Zeilen sollten nur ein Auszug (... Beispiel für den Datenverkehr in die jail und aus der jail raus) aus der pf.conf sein, die Du dann an deine Bedürfnisse anpassen solltest. Wenn Du aus der Jail alles erreichen willst und auch von überall in die Jail rein willst dann versuch mal folgende Regeln:
jail_if = "ed0"
jail1 = "192.168.1.102"
nat on $jail_if inet from $jail1 to any -> $jail_if:0
rdr pass on $jail_if from any to $jail_if -> $jail1:0
 
So, jetzt klappt das mit den Verbindungen, vielen Dank!
Zur Zeit ist es egal, wenn alles erlaubt ist, das werd ich dann noch anpassen.

Was das mit dem Software installieren betrifft, hab ich es wohl doch richtig verstanden. Es hat mich nur etwas verwirrt, dass du gesagt hast vom host aus installieren. Da hab ich dann falsch gedacht, aber das mit den nullfs hab ich schon vom wiki. Also vielen Dank nochmal!
 
Hi

jetzt hab ich natürlich noch ein kleines Problemchen beim Eingang der Daten. Also eigentlich sollte das doch nicht so schwer sein, aber ich schaffe es einfach nicht, alle Verbindungen, die auf 8080 hereinkommen, an den port 80 der Jail weiterzuleiten.
Dazu hab ich folgende Zeile in meiner pf.conf
rdr on $jail_if proto tcp from any to $hostsystem port 8080 -> $jail2 port 80
$jail_if ist fxp0 und $hostsystem ist die öffentliche IP. $jail2 ist 192.168.1.101
vom Hostsystem aus mit "telnet 192.168.1.101 80" ist der Apache erreichbar, von Aussen aber scheint die Regel nicht zu greifen, also rdr scheint nicht zu klappen...
 
hi

leider geht es auch damit nicht. ich poste mal die komplette (noch auszubauende) pf.conf
jail_if = "fxp0"
hostsystem = "213.X.XX.XXX"
jail1 = "192.168.0.100" #mysql Jail
jail2 = "192.168.0.101" #http,php Jail
jail3 = "192.168.0.102" #postfix, imap

#die Jails haben vollen Zugriff nach aussen
nat on $jail_if from $jail1 to any -> $jail_if:0
nat on $jail_if from $jail2 to any -> $jail_if:0
nat on $jail_if from $jail3 to any -> $jail_if:0

#Hier wird von Aussen an die Jails weitergeleitet
rdr pass on $jail_if proto tcp from any to $jail_if port 8080 -> $jail2 port 80
 
danke für deine Hilfe,,,hier also die Ausgabe von ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 213.X.XX.XXX netmask 0xfffffffc broadcast 213.X.XX.XXX
inet 192.168.0.100 netmask 0xffffffff broadcast 192.168.0.100
inet 192.168.0.101 netmask 0xffffffff broadcast 192.168.0.101
ether 00:90:27:25:eb:84
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
 
Kannst Du deine IP-Adresse 213.X.XX.XXX aus dem inet anpingen? Ist dein Server direkt an einem transparenten Modem angeschlossen (ohne Router) ?
Was hast Du in die rc.conf deiner jails als defaultrouter="???.???.???.???" eingetragen?
 
ja ich kann die anpingen und auch per ssh auf port 2222 rein. Tranparentes Modem oder Router? Nicht dass ich wüsste, es handelt sich um einen root-server.
Ich möchte den 8080 vorläufig verwenden, bis alles richtig konfiguriert ist. Zur Zeit läuft auf dem Hostsystem nämlich schon ein apache (port 80) und diesen kann ich per telnet auch erreichen, also schätze ich mal, hat es nichts mit einem evtl. Modem oder Router zu tun.
 
ähmm.... noch nichts.... :rolleyes:
brauche ich das denn? ich meine, Verbindung nach außen funktioniert ja tadellos!
 
Ja, versuch mal mit der IP-Adresse des hostsystem als defaultrouter in der rc.conf der jail und dann mit folgender Regel in der pf.conf:
rdr pass on $jail_if proto tcp from any to $hostsystem port 8080 -> $jail2:0 port 80
 
Zurück
Oben