Lenne egy ubuntu 10.04 server, aminek lenne 2 ethernet interface-e.
mind a két interface-en 2-2 ip cím lenne. A cél, hogy minden esetben a virtuális ip-vel menjenek ki a csomagok. Ezt szépen meg is oldottam "ip route change" paranccsal. Viszont, ha leteszem az interface-t down állapotba, mintmár a virtuálisat, akkor azt szeretném, ha magától visszaállna a másik ip-címre. Arra, ami a fizikai porthoz van rendelve.
Tehát
eth0 IP-1-1
eth0:0 IP-1-2 forráscím
eth1 IP-2-1
eth1:0 IP-2-2 forráscím
Ha a virtuálisakat down-ba teszem, akkor:
eth0 IP-1-1 forráscím
eth1 IP-2-1 forráscím
Hiába adom meg az ifconfig-ba, vagy teszek scriptet a if-up.d/if-down.d könytárakba. Nem teszi vissza a forráscímet a fizikai interface-re, ha leteszem ifconfig-gel down-ba.
Milyen megoldást tudnátok erre javasolni, vagy hogy oldjam, meg, hogy automatikusan tudja ezt váltogatni?
- 3716 megtekintés
Hozzászólások
Emlékszel rá, nemrég ezt a témát már az előző kérdésed nyomán körüljártuk. Azok, úgymint (ssh) bind address, az adott program konfigja, NAT, PBR stb. hogy váltak be?
Légy szíves, egy kicsit bővebben vázolni a helyzetet, mert nem teljesen világos, hogy az előzőeken túl most milyen problémát szeretnél ezzel a (kissé gányolásnak tűnő) dologgal áthidalni, kitérve arra is, hogy az egy interfészen lévő címek azonos hálózatba tartoznak-e vagy különbözőbe.
"minden esetben a virtuális ip-vel menjenek ki a csomagok"
Pontosan milyen csomagok? Például egy kiépült TCP session alatt nem nagyon fogsz tudni IP-t váltani. Amúgy pedig az előző topikban kaptál erre ötleteket.
"Hiába adom meg az ifconfig-ba, vagy teszek scriptet a if-up.d/if-down.d könytárakba. Nem teszi vissza a forráscímet a fizikai interface-re, ha leteszem ifconfig-gel down-ba."
Mit csinálsz mivel? Az if-up.d és if-down.d alatt hiába módosítasz bármit is, ha az ifup, ifdown helyett az ifconfiggal machinálsz, megkerülve az ifupdownt. Az ifup és ifdown viszont biztosan meghívja az if-up.d és if-down.d alatti scripteket. Számos szerver használja arra, hogy az új címeken (is) hallgasson. Mi az, amit te ettől eltérően tapasztaltál?
"Arra, ami a fizikai porthoz van rendelve."
És a végére megjegyzésként: az IP alias nem teljes értékű interfész. Ahogy a Documentation/networking/alias.txt is mondja: "Aliases are not real devices...". És így kezdi: "IP-aliases are an obsolete way...".
- A hozzászóláshoz be kell jelentkezni
Milyen megoldást tudnátok erre javasolni, vagy hogy oldjam, meg, hogy automatikusan tudja ezt váltogatni?
Írd bele a kernelbe, vagy csinálj LD_PRELOAD-os user-oldali bind-olást, ha feltétlenül ez a mániád...
Az, amit szeretnél, az egy orbitális hack. Aminek ára van, csak még nem látod át.
A korrekt megoldás az, ha a gépen a programok a géphez/adott programhoz rendelt IP címet használják alapból, és csak akinek feltétlenül szükséges, az bind-olja a kimenő forráscímet a logikai IP címre (ami a példád szerint nem mindig áll rendelkezésre), és ez ezeknél a programoknál egyéb módon oldod meg, hogy amikor az extra IP eltűnik, akkor ezek a programok erről értesüljenek/újrainduljanak.
Az lehetetlen, hogy a programok alól kirántod az IP címet, amiről ők a kapcsolatokat nyitották, a programok meg menjenek tovább, mintha mi sem történt volna, és a nyitott kapcsolataikban meg cserélődjön ki az IP cím... És mivel a gépen futó programok között akadnak mezei programok, akik erre nincsenek felkészülve, ezért rossz ötlet ezt default működéssé tenni.
- A hozzászóláshoz be kell jelentkezni
nem tudom, hogy az ip route list nalad, hogy nez ki de nem lenne egyszerubb uj routeokat felvenni es megvaltoztatni a metricet mondjuk valami ilyesmit kepzelek el:
100.64.0.0/10 dev eth0 proto kernel scope link src 100.64.0.1 metric 100
100.64.0.0/10 dev eth0:1 proto kernel scope link src 100.64.0.2 metric 10
- A hozzászóláshoz be kell jelentkezni