The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

OpenBSD: IPSec с нуля за 4 минуты (openbsd ipsec tunnel vpn)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: openbsd, ipsec, tunnel, vpn,  (найти похожие документы)
From: Михаил Сгибнев <mixa(@).dreamcatcher.ru> Date: 2006-09-13 15:38:18 Subject: OpenBSD: IPSec с нуля за 4 минуты
Dragos Ruiu 2006-02-28

Перевод: Сгибнев Михаил

В этой короткой статье показано, как за 4 минуты поднять полнофункциональный IPSec VPN между двумя машинами со свежеустановленной ОС OpenBSD.

До недавнего времени установка решений IPSec с открытым исходным кодом была до горечи сложным и запутанным процессом. Много людей разочаровались в IPSec после того, как впервые посмотрели на ужасную и сложную документацию, решив вместо этого установить какой-либо коммерческий SSL VPN, кажущийся намного более простым. Те, кто боролся с хаосом SA, ESP, AH, SPI, CA, сертификатов, FIFO, IKE и жаргоном описания политик в RFC заработали немало головных болей. Однако, недавно появился свет в конце тоннеля - настройка IPSec под OpenBSD.

В этой короткой статье показано, как за 4 минуты поднять полнофункциональный IPSec VPN между двумя машинами со свежеустановленной ОС OpenBSD. Целью этой статьи, конечно же, заключается не в том, чтобы дать исчерпывающий обзор всех опций, доступных в IPSec или OpenBSD, а в том, чтобы показать, как быстро и легко мы можем осуществить то, что у других занимает недели и месяцы.

Введение в ipsecctl OpenBSD

Вы, возможно, не обратили внимание на то, что в OpenBSD 3.8 появилась новая команда: ipsecctl. И это действительно замечательно. Эта команда обеспечивает так необходимый уровень абстракции ко всему очень гибкому, но ужасно запутанному механизму IPSec. В реальной жизни, большинство людей не нуждается и в половине конфигурации и опций протокола, обеспечиваемых IPSec, таким образом, необходимость этого уровня абстракции черезвычайно велика.

Если ваша цель состоит в том, чтобы просто организовать Virtual Private Network (VPN) между между двумя сайтами (сетями, офисами и т.д), то конфигурирование, которое необходимо было сделать, было просто ужасным и бутылка пива была необходимой утилитой. Теперь этих мучений больше нет! Теперь, с помощью ipsecctl, VPN может быть установлен просто редактируя один файл конфигурации OpenBSD: /etc/ipsec.conf.

В качестве тестa, мой коллега Шон Комео и я взяли два, только-только установленных брандмауэра на базе OpenBSD в конфигурации по умолчанию и редактировали три файла. Мы изменили в общей сложности семь строк конфигурации на каждой системе, после чего получили IPSec VPN между нашими двумя сайтами в течение четырех минут после первой начальной загрузки.

Те, кто ранее не сталкивался с процессом установки OpenBSD, найдут его удивительно простым. Два самых популярных способа - установка в CD-ROM и FTP. В этой статье мы предположим, что у вас есть две готовые к запуску машины с OpenBSD. Учтите, что если вы обновили систему через CVS до OpenBSD 3.8-stable или OpenBSD 3.8-current, обе машины в вашем VPN должны быть одинаковых версий.

Пример IPSec

Обозначим цели, которые мы хотим достигнуть: мы хотим объединить две удаленные сети через Виртуальную Частную Сеть IPSec (VPN). Обе сети используют OpenBSD Network Address Translation (NAT).

Сеть А

Внешний IP адрес: 1.2.3.4, диапазон внутренних адресов: 10.1.1.0/24

Сеть В

Внешний IP адрес: 5.6.7.8, диапазон внутренних адресов: 10.2.2.0/24

Файл конфигурации PF, предоставляющего службы брандмауэра и NAT, называется /etc/pf.conf. На обеих системах в этом примере, pf.conf должен выглядеть следующим образом: На обоих системах включен форвардинг пакетов, расскоментировав опцию "net.ip.forwarding=1" в /etc/sysctl.conf, так как он необходим для функционирования службы NAT. Теперь, когда у нас есть две должным образом настроенные системы, приступим к настройке VPN.

Шаг 1. конфигурируем IPSec

