Что такое nat в роутере cisco

    Introduction

    This document describes how to configure the Network Address Translation (NAT) on a Cisco router.

    Prerequisites

    Requirements

    This document requires a basic knowledge of the terms used in connection with NAT. 

    Components Used

    The information in this document is based on these software and hardware versions:

    • Cisco 2500 Series Routers

    • Cisco IOS®Software Release 12.2 (10b)

    The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, ensure that you understand the potential impact of any command.

    Conventions

    Refer to Cisco Technical Tips Conventions for more information on document conventions.

    Quick Start Steps to Configure and Deploy NAT

    Note: In this document, when the internet, or an internet device is referred to, it means a device on any external network.

    When you configure NAT, it is sometimes difficult to know where to begin, especially if you are new to NAT. These steps guide you to define what you want NAT to do and how to configure it:

    1. Define NAT inside and outside interfaces .

      • Do users exist off multiple interfaces?

      • Are there multiple interfaces available to the internet?

    2. Define what you want to accomplish with NAT.

      • Do you want to allow internal users to access the internet ?

      • Do you want to allow the internet to access internal devices (such as a mail server or web server)?

      • Do you want to redirect TCP traffic to another TCP port or address ?

      • Do you want to use  NAT during a network transition (for example, you changed a server IP address and until you can update all the clients you want the non-updated clients to be able to access the server with the original IP address as well as allow the updated clients to access the server with the new address)?

      • Do you want to use to allow networks that overlap to communicate ?

    3. Configure NAT in order to accomplish what you defined previously. Based on what you defined in step 2, you need determine which of the next features to use:

      • Static NAT

      • Dynamic NAT

      • Overloading

      • Any combination of these features.

    4. Verify the NAT operation.

    Each of these NAT examples guides you through steps 1 through 3 of the Quick Start Steps in the previous image. These examples describe some common scenarios in which Cisco recommends you deploy NAT.

    Define NAT Inside and Outside Interfaces

    The first step to deploy NAT is to define NAT inside and outside interfaces. You can find it easiest to define your internal network as inside, and the external network as outside. However, the terms internal and external are subject to arbitration as well. This figure shows an example of this.

    NAT TopologyNAT Topology

    Examples

    1. Allow Internal Users to Access the Internet

    Is possible that you want to allow internal users to access the internet, but you do not have enough valid addresses to accommodate everyone. If all communication with devices in the internet originate from the internal devices, you need a single valid address or a pool of valid addresses.

    This figure shows a simple network diagram with the router interfaces defined as inside and outside.

    Available Valid AddressesAvailable Valid Addresses

    In this example, you want NAT to allow certain devices (the first 31 from each subnet) on the inside to originate communication with devices on the outside and translates their invalid address to a valid address or pool of addresses. The pool has been defined as the range of addresses 172.16.10.1 through 172.16.10.63.

    You can now configure NAT. In order to accomplish what is defined in the previous image, use dynamic NAT. With dynamic NAT, the translation table in the router is initially empty and gets populated once traffic that needs to be translated passes through the router. As opposed to static NAT, where a translation is statically configured and is placed in the translation table without the need for any traffic.

    In this example, you can configure NAT to translate each of the inside devices to a unique valid address, or to translate each of the inside devices to the same valid address. This second method is known as overloading . An example of how to configure each method is given here.

    Configure NAT to Allow Internal Users to Access the Internet

    NAT Router
    interface ethernet 0
     ip address 10.10.10.1 255.255.255.0
     ip nat inside
    
    !--- Defines Ethernet 0 with an IP address and as a NAT inside interface.
    
    
    interface ethernet 1
     ip address 10.10.20.1 255.255.255.0
     ip nat inside
    
    !--- Defines Ethernet 1 with an IP address and as a NAT inside interface.
    
    
    interface serial 0
     ip address 172.16.10.64 255.255.255.0
     ip nat outside
    
    !--- Defines serial 0 with an IP address and as a NAT outside interface.
    
     
    ip nat pool no-overload 172.16.10.1 172.16.10.63 prefix 24
    
    
    !--- Defines a NAT pool named no-overload with a range of addresses 
    !--- 172.16.10.1 - 172.16.10.63.
    ip nat inside source list 7 pool no-overload !--- Indicates that any packets received on the inside interface that
    !--- are permitted by access-list 7 has
    !--- the source address translated to an address out of the
    !--- NAT pool "no-overload".
    access-list 7 permit 10.10.10.0 0.0.0.31 access-list 7 permit 10.10.20.0 0.0.0.31 !--- Access-list 7 permits packets with source addresses ranging from
    !--- 10.10.10.0 through 10.10.10.31 and 10.10.20.0 through 10.10.20.31.

    Note: Cisco highly recommends that you do not configure access lists referenced by NAT commands with permit any. If you use permit any in NAT, it consumes too many router resources which can cause network problems.

    Notice in the previous configuration that only the first 32 addresses from subnet 10.10.10.0 and the first 32 addresses from subnet 10.10.20.0 are permitted by access-list 7 . Therefore, only these source addresses are translated. There can be other devices with other addresses on the inside network, but these are not translated.

    The final step is to verify that NAT is operates as intended .

    Configure NAT to Allow Internal Users to Access the Internet with Overload

    NAT Router
    interface ethernet 0
     ip address 10.10.10.1 255.255.255.0
     ip nat inside
    
    !--- Defines Ethernet 0 with an IP address and as a NAT inside interface.
    
    
    interface ethernet 1
     ip address 10.10.20.1 255.255.255.0
     ip nat inside
    
    !--- Defines Ethernet 1 with an IP address and as a NAT inside interface.
    
    
    interface serial 0
     ip address 172.16.10.64 255.255.255.0
     ip nat outside
    
    !--- Defines serial 0 with an IP address and as a NAT outside interface.
    
    
    ip nat pool ovrld 172.16.10.1 172.16.10.1 prefix 24
    !--- Defines a NAT pool named ovrld with a range of a single IP
    !--- address, 172.16.10.1.
    ip nat inside source list 7 pool ovrld overload !--- Indicates that any packets received on the inside interface that
    !--- are permitted by access-list 7 has the source address
    !--- translated to an address out of the NAT pool named ovrld.
    !--- Translations are overloaded, which allows multiple inside
    !--- devices to be translated to the same valid IP address.
    access-list 7 permit 10.10.10.0 0.0.0.31 access-list 7 permit 10.10.20.0 0.0.0.31 !--- Access-list 7 permits packets with source addresses ranging from
    !--- 10.10.10.0 through 10.10.10.31 and 10.10.20.0 through 10.10.20.31.

    Notice in the previous second configuration, the NAT pool ovrld only has a range of one address. The keyword overload used in the ip nat inside source list 7 pool ovrld overload command allows NAT to translate multiple inside devices to the single address in the pool.

    Another variation of this command is ip nat inside source list 7 interface serial 0 overload , which configures NAT to overload on the address that is assigned to the serial 0 interface.

    When overloading  is configured, the router maintains enough information from higher-level protocols (for example, TCP or UDP port numbers) to translate the global address back to the correct local address. For definitions of global and local address, refer to NAT: Global and Local Definitions .

    The final step is to verify that NAT is operates as intended .

    2. Allow the Internet to Access Internal Devices

    You can need internal devices to exchange information with devices on the internet, where the communication is initiated from the internet devices, for example, email. It is typical for devices on the internet to send email to a mail server that resides on the internal network.

    Originate CommunicationsOriginate Communications

    Configure NAT to Allow the Internet to Access Internal Devices

    In this example, you first define the NAT inside and outside interfaces, as shown in the previous network diagram.

    Second, you define that you want users on the inside to be able to originate communication with the outside. Devices on the outside must be able to originate communication with only the mail server on the inside.

    The third step is to configure NAT. To accomplish what you have defined, you can configure static and dynamic NAT together. For more information on how to configure this example, refer to Configure Static and Dynamic NAT Simultaneously . The final step is to verify that NAT operates as intended .

    3. Redirect TCP Traffic to Another TCP Port or Address

    A web server on the internal network is another example of when it can be necessary for devices on the internet to initiate communication with internal devices. In some cases, the internal web server can be configured to listen for web traffic on a TCP port other than port 80. For example, the internal web server can be configured to listen to TCP port 8080. In this case, you can use NAT to redirect traffic destined to TCP port 80 to TCP port 8080.

    Web Traffic TCP PortWeb Traffic TCP Port

    After you define the interfaces as shown in the previous network diagram, you can decide that you want NAT to redirect packets from the outside destined for 172.16.10.8:80 to 172.16.10.8:8080. You can use a static nat command in order to translate the TCP port number to achieve this. A sample configuration is shown here.

    Configure NAT to Redirect TCP Traffic to Another TCP Port or Address

    NAT Router
    interface ethernet 0 
     ip address 172.16.10.1 255.255.255.0
     ip nat inside
    
    !--- Defines Ethernet 0 with an IP address and as a NAT inside interface.
    
    
    interface serial 0
     ip address 10.200.200.5 255.255.255.252
     ip nat outside
    
    !--- Defines serial 0 with an IP address and as a NAT outside interface.
    
    
    ip nat inside source static tcp 172.16.10.8 8080 172.16.10.8 80
    
    !--- Static NAT command that states any packet received in the inside 
    !--- interface with a source IP address of 172.16.10.8:8080 is
    !--- translated to 172.16.10.8:80.

    Note: The configuration description for the static NAT command indicates any packet received in the inside interface with a source address of 172.16.10.8:8080 is translated to 172.16.10.8:80. This also implies that any packet received on the outside interface with a destination address of 172.16.10.8:80 has the destination translated to 172.16.10.8:8080.

    The final step is to verify that NAT operates as intended .

    show ip nat translations
    Pro Inside global      Inside local       Outside local      Outside global
    tcp 172.16.10.8:80     172.16.10.8:8080   ---                ---

    4. Use NAT For a Network Transition

    NAT is useful when you need to readdress devices on the network or when you replace one device with another. For instance, if all devices in the network use a particular server and this server needs to be replaced with a new one that has a new IP address, the reconfiguration of all the network devices to use the new server address takes some time. In the meantime, you can use NAT in order to configure the devices with the old address to translate their packets to communicate with the new server.

    NAT Network TransitionNAT Network Transition

    Once you have defined the NAT interfaces as the previous image illustrates, you can decide that you want NAT to allow packets from the outside destined for the old server address (172.16.10.8) to be translated and sent to the new server address. Note that the new server is on another LAN, and devices on this LAN or any devices reachable through this LAN (devices on the inside part of the network), must be configured to use the new server IP address if possible.

    You can use static NAT to accomplish what you need. This is a sample configuration.

    Configure NAT for Use Through a Network Transition

    NAT Router
    interface ethernet 0
     ip address 172.16.10.1 255.255.255.0
     ip nat outside
    
    !--- Defines Ethernet 0 with an IP address and as a NAT outside interface.
    
    
    interface ethernet 1
     ip address 172.16.50.1 255.255.255.0
     ip nat inside
    
    !--- Defines Ethernet 1 with an IP address and as a NAT inside interface.
    
    
    interface serial 0
     ip address 10.200.200.5 255.255.255.252
    
    !--- Defines serial 0 with an IP address. This interface is not 
    !--- participating in NAT.
    ip nat inside source static 172.16.50.8 172.16.10.8 !--- States that any packet received on the inside interface with a
    !--- source IP address of 172.16.50.8 is translated to 172.16.10.8.

    Note: The inside source NAT command in this example also implies that packets received on the outside interface with a destination address of 172.16.10.8 has the destination address translated to 172.16.50.8.

    The final step is to verify that NAT operates as intended .

    5. Use NAT for Networks that Overlap

    Networks that overlap result when you assign IP addresses to internal devices that are already used by other devices within the internet. These networks also result when two companies, both of whom use RFC 1918 IP addresses in their networks, merge. These two networks need to communicate, preferably without all of their devices readdressed.

    Difference between One-to-One and Many-to-Many Mapping

    A static NAT configuration creates a one-to-one mapping and translates a specific address to another address. This type of configuration creates a permanent entry in the NAT table as long as the configuration is present and enables both inside and outside hosts to initiate a connection. This is mostly useful for hosts that provide application services like mail, web, FTP and so forth. For example:

    Router(config)#ip nat inside source static 10.3.2.11 10.41.10.12
    Router(config)#ip nat inside source static 10.3.2.12 10.41.10.13
    

    Dynamic NAT is useful when fewer addresses are available than the actual number of hosts to be translated. It creates an entry in the NAT table when the host initiates a connection and establishes a one-to-one mapping between the addresses. But, the mapping can vary and it depends upon the registered address available in the pool at the time of the communication. Dynamic NAT allows sessions to be initiated only from inside or outside networks for which it is configured. Dynamic NAT entries are removed from the translation table if the host does not communicate for a specific period of time which is configurable. The address is then returned to the pool for use by another host.

    For example, complete these steps of the detailed configuration:

    1. Create a pool of addresses

      Router(config)#ip nat pool MYPOOLEXAMPLE 10.41.10.1 10.41.10.41 netmask 255.255.255.0
      
    2. Create an access-list for the inside networks that has to be mapped

      Router(config)#access-list 100 permit ip 10.3.2.0 0.0.0.255 any
      
    3. Associate the access-list 100 that select the internal network 10.3.2.0 0.0.0.255 to be natted to the pool MYPOOLEXAMPLE and then overload the addresses.

      Router(config)#ip nat inside source list 100 pool MYPOOLEXAMPLE overload
      

    Verify the NAT Operation

    Once you have configured NAT, verify that it operates as expected. You can do this in a number of ways: with a network analyzer, show commands, or debug commands. For a detailed example of NAT verification, refer to Verify NAT Operation and Basic NAT .

    Conclusion

    The examples in this document demonstrate quick start steps can help you configure and deploy NAT.

    These quick start steps include:

    1. Define NAT inside and outside interfaces.

    2. What do you want to accomplish with NAT.

    3. Configure NAT in order to accomplish what you defined in Step 2.

    4. Verify the NAT operation.

    In each of the previous examples, various forms of the ip nat inside command were used. You can also use the ip nat outside command in order to accomplish the same objectives, but keep in mind the NAT order of operations. For configuration examples that use the ip nat outside commands, refer to Sample Configuration that Uses the IP NAT Outside Source List Command .

    The previous examples also demonstrated these actions:

    Command Action
    ip nat inside source
    • Translates the source of IP packets that travel inside to outside.
    • Translates the destination of the IP packets that travel outside to inside.
    ip nat outside source
    • Translates the source of the IP packets that travel outside to inside.
    • Translates the destination of the IP packets that travel inside to outside.

    Related Information

    • NAT: Local and Global Definitions.
    • NAT Support Page
    • IP Routed Protocols Support Page
    • IP Routing Support Page
    • IP Addressing Services
    • NAT Order of Operation
    • Frequently Asked Questions about Cisco IOS NAT
    • Technical Support & Documentation — Cisco Systems

    Время на прочтение
    8 мин

    Количество просмотров 281K

    Добрый день, коллеги!

    судя по многочисленным вопросам на форуме (ссылка в конце поста), от слушателей и коллег, работа NAT на маршрутизаторах Cisco (firewall’ы я опущу, Fedia достаточно подробно его работу расписал в своей серии статей про Cisco ASA) плохо описана, поэтому я попробую описать свой опыт и свое понимание данной технологии в большинстве ее ипостасей. Не претендую на всеобъемлющее описание и 100% точность, но кому интересно — велкам под кат.

    Итак, для структурности описания разберемся с определением, что такое NAT.

    Определение

    . NAT (Network Address Translation) — технология трансляции сетевых адресов, т.е. подмены адресов в заголовке IP-пакета (иногда может еще и порт менять в заголовках TCP/UDP, но об этом позже).

    Другими словами, пакет, проходя через маршрутизатор, может поменять свой адрес источника и/или назначения.

    Зачем это нужно

    ?
    1. Для обеспечения доступа из LAN, где чаще всего используются частные IP-адреса, в Internet, где маршрутизируются только глобальные IP-адреса.
    2. (в меньшей степени) для сокрытия топологии сети и создания некоторого защитного барьера для проникновения внутрь сети (обсудим это позже на примере).

    NAT бывает разным :) И хотя много по этому поводу уже написано, есть желание отправлять новичков с вопросами о NAT по конкретному адресу, поэтому я все же приведу некоторую

    классификацию

    .
    1. Static NAT — статический NAT задает однозначное соответствие одного адреса другому. Иными словами, при прохождении через маршрутизатор, адрес(а) меняются на строго заданный адрес, один-к-одному. (к примеру 10.1.1.1 всегда заменяется на 11.1.1.1 и обратно, но никогда на 12.1.1.1). Запись о такой трансляции хранится неограниченно долго, пока есть строчка в конфиге.
    2. Dynamic NAT — при прохождении через маршрутизатор, новый адрес выбирается динамически из некоторого куска адресов, называемого пулом (англ. pool). Запись о трансляции хранится некоторое время, чтобы ответные пакеты могли быть доставлены адресату. Если в течение некоторого времени трафик по этой трансляции отсутствует, трансляция удаляется и адрес возвращается в пул. Если требуется создать трансляцию, а свободных адресов в пуле нет, то пакет отбрасывается. Иными словами, хорошо бы, чтобы число внутренних адресов было ненамного больше числа адресов в пуле, иначе высока вероятность проблем с доступом наружу.
    3. Dynamic NAT with overload или PAT. Работает почти также, как dynamic NAT, но при этом происходит трансляция много-в-один, задействуя при этом возможности транспортного уровня. Об этом подробнее на примере дальше.

    Поскольку я чаще всего работаю именно с железом Cisco, я опишу в статье именно особенности работы и возможные варианты NAT именно на этих железках.
    Давайте посмотрим, что у нас есть в этом случае.

    1. inside source NAT

    Самый распространенный и достаточно простой вариант. Допустим у нас есть такая топология:

    Другими словами,
    а) подсеть внутренних адресов — 10.0.0.0/8
    б) подсеть внешних адресов — 11.0.0.0/8

    и мы хотим транслировать каким-то образом внутренние адреса во внешние при прохождении трафика через маршрутизатор.

    Что для этого нужно?

    1. Мы явно указываем, что мы хотим транслировать. Т.е. какой трафик и от каких хостов.
    2. Мы явно указываем, во что мы хотим траслировать, т.е. пул внешних адресов (или единственный адрес для статической трансляции).
    3. Помечаем внутренний и внешний интерфейс.
    4. Включаем трансляцию.

    На п.3 я себе позволю остановиться подробнее, потому что именно здесь часто происходит непонимание.

    Как это работает?

    Итак, допустим мы решили, что будем транслировать всю 10ю сеть целиком в 11ю. Задали их соответствующим образом (настройки потом, сначала теория). И пометили наши интерфейсы как внутренний (inside) и внешний (outside).
    Теперь, давайте разберемся, что делает именно inside source NAT. На самом деле, в названии зашита половина действия :) а именно: у пакета, пришедшего на

    inside

    интерфейс меняется

    source

    :). Но помните, мы говорили о том, что ответные пакеты должны доходить до нашего внутреннего хоста? Отсюда вторая половина действия: у пакета, пришедшего на

    outside

    интерфейс меняется

    destination

    .

    Рассмотрим

    прямую трансляцию

    .
    1. Трафик, приходя на интерфейс, помеченный как inside, если он соответствует тому, что мы хотим транслировать, маркируется как возможно_транслируемый. Часто полагают, что в этот момент происходит трансляция, но это не так.
    2. Следующим этапом, трафик подвеграется маршрутизации (PBR и обычной). И если при этом трафик направляется на интерфейс, помеченный как outside — только тогда происходит трансляция. Если трансляция динамическая, маршрутизатор проверяет ее наличие в таблице трансляций. Если ее там нет — создает, если уже есть — обнуляет счетчик неактивности. Если же пакет попадает на выход на интерфейс, не помеченный как outside — трансляция НЕ происходит.

    Теперь

    обратная трансляция

    .
    1. Трафик, попадая на outside интерфейс, в противовес прямой трансляции, сначала подвергается NAT. Если трансляция существует (неважно, динамическая или статическая), в случае с inside source NAT, у него меняется destination. И только после этого трафик подвергается маршрутизации и перенаправляется по назначению.

    Поэтому маркировать интерфейсы как inside или outside нужно именно принимая во внимание механизм работы.

    Замечания и следствия

    .
    1. Для обратной трансляции не обязательно наличие метки inside на каком-либо интерфейсе. Все равно, если прямая трансляция существует, обратная трансляция сработает до маршрутизации. Но когда будет существовать такая трансляция, ведь мы обсуждали, что трафик должен пройти через inside интерфейс для создания прямой трансляции? Отсюда
    2. Трафик самого роутера подвергается трансляции, если он попадает на интерфейс, помеченный как outside и удовлетворяет правилу NAT. И это сколь полезно, столь и опасно. С одной стороны, мы можем транслировать трафик роутера как и любой другой. С другой стороны, многие хотят описать трафик, подлежащий трансляции как permit any, но тогда и, например, пакеты протоколов маршрутизации будут транслироваться, что приведет к сбою.
    3. Интерфейсы типа loopback маршрутизатора трактуются как и любые другие, мы можем метить их как inside или outside, заворачивать на них трафик и получать от этого профит :)

    Теперь посмотрим общую конфигурацию, а потом еще несколько частных случаев.

    Конфигурация inside source NAT

    inside source dynamic NAT

    1. Указываем, что транслировать. Для этого создаем access-list, перечисляющий трафик. Например, в нашем случае достаточно одной строчки:
    (config)# access-list 100 permit ip 10.0.0.0 0.255.255.255 any

    Замечание

    . В ACL могут встречаться строчки deny. Вопреки распространенному заблуждению, трафик удовлетворяющей данной строчке не дропается, а просто не подвеграется трансляции. Так же, ACL может быть стандартным и расширенным, нумерованным и именованным.
    2. Создаем пул из адресов, указывая стартовый и конечный адрес. Например так:
    (config)# ip nat pool NAME_OF_POOL 11.1.1.10 11.1.1.20 netmask 255.255.255.0

    Замечания

    .
    1. Стартовый и конечный адрес в пуле могут совпадать, тогда трансляция будет в 1 адрес.
    2. Опция netmask, хотя и является обязательной, по моему мнению — рудимент. Она позволяет вырезать из диапазона адресов в пуле те адреса, которые являются адресами подсети или бродкастными при данной маске.
    3. Маркируем интерфейсы. В нашем случае достаточно
    (config)# interface fa 0/0
    (config-if)# ip nat inside

    и
    (config)# interface fa 0/1
    (config-if)# ip nat outside

    4. создаем собственно трансляцию:
    ip nat inside source list 100 pool NAME_OF_POOL

    вуаля :) Если мы теперь обратимся например с хоста 10.1.1.1 к хосту 11.1.1.2, то получим такую трансляцию:
    Router#sh ip nat translations
    Pro Inside global Inside local Outside local Outside global
    tcp 11.1.1.10:55209 10.0.1.1:55209 11.1.1.2:23 11.1.1.2:23

    Интересно, что хотя в таблице явно записаны source port и destination port, трансляция создается целиком для адреса. И на время ее жизни в таблице трансляция, пакеты снаружи могут проходить на внешний адрес (inside global)
    Например, пинг с некоторого адреса во внешней сети на наш inside global будет успешным (на время жизни трансляции):
    R4#ping 11.1.1.10
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 11.1.1.10, timeout is 2 seconds:
    !!!!!

    Иными словами, открывается трансляция единожды и к некоторому хосту, после этого некоторое время действует для любого адреса извне.

    inside source dynamic NAT with overload

    П. 1,2 и 3 — как в предыдущем разделе.
    4. Создаем собственно трансляцию:
    ip nat inside source list 100 pool NAME_OF_POOL overload
    Видим, что добавилось всего одно слово: overload. Но оно существенно изменило схему работы трансляции.
    Как было сказано, PAT — это трансляция много-в-мало или даже много-в-один. Но чтобы можно было отличить трафик одного соединения от другого, маршрутизатор будет менять не только IP-адреса, но еще и TCP/UDP порты.

    Замечание

    . Схема работы с портами (когда меняется source, когда destination) — такая же, как и схема работы с IP-адресами.
    Другими словами, при обращении изнутри наружу меняется source IP и source port, запись об этом вносится в таблицу трансляций. При обратной трансляции — все меняется наоборот.

    Посмотрим, что изменилось:
    R3#sh ip nat translations
    Pro Inside global Inside local Outside local Outside global
    tcp 11.1.1.11:21545 10.0.1.1:21545 11.1.1.2:23 11.1.1.2:23
    tcp 11.1.1.11:49000 10.0.2.1:49000 11.1.1.2:23 11.1.1.2:23

    Видим, что разные внутренние адреса (10.0.1.1 и 10.0.2.1) странслировались в один внешний (11.1.1.11).

    Замечания

    .
    1. Кажется, что source-port не был изменен, как обещали, непорядок :). На деле, маршрутизатор пытается сохранить source port всеми доступными средствами. В частности, если порт inside global адреса уже был занят, он возьмет следующий адрес в пуле и проверит его порт на занятость. И только не найдя адреса со свободным портом возьмет следующий свободный.
    2. Поведение такой трансляции отличается от поведения обычного dynamic NAT еще и тем, что доступ снаружи на inside global адрес невозможен. Именно это я имел ввиду, когда говорил о некоторой повышенной безопасности при использовании PAT, т.к. фактически все соединения инициируются изнутри нашей сети, а снаружи нам могут приходить только ответы на них.
    3. Если мы получили у провайдера не целый блок адресов, а один несчастный адрес, который тут же и назначили внешнему интерфейсу маршрутизатора, можно не городить огород с пулом в один адрес, а сразу писать например так:
    (config)# ip nat inside source list 100 interface fa0/1 overload

    inside source static NAT and PAT

    Много упоминалось о статических трансляциях, давайте наконец их обсудим.

    Зачем это нужно?

    Мы обсудили, что если в случае dynamic NAT трансляция не создана и в случае PAT, доступ извне невозможен. Если даже в случае dynamic NAT трансляция создана, то inside global адрес может меняться. И обращаться к нашему внутреннему хосту по какому-то внешнему адресу невозможно.
    Тем не менее, нередки ситуации, когда внутри корпоративной сети есть сервер, доступ которому извне по статическому внешнему адресу жизненно необходим. В таком случае, можно выставить его прямиком в Интернет, назначив глобальный адрес. Но часто это не очень удобно, например по соображениям безопасности. И в таких случаях нам на помощь приходит static NAT.

    Он создает двустороннюю и постоянную трансляцию. Так что наш хост всегда будет доступен по одному внешнему адресу и эта трансляция никогда не вылетит из таблицы трансляций по таймауту.

    собственно настройка.

    Сразу создаем трансляцию:
    (config)# ip nat inside source static 10.0.1.1 11.1.1.21
    Маркируем интерфейсы и вуаля!
    R3#sh ip nat translations
    Pro Inside global Inside local Outside local Outside global
    icmp 11.1.1.21:14 10.0.1.1:14 11.1.1.2:14 11.1.1.2:14
    --- 11.1.1.21 10.0.1.1 --- ---

    Как видим, появилось две записи — одна постоянная, другая (чисто информативная) — временная, вызванная трафиком изнутри наружу.

    Замечание

    . Появление таких информативных записей можно отключить командой
    (config)# no ip nat create flow-entries

    Идем дальше. Часто бывает, что нужно выставить наружу не целый адрес, а только один порт (например 80й для www-сервера). Никаких проблем, можно создать и статическую PAT-трансляцию для некоторых портов:
    (config)# ip nat inside source static tcp 10.0.1.1 80 11.1.1.21 80
    (config)# ip nat inside source static udp 10.0.1.1 5060 11.1.1.21 7877

    Видим, что порты одного и того же внешнего адреса можно пробрасывать на разные порты внутренних, и управлять трансляцией портов при этом тоже возможен.

    В заключение добавлю, что изменять различные таймауты для NAT можно командой
    Router(config)#ip nat translation ?
    arp-ping-timeout Specify timeout for WLAN-NAT ARP-Ping
    dns-timeout Specify timeout for NAT DNS flows
    finrst-timeout Specify timeout for NAT TCP flows after a FIN or RST
    icmp-timeout Specify timeout for NAT ICMP flows
    max-entries Specify maximum number of NAT entries
    port-timeout Specify timeout for NAT TCP/UDP port specific flows
    pptp-timeout Specify timeout for NAT PPTP flows
    routemap-entry-timeout Specify timeout for routemap created half entry
    syn-timeout Specify timeout for NAT TCP flows after a SYN and no
    further data
    tcp-timeout Specify timeout for NAT TCP flows
    timeout Specify timeout for dynamic NAT translations
    udp-timeout Specify timeout for NAT UDP flows

    Объемистая статейка получилась, придется разбить на несколько частей. Конечно inside source NAT многократно обсужден и расписан, но надеюсь, что даже не совсем новичкам удастся найти в статье что-то полезное. Надо было начать с некоторой базы, пусть и общеизвестной.

    В следующей статье мы обсудим inside destination NAT, если конечно статья найдет отклик и поддержку.

    С уважением,
    Подкопаев Илья

    P.S. Я открыт для пожеланий по улучшению статьи и исправлению неточностей/ошибок.
    P.P.S. Ссылки:
    1. форум сайта anticisco.ru
    2. Cisco NAT order of operations

    Материал из Xgu.ru

    Перейти к: навигация, поиск

    stub.png
    Данная страница находится в разработке.
    Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

    Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

    Автор: Наташа Самойленко (и другие)

    Содержание

    • 1 Трансляция адресов (NAT)
      • 1.1 Статическая трансляция адресов
        • 1.1.1 Static PAT
      • 1.2 Динамическая трансляция адресов
        • 1.2.1 С использованием обычного пула адресов
        • 1.2.2 С использованием пула адресов, который сохраняет в IP-адресе часть хоста
      • 1.3 TCP Load Distribution
      • 1.4 PAT
      • 1.5 NAT и HSRP
        • 1.5.1 Пример топологии
        • 1.5.2 Настройки хостов
        • 1.5.3 Базовые настройки маршрутизаторов
        • 1.5.4 Настройка HSRP
        • 1.5.5 Настройка NAT
      • 1.6 Stateful NAT (SNAT) с HSRP
        • 1.6.1 Пример топологии
        • 1.6.2 Настройки хостов
        • 1.6.3 Базовые настройки маршрутизаторов
        • 1.6.4 Настройка HSRP
        • 1.6.5 Настройка NAT
      • 1.7 Просмотр статистики
      • 1.8 Ограничения NAT
      • 1.9 Определение порта, отличного от общепринятого
      • 1.10 Фильтрация Nat, по определенному порту
    • 2 Протоколирование операций Nat
    • 3 Недокументированные особенности
    • 4 Дополнительная информация

    [править] Трансляция адресов (NAT)

    [править] Статическая трансляция адресов

    Внутренний интерфейс:

    dyn3(config)# int fa0/0
    dyn3(config-if)# ip nat inside
    

    Внешний интерфейс:

    dyn3(config)# int fa1/0
    dyn3(config-if)# ip nat outside
    

    Трансляция адреса в адрес:

    dyn3(config)# ip nat inside source static 3.3.3.3 192.168.1.10
    

    Трансляция адреса в адрес интерфейса:

    dyn3(config)# ip nat inside source static 3.3.3.3 int fa0/0
    

    Трансляция одной сети в другую (транслируется часть сети, а часть хоста сохраняется)

    dyn3(config)# ip nat inside source static network 3.3.3.0 200.3.3.0 /24
    

    [править] Static PAT

    Внутренний интерфейс:

    dyn3(config)# int fa0/0
    dyn3(config-if)# ip nat inside
    

    Внешний интерфейс:

    dyn3(config)# int fa1/0
    dyn3(config-if)# ip nat outside
    

    Правило трансляции:

    dyn3(config)# ip nat inside source static tcp 192.168.2.1 23 interface fa1/0 23
    

    [править] Динамическая трансляция адресов

    [править] С использованием обычного пула адресов

    [править] С использованием пула адресов, который сохраняет в IP-адресе часть хоста

    ACL, который указывает какие адреса транслировать:

    access-list 1 permit 10.3.3.0 0.0.0.255
    

    Настройка интерфейсов:

    interface Loopback0
     ip address 10.3.3.2 255.255.255.255 secondary
     ip address 10.3.3.3 255.255.255.255 secondary
     ip address 10.3.3.4 255.255.255.255 secondary
     ip address 10.3.3.5 255.255.255.255 secondary
     ip address 10.3.3.7 255.255.255.255 secondary
     ip address 10.3.3.1 255.255.255.255
     ip nat inside
     ip virtual-reassembly
    !
    interface FastEthernet0/0
     ip address 192.168.1.3 255.255.255.0
     ip nat outside
     ip virtual-reassembly
    

    Создание пула адресов (match-host указывает на то, что адрес хоста должен сохраниться):

    ip nat pool DYN 200.2.2.1 200.2.2.5 netmask 255.255.255.0 type match-host
    

    pool может состоять из изолированных частей

    c1750-sm3(config)#ip nat pool xgu prefix-length 24
    c1750-sm3(config-ipnat-pool)#address 10.84.10.2 10.84.10.4
    c1750-sm3(config-ipnat-pool)#address 10.84.10.12 10.84.10.14
    

    Правило трансляции:

    ip nat inside source list 1 pool DYN
    

    Проверка:

    dyn3#ping 1.1.1.1 source 10.3.3.3
    
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
    Packet sent with a source address of 10.3.3.3
    !!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 148/228/308 ms
    
    dyn3#ping 1.1.1.1 source 10.3.3.4
    
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
    Packet sent with a source address of 10.3.3.4
    !!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 192/218/252 ms
    
    dyn3#ping 1.1.1.1 source 10.3.3.5
    
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
    Packet sent with a source address of 10.3.3.5
    !!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 112/192/220 ms
    

    Таблица трансляций (часть хоста сохраняется):

    dyn3#sh ip nat tran
    Pro Inside global      Inside local       Outside local      Outside global
    icmp 200.2.2.3:17      10.3.3.3:17        1.1.1.1:17         1.1.1.1:17
    --- 200.2.2.3          10.3.3.3           ---                ---
    icmp 200.2.2.4:18      10.3.3.4:18        1.1.1.1:18         1.1.1.1:18
    --- 200.2.2.4          10.3.3.4           ---                ---
    icmp 200.2.2.5:19      10.3.3.5:19        1.1.1.1:19         1.1.1.1:19
    --- 200.2.2.5          10.3.3.5           ---                ---
    

    IP-адреса хостов, для которых нет соответствия в пуле адресов, транслироваться не будут:

    dyn3#deb ip nat det
    IP NAT detailed debugging is on
    dyn3#ping 1.1.1.1 source 10.3.3.7
    
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
    Packet sent with a source address of 10.3.3.7
    
    *Sep 14 03:32:48.920: NAT: failed to allocate address for 10.3.3.7, list/map 1
    *Sep 14 03:32:48.924: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
    *Sep 14 03:32:50.920: NAT: failed to allocate address for 10.3.3.7, list/map 1
    *Sep 14 03:32:50.920: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
    *Sep 14 03:32:52.920: NAT: failed to allocate address for 10.3.3.7, list/map 1
    *Sep 14 03:32:52.920: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
    *Sep 14 03:32:54.920: NAT: failed to allocate address for 10.3.3.7, list/map 1
    *Sep 14 03:32:54.920: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
    *Sep 14 03:32:56.952: NAT: failed to allocate address for 10.3.3.7, list/map 1
    *Sep 14 03:32:56.952: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
    Success rate is 0 percent (0/5)
    

    [править] TCP Load Distribution

    TCP Load Distribution for NAT

    Можно настроить балансировку нагрузки между несколькими серверами для TCP-трафика.
    Не-TCP трафик транслироваться не будет (если только для него не указаны другие правила трансляции).

    NAT rotary.png

    Создание пула адресов (таким образом указываются адреса реальных хостов между которыми балансируется нагрузка):

    dyn3(config)# ip nat pool POOL6 10.3.3.1 10.3.3.5 prefix-length 24 type rotary 
    

    ACL, который разрешает виртуальный адрес выделенный для хостов (ACL заставляет правило трансляции срабатывать, когда маршрутизатор получает TCP-трафик на этот адрес):

    dyn3(config)# access-list 6 permit 200.3.3.3
    

    Правило трансляции (если с outside-интерфейса придет TCP-трафик с адресом получателя, который совпадает с ACL, то IP-адрес получателя будет транслирован в один из адресов указанного пула):

    dyn3(config)# ip nat inside destination list 6 pool POOL6 
    

    Интерфейсы на dyn1:

    dyn3(config)# int lo0
    dyn3(config-if)# ip nat inside
    dyn3(config-if)# int fa0/0
    dyn3(config-if)# ip nat outside
    

    Проверка (два соединения telnet на адрес 200.3.3.3):

    dyn1# telnet 200.3.3.3
    Trying 200.3.3.3 ... Open
    
    
    User Access Verification
    
    Password:
    dyn3>
    dyn1#sh session
    Conn Host                Address             Byte  Idle Conn Name
       1 200.3.3.3           200.3.3.3              0     1 200.3.3.3
    *  2 200.3.3.3           200.3.3.3              0     0
    

    Таблица трансляций:

    dyn3# sh ip nat trans
    Pro Inside global      Inside local       Outside local      Outside global
    tcp 200.3.3.3:23       10.3.3.4:23        192.168.1.1:34506  192.168.1.1:34506
    tcp 200.3.3.3:23       10.3.3.5:23        192.168.1.1:13040  192.168.1.1:13040
    

    Если соединений больше, чем адресов в пуле, то снова используется первый адрес.
    Например, для указанного примера, для 6,7,8 подключения будут использоваться те же адреса:

    dyn3#sh ip nat trans
    Pro Inside global      Inside local       Outside local      Outside global
    tcp 200.3.3.3:23       10.3.3.1:23        192.168.1.1:12817  192.168.1.1:12817
    tcp 200.3.3.3:23       10.3.3.1:23        192.168.1.1:28047  192.168.1.1:28047
    tcp 200.3.3.3:23       10.3.3.2:23        192.168.1.1:24368  192.168.1.1:24368
    tcp 200.3.3.3:23       10.3.3.2:23        192.168.1.1:55287  192.168.1.1:55287
    tcp 200.3.3.3:23       10.3.3.3:23        192.168.1.1:17925  192.168.1.1:17925
    tcp 200.3.3.3:23       10.3.3.3:23        192.168.1.1:19233  192.168.1.1:19233
    tcp 200.3.3.3:23       10.3.3.4:23        192.168.1.1:18764  192.168.1.1:18764
    tcp 200.3.3.3:23       10.3.3.5:23        192.168.1.1:16435  192.168.1.1:16435
    

    [править] PAT

    Создание ACL:

    dyn3(config)#access-list 7 permit 10.3.3.1
    dyn3(config)#access-list 7 permit 10.3.3.2
    dyn3(config)#access-list 7 permit 10.3.3.3
    dyn3(config)#access-list 7 permit 10.3.3.4
    dyn3(config)#access-list 7 permit 10.3.3.5
    

    Первый вариант создания правила трансляции (параметр overload в конце команды добавится автоматически):

    dyn3(config)#ip nat inside source list 7 interface fa0/0
    

    Второй вариант требует создания пула адресов и соответствующего правила:

    dyn3(config)# ip nat pool 7 192.168.1.7 192.168.1.7 prefix-length 24
    dyn3(config)# ip nat inside source list 7 pool 7 overload
    

    [править] NAT и HSRP

    [править] Пример топологии

    HSRP NAT.png

    На маршрутизаторах dyn1 и dyn3 настроена трансляция адресов с привязкой к состоянию HSRP группы.

    [править] Настройки хостов

    На qua2, qua4 настроен маршрут по умолчанию:

    ip route 0.0.0.0/0 192.168.1.100
    

    На dyn5 настроен маршрут по умолчанию:

    ip route 0.0.0.0 0.0.0.0 192.168.2.100
    

    [править] Базовые настройки маршрутизаторов

    Адреса интерфейсов dyn1:

    interface FastEthernet0/0
     ip address 192.168.1.1 255.255.255.0
    !
    interface FastEthernet1/0
     ip address 192.168.2.1 255.255.255.0
    

    Адреса интерфейсов dyn3:

    interface FastEthernet0/0
     ip address 192.168.1.3 255.255.255.0
    !
    interface FastEthernet1/0
     ip address 192.168.2.3 255.255.255.0
    

    [править] Настройка HSRP

    Настройки HSRP на dyn1:

    interface FastEthernet0/0
     standby 1 ip 192.168.1.100
     standby 1 priority 110
     standby 1 preempt
     standby 1 name HSRP_NAT
     standby 1 track FastEthernet1/0 50
    !
    interface FastEthernet1/0
     standby 2 ip 192.168.2.100
     standby 2 priority 110
     standby 2 preempt
     standby 2 track FastEthernet0/0 50
    

    Настройки HSRP на dyn3:

    interface FastEthernet0/0
     standby 1 ip 192.168.1.100
     standby 1 preempt
     standby 1 name HSRP_NAT
    !
    interface FastEthernet1/0
     standby 2 ip 192.168.2.100
     standby 2 preempt
    

    [править] Настройка NAT

    Настройка интерфейсов для трансляции адресов (одинаково на dyn1 и dyn3):

    interface FastEthernet0/0
     ip nat inside
    !
    interface FastEthernet1/0
     ip nat outside
    

    Настройка правила трансляции адресов с учётом состояния HSRP (одинаково на dyn1 и dyn3):

    ip nat inside source static 192.168.1.2 192.168.2.2 redundancy HSRP_NAT
    

    Трансляция будет выполняться только в том случае, если статус HSRP группы HSRP_NAT — Active.

    [править] Stateful NAT (SNAT) с HSRP

    [править] Пример топологии

    HSRP NAT.png

    На маршрутизаторах dyn1 и dyn3 настроена трансляция адресов с привязкой к состоянию HSRP группы.

    [править] Настройки хостов

    На qua2, qua4 настроен маршрут по умолчанию:

    ip route 0.0.0.0/0 192.168.1.100
    

    На dyn5 настроен маршрут по умолчанию:

    ip route 0.0.0.0 0.0.0.0 192.168.2.100
    

    [править] Базовые настройки маршрутизаторов

    Адреса интерфейсов dyn1:

    interface FastEthernet0/0
     ip address 192.168.1.1 255.255.255.0
    !
    interface FastEthernet1/0
     ip address 192.168.2.1 255.255.255.0
    

    Адреса интерфейсов dyn3:

    interface FastEthernet0/0
     ip address 192.168.1.3 255.255.255.0
    !
    interface FastEthernet1/0
     ip address 192.168.2.3 255.255.255.0
    

    [править] Настройка HSRP

    Настройки HSRP на dyn1:

    interface FastEthernet0/0
     standby 1 ip 192.168.1.100
     standby 1 priority 110
     standby 1 preempt
     standby 1 name HSRP_NAT
     standby 1 track FastEthernet1/0 50
    !
    interface FastEthernet1/0
     standby 2 ip 192.168.2.100
     standby 2 priority 110
     standby 2 preempt
     standby 2 track FastEthernet0/0 50
    

    Настройки HSRP на dyn3:

    interface FastEthernet0/0
     standby 1 ip 192.168.1.100
     standby 1 preempt
     standby 1 name HSRP_NAT
    !
    interface FastEthernet1/0
     standby 2 ip 192.168.2.100
     standby 2 preempt
    

    [править] Настройка NAT

    !
    ip nat Stateful id 1
         redundancy HSRP_NAT
             mapping-id 100
             interface  FastEthernet0/0
             protocol   udp
    ip nat pool SNAT 192.1.1.1 192.1.1.2 prefix-length 24
    ip nat inside source list 1 pool SNAT mapping-id 100
    !
    

    [править] Просмотр статистики

    Как уже было сказано, nat — ресурсопотребляющая операция, для оценки ситуации, может потребоваться просмотр статистики.
    Показать статистику трансляций show ip nat statistics

    Router#sh ip nat statistics
    Total active translations: 53161 (10 static, 53151 dynamic; 53151 extended)
    Outside interfaces:
    FastEthernet0/1
    Inside interfaces:
    Virtual-Template1, Virtual-Access4, Virtual-Access8, Virtual-Access13
    Virtual-Access25
    Hits: 6890278 Misses: 135179
    Expired translations: 82028
    Dynamic mappings:
    -- Inside Source
    [Id: 1] access-list 11 interface FastEthernet0/1 refcount 53151
    

    [править] Ограничения NAT

    NAT — процесс, который сильно загружает процессорное время маршрутизатора. Очень часто возникает необходимость в ограничении временных или количественных характеристик данного процесса
    Методы:

    • Ограничение максимального количества пользователей, за одним IP-адресом
    ip nat translation max-entries {number | all-vrf number | host ip-address number | list listname number | vrf name number} 
    

    Пример:

    Router(config)# ip nat translation max-entries all-host 200    # 200 сессий на один адрес
    

    Смена времени жизни (по умолчанию 24 часа)

    Router(config)# ip nat translation timeout время
    

    Смена времени жизни порта (tcp | udp), опять же значение по умолчанию 24 часа

    Router(config)#ip nat translation tcp-timeout 1200
    Router(config)#ip nat translation udp-timeout 30
    Router(config)#ip nat translation icmp-timeout 5
    

    [править] Определение порта, отличного от общепринятого

    Для определения порта, отличного от общепринятого используется команда ip nat service
    Пример:

    Router(config)#ip nat service list 10 ftp tcp port 2021
    Router(config)#access-list 10 permit 10.84.1.101
    

    В этом примере ftp перебрасывается на нестандартный порт 2021

    [править] Фильтрация Nat, по определенному порту

    Порой необходимо отключить Nat, для обеспечения работоспособности того или иного сервиса. Делается это следующим образом:

    c1750-sm3(config)#no ip nat service sip udp port 5060
    c1750-sm3(config)#no ip nat service sip tcp port 5060
    

    [править] Протоколирование операций Nat

    Протоколирование NAT translations включается или выключается с помощью команды syslog:

    Router(config)# ip nat log translations syslog
    

    [править] Недокументированные особенности

    Использование NAT — активирует NBAR (Network Based Application Recognition/ механизм распознавания потока данных) при этом выделяется ресурсы маршрутизатора под это приложение
    Пример

    c871-tsum#sh ip nbar resources
    % Error: NBAR has not been activated
    c871-tsum#conf t
    c871-tsum(config)#int loopback 100
    c871-tsum(config-if)#ip nat outside
    c871-tsum(config-if)#do show ip nbar resources
    NBAR memory usage for tracking Stateful sessions
       Max-age              : 120 secs
       Initial memory       : 2066 KBytes
       Max initial memory   : 6886 KBytes
       Memory expansion     : 68 KBytes
       Max memory expansion : 68 KBytes
       Memory in use        : 2066 KBytes
       Max memory allowed   : 13773 KBytes
       Active links         : 0
       Total links          : 30383
    

    [править] Дополнительная информация

    • NAT Order of Operation
    • The Inside and Outside of NAT
    • Verifying NAT Operation and Basic NAT Troubleshooting
     Просмотр этого шаблона Cisco Systems, Inc.
    Устройства Cisco 871 • Cisco Router • Cisco Switch • Сisco Сatalyst  • Cisco IPS • Cisco ASA • PIX • Dynamips
    Безопасность
    (коммутаторы и
    маршрутизаторы)
    Cisco Security • Port security • DHCP snooping • Dynamic ARP Protection • IP Source Guard • Аутентификация при доступе к сети • 802.1X в Cisco • Zone-Based Policy Firewall • Cisco NAT • NAT в Cisco  • Cisco SSH
    Cisco ASA Cisco ASA/NAT • Cisco ASA/Troubleshooting • Cisco ASA/IPS • Cisco ASA failover • Cisco ASA/Transparent firewall • Cisco ASA/Site-to-Site_VPN • Cisco ASA/Easy_VPN • Cisco ASA/WebVPN • Объединение OSPF-сетей туннелем между двумя системами ASA (без GRE) • Центр сертификатов на Cisco ASA
    VPN IPsec в Cisco • Cisco IOS Site-to-Site VPN  • DMVPN  • Cisco Easy VPN • Cisco Web VPN • Cisco ipsec preshared
    Канальный уровень CDP  • VLAN в Cisco  • ISL  • VTP  • STP в Cisco  • Cisco Express Forwarding  • Агрегирование каналов  • Зеркалирование трафика  • QinQ  • Frame Relay
    Сетевой уровень Маршрутизация в Cisco  • RIP  • EIGRP  • IS-IS  • OSPF • BGP  • PIM  • Multicast  • GLBP  • VRRP  • HSRP  • DHCP  • IPv6  • IPv6 vs IPv4  • Резервирование Интернет-каналов без использования BGP • Использование BGP для резервирования Интернет-каналов
    Разное Режим ROMMON в Cisco • Опция 82 DHCP • 802.1X и RADIUS • SNMP в Cisco • QoS в Cisco  • EEM  • Troubleshooting  • Автоматизация работы устройств Cisco  • Cisco NTP  • Cisco IP SLA  • Cisco Enhanced Object Tracking

    NAT (Network Address Translation) — это процесс трансляции локальных (частных) ip-адресов во внешние (глобальные), позволяет узлам, имеющим частные адреса, обмениваться данными в сети Интернет.

    При настройке NAT, один интерфейс должен быть определен как внутренний (соединяется с внутренней частной сетью), а другой как внешний (используется для выхода в Интернет).

    Используется 3 вида трансляции адресов

    1. Статический (Static Network Address Translation)

    2. Динамический (Dynamic Address Translation)

    3. Маскарадный (NAPT, NAT Overload, PAT)

    Настройка статического NAT (Static Network Address Translation)

    Статический NAT — сопоставляет единый внутренний локальный (частный) ip-адрес с единым глобальным (публичным) ip-адресом.

    cisco-nat

    1.Создание статического маршрута на стороне ISP.

    R2(config)# ip route 200.20.21.1 255.255.255.224 200.20.20.1
    

    2.Настройка дефолта на R1.

    R1(config)# ip route 0.0.0.0 0.0.0.0 200.20.20.2
    

    3.Настройка внутреннего интерфейса в отношение NAT.

    R1(config)# interface fastethernet 0/0
    R1(config-if)# ip nat inside
    

    4.Настройка внешнего интерфейса в отношение NAT.

    R1(config)# interface fastethernet 0/1 
    R1(config-if)# ip nat outside 
    

    5.Настройка сопоставления ip-адресов.

    R1(config)# ip nat inside source static 10.10.10.2 200.10.21.5
    

    В результате ip-адресу 200.10.21.5 всегда будет соответствовать внутренний ip-адрес 10.10.10.2, т.е. если мы будем обращаться к адресу 200.10.21.5 то отвечать будет computer 1

    <р2>Настройка динамического NAT (Dynamic Address Translation)

    Динамический NAT — использует пул доступных глобальных (публичных) ip-адресов и назначает их внутренним локальным (частным) адресам.

    1.Настройка списка доступа соответствующего внутренним частным адресам, обратите внимание что используется обратная маска.

    R1(config)# access-list 1 permit 10.10.10.0 0.0.0.255
    

    2.Настройка пула адресов.

    R1(config)# ip nat pool white-address 200.20.21.1 200.20.21.30 netmask 255.255.255.0
    

    3.Настройка трансляции.

    R1(config)# ip nat inside source list 1 pool white-address
    

    4.Настройка внутреннего интерфейса в отношение NAT.

    R1(config)# interface fastethernet 0/0
    R1(config-if)# ip nat inside
    

    5.Настройка внешнего интерфейса в отношение NAT.

    R1(config)# interface fastethernet 0/1
    R1(config-if)# ip nat outside 
    

    Настройка PAT (NAPT, NAT Overload, маскарадинг)

    PAT (Port Address Translation) — отображает несколько локальных (частных) ip-адресов в глобальный ip-адрес, используя различные порты.

    1. Настройка списка доступа соответствующего внутренним частным адресам, обратите внимание что используется обратная маска.

    R1(config)# access-list 1 permit 10.10.10.0 0.0.0.255
    

    2. Настройка трансляции.

    R1(config)# ip nat inside source list 1 interface fastethernet 0/1 overload
    

    3.Настройка внутреннего интерфейса в отношение NAT.

    R1(config)# interface fastethernet 0/0
    R1(config-if)# ip nat inside
    

    4.Настройка внешнего интерфейса в отношение NAT.

    R1(config)# interface fastethernet 0/1
    R1(config-if)# ip nat outside 
    

    Команды для проверки работы NAT

    show ip nat translations - Выводит активные преобразования.
    show ip nat statistics - выводит статистику по NAT преобразованиям.
    

    На этом все. Всем пока.

    Содержание статьи:

    • Статический NAT
    • Динамический NAT
    • Перегруженный PAT
    • Проброс портов (Port forwarding)

    С развитием интернета и компьютерных технологий количество сетевых устройств стало стремительно расти. Как вы уже знаете, количество уникальных IP адресов ограничено.

    Для экономии и эффективного распределения адресного пространства были реализованы следующие технологии:

      • Публичные и частные IP адреса
      • CIDR/VLSM

    Следующей технологией стала NAT (Network Address Translation) — преобразование сетевых адресов.

    И как она работает?

    Представьте себе компанию с локальной сетью с 100 компьютеров.  

    Чтобы обеспечить каждому компьютеру выход в интернет придется выделить 100 адресов. А таких компаний могут быть десятки тысяч с последующим расширением. Идея NAT состоит в том, чтобы выделить ограниченное количество адресов для целой компании и динамически их назначать хостам, выходящим в интернет. К примеру, для вышеописанной компании можно выделить 10 публичных адресов. Когда один из компьютеров попытается установить соединение с интернет, то маршрутизатор сети назначит ему один из выделенных адресов. Как только компьютер закончит сеанс связи, то назначенный адрес освободится и может быть использован другим компьютером.  

    Получается, что некоторым компьютерам может не хватить адресов? 

    Да, такое возможно. Однако это легко можно решить либо с помощью увеличения количества выделенного пула адресов (что не всегда выгодно)  либо с помощью технологии PAT (об этом подробнее ниже). 

    Существуют 3 типа NAT:

      • Статический
      • Динамический
      • Перегруженный

    Статический. Определенным хостам на постоянной основе выделяется адрес для связи с внешним миром. 

    Динамический. IP адреса назначаются всем хостам на равной основе по запросу. 

    Перегруженный. Данный тип NAT также называется PAT (Port Address Translation) — преобразование порт-адрес. Является расширением динамического типа, однако отличие в том, что доступ в интернет предоставляется всем желающим. То есть один и тот же публичный адрес используется одновременно несколькими хостами. 

    А как же работает связь, когда один и тот же IP адрес используется сразу несколькими компьютерами? 

    Дело в том, что маршрутизатор для каждого соединения использует различные TCP/UDP порты источника. Как вы уже знаете любое IP соединение характеризуется парой IP адресов(источника и назначения) и парой TCP/UDP портов (источника и назначения). Так вот маршрутизатор и использует порт источника для идентификации каждой сессии. Маршрутизатор запоминает каждую сессию и при поступлении входящих (ответных) пакетов может определить кому из внутренних хостов направить данный пакет. 

    Теперь настроим сеть с  использованием всех типов NAT.

    Статический NAT

    Схема сети со статическим NAT

    Необходимо назначить адреса по следующей схеме:

    192.168.1.10 → 30.1.1.10

    192.168.1.11 → 30.1.1.11 

    Router(config)# ip nat inside source static 192.168.1.10 30.1.1.10 

    Router(config)# ip nat inside source static 192.168.1.11 30.1.1.11 

    Теперь нужно указать какой интерфейс является локальным (внутренним): 

    Router(config)# interface fastehternet 0/0

    Router(config-if)# ip nat inside

    Теперь нужно указать внешний интерфейс, то есть тот, который используется для выхода в интернет: 

    Router(config)# interface serial1/0

    Router(config-if)# ip nat outside

    Динамический NAT

    Схема сети с динамическим NAT

    Нужно создать следующий пул публичных адресов: 

    43.1.1.10/24

    43.1.1.11/24

    43.1.1.12/24

    Создадим пул адресов с указанием начального и конечного адресов, а также маски либо префикса сети: 

    Router(config)# ip nat pool имя_пула 43.1.1.10 43.1.1.12 netmask 255.255.255.0 

    либо 

    Router(config)# ip nat pool имя_пула 43.1.1.10 43.1.1.12 prefix 24

    Создаем стандартный список доступа. Данный список указывает какие локальный IP адреса могут быть преобразованы в публичные адреса, а какие не могут. То есть мы явно указываем кому разрешить доступ в интернет, а кому наоборот запретить: 

    Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255 

    Пока запомните эту команду. В уроке Списки доступа мы рассмотрим ее подробнее. Теперь будем преобразовывать адреса в соответствии с пулом адресов и списком доступа: 

    Router(config)# ip nat inside source list 1 pool имя пула 

    Также как и со статическим NAT необходимо указать внутренний и внешний интерфейсы: 

    Router(config)# interface fastethernet 0/0

    Router(config-if)# ip nat inside 

    Router(config) interface serial1/0

    Router(config-if)# ip nat outside

    Перегруженный  PAT

    Схема сети с динамическим PAT

    Выделим всего лишь 1 адрес 189.1.1.10. 

    Сначала создаем такой же список доступа, затем пул адресов, но в данном случаем указывается только один адрес. После этого выполним команду: 

    Router(config)# ip nat inside source list 1 pool имя пула overload 

    Если используется только 1 внешний IP адрес, то нет необходимости создавать. Для этого достаточно создать список доступа (access-list), а затем выполнить команду ниже: 

    Router(config)# ip nat inside source list 1 interface название_интерфейса overload

    Ключевое слово overload. Именно оно и указывает, что будет задействован PAT. 

    Далее настройте внутренний и внешний интерфейсы. 

    NAT у нас настроен, осталось настроить маршрутизацию. Предлагаю самостоятельно настроить статическую маршрутизацию. 

    Чтобы проверить правильность настройки, а также процесс преобразования достаточно выполнить следующие команды: 

    Router# show ip nat translations

    Таблица NAT с преобразованными адресами

    Router# show ip nat statistics

    Отображение статистических данных NAT

    Router# debug ip nat

    Отладочные сообщения NAT при преобразованиях адресов

    А что такое inside local, outside global? Что означают эти  параметры? 

    Inside local — преобразуемый локальный адрес (адрес источника).

    Inside global — преобразованный публичный адрес (адрес источника).

    Outside local и outside global — публичный адрес назначения.

    Для удаления записей о преобразований можно выполнить команду  clear ip nat translation.

    Проброс портов (Port forwarding)

    Кроме экономии адресного пространства технология предоставляет определенную степень безопасности, так как позволяет скрывать сетевые устройства локальной сети от внешней сети (интернет). 

    Но как быть, если мне нужно предоставить доступ к моему компьютеру из внешней сети? Например, у меня Web сервер в сети.  Как быть? 

    Все очень просто. В данном случае мы настроим статический NAT с указанием портов.

    Вернемся к нашей сети, где настроен  PAT.  Добавим в нее Web сервер, который будет доступен по адресу 189.1.1.10:5000. 5000 означает порт назначения.

    Сетевая диаграмма

    Задача маршрутизатора преобразовать этот адрес в локальный адрес с портом 80: 189.1.1.10:5000 → 192.168.1.20:80 

    Router(config)# ip nat inside source static tcp 192.168.1.20 80 189.1.1.10 5000 extendable

    Вот и вся наука.

    Другие наши интересноые статьи:

  • Что такое nat в роутере zyxel
  • Что такое fn на роутере keenetic lite
  • Что такое nat в роутере tp link archer
  • Что такое fn на роутере keenetic air
  • Что такое nat в роутере asus

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии