IPSEC между FreeBSD и OpenBSD
Поскольку в FreeBSD ipsec по умолчанию
отсутствует , необходимо предпринять ряд шагов .
1.Включить
поддержку IPSEC в ядро.
Для
этого надо добавить следующие опции
options
IPSEC #IP security
options
IPSEC_ESP #IP
security crypto
options
IPSEC_DEBUG #debug for
IP security
в
ядро и пересобрать его.
2.Установить
сам демон Isakmpd .
Можно
установит его из портов , я собирал его из исходников , которые взял здесь - ftp://ftp.netbsd.org/pub/NetBSD/packages/distfiles/LOCAL_PORTS/isakmpd-20021118.tar.gz
Для
правильной сборки надо сделать небольшой патч в заголовке
~/isakmpd/sysdep/freebsd/sysdep-os.h . Необходимо добавить след.
определения
#ifndef
CPI_RESERVED_MAX
#define
CPI_RESERVED_MIN 1
#define CPI_RESERVED_MAX 255
#define CPI_PRIVATE_MIN 61440
#define CPI_PRIVATE_MAX 65536
#endif
Плюс сделать ссылку на заголовок /usr/include/openssl/des.h в /usr/include . Все это необходимо для
нормальной сборки из исходников под FreeBSD.
Теперь
приступаем к собственно сборке. Скрипт configure отсутствует , вместо этого
надо раскомментировать строчку в Makefile, определяющую тип системы –
в нашем случае freebsd.
После
этого согласно README выполняем make
obj && make depend && make
&&
make install
В
результате мы получаем собранный демон Isakmpd , который пока еще лучше не
запускать , так как отсутствуют файлы конфигурации , чем мы и займемся.
Конфигурация Isakmpd
Итак
, мы хотим настроить IPSEC-туннель между сервером OpenBSD
и сервером FreeBSD
.
Оба
сервера имеют реальные адреса , “смотрят” в Интернет и являются gate
для
подключенным к ним локальным сетям .Собственно , обьединение локальных сетей по Ipsec VPN
и есть конечная
цель .
После
изучения примеров и чтения приведенных источников создаем конфигурационные
файлы
Для
FreeBSD он содержит след. строки :
#--------------------------------------------------------------------
#
$OpenBSD: singlehost-east.conf,v 1.10 2000/11/23
# $EOM: singlehost-east.conf,v
1.10 2000/11/23 12:24:43 niklas
# A configuration sample for the isakmpd ISAKMP/Oakley
(aka IKE) #daemon.
[General]
Listen-on=
195.284.181.12
#Shared-SADB=
Defined
Policy-File=
policy
[Phase 1]
194.84.181.85=
host2
#Default=host2-agressive
[Phase 2]
Connections=
host1-host2
[host2]
Phase=
1
Transport=
udp
Local-address=
195.284.181.12
Address=
193.84.181.85
Configuration=
Default-main-mode
Authentication=
здесь пароль
[host2-agressive]
Phase=
1
Transport=
udp
Local-address=
195.284.181.12
Address=
193.84.181.85
Configuration=
Default-aggressive-mode
Authentication=
здесь пароль
[host1-host2]
Phase=
2
ISAKMP-peer=
host2
Configuration=
Default-quick-mode
Local-ID=
Net1
Remote-ID= Net2
[Net1]
ID-type=
IPV4_ADDR_SUBNET
Network=
10.0.0.0
Netmask= 255.255.255.0
[Net2]
ID-type=
IPV4_ADDR_SUBNET
Network=
10.0.1.0
Netmask=
255.255.255.0
[Default-main-mode]
DOI=
IPSEC
EXCHANGE_TYPE=
ID_PROT
Transforms=
3DES-SHA
[Default-aggressive-mode]
DOI=
IPSEC
EXCHANGE_TYPE=
AGGRESSIVE
Transforms=
3DES-SHA-RSA
[Default-quick-mode]
DOI=
IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites=
QM-ESP-AES-SHA-PFS-SUITE
Здесь
195.284.181.12 – адрес нашего сервера , 193.84.181.85 – адрес удаленного OpenBSD
сервера ,
10.0.0.0 – адрес местной локальной сети , 10.0.1.0 – адрес удаленной локалки .
Для
OpenBSD файл конфигурации выглядит так :
#
$OpenBSD: singlehost-east.conf,v 1.10 2000/11/23 12:56:25 niklas Exp $
# $EOM:
singlehost-east.conf,v 1.10 2000/11/23 12:24:43 niklas Exp $
# A configuration sample for the isakmpd ISAKMP/Oakley
(aka IKE) daemon.
[General]
Listen-on=
193.84.181.85
#Shared-SADB=
Defined
Policy-File=
policy
[Phase 1]
194.84.181.12=
host2
#Default=
host2-agressive
[Phase 2]
Connections=
host1-host2
[host2]
Phase=
1
Transport=
udp
Local-address=
193.84.181.85
Address=
195.284.181.12
Configuration=
Default-main-mode
Authentication=
пароль здесь
[host2-agressive]
Phase= 1
Transport=
udp
Local-address=
193.84.181.85
Address=
195.284.181.12
Configuration=
Default-aggressive-mode
Authentication=
здесь пароль
[host1-host2]
Phase=
2
ISAKMP-peer=
host2
Configuration=
Default-quick-mode
Local-ID=
Net1
Remote-ID=
Net2
[Net1]
ID-type=
IPV4_ADDR_SUBNET
Network=
10.0.1.0
Netmask=
255.255.255.0
[Net2]
ID-type=
IPV4_ADDR_SUBNET
Network=
10.0.0.0
Netmask=
255.255.255.0
[Default-main-mode]
DOI=
IPSEC
EXCHANGE_TYPE=
ID_PROT
Transforms=
3DES-SHA
[Default-aggressive-mode]
DOI=
IPSEC
EXCHANGE_TYPE=
AGGRESSIVE
Transforms=
3DES-SHA-RSA
[Default-quick-mode]
DOI=
IPSEC
EXCHANGE_TYPE=
QUICK_MODE
Suites=
QM-ESP-AES-SHA-PFS-SUITE
После
размещения конфигурационных файлов в /etc/isakmpd/ уже можно запускать IPSEC
демон примерно
так – для отладки –
Isakmpd –d –DA=8 .
Окончательно
в работоспособности установленного туннеля убеждаемся при помощи “ping
удаленная
локалка” и tcpdump-a
tcpdump: listening on xl0
08:53:39.384971 esp 193.84.181.12 > 195.284.181.85
spi 0xF0A1A6AC seq 5 len 100
08:53:39.386442 esp 193.84.181.85 > 195.284.181.12
spi 0x54E1850B seq 5 len 100
Результаты
Для
оценки скорости прохождения пакетов через туннель попробуем копировать файлы с
локальной на удаленную машину и обратно . Напомню , что при установленном
туннеле удаленная локальная сеть становится доступно в сетевом окружении сети Windows
.
Картинки
чтения с удаленного диска
И
записи на него
Как
видно , туннель IPSEC обеспечивает неплохие
скорости обмена .