Furcsa VirtualBox bug 2 ethernet hálózattal

 ( Ritter | 2014. április 19., szombat - 10:53 )

Egy ubuntus gép két hálózatra csatlakozik két ethernet kártyával. Fut rajta VirtualBoxban egy webszerver, ami nat-olva kap ip címet a virutalboxtól és portátirányítással érhető el 80-as portja (VboxManage).
De kívülről csak default gatewaynek beállított routerről lehet elérni a guesten futó webszervert, a másikról nem. Hiába van nyitva a port mindkét routeren és átirányítva a host gép megfelelő portjára, ami tovább átirányítja a forgalmat a virtuális gép 80-as portjára.
Belülről a host gép mindkét belső ip címéről el lehet érni a virtuális gép webszerverét. Minden belső gép csatlakozik mindkét hálózatra.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

- (figyelmetlen voltam)

wireshark

Szerintem az egyik esetben valamelyik komponens nem jól NAT-ol, vagy valakinek hiányzik a routing táblájából valami. Az sem lehetetlen, hogy a megálmodott konfigurációnak eleve véres a torka, és nem is bug, hogy ez nem működik.

Az biztos, hogy a hiba az Ubuntus host gépben keresendő. Ha egy route add default gw 10.6.... paranccsal átállítom a másik routerre a default hálózati forgalmat onnantól arról a routerről érhető el a guest rendszer webszolgáltatása és a másik routerről nem.

Vagy a virtualbox NAT-ban... vagy a koncepciódban.

Két teljesen független internetelérés? NAT-tal? Stateful tűzfallal a routereken?
Például ha a kliens az internet felől az "A" routeren keresztül elérhető publikus IP-re próbál kapcsolatot felépíteni, miközben a választ nem arról az IP-ről (hanem a "B" router publikus címéről) kapja vissza, mit fog tenni a kliens? Összeállhat egy TCP session úgy, ha a SYN-ACK forrása nem azonos a SYN célcímével? Nem. Ezért emlegették itt az előbb a koncepciót és a WireSharkot. Megoldás: policy-based routing. Ezt megteheted a default gatewaynek kijelölt routeren (bizonyos feltételek szerinti route a "B" router felé), vagy magán az Ubuntun is.

Ha mégsem ez a topológia, akkor légy szíves, írd le a rendszert részletesen, ahogy egy hibaelhárításnál te is elvárnád. Milyen routerek, van-e az "A" és "B" routeren keresztül is elérhető publikus IP tartomány, van-e dinamikus routing, mi az Ubuntu routing táblája, hol és milyen NAT-ok vannak a rendszerben, milyen tűzfalszabályok vannak stb.

Mindkét router Openwrt-s. Két különböző internetszolgáltatóhoz csatlakoznak. A két router között nincs közvetlen kapcsolat. Nincs A és B routeren keresztül is elérhető IP tartomány. Ezt Openwrt routereken hol lehet beállítani? Tűzfal csak a routereken van.

"elérhető publikus IP-re próbál kapcsolatot felépíteni, miközben a választ nem arról az IP-ről (hanem a "B" router publikus címéről) kapja vissza"
Valószínűleg ez a probléma oka.

Ez szerintem policy-based routing nélkül az életben nem fog menni.
Valahol, valamelyik gépnek a kifelé menő, már kapcsolathoz tartozó csomagokat szét kell osztania a két router között, aszerint, hogy melyik routerben "aktív" az a forgalom.

Tök jó, akkor lődd le a portforwardingot, és húzzál fel a két portra egy apache-ot. Ha azzal jó, akkor a virtualbox NAT-ja ennyit tud... Ha azzal se jó, akkor az Ubuntus géped routingja nem elég jó az elgondolásodhoz.