Добавим следущие строки к файлу /etc/ipsec.conf на маршрутизаторе А: В том же файле на маршрутизаторе В: Ключ passive указывает на то, что маршрутизатор А инициирует соединение, а маршрутизатор В готовится принять вызов.

Шаг 2. Пропускаем IPSec через брандмауэр

На маршрутизаторе А добавляем следущее в /etc/pf.conf: И заменяем строку "set skip" с: на: Таким образом мы добвим инкапсулированный интерфейс enc0 в список.

Теперь очередь маршрутизатора В. Добавим следущи строки в /etc/pf.conf: Поскольку мы подготовили firewall/NAT и IPSec, приступим к копированию ключей.

Шаг 3. Копируем ключи isakmpd на каждую машину

На маршрутизатор A (1.2.3.4) копируем /etc/isakmpd/private/local.pub с маршрутизатора В в /etc/isakmpd/pubkeys/ipv4/5.6.7.8.

Аналогично, на маршрутизатор В (1.2.3.4) копируем /etc/isakmpd/private/local.pub с маршрутизатора А в /etc/isakmpd/pubkeys/ipv4/1.2.3.4.

Обратите внимание, что хотя в данном примере и использованы IP адреса, можно совершенно спокойно использовать имена FQDN. При использовании доменных имен храните ключи в каталоге /etc/isakmpd/pubkeys/fqdn и ключи srcid и dstid в /etc/ipsec.conf.

Шаг 4. Запуск VPN

Для установления VPN соединения выполните следущие команды: Примите наши поздравления, IPSec VPN должен работать. Вы, наверное будете рады узнать, что ipsecctl самостоятельно сконфигурировало isakmpd и все его ужасные файлы конфигурации, и выбрало хорошие, понятные и безопасные значения по умолчанию.

Опция -K указывает isakmpd не загружать правила конфигурации.

Теперь давайте проверим наш VPN. Вы должны быть в состоянии пинговать узлы из сети 10.2.2.* с узлов сети 10.1.1.* и наоборот. Если связи нет, попробуйте запустить isakmpd с опцией отладки isakmpd-K-d, чтобы получить больше отладочной информации.

Шаг 5. Автоматический запуск после перезагрузки

Запускаемые при старте системы демоны прописываются в файле /etc/rc.conf. Добавьте в него следущие строки: Также необходимо убедиться в том, что ipsecctl тоже запускается при начальной загрузке. Для этого добавьте следущую строку в /etc/rc.local: В заключение, можно отредактировать файл /etc/changelist на обоих маршрутизаторах, для того, чтобы убедиться, что ваш новый /etc/ipsec.conf там перечислен. Этот шаг не обязателен, но позволит посылать письма администратору в случае любых изменений в вашей конфигурации IPSec. Для осуществления этой затеи необходимо указать ваш почтовый адрес в /etc/mail/aliases и выполнить команду newaliases. Если Вы знакомы с pf и pfctl, ipsecctl будет очень прост и приятен в управлении, обеспечивая очень подобный интерфейс. Другими словами, вы можете получить состояние потоков ipsec и ca командой: И так далее. Удивительно, но потребовалось больше чем десятилетие, для того, чтобы наконец обеспечить простой и понятный интерфейс конфигурации IPSec. Теперь этот процесс стал достаточно простым, для того, чтобы рекомендовать его новичкам в IPSec.

Заключение

В этой короткой статье мы рассмотрели, насколько просто установить IPSec VPN между двумя маршрутизаторами OpenBSD. Мы начали с двух инсталляций по умолчанию и изменили в общей сложности семь строк в файлах конфигурации. Вместо того, чтобы потратить дни или недели, чтобы IPSec VPN заработал, мы управились приблизительно за четыре минуты.

В качестве своего личного мнения скажу, что я хотел бы видеть, что другие разработчики *BSD портируют этот инструментарий на свои системы. Ipsecctl был разработан Matt Sauve-Frankel, программирование осуществлял Hans-Joerg Hoexer. В настоящее время ipsecctl, кажется, не корректно работает с IPv6, но поддержка этого протокола планируется в ближайшее время. Также отметьте, что могут быть различия, связанные с тем, что ipsecctl отличается в CVS версиях 3.8-current и 3.8-stable. Поэтому рекомендуется чтобы обе системы работали под управлением одинаковой версии OpenBSD.

Покупайте наших слонов!

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру