Всем хорош встроенный в Mac OS X VPN-клиент: настраивается двумя щелчками, да и замочек симпатичный в System Preferences → Network нарисован. Одна только проблема: с оборудованием Cisco работает далеко не всегда.
Итак, дано: роутер Cisco с уже настроенным L2TP и устройство на Mac OS X или iOS, у которого никак не получается установить соединение. Начнем с особенностей клиента: в графическую обертку из Cocoa завернуты программы racoon и pppd. Задача racoon — согласовать с сервером VPN параметры шифрования и создать IPSec-туннель, внутри которого pppd установит соединение по, собственно, протоколу PPP.
Что же может пойти не так? В большинстве случаев, проблемы возникают именно на первом этапе, при создании туннеля. Дело в том, что в конфигурационном файле racoon (/etc/racoon/racoon.conf) прописан, прямо скажем, довольно-таки ограниченный набор Transform Sets (возможных наборов алгоритмов шифрования), а именно:
- На первой фазе IKE: 3DES для шифрования и SHA1 для хэширования.
- На второй фазе IKE: 3DES или AES для шифрования и SHA1/MD5 для хэширования.
crypto ipsec transform-set mac_encryption esp-3des esp-sha-hmac mode transport
permit esp any host 8.8.8.8 permit udp any host 8.8.8.8 eq isakmp
(8.8.8.8 — адрес, на который клиент устанавливает соединение)
Ничего не выходит? Попробуйте включить вывод диагностической информации:
debug crypto ipsec debug crypto isakmp
и проанализировать ход установки соединения. Две замечательных статьи по траблшутингу IKE (Internet Key Exchange, обмен ключами шифрования через интернет) тут будут как нельзя кстати. Большая часть ошибок происходит, как правило, на первой фазе IKE, во время выбора алгоритмов шифрования и проверке Shared Secret.