Вопрос: Настройка IPSec тоннеля между маршрутизаторами DI-804HV и FreeSwan (Linux)

Ответ: 

Настройка IPSec тоннеля между маршрутизаторами DI-804HV и FreeSwan (Linux)

Содержание:

  • Введение
  • Конфигурирование
  • Проверка работы

Введение

Этот пример демонстрирует настройку IPSec тоннелей между маршрутизаторами на базе Linux и DI-804HV.
Используемые технологии:

  • Протоколы ESP
  • Алгоритмы шифрования 3des
  • Аутентификация с использованием pre-shared key

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

В этом разделе содержится информация о том, как настроить и использовать технологии, указанные выше. Более детальную информацию обо всех параметрах настройки IPSec на маршрутизаторе DI-804HV можно получить в руководстве пользователя.
Диаграмма тестовой сети:

 

Файлы конфигураций:

FreeSwan

Версия ядра Linux: 2.4.24
Версия FreeS/WAN: 1.96
Более подробную информацию по настройке FreeSwan можно получить на сайте проекта: http://www.freeswan.org/

Несколько важных замечаний перед настройкой:
Туннель между FreeSwan и DI-804HV возможен при условии шифрования по алгоритму 3des и использования DH group2 и D5. Это связано с ограничениями в работе FreeSwan:

  • не работает с ключами короче 1024 (DH group2);
  • не поддерживает des;
  • аутентификация только по hmac (нет esp-auth).

Для настройки FreeSwan необходимо изменить два файла: ipsec.conf и ipsec.secrets. Настраивать протоколы шифрации, DH Group и т.д. не нужно - FreeSwan содержит уже предопределенные наборы конфигураций и в зависимости от настроек на соседнем устройстве подставлет необходимые настройки.

ipsec.conf:

# /etc/ipsec.conf - FreeS/WAN IPsec configuration file

# More elaborate and more varied sample configurations can be found
# in FreeS/WAN's doc/examples file, and in the HTML documentation.

# basic configuration
config setup
# THIS SETTING MUST BE CORRECT or almost nothing will work;
# %defaultroute is okay for most simple cases.
# interfaces=%defaultroute
interfaces="ipsec0=eth0"
# Debug-logging controls: "none" for (almost) none, "all" for lots.
klipsdebug=none
plutodebug=none
# Use auto= parameters in conn descriptions to control startup actions.
plutoload=%search
plutostart=%search
# Close down old connection when new one using same ID shows up.
uniqueids=yes

# defaults for subsequent connection descriptions
# (mostly to fix internal defaults which, in retrospect, were badly chosen)
conn %default
keyingtries=0
disablearrivalcheck=no
#authby=rsasig
leftrsasigkey=%dns
rightrsasigkey=%dns

# sample VPN connection
conn di804
authby=secret
keylife=28800s
# Left security gateway, subnet behind it, next hop toward right.
left=192.168.100.25
leftsubnet=192.168.14.0/24
#leftnexthop=192.168.100.179
# Right security gateway, subnet behind it, next hop toward left.
right=192.168.100.201
rightsubnet=192.168.3.0/24
#rightnexthop=10.101.102.103
# To authorize this connection, but not actually start it, at startup,
# uncomment this.
auto=add

ipsec.secrets:

# This file holds shared secrets or RSA private keys for inter-Pluto
# authentication. See ipsec_pluto(8) manpage, and HTML documentation.

# RSA private key for this host, authenticating it to any other host
# which knows the public part. Suitable public keys, for ipsec.conf, DNS,
# or configuration of other implementations, can be extracted conveniently
# with "ipsec showhostkey".
#: RSA {
# -- not filled in because ipsec.secrets existed at build time --
# }
# do not change the indenting of that "}"
192.168.100.201 192.168.100.25: PSK "123456"

DI-804HV

Т.к. конфигурационный файл данного маршрутизатора имеет двоичный вид, то настройку ipsec мы наглядно продемонстрируем скриншотами:

1. Переходим по адресу Home->VPN
Страница VPN Settings
Здесь нужно включить Enable the VPN, затем ввести нужное вам количество тоннелей VPN в поле Max. number of tunnels
В поле Tunnel Name задать имя тоннеля (ID номер 1), в поле Method выбрать IKE, затем нажать кнопку More:

 

2. Страница VPN Settings - Tunnel 2
В поле Local Subnet и Local Netmask задать соответствующие параметры для LAN в которой находится DI-804HV
В поле Remote Subnet и Remote Netmask задать соответствующие параметры для удаленной подсети, находящейся за маршрутизатором Linux.
В поле Remote Gateway ввести IP-адрес внешнего интерфейса Linux, и в поле Preshared Key ввести ключ
Нажать на кнопку Apply:

 

3. Нажать на кнопку Select IKE Proposal
Страница VPN Settings - Tunnel 2 - Set IKE Proposal
Примечание: Здесь выбор настроек определяется пользователем исходя из требований производительности или надежности. Приведенные ниже настройки даны в качестве примера. Вы также можете использовать другие комбинации - необходимое требование при этом одно: настройки должны быть идентичны на обоих устройствах, организующих IPSec тоннель!
Ввести имя для ID номер 2 и выбрать Group 2 из выпадающего меню DH Group.
Выбрать алгоритм шифрации 3DES в поле Encryption Algorithm и алгоритм аутентификации MD5 в поле Authentication Algorithm
Ввести значение Lifetime равным, например, 3600 и выбрать Sec
Выбрать 1 из выпадающего меню Proposal ID и нажать Add To - это добавит то что мы сконфигурировали к IKE Proposal Index. Нажать Apply а затем Back. Нажать Select IPSec Proposal:

 

4. Страница VPN Settings - Tunnel 2 - Set IPSEC Proposal
Примечание: Здесь выбор настроек определяется пользователем исходя из требований производительности или надежности. Приведенные ниже настройки даны в качестве примера. Вы также можете использовать другие комбинации - необходимое требование при этом одно: настройки должны быть идентичны на обоих устройствах, организующих IPSec тоннель!
Ввести имя для предложенного ID номер 2 и выбрать Group 2 из выпадающего меню DH Group
Выбрать ESP в Encapsulation Protocol
Выбрать 3DES в Encryption Algorithm и SHA1 в поле Authentication Algorithm
Ввести значение Lifetime равным 28800 и выбрать Sec.
Выбрать 1 из выпадающего меню Proposal ID и нажать Add To, это добавит то что мы сконфигурировали к IPSec Proposal Index.
Нажать Apply:

 

Все, на этом конфигурирование устройств закончено

Проверка

Теперь для поднятия тоннеля между устройствами посылаем icmp-запрос из одной подсети в другую:

 

Тоннель устанавливается за несколько секунд и после этого пакеты icmp, как и весь остальной трафик между сетями, направляются именно по тоннелю IPSec.

На маршрутизаторе DI-804HV в логе появляются подобные записи:

 

Для поиска ошибок со стороны FreeSwan используется debug.