PIX 506E, MTU, фрагментация VPN-пакетов и IP-телефония Shoretel
У нас есть два сайта, большой южный и маленький северный, между которыми есть VPN, определенные на двух межсетевых экранах Cisco PIX. По этому VPN трафик IP-телефона Shoretel путешествует так же, как и весь другой сетевой трафик. Недавно мы перевели меньший Северный офис на Bt Infinity (оптоволокно), и все системы работали отлично, то есть они работали отлично до прошлой недели. Обратите внимание, ничего не изменилось в этот день.
Трафик, поступающий по VPN из Манчестера, работает на всех фронтах, кроме телефонной системы. Наши ручные телефонные инженеры из Shoretel говорят нам, что это все из-за того, что пакеты телефонной системы имеют бит DF (не фрагментированный), включенный в их трафике, и требуемую полезную нагрузку 1472, а из-за служебной нагрузки IPSec 1472 не будет соответствовать линии MTU.
Если я выполняю тест ping MTU из нашего южного офиса в наш северный офис, я получаю следующее:
C:\>ping <NorthernOfficeServerIP> -f -l 1472
Pinging <NorthernOfficeServerIP> with 1472 bytes of data:
Reply from <OutsideInterfaceOfSourthernPixIP>: Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Настройка VPN на PIX выглядит следующим образом:
sysopt connection permit-ipsec
crypto ipsec transform-set chevelle esp-des esp-md5-hmac
crypto map transam 1 ipsec-isakmp
crypto map transam 1 match address 101
crypto map transam 1 set peer <Peer IP>
crypto map transam 1 set transform-set chevelle
crypto map transam interface outside
isakmp enable outside
isakmp key ******** address <Peer IP> netmask 255.255.255.0
isakmp keepalive 10
isakmp nat-traversal 20
isakmp policy 1 authentication pre-share
isakmp policy 1 encryption des
isakmp policy 1 hash md5
isakmp policy 1 group 1
isakmp policy 1 lifetime 86400
Первое, что я попробовал на PIX, было заставить его сбросить флаг DF на пакетах, как показано ниже:
pix(config)# crypto ipsec df-bit clear-df outside
К сожалению, это просто дает:
ОШИБКА: нераспознанное использование: [no] crypto ipsec { transform-set | security-association} ... Введите help или '?' для списка доступных команд.
Но тогда наша прошивка PIX весьма почтительна, шоу ver дает мне:
Cisco PIX Firewall Version 6.3(5)
Cisco PIX Device Manager Version 3.0(4)
Compiled on Thu 04-Aug-05 21:40 by morlee
chathampix up 14 hours 54 mins
Hardware: PIX-506E, 32 MB RAM, CPU Pentium II 300 MHz
Flash E28F640J3 @ 0x300, 8MB
BIOS Flash AM29F400B @ 0xfffd8000, 32KB
Я попытался изменить размер MTU на PIX, у меня был Внешний интерфейс на 1500, 1492 (8 байт для PPP) и рекомендация BT 1458, чтобы попытаться смягчить проблему. Издержки 56 байтов VPN означают, что пакеты с битом DF, установленным в 1472 байта, будут всегда отбрасываться VPN.
Кто-нибудь знает эквивалентную команду для "pix(config)# crypto ipsec df-bit clear-df outside" для PIX с этой прошивкой? Или у тебя есть другие идеи?
ОБНОВИТЬ:
Шоу crypto ipsec sa для Северного PIX ниже:
interface: outside
Crypto map tag: transam, local addr. <NorthernOutsideInterfaceIP>
local ident (addr/mask/prot/port): (192.168.16.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.168.0.0/255.255.255.0/0/0)
current_peer: <SouthernOutsideInterfaceIP>:500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 107592, #pkts encrypt: 107592, #pkts digest 107592
#pkts decaps: 114302, #pkts decrypt: 114302, #pkts verify 114302
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0, #pkts decompress failed: 0
#send errors 8, #recv errors 0
local crypto endpt.: <NorthernOutsideInterfaceIP>, remote crypto endpt.: <SouthernOutsideInterfaceIP>
path mtu 1492, ipsec overhead 56, media mtu 1492
current outbound spi: 4ada0b77
inbound esp sas:
spi: 0xe7c2815(243017749)
transform: esp-des esp-md5-hmac ,
in use settings ={Tunnel, }
slot: 0, conn id: 1, crypto map: transam
sa timing: remaining key lifetime (k/sec): (4516828/21982)
IV size: 8 bytes
replay detection support: Y
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x4ada0b77(1255803767)
transform: esp-des esp-md5-hmac ,
in use settings ={Tunnel, }
slot: 0, conn id: 2, crypto map: transam
sa timing: remaining key lifetime (k/sec): (4598687/21980)
IV size: 8 bytes
replay detection support: Y
outbound ah sas:
outbound pcp sas:
И MTU для Южного PIX и Северного PIX:
mtu outside 1500
mtu inside 1500
Я полагаю, что MTU автоматически устанавливает меньше 8 байтов для PPP PIX.
1 ответ
Для трафика, превышающего MTU исходящего интерфейса после добавления издержек IPSec, существует несколько "исправлений" на стороне PIX/ASA.
Измените значение MTU на PIX/ASA на меньшее число (обычно 1380), заставляя отправляющие станции реагировать - не всегда желаемым образом.
Изменить MSS (только TCP, не полезно для UDP)
Пусть фрагмент PIX/ASA.
Если во внутреннем IP-заголовке установлен бит df и требуется фрагментация для прохождения через туннель IPSec, разрешить PIX/ASA очистить бит df также возможно.
Обратите внимание, что для очистки df-бита требуется PIX/ASA OS 7.0 и выше. "Почтенный" PIX 6.3(5) не будет его резать.
Более важный вопрос: почему ваш VoIP-трафик вообще отключает MTU? Все известные мне кодеки VoIP (включая очень распространенные G.711 и G.729) создают для каждого "пакетного" полезного кода кодека менее 160 байтов. Добавьте к издержкам RTP, UDP и IP - всего около 40 байт, а размер полезной нагрузки L2 не превышает 200 байт. Добавьте еще 56 байтов для IPSec ESP, и он все еще не соответствует типичным MTU интерфейса Ethernet.
Что ваши администраторы VoIP проталкивают через провод, который требует 142 байта полезной нагрузки L2?
Ref: