Як настроїти IPSec VPN для OS X та iOS
VPN використовується для віддаленого підключення до робочого місця, захисту даних, для обходу фільтрів і блокувань, для видачі себе за громадянина іншої країни і взагалі - штука незамінна. Практично повсюдно як простий засіб для організації користувальницького VPN використовується всім відомий OpenVPN, який використовував і я. Рівно доти, поки у мене не з'явився Macbook і OS X на додачу. Через те, що підхід Apple до конфігурації DNS сильно відрізняється від підходу інших *nix-систем, прокидання DNS через VPN нормально не працювало.
Після деяких досліджень у мене вийшло два варіанти: — Використання DNS «мимо» VPN, що дуже небезпечно, але вирішує проблему. — Використання нативних для OS X VPN-протоколів: PPTP та сімейства IPSec. Зрозуміло, я вибрав друге і зрозуміло IPSec, а не застарілий PPTP.
Налаштування Linux (у моєму випадку - Arch Linux)
OS X та IPSec
IPSec це не один протокол, а набір протоколів та стандартів, кожен з яких має купу варіантів та опцій. OS X підтримує три види IPSec VPN:
- IPSec/L2TP - IKEv2 - Cisco VPN
Перший варіант надмірний - який сенс прокидати ethernet-пакети для користувальницького VPN?Другий — вимагає сертифікатів і дуже складного налаштування на стороні клієнта, що теж недобре.Залишається третій, який називається "Cisco", а насправді - XAuth + PSK. Його й використовуватимемо.
Налаштування VPN в OS X
Після деяких невдалих спроб налаштувати VPN на OS X, я поліз вивчати систему на предмет того, як саме там працює VPN.
Недовгий пошук дав мені файлик/private/etc/racoon/racoon.conf, у якому був рядокinclude «/var/run/racoon/*.conf»;.
Після цього все сталоЗрозуміло: при натисканні кнопки OS X генерує конфіг для racoon і кладе його в /var/run/racoon/, після закінчення з'єднання видаляє. Залишилося тільки отримати конфіг, що я зробив, запустивши скрипт перед з'єднанням.
Усередині я знайшов ту інформацію, якої мені не вистачало для налаштування сервера:IPSec proposals. Це списки підтримуваних клієнтом (і сервером) режимів автентифікації, шифрування та підпису, при яких з'єднання не може бути встановлено.
Підсумковийproposal дляOS X 10.11 таiOS 9.3 вийшов таким:
Вибір VDS та налаштування VPN
Для VPN-сервера я вибрав VDS від OVH, оскільки вони дають повноцінну віртуалізацію з можливістю ставити будь-яке ядро з модулями. Це дуже важливо, оскільки ipsec працює на рівні ядра, а не користувача, як OpenVPN.
Режим Cisco VPN (XAuth + PSK) передбачає двоетапну автентифікацію: — Використовуючи ім'я групи та PSK для неї (етап 1); — Використовуючи ім'я користувача та пароль (етап 2).
Налаштування racoon
Racoon - демон, який займається управлінням ключами (IKE). Саме він дає ядру дозвіл на провішування тунелю після того, як аутентифікує клієнта та погодить усі деталі протоколу (aka proposal).
Racoon входить до стандартного пакету ipsec-tools і є практично в будь-якому дистрибутиві Linux «з коробки».
Конфігурація racoon
Конфігурація psk-файлу
Використовуючи випадкові 64 біти групи та 512 біт ключа, я отримую достатньо варіантів, щоб зробити перебір безглуздим.
Налаштування Linux
— Необхідно дозволити маршрутизацію:sysctl net.ipv4.ip_forward=1— Необхідно дозволити протокол ESP та вхідні з'єднання на порти 500/udp та 4500/udp:iptables -tfilter -I INPUT -p esp -j ACCEPT; iptables -t filter -I INPUT -p udp -dport 500 -j ACCEPT; iptables -t filtr -I INPUT -p udp -dport 4500 -j ACCEPT— Необхідно включити NAT для нашої мережі:iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE— Необхідно створити групу та створити/додати туди користувачів:groupadd vpnтаuseradd -G vpn vpn_user— Необхідно запустити racoon:racoon - vF
Налаштування OS X

Вибрати (+) → VPN → Cisco IPSec → придумати назву:


Вибрати «Налаштування автентифікації» → ввести ім'я групи та ключ (саме в такому порядку):

Налаштування iOS
Установки → Основні → VPN → Додати конфігурацію VPN.
Заповнити форму за аналогією, підключитись.
