SNAT / DNAT segítség

Van egy elég bonyolult (átmeneti) hálózati infrastruktúránk, amiben adódott egy probléma, ebben kérnék segítséget.

Van két proxmox (virtualizáció) szerver: old és new
Mindkettőn van tűzfal: old-fw és new-fw
Mindkettőn vannak containerek, igazából old-ról migrálunk new-ra, fele itt van, fele ott.

old-fw és new-fw össze vannak bridgelve tap-os openvpn-nel, szerintünk a bridge jól működik.
10.1.1.0/24 tartományban vannak a benti gépek

A probléma ott van, hogy ha a new-fw külső lábán konnektálnék (mondjuk ssh-znék) egy olyan containerre ami még az old-on van, akkor az “nem megy”.
Értelemszerűen itt kell egy NAT szabály (mondjuk a 2023-as portot berakom a 10.1.1.200:22 -re).
Ha olyan containerre csinálom a DNAT-ot ami new-on van, az megy szépen.

Szóval az a felállás nem megy, hogy:

én -> new-fw -> openvpn -> old-container -> openvpn -> new-fw -> én

Endian firewall van a szervereken, ez kicsit “kattintgatós” de azért iptables alapú szóval “bármit” bele lehet rakni.
Valami triviálisat nézek el, help me pls.

Hozzászólások

Így elsőre nem látom, hogy az old-container miért küldené a new-fw felé a válaszokat... van SNAT is a DNAT mellett? vagy az a default routere?

iptables -t mangle -A PREROUTING -j MARK -i eth1.11 -d 1.2.3.4 -p tcp --dport 80 --set-mark 1
iptables -t nat -A PREROUTING -m mark --mark 1 -p tcp -j DNAT --to-destination 192.168.0.12:80
iptables -t nat -A POSTROUTING -m mark --mark 1 -p tcp -j SNAT --to-source 192.168.0.11

iptables -A FORWARD -p tcp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p udp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m mark --mark 1 -m state --state NEW -j ACCEPT

iptables -A INPUT -p tcp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Ez kb. egy port forwardingot csinál, SNAT-tal kiegészítve. Egyébként -j SNAT helyett a -j MASQUERADE is működik. Az ESTABLISHED,RELATED sorok közül nem mindegyik kell, de mivel ez nálam by default mindig bent van, így nincs túl nagy incentive arra, hogy megjegyezzem, melyik szükséges közülük :)

Bakker, ha Ákos most kezd neki az iptables-nek akkor most jól bevitted a málnásba :) Ebből úgy nagyjából nem fogja tudni, hogy melyik sor mire is kell és hogyan alakítsa a saját problémájára. Plusz valszeg' némi route-olgatás is kell neki, hogy azok a csomagok a helyükre találjanak.

Köszi, az első 3 sor volt a lényeges, tökéletesen érthető, abból is a SNAT-os sor a legfontosabb.
Már "csak" azt kell kitalálni hogy az endian firewallba ezt hova kell belevarrnom (és hogyan fogom belevarrni) - vagy ha más csinálja akkor ki legyen az a más... :)

--
Gábriel Ákos
http://ixenit.com

nemkell semmit natolgatni, "sima" routinggal is megoldhato:

a tuzfalakon iptables mark-kal (olvass utana mert 3-4 szabaly kell hozza! setmark, restoremark, stb) jelold meg azokat a packeteket ami vpnen a masik tuzfalrol erkezik be (es a celja egy 10.1.1.x gep). ezutan ip route+ip rule fwmark-kal a visszacsomagokat (ok is meg vannak jelolve a restoremark miatt) kuld be a vpn masik felere.

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!