NAT source/dst jednocześnie na Cisco, ale nie ASA

Problemy związane z routingiem
Wiadomość
Autor
horhe358
wannabe
wannabe
Posty: 171
Rejestracja: 09 kwie 2006, 14:04
Lokalizacja: Poznań
Kontakt:

NAT source/dst jednocześnie na Cisco, ale nie ASA

#1

#1 Post autor: horhe358 »

Cześć,

Potrzebuję uruchomić NAT-src/dst ale jednocześnie. Tzn. w odróżnieniu od zwykłego przekierowania portów, chciałbym żeby src-ip pakietów trafiających z internetu był podmieniany na adres IP rutera tak, żeby do hosta docelowego trafiał jako powstały w sieci lokalnej (potrzebne ze względu na politykę rutingu - bez takiej zmiany zwykły nat DST zmieni tylko adres docelowy, pakiet trafi do serwera za NATem ale serwer odpowie przez default gateway który jest inny niż bym chciał).

IP 123.123.123.123 - host w Internecie
IP 124.124.124.124 - adres IP rutera WAN
IP 10.1.1.1 - adres IP rutera LAN
IP 10.1.1.2 - adres IP serwera

Przykład:
Pakiet z IP 123.123.123.123 trafia na IP 124.124.124.124 port powiedzmy 80. Tam jest NATowany na IP 10.1.1.2 port 80 i trafia do serwera. I teraz jeżeli nie było jednocześnie nat-src to jako źródłowy IP w pakiecie będzie 124.124.124.124, więc serwer odpowie przez swój default gateway (jakiś, obojętnie, ważne że to nie ruter i tam NAT nie zadziała, więc pakiet nie przejdzie). Trzeba więc jednocześnie podmienić SRC tych pakietów na adres LAN rutera tak, żeby serwer widział je jako powstałe z sieci lokalnej, bo wtedy odpowie po prostu w sieci lokalną, a nie przez gateway.

Ma ktoś pomysł jak to najłatwiej zrobić ?

pozdr.,
Paweł

horac

#2

#2 Post autor: horac »

Szczerze powiem to nie wiem o co ci chodzi.. co ma NAT do dostepnosci serwera w lokalnej sieci ?
chciałbym żeby src-ip pakietów trafiających z internetu był podmieniany na adres IP rutera tak, żeby do hosta docelowego trafiał jako powstały w sieci lokalne
wydaje mi sie to w ogole bez sensowne rozwiazanie.

Zazwyczaj jak chce sie miec dostepny serwer z zewnatrz to sie statycznie natuje porty

Kod: Zaznacz cały

ip nat inside source static tcp  10.0.0.1  80  interface S0/0 80
Wtedy pakiety przychodzace z internetu sa mapowane nie na sam IP LANowski ale dodatkowo na okreslony port czyli na gniazdo 10.0.0.1 80

Host znajdujacy sie pod tym IP bedzie wiedzial ze pakiet jest skierowany do niego na port 80 i go przetworzy
pakiet trafi do serwera za NATem ale serwer odpowie przez default gateway który jest inny niż bym chciał).
Troche nie rozumiem.. brama domyslna to wyjscie po za siec LAN.

Powiedz w skrocie czy masz dwoch ISP i chcialbys cos pokombinowac ? bo jezeli o to chodzi to poroponuje HSRP z recznym load balancing.

defrag
wannabe
wannabe
Posty: 219
Rejestracja: 01 paź 2007, 15:19

#3

#3 Post autor: defrag »

jezeli dobrze rozumiem chodzi mu o to ze ten router na ktorym ma to statyczne mapowanie nie jest default gatewayem dla sieci lan - wiec w jedna strone pakiet dojdzie do serwera, ale odpowiedz juz serwer wysle do default gatewaya, a nie do tego routera o ktorym mowa

horhe358
wannabe
wannabe
Posty: 171
Rejestracja: 09 kwie 2006, 14:04
Lokalizacja: Poznań
Kontakt:

#4

#4 Post autor: horhe358 »

Dokładnie o to chodzi. Serwer ma default gateway inny niż urządzenia które ma zrobić NAT-a. Chcę żeby ruch z internetu na konkretny port trafiał do serwera tak jakby pochodził z sieci lokalnej i żeby serwer nie odpowiadał przez default gateway, tylko na adres IP w sieci lokalnej.

Na juniperach SSG udało się to zrobić bez większego problemu, a na cisco ... no właśnie. Póki co nie znalazłem łatwego rozwiązania (chodzi o zwykłe rutery, a nie ASA).

pozdr.,
Paweł

heniek
wannabe
wannabe
Posty: 114
Rejestracja: 28 wrz 2006, 18:15

#5

#5 Post autor: heniek »

hmm a probowales z ip nat outside source?

1) wybierz 1 adres z podsieci w ktorej jest wewnetrzny interfejs routera np.:
ip nat pool test 10.10.10.1 10.10.10.1 prefi /24

