Интернет-форум

Вернуться   Интернет в Санкт-Петербурге > Разное > Все о софте

>> Хостинг - 2 Gb-20 Gb, CPanel, SSH, Web Disk, Softaculous, FTP, MySql, SSL сертификат, BackUP
>> VDS от 200 рублей, активация от 1 до 5 минут, OS: Debian, CentOs, Ubuntu, 10-50 Gb защита от DDoS
>> Конструктор сайтов: 198 шаблонов в 22 категориях! SSL, e-commerce, веб-почта, статистика сайта, 50 мб бесплатно!
Все о софте Обсуждение программного обеспечения, проблемы и их решения - здесь.

 
Опции темы
Старый 12.02.2010, 21:42
  #1
Завсегдатай
 
Аватар для andy-none

Exclamation UNIX-like: организация vpn используя ipsec/IKE (racoon)

День добрый. Решил поделиться опытом организации ВПН используя IKE(racoon).

Собственно ipsec/racoon был выбран по следующим причинам:
1) Высокая стабильность работы;
2) Кроссплатформенная реалиация (возможно объединение Linux<>Cisco; Linux<>Windows);
3) Наличие опыта организации впн используя ipsec/openswan.

Собственно статья ориентированна на unix-like пользователей. Настройка производилась на шлюзах с debian lenny на борту, ядро 2.6.30. В принципе ОС значения не имеет, на redhat-like все делается аналогично.

Реализаций ipsec существует с десяток. В моем случае рассматривается ipsec over gre. GRE был выбран в целях совместимости с cisco ipsec (хотя с ipsec на цисках дело не имел...но все когда нибудь может произойти...).

Итак. Сначала устанавливаем необходимые пакеты:
Код:
aptitude install ipsec-tools racoon
Далее необходим модуль ядра для поддержки gre. Делаем:
Код:
modprobe ip_gre
Также добавляем в /etc/modules

Далее привожу мой конфигурационный файл /etc/network/interfaces
Хост слева (beta):
Код:
auto eth0
allow-hotplug eth0
iface eth0 inet static
        network 82.140.78.112
        gateway 82.140.78.113
        address 82.140.78.114
        broadcast 82.140.78.119
        netmask 255.255.255.248

auto eth1
allow-hotplug eth1
iface eth1 inet static
        address 192.168.1.1
        network 192.168.1.0
        netmask 255.255.255.0

auto tun0 # описание виртуального gre туннеля
iface tun0 inet static
        address 192.168.100.5
        netmask 255.255.255.252
        broadcast 192.168.100.7
        up ifconfig tun0 multicast
        pre-up ip tunnel add tun0 mode gre local 82.140.78.114 remote 82.140.78.116 ttl 255
        pointopoint 192.168.100.5
        post-up ip link set tun0 mtu 1400
        post-down ip link set tun0 down
        post-down ip tunnel del tun0
        post-up ip r add 192.168.4.0/24 via 192.168.100.6 dev tun0 # маршрут в противоположную сеть
Хост справа (delta):
Код:
auto eth0
allow-hotplug eth0
iface eth0 inet static
 	network 82.140.78.112
 	gateway 82.140.78.113
	address 82.140.78.116
	broadcast 82.140.78.119
	netmask 255.255.255.248

auto eth1
allow-hotplug eth1
iface eth1 inet static
	address 192.168.4.1
	network 192.168.4.0
	netmask 255.255.255.0

auto tun0
iface tun0 inet static
        address 192.168.100.6
        netmask 255.255.255.252
        broadcast 192.168.100.7
        up ifconfig tun0 multicast
        pre-up ip tunnel add tun0 mode gre local 82.140.78.116 remote 82.140.78.114 ttl 255
        pointopoint 192.168.100.5
        post-up ip link set tun0 mtu 1400
        post-down ip link set tun0 down
        post-down ip tunnel del tun0
        post-up ip r add 192.168.1.0/24 via 192.168.100.5 dev tun0 # маршрут в противоположную сеть
Режимы работы racoon
Racoon умеет работать в двух режимах:
1. direct
2. racoon-tool

Первый вариант рекомендуемый (пока сам не понимаю почему), но настройка через racoon-tool является несколько более простой. При настройке через racoon-tool при каждом запуске racoon генерирует файл /var/lib/racoon/racoon.conf Редактирование режима работы осуществляется путем редактирования файла /etc/default/racoon В моем случае рассматривается первый вариант.

