IP mangle - egyforma IP-vel rendelkező gépek k

Sziasztok

A gondom, hogy egyforma IP(192.168.1.1) -vel rendelkező gépeket akarok elérni, melyek hardveresen külön hálókártyákon lógnak
eth0 192.168.10.2
eth1 192.168.11.2
...
A lényeg, hogy NAT-olni szeretném az IP címet, hogy a 192.168.10.2 --> 192.168.1.2 -nek tűnjön az egyen gép számára.

Rákeresve találtam egy példa megoldást, de a megoldásban szerepel egy ROUTE is, ami nincs az iptables-be forgatva
http://www.gossamer-threads.com/lists/iptables/user/63428

Ötlet/segítség?

Köszönettel
Gyuri

Hozzászólások

Ha csak próba szintjén ezeket kiadom (nem tudom, hogy több ethernet kártya/IP esetén is működne e?):
iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.1.1 --to-source 192.168.10.1
iptables -t nat -A PREROUTING -j DNAT -i eth0 -d 192.168.10.1 --to-destination 192.168.1.1

, akkor lehet routolna, de wiresharkban látom az elkeseredett ARP kéréseket, hogy melyik MAC -é ez az IP, amire ugye nem jön válasz...
Esetleg az ARP választ is meg kell hegesszem?
Szerk:
arp -s address MAC segít, de ezt ki lehet kerülni? Mármint az ARP -t is lehet routolni?
Meg amúgy is működik ez több porttal?

Hát még egy megoldást tudok elképzelni, ha esetleg namespace-be rakod az egészet.
http://www.opencloudblog.com/?p=42

Openstack legalábbis ezt csinálja, és le tudja kezelni azt az esetet, ha két private networkön ugyanazt az IP-t használja két VM. NAT-olással tud adni 1-1 különböző public IP-t nekik, és így kívülről teljesen korrektül route-olható.
---
Régóta vágyok én, az androidok mezonkincsére már!

Linkemet megnezted? Elegge step by step le van irva. Nem pont a te esetedre, de a namespace letrehozas, network interfesz felvetel stb benne van. Mindossze annyi hianyzik belole, hogy az iptables-t is igy kell meghivni, ha a namespace-en beluli tuzfalat akarod allitani:

ip netns exec <namespace> iptables ...

---
Régóta vágyok én, az androidok mezonkincsére már!

Persze elolvastam... A namespace nem ihletett meg, de az IP route igen!

Ott tartok, hogy az eredeti iptables megoldás connmark -ja működik, ami alapján SNAT DNAT is jó, csak a létrejött mark-olt csomag nem talál ki az eth -ra.

Erre kéne egy route parancs.
iptables -t mangle -A POSTROUTING -j ROUTE -m connmark --mark 1 --oif eth0

helyett egy ip -s, amiben van fwmark meg route, csak nem ismerem ezt az ip parancsot még annyira.
Itt tartok... Meg sem mukkan:

ip rule add fwmark 1 table 201 //Az 1 el jelolt jelfolyamot a 201 -es tabla szabalyaira bizza
ip route add table 201 dev eth0 //A 201 -es tábla az eth0-ra teszi az adatfolyamot --- azthiszem

arptables nem segíthet? Úgy tudom - lehet, hogy rosszul -, hogy MAC address alapján lehet vele szűrni, csomagokat (bennük pl. a source/dest. IP címet) módosítani.

Itt tartok:
192.168.14.2 a router igazi címe-->virtuálisan 192.168.1.2
192.168.1.3 az egyen gép címe
A scriptem:

sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.conf.eth0.rp_filter=0
iptables -t nat -F
iptables -t mangle -F
iptables -t mangle -A PREROUTING -j CONNMARK -i eth0 -s 192.168.1.3 -d 192.168.1.2 --set-mark 1

iptables -t nat -A PREROUTING -j DNAT -m connmark --mark 1 --to-destination 192.168.14.2

iptables -t mangle -A OUTPUT -j CONNMARK -d 192.168.14.3 --set-mark 1

iptables -t nat -A OUTPUT -j DNAT -m connmark ! --mark 0 --to-destination 192.168.1.3

#iptables -t mangle -A POSTROUTING -j ROUTE -m connmark --mark 1 --oif eth0 //Ez nincs nekem, mert a route extension elavult, helyette:

ip route flush table 201
#A mark 1 jelfolyam a 20-es tábla szerint routolódjon - legalábbis azthiszem, az IP-ről tegnap hallottam először
ip rule add fwmark 1 table 201
#A 201-es tábla mindent az eth0-ra irányít... Sajna a valóságban ez így meg sem nyikkan wiresharkban
ip route add table 201 dev eth0
#Ez kell?
ip route flush cache

iptables -t nat -A POSTROUTING -j SNAT -m connmark --mark 1 --to-source 192.168.1.2

És az ARP-t is kezelni kell. itt tartok, de semmit nem csinál, legalábbis wiresharkban nem látom:

//Ha jön egy kérés, hgy kinek van 192.168.1.2, akkor cserélje le a forrást és a célt
arptables -t mangle -A INPUT -d 192.168.1.2 -j mangle --mangle-ip-d 192.168.14.2
arptables -t mangle -A INPUT -s 192.168.1.3 -j mangle --mangle-ip-s 192.168.14.3
//Kimenő maszkaolása
arptables -t mangle -A OUTPUT -s 192.168.14.2 -j mangle --mangle-ip-s 192.168.1.2
arptables -t mangle -A OUTPUT -d 192.168.14.3 -j mangle --mangle-ip-d 192.168.1.3