Konfiguracja routerów Cisco

6. NAT i PAT 6.1. Konfiguracja NAT-a Uwaga: Defaultowa scieżka routingu musi być prawidłowo ustawiona Określenie które interfejsy są wewnętrzne a które zewnętrzne: gw1-bogus(config-if)#ip nat inside lub gw1-bogus(config-if)#ip nat outside […]

6. NAT i PAT

6.1. Konfiguracja NAT-a

Uwaga: Defaultowa scieżka routingu musi być prawidłowo ustawiona

Określenie które interfejsy są wewnętrzne a które zewnętrzne:


gw1-bogus(config-if)#ip nat inside

lub


gw1-bogus(config-if)#ip nat outside

np.:


gw1-bogus(config)#interface serial 2/0
gw1-bogus(config-if)#ip nat outside
gw1-bogus(config-if)#exit
gw1-bogus(config)#interface e0
gw1-bogus(config-if)#ip nat inside

6.1.1. NAT na bazie listy standardowej

Uwaga: Lista standardowa jest wystarczającym rozwiązaniem przy ustawianiu NAT-a obejmującego cały ruch wyjściowy. Jeśli chcemy wprowadzić ograniczenie NAT-a na podstawie adresów przeznaczenia, wówczas potrzebny jest NAT na bazie listy rozszerzonej – patrz następny rozdział !.

Ustawienie standardowego ACL-a który uruchamia NAT-a dla ruchu z wybranych sieci/hostów wewnętrznych (permit) lub blokuje NAT-a dla innych sieci/hostów wewnętrznych (deny):


gw1-bogus(config)#acces-list <ACL_1> permit <addres_sieci> <wildcard_bits>

np.


gw1-bogus(config)#acces-list 1 permit 192.168.1.0 0.0.0.255

Konfiguracja ACL wg potrzeb… Jeśli chcesz wiedzieć więcej o możliwych do osiągnięcia konfiguracjach ACL-ów proszę poczytaj o nich na cisco.com.

Komenda włączająca NAT’a dla sieci wewnętrznej:


gw1-bogus(config)#ip nat inside source list <ACL_1> interface <interface> overload

i tak

  • inside source – właczone NATowanie pakietów z wewnętrznych sieci (włączona zamiana pola source adress w nagłówku pakietu)
  • <ACL_1> – nr ACL-a sterującego dostępem do NAT-a
  • <interface> – nazwa interfejsu którego adres jest wstawiany w pole source address
  • overload – zmiana wielu adresów na jeden – PAT (inaczej byłoby 1 w 1 – NAT)

np.


gw1-bogus(config)#ip nat inside source list 1 interface e0 overload

6.1.2. NAT na bazie listy rozszerzonej

Uwaga: Lista rozszerzona pozwala wyłączyć z NAT-a ruch wyjściowy na podstawie adresu przeznaczenia. Tego typu NAT jest nieodzowny np. przy ustawianiu zdalnego dostępu klientów VPN – wówczas ruch skierowany do zdalnych klientow VPN nie powinien być NAT-owany.

Zakładamy, że ustawiono rozszerzonego ACL-a nr 199, który uruchamia (permit) lub blokuje (deny) NAT-a.

W kolejnym kroku konfigurujemy mapę routingu (router-map) obejmującą ruch zdefiniowany przez rozszerzonego ACL-a nr 199:


gw1-bogus(config)#route-map <route-map-name> permit 10
gw1-bogus(config-route-map)#match ip address <extended_ACL_for_NAT>

np.


gw1-bogus(config)#route-map make_nat permit 10
gw1-bogus(config-route-map)#match ip address 199

Komenda włączająca NAT’a dla sieci wewnętrznej:


gw1-bogus(config)#ip nat inside source route-map <route-map-name> interface <interface> overload

i tak

  • inside source – właczone NATowanie pakietów z wewnętrznych sieci (włączona zamiana pola source adress w nagłówku pakietu)
  • <router-map-name> – nazwa mapy routingu sterującej dostępem do NAT-a
  • <interface> – nazwa interfejsu którego adres jest wstawiany w pole source address
  • overload – zmiana wielu adresów na jeden – PAT (inaczej byłoby 1 w 1 – NAT)

