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
- 3813 megtekintés
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?
- A hozzászóláshoz be kell jelentkezni
Mármint az ARP -t is lehet routolni?
Proxy ARP, amire szerintem gondolsz. De nem mernek megeskudni, hogy a te esetedben jol fog mukodni.
echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
Vagy a masik interfeszre ugyanez.
---
Régóta vágyok én, az androidok mezonkincsére már!
- A hozzászóláshoz be kell jelentkezni
ARP-vel oda talál a csomag, de az IP nem konvertálódik...Hiába az SNAT + DNAT
-lehet csak routoláskor működik, a routoló gépről meg nem...?
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni
Ez jonak tunik.
Az iptables route extension is jo lett volna, de ahogy elnezem nagyon elavult, elkepzelhetetlen nagy szivasok vartak volna ram.
De mit kell beirjak ebben a namespaces dologban? Vagy hol olvashatok rola?
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
É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
- A hozzászóláshoz be kell jelentkezni