Source NAT

asko

Fizikalc
22. jul 2007
2.565
3
38
Želim da nekako skozi firewall v DMZ coni dobim source IP pošiljatelja zahtevka. Sedaj v DMZ-ju vedno dobim IP od DMZ-ja
sprasujem se.gif
Kako to z Linuxom ???

Recimo, da imamo:
Zunanji: 1.1.1.1 Port A
Notranji: 2.2.2.2 Port B
DMZ: 3.3.3.1 Port C
www strežnik: 3.3.3.10

Klient z IP-je 4.4.4.4 pošlje zahtevek do mojega zunanjega IP-ja 1.1.1.1 in želim da se v eventlogu www strežnika vidi IP klienta, ki je poslal zahtevek (4.4.4.4). Sedaj se vidi IP DMZ-ja 3.3.3.1
frown-1.gif


sprasujem se.gif
 
Nazadnje urejeno:

KLuka

Fizikalc
7. sep 2007
1.710
0
36
kaj pa če nimaš DMZ-ja ? Ali ga nujno rabiš ?

Pa kako imaš to postavljeno? A ta klient (4.4.4.4) je v drugi mreži ? (recimo pri meni doma)

Kako imaš pa narejeno da ti DMZ pc forwardira pakete na WEB strežnik?
 
Nazadnje urejeno:

philips

Guru
Osebje foruma
Administrator
17. avg 2007
9.878
698
113
Kakšna pa je konfiguracija? Ker tole zgleda bolj kot proxy in ne kot forwarding.
 

asko

Fizikalc
22. jul 2007
2.565
3
38
Zadeva mora biti v DMZ-ju. Klient 4.4.4.4 (oz. poljuben IP iz neta) je klient iz interneta.

Sedaj je nastavljeno, da rotuer ves promet, ki pride iz neta po portu 80 in 443, forwardira na IP spletnega strežnika, ki je v DMZ-ju...deluje bp, samo nikakor ne dobim source IP-ja, temveč IP DMZ.ja.
 

doto

Fizikalc
25. jul 2007
3.175
0
36
Zakaj sprašuješ po SNATu? Kakšna iptables pravila imaš za port forward? Normalni forward ne spremeni source ip-ja od paketa. Nekje očitno izvajaš snat, ali masquerade.
 

asko

Fizikalc
22. jul 2007
2.565
3
38
Sedaj je narejeno NAT pravilo preko GUI-a, da ves promet na portu 80 in 443 preusmeri na IP spletnega strežnika v DMZ-ju. In ko v event logu preverim, vidim, da se je source IP spremenil v IP od DMZ-ja.
 

KLuka

Fizikalc
7. sep 2007
1.710
0
36
http://superuser.com/questions/443552/iptables-port-mapping-from-two-pcs-to-one

David, one more question: now in apache i see only 172.16.0.x IP instead of real client's IP. Without SNAT using default gateway I see real IP... What should I configure to see real IP? – Anton Jul 1 '12 at 13:50

You can't. You have to change the source address to be the NAT device's source address, so you can't provide the "real" source address to the server. If you need that, you can't use NAT and have to use something like a reverse proxy instead. – David Schwartz Jul 1 '12 at 14:20


A da pa direktno iz ruterja forwardiaš ta dva porta na web strežnik pa ne gre?
 
Nazadnje urejeno:

doto

Fizikalc
25. jul 2007
3.175
0
36
SNAT ti spremeni source ip. Zato v logu ni pravih IPjev. Z DNAT forwardiraš noter pakete na pravo mašino. Odgovori pa se morajo routati preko default gatewaya nazaj na inicializatorja. Tako ti ni treba SNATat vhodnega prometa.
 

asko

Fizikalc
22. jul 2007
2.565
3
38
Sem probal da bi dostopal samo iz mojega IP-ja (x.x.x.x) in mi zopet v LOG zapiše IP od DMZ-ja
confused-1.gif


iptables -t nat -A PREROUTING -d x.x.x.x -j DNAT --to DMZ_IP
iptables -t nat -A POSTROUTING -s DMZ_IP -j SNAT --to x.x.x.x
 

der_Alte

Fizikalc
21. jul 2007
2.063
10
38
Zemlja
alte.aufbix.org
Citat:
Uporabnik asko pravi:
Želim da nekako skozi firewall v DMZ coni dobim source IP pošiljatelja zahtevka. Sedaj v DMZ-ju vedno dobim IP od DMZ-ja
sprasujem se.gif
Kako to z Linuxom ???

Recimo, da imamo:
Zunanji: 1.1.1.1 Port A
Notranji: 2.2.2.2 Port B
DMZ: 3.3.3.1 Port C
www strežnik: 3.3.3.10

Klient z IP-je 4.4.4.4 pošlje zahtevek do mojega zunanjega IP-ja 1.1.1.1 in želim da se v eventlogu www strežnika vidi IP klienta, ki je poslal zahtevek (4.4.4.4). Sedaj se vidi IP DMZ-ja 3.3.3.1
frown-1.gif


sprasujem se.gif

iptables -t nat -I PREROUTING -i portA -j DNAT --to 3.3.3.10
iptables -t nat -I POSTROUTING -o portA -j MASQUERADE

Zakaj vraga sploh delaš SNAT? SNAT uporabiš takrat, ko imaš na zunanjem vmesniku več kot en IP naslov in bi rad »preslikal« vse kar pride iz LAN ali iz DMZ. Recimo, da imaš na zunanjem vmesniku še 1.1.1.2 (ok razlika je še ali imaš alias vmesnik ali pa brez...)

iptables -t nat -I POSTROUTING -o portA -s 3.3.3.10 -j SNAT --to 1.1.1.2

pa seveda zgornje MASQ pravilo je potrebno dat »nižje« v verigi.
 

doto

Fizikalc
25. jul 2007
3.175
0
36
Citat:
Uporabnik asko pravi:
Sem probal da bi dostopal samo iz mojega IP-ja (x.x.x.x) in mi zopet v LOG zapiše IP od DMZ-ja
confused-1.gif
Tale dva pravila nimata smisla, če je tvoj IP x.x.x.x.
Citat:

iptables -t nat -A PREROUTING -d x.x.x.x -j DNAT --to DMZ_IP
To pomeni, da ti pakete, ki so namenjeni tebi pošlje na DMZ_IP
Citat:

iptables -t nat -A POSTROUTING -s DMZ_IP -j SNAT --to x.x.x.x
Tole pa da pakete, ki pridejo od DMZ_IP-ja rewrita, za zgledajo kot da so prišli s tvojega IP-ja.

Predvidevam, da je tvoja konfiguracija nekaj takega:

image.jpg


Ti moraš storiti naslednje. Recimo, da dovolimo samo HTTP(s) (port 80 in 443):

# Vhodne pakete DNATaš na DMZ_IP
iptables -t nat -A PREROUTING -i PortA -p tcp --dport 80 -j DNAT --to 3.3.3.10
iptables -t nat -A PREROUTING -i PortA -p tcp --dport 443 -j DNAT --to 3.3.3.10

# te pakete spustiš skozi FORWARD
iptables -A FORWARD -i PortA -o PortC -d 3.3.3.10 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i PortA -o PortC -d 3.3.3.10 -p tcp --dport 443 -j ACCEPT

# spustiš tudi vse odgovore. pa recimo, da ven spustiš vse iz www serverja
iptables -A FORWARD -i PortA -o PortC -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i PortC -o PortA -j ACCEPT

# ker je server za NATom, moraš vsem odhodnim paketom v internet spremeniti source IP na zunanji IP, da bodo
# klienti lahko poslali odgovor
iptables -t nat -A POSTROUTING -o PortA -j MASQUERADE

# oz, če imaš več IP-jev lahko SNAT-aš na specifični zunanji IP. masquerade vzame primarnega

iptables -t nat -A POSTROUTING -o PortA -s 3.3.3.10 -j SNAT --to 1.1.1.1

to bo moralo biti to. Prometa ki gre pa na PortC pa ne smeš SNAT-at. Mogoče imaš težavo v tem, da SNAT/MASQ ves izhodni promet. Moral pa bi samo tistega, ki gre na PortA.