np.


gw1-bogus(config)#ip nat inside source route-map make_nat interface e0 overload

6.2. Statyczny PAT – udostępnianie lokalnych serwisów na zewnętrznym interfejsie

Aby udostępnić usługę widoczną jedynie w sieci lokalnej na zewnętrznym interfejsie routera należy przekierować ruch przychodzący z zewnątrz skierowany do wybranej usługi na adres serwera pracującego w sieci wewnętrznej.

Poniższa konfiguracja pozawala również dokonać translacji portu wywoływanego przez klientów zewnętrznych na odpowiedni (ten sam lub inny) port serwera pracującego w sieci wewnętrznej.

Statyczna translacja adresu i portu przeznaczenia wykonywana jest w następujący sposób:


gw1-bogus(config)#ip nat inside source static <tcp|udp> <local_address> <local_port> <rmt_address> <rmt_port> extendable

i tak:

  • inside source – właczony NAT pakietów z wewnętrznych sieci (zamiana pola source adress w nagłówku pakietu)
  • static – uruchomienie translacji statycznej (1 adres na 1 adres)
  • <tcp|udp> – typ NATowanego ruchu
  • <local_address> – adres serwera lokalnego
  • <local_port> – port usługi uruchomionej na serwerze lokalnym
  • <rmt_address> – adres interfejsu zewnętrznego na którym udostępniamy usługę
  • <rmt_port> – port na którym udostępniamy usługę na zewnątrz sieci
  • extendable – włączona translacja rozszerzona

Uwaga: Należy zadbać by zewnętrzny ruch wejściowy skierowany na port <rmt_port> nie był odrzucany przez firewall.

6.3. Transparent proxy

Zakładamy ze serwer proxy jest postawiony na serwerze w sieci lokalnej lub w DMZ-cie i przechwytuje ruch WWW. Rolą routera jest przekierowanie całego ruchu WWW na ten serwer oraz przepuszczanie ruchu WWW wygenerowanego przez serwer proxy.

Tworzymy access-list-y dla mapy routingu , która będzie decydować jaki ruch przekierować do serwera proxy:


gw1-bogus(config)#acces-list <ACL_2> deny tcp any any neq www
gw1-bogus(config)#acces-list <ACL_2> deny tcp host <proxy_srv_address> any
gw1-bogus(config)#acces-list <ACL_2> permit tcp any any

gdzie:

  • <ACL_2> – nr ACL-a sterującego przekierowywaniem ruchu
  • <proxy_srv_address> – adres serwera proxy

Następnie tworzymy mapę routingu dla ruchu przekierowywanego:


gw1-bogus(config)#route-map <route-map-name> permit 10
gw1-bogus(config-route-map)#match ip address <ACL_2>
gw1-bogus(config-route-map)#set ip next-hop <proxy_srv_address>

gdzie:

  • <route-map-name> – nazwa tworzonej mapy routingu
  • <ACL_2> – nr ACL-a sterującego przekierowywaniem ruchu
  • <proxy_srv_address> – adres serwera proxy

W końcu podpinamy stworzoną mapę routingu do każdego wewnętrznego interfejsu routera:


gw1-bogus(config-if)#ip policy route-map <route-map-name>

gdzie:

  • <route-map-name> – nazwa stworzonej mapy routingu

Uwaga: Aby serwer proxy działał poprawnie należy na hoście serwera proxy dokonać lokalnego przekierowania ruchu przychodzącego z portu 80 na port serwera proxy (np. 8080 lub 3128).

Konfiguracja serwera proxy Squid (/etc/squid/squid.conf):


http_port 3128
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

W końcu na hoście serwera proxy należy przekierować ruch z portu 80 na port 3128:


#iptables -A PREROUTING -s 192.168.1.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

Natomiast jeśli serwer proxy znajduje się na innym hoście np. w innej podsieci:


#iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 202.0.0.2:3128

Strony: 1 2 3 4