Настройки firewall для первого хоста (beta)
Для функционирования ipsec для IKE необходимо открыть udp порт 500 (ISAKMP), а также 4500 (NAT-T). Кроме этого необходимо обеспечить беспрепятственное прохождение пакетов по протоколу esp, ah и gre между удаленными хостами:
Код:
iptables -t filter -A INPUT -p udp -s 82.140.78.116 -d 82.140.78.114 --dport 500 --j ACCEPT
iptables -t filter -A INPUT -p udp -s 82.140.78.116 -d 82.140.78.114 --dport 4500 --j ACCEPT
iptables -t filter -A INPUT -p esp -s 82.140.78.116 -d 82.140.78.114 -j ACCEPT
iptables -t filter -A INPUT -p ah -s 82.140.78.116 -d 82.140.78.114 -j ACCEPT
iptables -t filter -A INPUT -p gre -s 82.140.78.116 -d 82.140.78.114 -j ACCEPT
На другом хосте сделать аналогичные действия.

Настройка /etc/ipsec-tool.conf
Пример конфига первого хоста (beta):
Код:
#!/usr/sbin/setkey -f
# Flush the SAD and SPD
flush;
spdflush;

spdadd 82.140.78.114 82.140.78.116 gre -P out ipsec
        esp/transport/82.140.78.114-82.140.78.116/require;

spdadd 82.140.78.116 82.140.78.114 gre -P in ipsec
        esp/transport/82.140.78.116-82.140.78.114/require;
На втором хосте меняем ip адреса местами.

Файл /etc/racoon/psk.txt
В данном варианте рассматривается вариант с psk ключем. Однако на моем "боевом" сервере используются сертификаты X.509. Но это уже другая история...
Итак. В psk.txt в качестве ключа можно использовать произвольный текст. Я же предлагаю Вам сгенерировать ключ например таким образом:
Код:
dd if=/dev/random count=24 bs=1 |xxd -ps
После этого редактируем файл psk.txt. Привожу пример для первого хоста (beta)
Код:
82.140.78.116 a20ca6efb4dc64ed23e6007f84d6b121e72bf16409edddf5
На втором хосте делаем аналогично.

Настройка /etc/racoon/racoon.conf
Подходим к финальной фазе. Настраиваем racoon.conf. Привожу пример для первого хоста (beta).
Код:
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";

log debug2;
padding
{
        maximum_length 20; 
        randomize off; 
        strict_check off;
        exclusive_tail off;
}

# по умолчанию racoon слушает все доступные интерфейсы
listen
{
        isakmp 82.140.78.114 [500];
}

# тайминги
timer
{

        counter 5;
        interval 20 sec; 
        persend 1; 
        phase1 90 sec;
        phase2 60 sec;
}

remote 82.140.78.116
{
        my_identifier address 82.140.78.114;
        exchange_mode main,aggressive;  # режим первой фазы. Означает порядок перебора. Использование aggressive не рекоммендкется
        doi ipsec_doi;
        proposal_check obey; 

        proposal
        {
                encryption_algorithm 3des;
                hash_algorithm md5;
                authentication_method pre_shared_key;
                dh_group modp1024;
                lifetime time 3600 sec;
        }
}

sainfo anonymous
{
        pfs_group 2;
        encryption_algorithm 3des;
        authentication_algorithm hmac_md5;
        compression_algorithm deflate;
        lifetime time 3600 sec;
}
На втором хосте меняем в конфиге ip адреса.


На этом настройка окончена. Теперь необходимо рестартануть setkey и racoon на каждом из шлюзов и поднять виртуальный интерфейс tun0:
Код:
/etc/init.d/setkey restart && /etc/init.d/racoon restart && ifup tun0
Далее смотрим таблицу маршрутизации (ip r l) и если все окей смотрим в логи (syslog). В случае если ракуны "договорились" (проверить можно командой setkey -D), в логах должны увидеть такую строчку:
Код:
Feb  8 15:37:31 beta racoon: INFO: IPsec-SA established: ESP/Transport 82.140.78.114[500]->82.140.78.116[500] spi=40483762(0x269bbb2)
Для окончательной проверки запускаем tcpdump на первом хосте:
Код:
tcpdump -i eth0 -p esp
и запускаем пинг со второго хоста на первый. tcpdump покажет наличие пакетов по протоколу esp.

На этом вроде все...если что забыл, то буду дополнять. Жду комментариев/вопросов.

Последний раз редактировалось andy-none; 12.02.2010 в 22:01..
andy-none вне форума   Ответить с цитированием
Ответ

Метки
ipsec, linux, psk, racoon, vpn

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
организация WiFi в офисе sergery74 Сетевое оборудование 9 21.04.2011 01:49
Организация видеонаблюдения Char Сетевое оборудование 18 22.10.2009 15:35
Организация сетевого хранилища Char Все о софте 3 17.08.2009 20:09
Как сэкономить трафик используя телефон в качестве модема? toshaalex Флейм 18 15.01.2009 21:24
Организация RSS Unix Сетевые технологии 7 21.11.2008 09:36


Часовой пояс GMT +3, время: 01:58.


DSLnet.ru © 2004-2012. Все права защищены.
vBulletin® Version 3.8.2 Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
Rambler's Top100 Рейтинг@Mail.ru