NAT source/dst jednocześnie na Cisco, ale nie ASA
NAT source/dst jednocześnie na Cisco, ale nie ASA
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ł
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ł
Szczerze powiem to nie wiem o co ci chodzi.. co ma NAT do dostepnosci serwera w lokalnej sieci ?
Zazwyczaj jak chce sie miec dostepny serwer z zewnatrz to sie statycznie natuje porty
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
Powiedz w skrocie czy masz dwoch ISP i chcialbys cos pokombinowac ? bo jezeli o to chodzi to poroponuje HSRP z recznym load balancing.
wydaje mi sie to w ogole bez sensowne rozwiazanie.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
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
Host znajdujacy sie pod tym IP bedzie wiedzial ze pakiet jest skierowany do niego na port 80 i go przetworzy
Troche nie rozumiem.. brama domyslna to wyjscie po za siec LAN.pakiet trafi do serwera za NATem ale serwer odpowie przez default gateway który jest inny niż bym chciał).
Powiedz w skrocie czy masz dwoch ISP i chcialbys cos pokombinowac ? bo jezeli o to chodzi to poroponuje HSRP z recznym load balancing.
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ł
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ł
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
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
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ł
- 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ł
Konfiguracja którą testowałem wyglądała następująco:
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
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
!
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.
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:
Zmiana adresu IP w nat-pool LAN na inny (10.1.1.6) nic nie zmieniła. Tablica NAT:
Efekt dokładnie taki sam jak w poprzednim przypadku:
http://horhe.eu/~pawel/ccie/nat-screen2.jpg
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 --- ---
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 --- ---
http://horhe.eu/~pawel/ccie/nat-screen2.jpg
Przy takiej konfiguracji IP nie powinien być ten sam, co IP interfejsu routera.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).
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.horhe358 pisze:Zmiana adresu IP w nat-pool LAN na inny (10.1.1.6) nic nie zmieniła.
Poza tym, to konfiguracja:
Kod: Zaznacz cały
ip nat outside source list 4 pool LAN
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
!
Dla rozwiązania łączonego ip nat inside/outside/enable można wykorzystać bez problemu interfejs routera. Przykład konfiguracji powyżej.defrag pisze:Tez wydaje mi sie ze podmieniany adres source powinien byc z sieco lokalnej ale inny niz interfejsu routera.
Nie jest to konieczne.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?