[MEGOLDVA]IP cím "továbbítás"

Fórumok

Üdv!

Adott két gép, Debian 6 rendszerrel. Két külön helyen vannak, és az egyik géphez tartozó ip címekre érkező forgalmat kellene átirányítani a távoli géphez tartozó "új" ip címekre. Tehát egy migrálásról van szó. Ami még jobb lenne, ha tunnel segítségével fel tudnám venni a másik gépen az első gép IP-it. Eddig ezzel nem jártam sikerrel.

Létrehoztam az IPIP tunnel-t, meg is adtam mindent korrektül, lokális IP-vel tudom is pingelni a két felet a tunnel-en keresztül, de a másik fél IP-jét nem tudom fel venni (játszadoztam route-al, de nem igazán sikerült).

Tudna valaki erre konkrét parancsokat?

Előre is köszönöm!

Szerk.: A probléma megoldva DNAT segítségével, a megoldás lentebb olvasható!

Hozzászólások

"az egyik géphez tartozó ip címekre érkező forgalmat kellene átirányítani a távoli géphez tartozó "új" ip címekre"
Source + destination NAT? Milyen forgalomról lenne szó?

"a másik fél IP-jét nem tudom fel venni"
Jobb is az úgy (bár az ifconfignak vagy ipnek meg lehetne adni). Akkor ugye felmerülne az a kérdés, hogy pl. a 198.51.100.1 IP valójában melyik gépet is jelentené. Persze ha van az eredeti gépnek másik IP-je is, akkor semmi gond.

Amúgy a DNS módosítása (TTL minimalizálás után) nem lenne sokkal egyszerűbb út?

зарегистрироваться

lehet, hogy kicsit túllövés, vagy butaság, amit mondok, de miért nem csinálsz egy VPN kapcsolatot a két gép között, és a VPNben megadott "belső" ip címre forwardolod a csomagokat...? csak tipp

Többesélyes.

a.) csinálsz egy transzparens Layer 2 bridge-et a két telephely között, akkor natívan tudod használni ott is az eredeti Layer 3 hálózatodat, az eredeti IP címekkel

b.) becsatlakozol a túloldalról valami pont-pont technológiával, ami fölött tudsz proxyarp-ot csinálni, ekkor szintén használhatod az eredeti IP-t

c.) csinálsz egy sNAT-ot, hogy az új telephely a régin keresztül lásson ki a világba. ekkor a bejövő kéréseket dNAT-tal tudod beirányítani az új rendszerre

d.) alkalmazásszintű proxy-t használsz.

A topicnyitóból nem derül ki számomra, hogy mi lesz a régi telephelyen lévő gép sorsa. Ha szeretnél onnan átköltöztetni minden szolgáltatást, majd a régi gépet kikapcsolni, akkor nyilván nem célszerű "ráépíteni" a régi gépre egy NAT-ot, és függővé tenni az új gép netkapcsolatát a régitől. Persze, ha ez csak egy ideiglenes megoldás, hogy ne legyen szolgáltatás-kiesésed, amíg mindent fel nem konfigurálsz az új hálózatra, akkor jó.

- Ha csak HTTP szolgáltatást kell nyújtani, akkor valószínűleg d.) csinálnék gyorsan egy reverse proxy-t, és kész

- Ha sokféle szolgáltatást kell nyújtani, ami a virtuális gépek tipikus esete, akkor c.)

- Ha ez nem egy ideiglenes állapot, hanem fixen két (vagy több) telephelyre szeretnél berendezkedni, és rugalmasan szeretnél ide-oda áthelyezni szolgáltatásokat, akkor a.)

Az új gépre átmigráljuk a XEN domU-kat, amik megkapják az új IP címeket, és ezzel párhuzamosan szeretnénk elérhetővé tenni még a régi ip címekről is egy darabig. Egy az egyben kellene átirányítani, mert nem tudjuk pontosan melyik domU-n milyen portok vannak használatban jelenleg.

Szerk.: A régi géppel a jövőben más célok lesznek, de átmenetileg CSAK emiatt futna még egy darabig.

redir ? az pont azt csinálja, hogy x ip cím y portját, z ip cím c portjára küldi.

mar pontosan nem emlexem hogy, de csinaltam hasonlot: openvpn tunnel a ket gep kozott. regi helyen dnattal atdobtam a forgalmat az uj hely ipjere es egy route bejegyzessel bezavartam a forgalmat a tunnelbe:


iptables -t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to-destination 5.6.7.8
route add -host 5.6.7.8 netmask 255.255.255.255 dev tun0

aztan a masik oldalt a tunnelbol kilepo csomagoat megjeloltem, a valasz csomagokra meg visszarakattam az jelolest:


iptables -t mangle -A PREROUTING  -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -i tun0  -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark

majd a megjelol csomagokat a tunnelbe iranyitottam:


iptables -t mangle -A POSTROUTING -s 5.6.7.8 -m mark --mark 10 -j ROUTE --oif tun0

az iptables ROUTE target kell hozza.
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Hosszas próbálkozások után sikerült összehozni a megoldást. A célt teljesíti, a régi IP-kről is elérhető minden szolgáltatás, de már az újról kommunikálnak kifelé a domU-k.

Ez a 2+n*2 sor kell lényegében (n = IP címek száma) az egészhez, felesleges volt tunnelben gondolkodnom.

echo 1 > /proc/sys/net/ipv4/ip_forward #IPv4 Forward be.
ip addr add 1.2.3.40/24 dev eth0 # Régi domU IP címek felhúzása dom0-ra (Ezt minden ip címre megismételve)
iptables -t nat -A PREROUTING -d 1.2.3.40 -j DNAT --to 5.6.7.80 # Az első cím a régi, a második az új. (Ezt is megismételni minden ip címre)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Remélem másnak is hasznára válik!

Azért azt az apróságot nem árt észben tartani, hogy ezzel a "megoldással" a régi címre próbálkozók ugyan elérik az új címre költöztetett szolgáltatást, azonban a próbálkozók forráscíme elveszik. Az új címen pl. a webszerver azt fogja látni, hogy mindenki a régi dom0 IP címéről kérdez tőle, mintha az egész világ egyetlen IP címből állna csak. Ez mondjuk bizonyos szolgáltatásokat megzavarhat, security szempontból pedig tud kellemetlen is lenni.