Урок 37. Поиск и устранение неисправностей в NAT

 

Возможные неисправности 

Рассмотрим вкратце основные причины неправильного функционирования NAT: 

    1. Неправильно настроен список доступа
    2. Не указаны команды ip nat inside/ip nat outside либо неверно настроены
    3. Не указана команда overload при настройке PAT

 

Полезные команды 

Для поиска неисправностей полезно использовать следующие команды: 

show ip nat translations - показывает все преобразованные адреса 

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

debug ip nat  - позволяет в режиме реального времени видеть преобразования адресов 

clear ip nat translations * - удаляет кэш-таблицу преобразованных адресов

clear ip nat statistics - удаляет статистику

 

Алгоритм поиска 

С чего же следует начать поиск? 

 

Ситуация №1

Рассмотрим следующий рисунок сети:

Схема сети

Пользователи жалуются, что доступ в интернет не работает либо нестабильный.

Начнем двигаться от простого к сложному: 

    1. Проверяем у всех ли это пользователей или только у некоторых
    2. Проверяем настройки Default gateway и DNS на всех компьютерах
    3. Убеждаемся , что шлюз по умолчанию доступен (с помощью Ping) с их компьютеров
    4. Если все настроено верно, то проверяем маршрутизацию на самом шлюзе 
    5. Если маршрутизация работает, то проверяем настройки NAT

 

Предположим, что пункты с 1-го по 4-й включительно мы проверили. Проверим теперь преобразования и статистику командами show ip nat translations show ip nat statistics

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

Успешное преобразование адреса

И этому свидетельствует статистика:

Отображение статистики преобразований адресов

Важно знать следующие счетчики: 

CEF Translated packets - количество переданных хостом пакетов + количество обратных пакетов-ответов, вернувшихся данному хосту. В нашем случае с хоста PC_A мы отправили 5 ICMP эхо-запросов. Удаленный узел ответил 5-ю эхо-ответами. Получилось 5 + 5 = 10 пакетов. 

Misses - если в NAT таблице отсутствует запись о преобразовании локального адреса для передачи пакета удаленному узлу, то создается новая запись в NAT таблице. Именно такая запись и отображается в выводе команды show ip nat translations.

Иными словами, сколько записей в таблице преобразований  NAT, столько и покажет счетчик Misses. В нашем  случае - 1. 

Hits - количество совпадений в таблице преобразований NAT. Когда мы послали 5 эхо-запросов, то в таблице преобразований отсутствовала запись о преобразовании данного локального адреса для передачи удаленному узлу. Система создала эту запись и увеличила счетчик misses на единицу. После этого значение счетчика Hits начинает увеличиваться с каждым переданным и принятым пакетами.  При нормальной работе NAT значение счетчика hits должно увеличиваться. 

Почему переданных пакетов 10, а счетчик hits равен 9? 

Потому что для первого пакета не было никакой записи в таблице преобразований. Для всех остальных пакетов запись уже присутствовала в таблице. 

misses - счетчик ошибок, то есть безуспешных попыток преобразовать адреса поступивших пакетов. При нормальной работе NAT должен равняться 0.

 

Теперь в интернет пытаются выйти 2 компьютера. 

Проверим преобразования:

Отображение полследних NAT преобразований

Как видно, таблица преобразований NAT не изменилась, то есть NAT успешно работает лишь для одного компьютера, второй - остался без интернета. Но мы все еще не знаем причину. Ищем дальше. Проверим статистику:

Отображение подробных данных NAT преобразований

У нас изменились значения новых счетчиков:

CEF punted packets - увеличивается, когда IOS не может коммутировать пакеты в текущем режиме и передает данный процесс на более низкий уровень коммутации или уничтожает пакеты (Cisco Express Forwarding, CEF в данном курсе не рассматривался). В данном случае на вход маршрутизатора поступило 5 ICMP пакетов, которые IOS не смог обработать с помощью NAT. 

misses - маршрутизатор уничтожил пакеты (5 эхо-запросов) и отправил соответствующее уведомление Destination Unreachable (5 эхо-ответов). И получилось всего 10 пакетов. 

Но как такое произошло? Ведь в выводе статистики явно указано, что возможно преобразовать 2 адреса:

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

Все верно. Однако при более внимательном рассмотрении мы заметим, что маска равна 255.255.255.252. При такой маске можно иметь только 2 адреса, которые в данный момент и используются самим маршрутизатором и провайдером. Адрес 128.0.0.3 - широковещательный. 

Была допущена ошибка по невнимательности. Система не выдаст предупреждение, если в конфигурации NAT используются широковещательные адреса.

 

Ситуация №2

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

Проверим таблицу NAT:

NAT таблица

По крайней мере для двоих пользователей интернет работает. Проверим статистику:

Проверка статистики NAT

И все становится понятным. Пространство адресов (пул) NAT использовано на все 100% и для остальных компьютеров просто не хватило адресов. 

Из этого следует, что администратор забыл указать команду overload при настройке NAT.  Это сразу видно в выводе статистики NAT:

Значение 0 extended указывает, что не была указана команда overload

Отсутствие команды overload также видно и в самой конфигурации:

Проверка конфигурации NAT

 

Ситуация №3 

Вернемся снова к нашему рисунку, однако вместо серийного интерфейса воспользуемся Fast Ethernet интерфейсом:

Схема сети с NAT

Администратор настроил NAT, однако ни у одного пользователя не работает интернет. Команда show ip nat translation ничего не показывает. Статистика показывает следующее:

Отображение статистики преобразований NAT

На первый взгляд никакой полезной информации здесь нет. Возможно. 

Запустим отладчик событий NAT, который в “прямом эфире” покажет преобразования адресов. Запускается командой debug ip nat. 

Запустим Ping на локальном компьютере и посмотрим, что у нас происходит в маршрутизаторе. Но как назло отладчик молчит и не выдал ни одного сообщения. То есть маршрутизатор не знает, что ему делать с поступающими из локальной сети пакетами. Проверим конфигурацию:

Отображение текущей конфигурации маршрутизатора

Если внимательно посмотреть на конфигурацию, то можно заметить, что просто перепутали команды ip nat inside, ip nat outside для LAN и WAN интерфейсов. 

Такую ошибку легко допустить, если одинаковый тип интерфейса (в нашем случае Fast Ethernet) используется для LAN и WAN.

Ситуации бывают разные и не всегда причиной неисправности является неправильная настройка NAT. Например, это могут быть неправильно настроенные списки доступа, маршрутизация и так далее.