2) stworz acl
access-list 10 deny 10.0.0.0 0.255.255.255
access-lits 10 deny 172.16.0.0 0.15.255.255
access-lits 10 deny 192.168.0.0 0.0.255.255
access-lits 10 permit any

ip nat outside source list 10 pool test

3) oczywyscie translacje "w druge strone" tj. ip nat inside source (static pat) zakladam ze juz masz

horhe358
wannabe
wannabe
Posty: 171
Rejestracja: 09 kwie 2006, 14:04
Lokalizacja: Poznań
Kontakt:

#6

#6 Post autor: horhe358 »

Tak to próbowałem na szybko i efekt był taki, że pakiet do hosta za NATem faktycznie trafiał z podmienionymi i src i dst IP, ale sesja TCP się nie zestawiała. Konkretnie wyglądało to tak:
- do hosta trafia TCP SYN z podmienionym IP src (i dst)
- host odpowiada TCP SYN ACK (na adres rutera)
- ruter nie rozpoznawał sesji NAT i rzucał RST.

Potestuję to jeszcze - możliwe że gdzieś zrobiłem błąd i ruter nie rozpoznawał sesji poprawnie. Jak uda mi się do czegoś dojść dam znać :)

pozdr.,
Paweł

Seba
CCIE/CCDE Site Admin
CCIE/CCDE Site Admin
Posty: 6223
Rejestracja: 15 lip 2004, 20:35
Lokalizacja: Warsaw, PL

#7

#7 Post autor: Seba »

Moze zeby pominac faze wrozeni, wrzuc konfiguracje (czesc o NAT + ewentualne filtracje) tego co zrobiles/testowales dotychczas.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe."
A. Einstein

horhe358
wannabe
wannabe
Posty: 171
Rejestracja: 09 kwie 2006, 14:04
Lokalizacja: Poznań
Kontakt:

#8

#8 Post autor: horhe358 »

Konfiguracja którą testowałem wyglądała następująco:

Kod: Zaznacz cały

interface FastEthernet0/0
 ip address XXX.YYY.112.80 255.255.255.0
 ip nat outside
 ip virtual-reassembly
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 10.1.1.5 255.255.255.0
 ip nat inside
 ip virtual-reassembly
 duplex auto
 speed auto
!
ip nat pool WAN XXX.YYY.112.80 XXX.YYY.112.80 netmask 255.255.255.0
ip nat pool LAN 10.1.1.5 10.1.1.5 netmask 255.255.255.0
ip nat inside source list 1 pool WAN overload
ip nat inside source static tcp 10.1.1.2 3389 XXX.YYY.112.80 4000 extendable
ip nat outside source list 4 pool LAN
!
access-list 1 permit 10.1.1.0 0.0.0.255
access-list 2 permit XXX.YYY.112.80
access-list 4 deny   10.1.1.0 0.0.0.255
access-list 4 permit any
!
Ruter jest podpięty do WAN przez Fa0/0 i do LAN przez Fa0/1. Komputer w LAN ma adres bramy 10.1.1.1 (czyli nie Ruter który robi NAT). Komputer od strony WAN wysyłał pakiet na adres XXX.YYY.112.80 port 4000 a ruter miał wysłać do hosta 10.1.1.2 pakiet na port 3389 ze zmienionym IP docelowym na 10.1.1.2 (ip nat inside source static...) oraz IP źródłowym jako 10.1.1.5 (ip nat outside source list...). I taki pakiet faktycznie trafia. Problem w tym, że pakiet trafia do komputera, komputer na niego odpowiada, ale ruter wysyła wtedy RST i sesja TCP się nie zestawia. Podejrzewam, że z jakiegoś powodu ruter nie rozpoznaje sesji TCP dla pakietów wracających. Niestety nie zrobiłem zrzutu show ip nat translations - dołączę go jak tylko będę miał dostęp do urządzeń.

W wiresharku wygląda to tak jak na zrzucie ekranu:
http://horhe.eu/~pawel/ccie/nat-screen.jpg

A samego pakiety które są wtedy wymieniane tak:

http://horhe.eu/~pawel/ccie/nat-test1.pcap

pozdr.,
Paweł

EDIT: Do listingow konfiguracji, show, debug, etc uzywamy znacznikow

Kod: Zaznacz cały

Seba
Ostatnio zmieniony 30 mar 2009, 12:27 przez horhe358, łącznie zmieniany 1 raz.

horhe358
wannabe
wannabe
Posty: 171
Rejestracja: 09 kwie 2006, 14:04
Lokalizacja: Poznań
Kontakt:

#9

#9 Post autor: horhe358 »

Dzięki za poprawkę edycyjną i sorki za kłopot.

pozdr.,
Paweł

heniek
wannabe
wannabe
Posty: 114
Rejestracja: 28 wrz 2006, 18:15

#10

#10 Post autor: heniek »

a dlaczego POOL LAN ma taki sam adres jak interfejs wew? zmien na inny wolny i nie uzywany.

horhe358
wannabe
wannabe
Posty: 171
Rejestracja: 09 kwie 2006, 14:04
Lokalizacja: Poznań
Kontakt:

#11

#11 Post autor: horhe358 »

Wydawało mi się, że to nie przeszkadza że jest to ten sam IP (tak jak od strony outside adres w NAT to adres skonfigurowany na interfejsie). Tablica translacji NAT w momencie wywoływania takiego połączenia wyglądała następująco:

Kod: Zaznacz cały

Pro Inside global      Inside local       Outside local      Outside global
--- ---                ---                10.1.1.5           XXX.YYY.112.4
tcp XXX.YYY.112.80:4000 10.1.1.2:3389     10.1.1.5:1093      XXX.YYY.112.4:1093
tcp XXX.YYY.112.80:4000 10.1.1.2:3389     ---                ---
Zmiana adresu IP w nat-pool LAN na inny (10.1.1.6) nic nie zmieniła. Tablica NAT:

Kod: Zaznacz cały

Pro Inside global      Inside local       Outside local      Outside global
--- ---                ---                10.1.1.6           XXX.YYY.112.4
tcp XXX.YYY.112.80:4000 10.1.1.2:3389     10.1.1.6:1095      XXX.YYY.112.4:1095
tcp XXX.YYY.112.80:4000 10.1.1.2:3389     ---                ---
Efekt dokładnie taki sam jak w poprzednim przypadku:

http://horhe.eu/~pawel/ccie/nat-screen2.jpg

Awatar użytkownika
gangrena
CCIE/CCDE
CCIE/CCDE
Posty: 2349
Rejestracja: 08 mar 2004, 12:17
Lokalizacja: Wawa

#12

#12 Post autor: gangrena »

horhe358 pisze:Wydawało mi się, że to nie przeszkadza że jest to ten sam IP (tak jak od strony outside adres w NAT to adres skonfigurowany na interfejsie).
Przy takiej konfiguracji IP nie powinien być ten sam, co IP interfejsu routera.
horhe358 pisze:Zmiana adresu IP w nat-pool LAN na inny (10.1.1.6) nic nie zmieniła.
Dla innego adresu rozwiązanie już powinno działać. Jeżeli możesz, to zrestartuj router. Duża ilość zmian dotycząca NAT nie sprzyja poprawnemu działaniu na niektórych softach.

Poza tym, to konfiguracja:

Kod: Zaznacz cały

ip nat outside source list 4 pool LAN
nie pozwala na wykorzystanie overload. Zatem dla większej ilości użytkowników będzie problem z adresami. Jeżeli chcesz zrobić PAT z zewnątrz na wewnętrzny adres IP routera, to polecam ip nat enable
Konfiguracja wyglądałaby wówczas następująco (nie potrzeba definiować puli):

Kod: Zaznacz cały

!
interface FastEthernet0/0
 ip address XXX.YYY.112.80 255.255.255.0
 ip nat outside
 ip nat enable
 ip virtual-reassembly
!
interface FastEthernet0/1
 ip address 10.1.1.5 255.255.255.0
 ip nat inside
 ip nat enable
 ip virtual-reassembly
!
ip nat inside source static tcp 10.1.1.2 3389 XXX.YYY.112.80 4000 extendable
ip nat source list 4 interface FastEthernet0/1 overload
!
access-list 4 deny   10.1.1.0 0.0.0.255
access-list 4 permit any
!

defrag
wannabe
wannabe
Posty: 219
Rejestracja: 01 paź 2007, 15:19

#13

#13 Post autor: defrag »

Tez wydaje mi sie ze podmieniany adres source powinien byc z sieco lokalnej ale inny niz interfejsu routera. Oprocz tego moze sie myle, ale czy nie nalezaloby na serwerze zrobic statyczny wpis arp dla tego innego adresu i podac tam mac interfejsu wewnetrzengo routera?

Awatar użytkownika
gangrena
CCIE/CCDE
CCIE/CCDE
Posty: 2349
Rejestracja: 08 mar 2004, 12:17
Lokalizacja: Wawa

#14

#14 Post autor: gangrena »

defrag pisze:Tez wydaje mi sie ze podmieniany adres source powinien byc z sieco lokalnej ale inny niz interfejsu routera.
Dla rozwiązania łączonego ip nat inside/outside/enable można wykorzystać bez problemu interfejs routera. Przykład konfiguracji powyżej.
defrag pisze:Oprocz tego moze sie myle, ale czy nie nalezaloby na serwerze zrobic statyczny wpis arp dla tego innego adresu i podac tam mac interfejsu wewnetrzengo routera?
Nie jest to konieczne.

horhe358
wannabe
wannabe
Posty: 171
Rejestracja: 09 kwie 2006, 14:04
Lokalizacja: Poznań
Kontakt:

#15

#15 Post autor: horhe358 »

gangrena - Twoje rozwiązanie zadziałało poprawnie. Pakiety są widoczne od strony LAN z ip-src interfejsu wewnętrznego rutera - czyli tak jak miało być. Dzięki - nie korzystałem nigdy wcześniej z ip nat enable.

pozdr.,
Paweł

ODPOWIEDZ