Безопасность : Многофункциональные устройства защиты Cisco ASA серии 5500

PIX/ASA 7.x и IOS: Фрагментация VPN

11 августа 2008 - Перевод, выполненный профессиональным переводчиком
Другие версии: PDF-версия:pdf | Машинный перевод (28 июля 2013) | Английский (19 февраля 2009) | Отзыв

Содержание

Введение
Предварительные условия
     Требования
     Используемые компоненты
     Схема сети
     Соответствующие продукты
     Условные обозначения
Базовые сведения
     Проблемы фрагментации
Основная задача
     Обнаружение фрагментации
     Решения проблем фрагментации
Проверка
Поиск и устранение неполадок
     Ошибка шифрования VPN
     RDP и проблемы Citrix
Связанные обсуждения сообщества поддержки Cisco
Дополнительные сведения

Введение

В этом документе представлены основные действия по выявлению проблем, которые могут возникнуть с фрагментацией пакета. Пример проблемы фрагментации – это возможность отправить запрос "ICMP-эхо" на сетевой ресурс, но неспособность подключиться к данному ресурсу с помощью определенного приложения, например электронной почты или базы данных.

Предварительные условия

Требования

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

  • Возможность соединения между равноправными узлами VPN

Используемые компоненты

Настоящий документ не имеет жесткой привязки к устройству или какой-либо версии ПО.

Схема сети

В данном документе используется следующая настройка сети.

fragmentation-1.gif

Соответствующие продукты

Эта конфигурация может также использоваться со следующими версиями программного/аппаратного обеспечения.

  • Маршрутизаторы IOS

  • Устройства защиты PIX/ASA

Условные обозначения

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

Базовые сведения

Несмотря на то, что максимальная длина IP-пакета равна 65536 байтам, большинство протоколов уровня каналов передачи данных поддерживают намного меньшее значение. Это значение называется максимальным передаваемым блоком данных (MTU). На основе поддерживаемого MTU необходимо разбивать IP-пакет на фрагменты, чтобы передать его по каналу передачи данных определенного типа носителя. Затем на стороне назначения можно заново собрать фрагменты в исходный полный IP-пакет.

fragmentation-2.gif

При использовании VPN для защиты данных между двумя равноправными узлами VPN дополнительные служебные данные добавляются к исходным данным, для которых требуется подобная фрагментация. В следующей таблице перечислены поля, которые можно добавить к защищенным данным, для поддержки соединения VPN. Следует отметить, что может потребоваться использование нескольких протоколов, что увеличивает размер исходного пакета. Например, при использовании соединения L2L DMVPN IPSEC между двумя маршрутизаторами Cisco, где реализован туннель GRE, необходимы следующие дополнительные служебные данные: ESP, GRE и внешний IP-заголовок. Если у вас имеется клиентское подключение ПО IPSec к шлюзу VPN, когда трафик проходит через адресуемое устройство, необходимы дополнительные служебные данные для NAT-T (преобразование сетевых адресов - прослеживание), а также для внешнего IP-заголовка для подключения туннельного режима.

Проблемы фрагментации IP

Если источник отправляет пакет к месту назначения, он помещает некоторое значение в поле управляющих флагов IP-заголовков. Это значение влияет на фрагментацию пакета, выполняемую промежуточными устройствами. Длина управляющего флага равна трем битам, первые два из которых используются в фрагментации. Если второй бит равен 0, пакет можно разбивать на фрагменты; если он равен 1, пакет не разрешается разбивать на фрагменты. Второй бит называют битом don't fragment (DF). Третий бит указывает, когда происходит фрагментация, является ли фрагментированный пакет последним фрагментом (со значением 0) или в пакете есть еще фрагменты (со значением 1).

Существует четыре области, которые могут вызвать проблемы во время фрагментации:

  • Дополнительные служебные данные в циклах и памяти CPU необходимы для двух устройств, которые выполняют фрагментацию и повторную сборку.

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

  • Могут возникнуть проблемы с фильтрацией пакетов и с межсетевыми экранами отслеживания состояния соединений в процессе выполнения фрагментации. Если происходит фрагментация, первый фрагмент содержит внешний IP-заголовок, внутренний заголовок, например TCP, UDP, ESP и другие, а также часть полезной нагрузки. Последующие фрагменты исходного пакета объединяют внешний IP-заголовок и продолжение полезной нагрузки. Проблема данного процесса состоит в том, что для определенных межсетевых экранов необходимы сведения о внутреннем заголовке в каждом пакете, чтобы принять правильное решение для выполнения фильтрации; если данные сведения отсутствуют, они случайно могут отбросить все фрагменты, кроме первого.

  • Источник IP-заголовка пакета может установить для третьего управляющего бита значение don't fragment, означающее, что если промежуточное устройство получает пакет и должно разбить его на фрагменты, то оно не может выполнить данное действие. Вместо этого промежуточное устройство отбрасывает пакет.

Основная задача

Обнаружение фрагментации

В большинстве сетей используется Ethernet со значением MTU, равным 1500 по умолчанию, которое обычно используется для IP-пакетов. Чтобы определить, происходит ли процесс фрагментации, или он необходим, но не может быть выполнен (установлен бит DF), первое, что необходимо сделать, – начать сеанс VPN. Существует четыре способа обнаружения фрагментации.

  1. Отправить запрос "ICMP-эхо" устройству, которое находится на другом конце. Это можно выполнить в предположении, что в туннеле разрешена посылка запросов "ICMP-эхо". Если это удалось, необходимо получить доступ к приложению через то же устройство; например, если связь с почтовым сервером Microsoft E-mail или сервером Remote Desktop (удаленный рабочий стол) устанавливается через туннель, откройте Outlook и загрузите электронную почту или попытайтесь установить режим Remote Desktop с сервером. Если это не поможет, а имя введено правильно, вполне вероятно, что проблемой является фрагментация.

  2. В устройстве Windows можно использовать: C:\> ping -f -l packet_size_in_bytes destination_IP_address.

    Параметр -f используется, чтобы указывать, что пакет не предназначен для фрагментации. Параметр -l используется, чтобы указывать длину пакета. Сначала используйте размер пакета, равный 1500. Например, отправьте запрос "ICMP-эхо" -f -l 1500 192.168.100. Если фрагментация необходима, но она не может быть выполнена, вы получите следующее сообщение: Packets need to be fragmented but DF set.

  3. В маршрутизаторах Cisco введите команду debug ip icmp и используйте команду extended ping. Если придет сообщение ICMP:dst (x.x.x.x) fragmentation needed and DF set, unreachable sent to y.y.y.y, где x.x.x.x – это устройство назначения, а y.y.y.y – это ваш маршрутизатор, промежуточное устройство сообщит о необходимости фрагментации, но так как в эхо-запросе установлен бит DF, промежуточное устройство не может разбить его и направить для следующего перехода. В данном случае, постепенно увеличивайте размер MTU запросов "ICMP-эхо" до необходимого.

  4. В устройствах защиты Cisco используйте фильтр захвата.

    • ciscoasa(config)#access-list outside_test permit tcp any host 172.22.1.1 eq 80

      Примечание. Если оставить источник в качестве any, это позволит администратору проводить мониторинг преобразования сетевых адресов (NAT).

    • ciscoasa(config)#access-list outside_test permit tcp host 172.22.1.1 eq 80 any

      Примечание. Если поменять местами данные об источнике и назначении, то можно вернуть трафик, подлежащий захвату.

    • ciscoasa(config)# capture outside_interface access-list outside_test interface outside

      Пользователю необходимо начать новый сеанс связи с приложением X. После выполнения пользователем данного действия, администратору ASA необходимо применить команду show capture outside_interface.

Решения проблем фрагментации

Существуют разные способы решения проблем фрагментации. Они описаны в данном разделе.

Способ 1. Статическая установка MTU

С помощью статической установки MTU можно решить проблемы фрагментации.

  1. Изменение MTU в маршрутизаторе:

    Имейте в виду, если установить MTU в устройстве вручную, на устройство, которое выполняет функцию шлюза VPN, придет команда разбить на фрагменты полученные пакеты перед установкой защиты и отправкой через туннель. Предпочтительно поручить маршрутизатору установку защиты трафика и разбиение его на фрагменты, однако данное устройство выполняет фрагментацию.

    Предупреждение Предупреждение. Изменение размера MTU на интерфейсе любого устройства станет причиной разъединения и повторного создания туннелей, которые оканчиваются на данном интерфейсе.

    В маршрутизаторах Cisco используйте команду ip mtu для настройки размера MTU на интерфейсе, где подключается VPN:

    router (config)# interface type [slot_#/]	port_#
     
    router (config-if)# ip mtu MTU_size_in_bytes
    
    
  2. Изменение MTU в ASA/PIX:

    В устройствах ASA/PIX используйте команду mtu, чтобы настроить размер MTU в режиме глобальной конфигурации. По умолчанию MTU равен 1500. Например, если в устройстве защиты имеется интерфейс с именем Outside (где подключается VPN), и вам необходимо (в соответствии с оценками в разделе Обнаружение фрагментации) назначить фрагменту длину, равную 1380, используйте следующую команду:

    security appliance (config)# mtu Outside 1380
    
    

Способ 2. Максимальный размер сегмента TCP

Использование максимального размера сегмента TCP может решить проблемы фрагментации.

Примечание. Данная функция работает только с TCP; для других IP-протоколов необходимо использовать другое решение, чтобы устранить проблему фрагментации IP. Если установить ip mtu в маршрутизаторе, это не повлияет на согласование двух хостов в трехстороннем установлении связи TCP с TCP MSS.

  1. Изменение MSS в маршрутизаторе:

    Фрагментация происходит в трафике TCP, так как он используется для передачи большого количества данных. TCP поддерживает функцию "максимальный размер сегмента TCP" (MSS), которая позволяет двум устройствам согласовывать соответствующую величину трафика TCP. Значение MSS статистически настроено в каждом устройстве и обозначает размер буфера, используемого для ожидаемого пакета. Когда два устройства устанавливают соединения TCP, они сравнивают локальное значение MSS с локальным значением MTU в трехстороннем установлении связи; наименьшее значение посылается удаленному равноправному узлу. Два равноправных узла используют наименьшее из двух переданных значений. Чтобы настроить данную функцию, выполните следующие действия:

    В маршрутизаторах Cisco используйте команду tcp adjust-mss на интерфейсе, где подключается VPN.

    router (config)# interface type [slot_#/] port_#
    
    router (config-if)# ip tcp adjust-mss MSS_Size_in_bytes
    
    
  2. Изменение MSS в ASA/PIX:

    Чтобы убедиться, что максимальное значение сегмента TCP не превышает установленного значения, и данное значение не меньше указанного размера, используйте команду sysopt connection в режиме глобальной конфигурации. Чтобы восстановить настройку по умолчанию, используйте аргумент no данной команды. По умолчанию максимальное значение равно 1380 байтам. Функция "минимум" отключена по умолчанию (установлена в 0).

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

    security appliance (config)# sysopt connection tcp-mss MSS_size_in_bytes
    
    

    Примечание. Если установить максимальный размер, превышающий 1380, пакеты можно разбивать на фрагменты в зависимости от размера MTU (по умолчанию 1500). Большое количество фрагментов может повлиять на производительность устройства защиты, если в нем используют функцию Frag Guard. Установка минимального размера предотвратит отправку сервером TCP большого количества небольших пакетов данных TCP клиенту и влияние на производительность сервера и сети.

    Чтобы изменить лимит минимального MSS, выполните следующие действия:

    security appliance (config)# sysopt connection tcp-mss minimum MSS_size_in_bytes

    security appliance (config)# sysopt connection tcp-mss minimum MSS_size_in_bytes

    Примечание. Дополнительные сведения см. в разделе Конфигурация MPF для разрешения использовать пакеты, размер которых превышает MSS документа PIX/ASA 7.X: Превышено допустимое значение MSS – HTTP-клиенты не могут просматривать некоторые веб-сайты, чтобы разрешить использование другого способа применения пакетов с превышением MSS.

Способ 3. Обнаружение пути MTU

С помощью PMTUD можно решить проблемы фрагментации.

Основная проблема, связанная с TCP MSS, состоит в том, что администратору необходимо знать, какое значение настроить в маршрутизаторе, чтобы предотвратить случайную фрагментацию. Может возникнуть проблема, если существует несколько путей между пользователем и удаленным расположением VPN, или, если при выполнении первоначального запроса вы обнаружите, что второй или третий MTU меньшего размера (вместо наименьшего), основан на решении о маршрутизации, которое используется в первоначальном запросе. С помощью PMTUD можно определить значение MTU для IP-пакетов, чтобы избежать фрагментации. Если сообщения ICMP блокируются маршрутизатором, путь MTU прерывается, и пакеты с установленным значением DF бита отклоняются. Используйте команду set ip df, чтобы удалить значение DF бита и разрешить фрагментацию и отправку пакета. Фрагментация может замедлить скорость передачи пакетов в сети, но можно использовать списки доступа, чтобы ограничить количество пакетов, в которых удалено значение DF бита.

  1. Следующие три проблемы могут привести к тому, что PMTUD не работает:

    • Промежуточный маршрутизатор может отбросить пакет и не посылать сообщение ICMP в качестве ответа. Это нетипично для Интернета, а часто происходит в сети, где маршрутизаторы настроены не посылать ответ "ICMP недоступен".

    • Промежуточный маршрутизатор может посылает ответ "ICMP недоступен", но в обратном потоке межсетевой экран блокирует данное сообщение. Такие случаи происходят часто.

    • Сообщение "ICMP недоступен" передается в обратном направлении к источнику, но источник игнорирует сообщение о фрагментации. Это три наиболее распространенные проблемы.

    Если возникает первая проблема, можно в IP-заголовке сбросить значение бита DF, установленное источником, или вручную настроить размер TCP MSS. Чтобы сбросить бит DF, в промежуточном маршрутизаторе необходимо изменить значение с 1 на 0. Обычно данное действие выполняет маршрутизатор в сети до того, как пакет покинет сеть. Далее приведена простая конфигурация кода, который выполняет указанное действие в маршрутизаторе на базе IOS.

    Router (config) # access-list ACL_# permit tcp any any
    Router (config) # route-map route_map_name permit seq#
    
    Router (config-route-map) # match ip address ACL_#
    
    Router (config-route-map) # set ip df 0
    
    Router (config-route-map) # exit
    Router (config) # interface type [slot#/]port #
    
    Router (config-if) # ip policy router-map route_map_name
    
    
  2. Туннели PMTUD и GRE

    • По умолчанию маршрутизатор не выполняет PMTUD в туннельных пакетах GRE, генерируемых им самостоятельно. Чтобы активировать PMTUD на интерфейсах туннеля GRE и включить маршрутизатор в процесс настройки MTU для исходных/конечных устройств для трафика, который проходит по туннелю, используйте следующую конфигурацию:

      • Router (config) # interface tunneltunnel_#

      • Router (config-if) # tunnel path-mtu-discovery

        С помощью команды tunnel path-mtu-discovery активизируется PMTUD для интерфейса туннеля GRE маршрутизатора. Дополнительный параметр age-timer указывает число минут, по истечении которых интерфейс туннеля сбрасывает обнаруженное значение максимального размера MTU, минус 24 бита заголовка GRE. Если указать infinite для таймера, он не будет использоваться. Параметр min-mtu указывает минимальное количество байтов, составляющих значение MTU.

  3. PIX/ASA 7.x - Clear Don't Fragment (DF) или обработка больших файлов или пакетов.

    Если все еще не удалось получить доступ к Интернету, большим файлам или приложениям через туннель, будет получено следующее сообщение об ошибке в размере MTU:

    PMTU-D packet 1440 bytes greater than effective mtu 1434,
     dest_addr=10.70.25.1, src_addr=10.10.97.55, prot=TCP
    

    Чтобы решить данную проблему, удалите бит DF на внешнем интерфейсе устройства. Задайте конфигурацию политике DF-бита для пакетов IPSec с помощью команды crypto ipsec df-bit в режиме глобальной настройки.

    pix(config)# crypto ipsec df-bit clear-df outside
    

    DF-бит с помощью функции туннелей IPSec позволяет указывать, может ли устройство защиты удалять, устанавливать или копировать бит Don't Fragment (DF) в инкапсулированном заголовке. DF-бит в IP-заголовке определяет, можно ли разбивать пакет на фрагменты.

    Используйте команду crypto ipsec df-bit в режиме глобальной конфигурации, чтобы настроить устройство защиты для указания DF-бита в инкапсулированном заголовке.

    Для инкапсуляции трафика туннельного режима IPSec используйте значение clear-df для DF-бита. Этот значение позволяет отправлять пакеты больше допустимого размера MTU. Данное значение также подходит, если пользователь не знает допустимого размера MTU.

Примечание. Если проблемы фрагментации остаются, и происходит отбрасывание пакетов, дополнительно можно установить размер MTU вручную с помощью команды ip mtu tunnel interface. В данном случае маршрутизатор разбивает пакет на фрагменты до установки защиты. Данную команду можно использовать совместно с PMTUD и/или TCP MSS.

Проверка

В настоящее время для этой конфигурации нет процедуры проверки.

Средство Интерпретатор выходных данных (только для зарегистрированных клиентов) (OIT) поддерживает некоторые команды show. Используйте OIT для просмотра аналитики выходных данных команды show.

Поиск и устранение неполадок

Ошибка шифрования виртуальной частной сети (VPN)

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

  1. Выполните трассировку анализа трафика от клиента до сервера, чтобы определить наиболее подходящий MTU.

    Также можно использовать ping-тест.

    ping  -l   1400  192.168.1.1 -f
    

    192.168.1.1 – это IP-адрес удаленного компьютера.

  2. Продолжайте уменьшать значение 1400 по 20, пока не получите ответ.

    Примечание. Универсальное значение, работающее в большинстве случаев, равно 1300.

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

    В межсетевом экране PIX:

    sysopt connection tcpmss 1300 
    

    В маршрутизаторе:

    ip tcp adjust-mss 1300
    

RDP и проблемы Citrix

Проблема.

Можно отправлять запросы "ICMP-эхо" между сетями VPN, но протокол RDP и подключение к Citrix не могут быть установлены через туннель.

Решение.

Проблема может заключаться в размере MTU на ПК за PIX/ASA. Назначьте для компьютера клиента размер MTU, равный 1300, и попытайтесь установить подключение к Citrix через туннель VPN.

Связанные обсуждения сообщества поддержки Cisco

В рамках сообщества поддержки Cisco можно задавать и отвечать на вопросы, обмениваться рекомендациями и совместно работать со своими коллегами.


Дополнительные сведения


Document ID: 82444