Багато операційних систем підтримують L2TP / IPsec VPN "з коробки". Об'єднуючи сервіси конфіденційності і аутентифікації IPsec (безпека Інтернет-протоколу), мережеве туннелирование протоколу тунелювання другого рівня (L2TP) та ідентифікацію користувача через pppd, адміністратори можуть створювати VPN-мережі на безлічі різнорідних систем. Це дозволяє налаштувати VPN на Android, Windows, Linux, MacOS та інших операційних системах без використання будь-якого комерційного ПЗ.
В цьому підручнику не охоплює установку DHCP, RADIUS, Samba або Інфраструктури Відкритих Ключів (PKI). Воно також зовсім не пояснює, як налаштовувати Linux-клієнтів, хоча цей крок може бути досить легко отриманий з керівництва. Буде висвітлена частина конфігурації Windows-клієнтів з метою усунення неполадок в налаштуванні сервера.
Умовні позначення
У цьому керівництві будуть використані наступні умовні позначення (приклад налаштувань):
- Домен - example.com
- Ім'я сервера - vpn.example.com
- Файл сертифіката CA - ca.crt
- Сертифікат сервера - vpn.example.com.crt
- Ключ сервера - vpn.example.com.key
- Сертифікат клієнта - client.example.com.crt
- Ключ клієнта - client.example.com.key
Перший і найскладніший рівень для настройки - IPsec. Зауважимо, що IPsec - однорангова мережа, таким чином, в її термінології клієнт називається ініціатор. а сервер - відповідач.
Windows використовує IKEv1. Існують 3 реалізації IPsec в Portage: ipsec-tools (racoon), LibreSwan і strongswan.
У наступних розділах пояснюються різні конфігурації. Для кожного варіанта документується
Варіант 1: ipsec-tools (racoon)
замітка
net-firewall / ipsec-tools повинен бути скомпільовано з прапором nat. якщо або сервер знаходиться за NAT, або необхідна підтримка клієнтів, які перебувають за NAT.
ipsec-tools найменш функціональний, але для тих, хто прийшов з * BSD, він може бути ближчий. Однак, на відміну від * BSD, Linux не використовує окремий інтерфейс для IPsec.
Після установки ipsec-tools необхідно створити кілька файлів. Для початку створимо каталоги, в яких вони будуть зберігається:
root # mkdir / etc / racoon / certs
root # mkdir / etc / racoon / scripts
Налаштування PSK в ipsec-tools
user $ dd if = / dev / random count = 24 bs = 1 2> / dev / null | hexdump -e '24 / 1 "% 02x" "\ n" '
Кожен запис в PSK файлі складається з ідентифікатора і ключа. Windows ідентифікує себе за допомогою повного імені домену (FQDN). Ключ повинен бути позначений як рядок або шістнадцяткове число, що починається з 0x. У будь-якому випадку, вміст (сам ключ) - повністю у виборі адміністратора:
У файлі racoon.conf PSK файл позначається через опцію path pre_shared_key.
Файл /etc/racoon/racoon.confІспользованіе racoon з PSK
Налаштування ipsec-tools з використанням сертифіката
Скопіюйте ca.crt. vpn.example.com.crt і vpn.example.com.key в / etc / racoon / certs. Переконайтеся, що vpn.example.com.key недоступний для всіх користувачів.
Далі, поновіть конфігурацію у файлі racoon.conf. додавши ці файли в розділі remote anonymous.
Файл /etc/racoon/racoon.confІспользованіе сертифікатів з racoon
Вирішення проблем ipsec-tools
Коли виникають проблеми, цей розділ може дати кілька вказівок в їх вирішенні.
Створення політик безпеки і NAT
Опція generate_policy on; повинна змусити racoon створювати для нас потрібну Політику Безпеки. Однак, в присутність NAT (хоча б, якщо сервер знаходиться за NAT) він зробить це зовсім не так, як хотілося б. Таким чином, якщо трафік не проходить по тунелю, політика безпеки повинна бути визначена вручну.
Політика створюється у файлі /etc/ipsec-tools.conf.
Варіант 2: LibreSwan
LibreSwan - відгалуження від Openswan (який сам є відгалуженням від FreeS / WAN). LibreSwan дійсно роздвоївся зі збереженням справжніх розробників Openswan, однак після того, як вони покинули Xelerance, суперечка про назву "Openswan" переріс в судовий позов, після якого було прийнято ім'я LibreSwan.
Обхід NAT встановлений за замовчуванням в файлі конфігурації LibreSwan, таким чином ніяких особливих етапів настройки не потрібно.
Налаштування PSK в LibreSwan
Потім створіть /etc/ipsec.d/vpn.example.com.conf.
Налаштування LibreSwan з використанням сертифіката
LibreSwan вимагає, щоб Network Security Services (NSS) були правильно налаштовані і використані для управління сертифікатами. Щоб було простіше налаштувати, необхідно створити пакет PKCS # 12, що містить секретний ключ сервера, його сертифікат і сертифікат ЦС.
user $ openssl pkcs12 -export -certfile ca.crt -inkey vpn.example.com.key -in vpn.example.com.crt -out /etc/ipsec.d/vpn.example.com.p12
Потім пакет може бути імпортований в базу даних NSS:
root # cd /etc/ipsec.d
root # pk12util -i шлях до пакету /vpn.example.com.p12 -d.
Файли LibreSwan будуть посилатися на псевдонім імпортованих об'єктів. Використовуйте certutil -L -d. і certutil -K -d. щоб його дізнатися.
У наведеному прикладі vpn.example.com використаний як псевдонім, отриманий за допомогою команди certutil -K -d.
Тут vpn.example.com - псевдонім, отриманий за допомогою команди certutil -L -d.
Варіант 3: strongSwan
strongSwan - це відгалуження від FreeS / WAN (хоча велика частина коду була замінена).
Що стосується strongSwan 5.0, обхід NAT є автоматичним, нічого налаштовувати не потрібно.
strongSwan НЕ створює файл ipsec.secrets. тому його потрібно створити:
root # touch /etc/ipsec.secrets chmod 664 /etc/ipsec.secrets
Налаштування PSK в strongSwan
Далі відредагуйте /etc/ipsec.conf як показано нижче:
Коли і left. і right задані як% any. strongSwan має на увазі, що л окальний комп'ютер - l eft.
Налаштування strongSwan з використанням сертифіката
Сертифікати та ключі повинні бути скопійовані в потрібну папку:
root # cp ca.crt /etc/ipsec.d/cacerts
root # cp vpn.example.com.crt /etc/ipsec.d/certs
root # cp vpn.example.com.key /etc/ipsec.d/private
root # chown -R ipsec: /etc/ipsec.d
Нарешті, поновіть файл /etc/ipsec.conf як показано нижче:
Як і раніше, коли і left. і right рівні% any. strongSwan має на увазі, що л окальний комп'ютер - l eft.
Пошук та усунення несправностей зі strongSwan
Наскрізний прохід IPsec / пошкоджений NAT
У попередніх версіях strongSwan наскрізний прохід IPsec не видався робочим. Він повертав "can not respond to IPsec SA request because no connection is known" або (зі складним редагування конфігураційного файлу) помилку INVALID_HASH_INFORMATION. Такого не може бути зі strongSwan версії 5.0 і вище.
Пошук та усунення несправностей зі стандартним IPsec
З IPsec нелегко мати справу. Цей розділ дає кілька вказівок на загальні проблеми і помилки.
Сервер за NAT
відкриття портів
Необхідно відкрити 2 порту:
- UDP port 500 (for ISAKMP)
- UDP port 4500 (for NAT Traversal)
Переконайтеся, що відправили це VPN сервера.
Також такі Протоколи Інтернету (не псувати) потребують дозволу:
Може знадобитися налаштувати їх на стороні роутера, якщо у нього є особливі параметри для протоколів (втім, у більшості їх немає).
Наскрізний прохід IPsec / пошкоджений NAT
Багато роутери мають опцію "IPsec pass-through", яка може позначати одне з двох:
- Спотворювати пакети IPsec способом, несумісним з обходом NAT IPsec
- Дозволяти всім IPsec пакетам без змін проходити через роутер.
Якщо IPsec pass-through означає (1), відключіть цю опцію. Якщо він означає (2), то включіть її.
На жаль, існують роутери, які кидають IPsec трафік, навіть якщо порти дозволені, і підтримують тільки опцію (1). Для тих, у кого такий роутер, є 3 варіанти:
- Оновити прошивку, якщо буде доступна його новіша, правильно працює версія.
- Відкрити звіт про помилку / несправність з моделлю роутера, якщо він не застарів
- Знайти інший роутер. За описами, роутери Linksys і D-link працюють правильно.
Це керівництво спочатку було написано з таким роутером (Zyxel P-330W), і єдиним доступним варіантом був (3).
Ці операційні системи автоматично не підтримують IPsec / L2TP сервера за NAT. Див. KB926179 для змін в реєстрі, які змушують їх підтримувати його.
Обмеження Pre-Shared keys (PSK)
Другий рівень, протокол тунелювання другого рівня (L2TP), налаштовується набагато простіше. Як і IPsec, L2TP - спеціальний робочий протокол. Клієнтська сторона називається L2TP Access Concentrator або LAC, а серверна - L2TP Network Server або LNS.
попередження
L2TP абсолютно небезпечний і не повинен бути доступний поза з'єднання IPsec
При використанні iptables, застосуєте наступні правила, щоб заблокувати всі з'єднання L2TP поза ipsec:
root # iptables -t filter -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport l2tp -j ACCEPT
root # iptables -t filter -A INPUT -p udp -m udp --dport l2tp -j REJECT --reject-with icmp-port-unreachable
root # iptables -t filter -A OUTPUT -p udp -m policy --dir out --pol ipsec -m udp --sport l2tp -j ACCEPT
root # iptables -t filter -A OUTPUT -p udp -m udp --sport l2tp -j REJECT --reject-with icmp-port-unreachable
Використання xl2tpd
Для використання сервера RADIUS або DHCP, залиште відключеними опції ip range і local ip. Якщо з'єднання нестабільно, спробуйте додати length bit = yes в розділ lns default. Щоб не використовувати PPP аутентифікацію, замініть require authentication = yes на refuse authentication = yes.
Створіть файл опцій:
Використання rp-l2tp
Налаштовувати rp-l2tp просто:
Заключний рівень для настройки - Протокол точка-точка (PPP). Пакет для установки - net-dialup / pptpd.
root # emerge --ask net-dialup / pptpd
- всі клієнтські комп'ютери повністю довірені і знаходяться під контролем, або
- всі користувачі довірені і ключі є тільки на комп'ютерах поруч з самими користувачами, які мають доступ, і ніде більше, або
- всі з'єднання здійснюються автоматично (цей метод використовується для підключення декількох місць)
попередження
/ Etc / ppp / chap-secrets містить незашифровані паролі, тому переконайтеся, що тільки root може виконувати читання або запис в цей файл
Якщо на комп'ютері запущено сервер RADIUS, то pppd може використовувати його. Переконайтеся, що net-dialup / ppp зібраний з USE-прапором radius. Потім додайте plugin radius.so до опцій PPP. Налаштування RADIUS і pppd знаходиться за межами цього керівництва.
Пошук та усунення несправностей клієнта
Windows: Правильна установка сертифіката (для користувачів PKI)
Сертифікат повинен бути запакований в пакет PKCS12. Це може бути зроблено за допомогою openssl або gnutls:
user $ openssl pkcs12 -export -certfile ca.crt -inkey client.example.com.key -in client.example.com.crt -out client.example.p12
user $ certtool --load-ca-certificate ca.crt --load-certificate client.example.com.crt --load-privkey client.example.com.key --to-p12 --outfile client.example.com .p12
Код Імпорт ключа в Windows
Розгорніть Сертифікати. Виберете будь-яку папку (без різниці яку), клацніть правою кнопкою миші, виберете "Усі завдання", потім "Імпорт.". Тільки зараз дотримуйтесь вказівок майстра, але на останньому кроці переконайтеся, що вибрано "Автоматично вибрати сховище на основі типу сертифіката".
Windows: Мережеві помилки RAS
Помилка 766: Сертифікат не може бути знайдений
Якщо відбувається така помилка, значить сертифікат не правильно імпортовано. Переконайтеся, що імпортували його через MMC, а не подвійним клацанням файлу.
Помилка 810: VPN з'єднання не завершено
При використанні ipsec-tools (racoon) в системному балці може з'явиться наступне повідомлення:
Код Повідомлення про помилку в системному балці при використанні ipsec-tools / racoon
Це означає, що сертифікат був неправильно імпортовано, або пакет p12 відсутня в сертифікаті ЦС. Переконайтеся, що імпортували ключ через MMC і вибрали "Автоматично вибрати сховище на основі типу сертифіката" в кінці процесу імпорту.
XP SP2 і вище: Помилка 809: Сервер не відповідає (Сервер за NAT)
Windows XP SP2 і Vista замовчуванням не будуть підключатися до сервера за NAT. Потрібно злом реєстру. Окремі виправлення потрібні для Windows XP і Windows Vista.
Ця помилка з'являється тільки при використанні PKI. Вона означає, що subjectAltName не відповідає серверу, до якого підключається клієнт. Таке часто трапляється при використанні динамічного DNS, - сертифікат має внутрішнє ім'я, а не зовнішнє. Додайте до сертифіката зовнішнє ім'я або вимкніть опцію "Перевірити атрибути імені та використання у сертифіката сервера" в настройках з'єднання: Безпека -> Додаткові параметри -> L2TP.
Помилка 741: Локальний комп'ютер не підтримує необхідний тип шифрування
Windows буде намагатися реалізувати MPPE (слабке) шифрування, коли
тоді відбувається дана помилка.
замітка
З'єднання все ж так чи інакше захищене шифруванням IPsec, відключиться тільки потреба в MPPE.
Mac OS X клієнти повинні бути вимогливі до рекомендацій, з якими вони погоджуються. Зокрема:
Mac OS X НЕ буде підключатися, якщо subjectAltName не збігається з назвою сервера, з яким він з'єднується. На відміну від Vista, ця перевірка не може бути відключена.
Також, Mac OS X не підключений, якщо сертифікат сервера містить поля "розширеного ключа" (EKU) (крім застарілих ikeIntermediate). Зокрема, при використанні сертифікатів з утиліти easy-rsa OpenVPN. додаються EKU "TLS WWW Сервер" або "TLS WWW Клієнт", тому такі сертифікати не будуть працювати. Однак, вони все ж можуть бути використані Mac OS X клієнтом, оскільки його цікавлять тільки сертифікати сервера.