Александр Мутовин
25.10.2019
38935

l2tp/ipsec на Centos

При использовании OpenVPN между сервером на Centos и роутером MikroTik SOHO сегмента можно столкнуться с проблемой, когда процессор на роутере загружен на 100%, а скорость передачи данных не превышает 7-8 мегабит. Это связано с тем, что OpenVPN на микротике очень требовательный к ресурсам процессора. На слабых устройствах не рекомендуется применять этот вид туннелей. При использовании […]

При использовании OpenVPN между сервером на Centos и роутером MikroTik SOHO сегмента можно столкнуться с проблемой, когда процессор на роутере загружен на 100%, а скорость передачи данных не превышает 7-8 мегабит. Это связано с тем, что OpenVPN на микротике очень требовательный к ресурсам процессора. На слабых устройствах не рекомендуется применять этот вид туннелей.

При использовании L2TP можно добиться на порядок  большей производительности. Трафик через L2TP туннель сам по себе передается в нешифрованном виде. Для шифрования трафика используют связку с IPSEC.

IPSEC – это набор протоколов применяющихся для проверки подлинности, целостности и шифрования данных.

Для настройки IPSEC на операционных системах Linux можно использовать три пакета: «racoon, strongswan, libreswan».

В нашем случае мы будем делать тунель на сервере с операционной системой Centos7 с помощью пакета «racoon».

Если у вас еще не установлен репозиторий Epel-release установите его следуюзей командой:

# yum install epel-release
Установка репозитория
Установка репозитория

Raccoon входит в состав пакета «ipsec-tools». Установим его:

# yum install ipsec-tools
Установка пакетов, для работы с ipsec
Установка пакетов, для работы с ipsec

Приступим к настройке racoon. Конфигурационный файл находится: «/etc/racoon/racoon.conf»

Конфигурационный файл racoon.conf
Конфигурационный файл racoon.conf
# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
path script "/etc/racoon/scripts";

sainfo anonymous
{
        #pfs_group 2;
        lifetime time 1 hour ;
        encryption_algorithm 3des, blowfish 448, rijndael ;
        authentication_algorithm hmac_sha1, hmac_md5 ;
        compression_algorithm deflate ;
}

remote anonymous
{
        exchange_mode    main,aggressive,base;
        doi              ipsec_doi;
        passive          on;
        proposal_check   obey;
        support_proxy    on;
        nat_traversal    on;
        ike_frag         on;
        dpd_delay        20;
        proposal
        {
                encryption_algorithm  aes;
                hash_algorithm        sha1;
                authentication_method pre_shared_key;
                dh_group              modp1024;
        }
        proposal
        {
                encryption_algorithm  3des;
                hash_algorithm        sha1;
                authentication_method pre_shared_key;
                dh_group              modp1024;
        }
}

Те строчки, которые начинаются с символа «#» считаются комментариями и не влияют на конфигурационный файл.

Далее идет секция «sainfo». В этой секции описываются правила «ассоциации безопасности» второй фазы. Тут указываются параметры IKE.

IKE это протокол используемый для защищенного согласования и доставки идентификационного материала для «ассоциации безопасности».

Sainfo anonymous – применять это правило для всех подключений.
lifetime time  – этот параметр задает срок жизни ассоциации безопасности (через какое время менять ключи).
encryption_algorithm – определяются алгоритмы шифрования.
authentication_algorithm – определяются алгоритмы хэша при проверке подлинности.
compression_algorithm – алгоритм сжатия.

Далее идет раздел «remote anonymous». Блок настроек, применяемый к соединению  с удаленным хостом (Параметры для IKE первой фазы). Если указан «anonymous», настройки применяются к любому хосту. Также можно указать конкретный ip либо подсеть.

exchange_mode –  определяет режим проверки подлинности для фазы 1.
doi   – область интерпретации защиты ip (Domain of Interpretation, являющийся базой данных, хранящей сведения об алгоритмах).
Passive – когда пассивный режим включен, он будет ожидать, пока удаленный узел не установит соединение IKE. Включенный пассивный режим также указывает на то, что узел является ответчиком. Отключенный пассивный режим является инициатором соединения.
proposal_check – проверка ресурса фазы 2. В нашем случае принимать все, что отправлено инициатором.
support_proxy – поддержка прокси.
nat_traversal – параметр для решения проблемы NAT.
ike_frag  – IKE фрагментация на принимающей стороне. Применяется в случае плохого фаервола, имеющего проблемы с фрагментацией UDP.
dpd_delay – проверка соединения. В нашем случае раз в 20 секунд.

После этого идет вложенный блок «proposal». Это метод аутентификации (шифрование клиентов).

encryption_algorithm – алгоритм шифрования для фазы 1.
hash_algorithm – хэш алгоритм для фазы 1.
authentication_method – Метод аутентификации (в нашем случае используется ключ.)
dh_group – группа для Диффи-Хельмана.

После внесения конфигурационных данных необходимо указать ключ IPSEC. Ключ прописывается в файле «/etc/raccoon/psk.txt»

Указание ключа IPSEC
Указание ключа IPSEC

Далее необходимо создать скрипт с настройками IPSEC политик. Пропишем в файле «/etc/rc.d/init.d/raccoon.init»

Настройка политики IPSEC
Настройка политики IPSEC

Spdflush b flush очищают от записей базы данных SPD и SAD.

SPD – политики безопасности (Security Policy Database). SAD – безопасные ассоциации  (Security Associations Database)

spdadd 0.0.0.0/0[l2tp] 0.0.0.0/0 any -P out ipsec esp/transport//require; – первый адрес это src адрес отправителя. Второй адрес – dst (адрес получателя).

Any – доверить любой протокол программе.

-P – исходящие пакеты будут подвергаться обработке IPSEC.

esp/transport//require; – на транспортном уровне всегда требовать SA (Security Association).

Последняя строчка делает тоже, что и предыдущая, но для входящих пакетов.

Далее задаем права на файл:

# chmod 755 /etc/rc.d/init.d/raccoon.init

Для того, чтобы правила применялись после перезагрузки, добавим строчку «/etc/rc.d/init.d/racoon.init» в файл /etc/rc/local.

Приступим к настройке L2TP.

Установим пакет xl2tpd:

# yum install –y xl2tpd

В конфигурационом файле «/etc/xl2tpd/xl2tpd.conf» необходимо внести следующие настройки:

Конфигурационный файл l2tp
Конфигурационный файл l2tp

В секции «[global]» описываются глобальные настройки.

Ipsec saref – когда этот параметр имеет значение «yes», пакеты полученные для xl2tpd должны иметь дополнительные поля (refme и refhim). Это позволяет работать с клиентами за NAT.
force userspace= yes – это параметр значительно улучшает производительность.
[lns default] – Имя нашего сервера
Ip range – пул ip из которого клиенты будут получать ip адрес.
Local ip – ip адрес сервера
Refuse pap – требовать или отказывать удалённому peer’у (VPN-клиенту) в PPP-аутентификации по протоколу PAP.
Require authentication – требовать или отказывать удалённому VPN-клиенту в PPP-аутентификации.
Name – имя узла, которое xl2tpd будет отправлять VPN-клиенту в процессе согласования подключения с удалённым пиром.
Ppp debug – включить режим отладки
Pppoptfile – файл логов
Length bit – если значение установлено в “yes”, то будет использован бит длины, указывающий полезную нагрузку (payload) l2tp-пакета.

Теперь настроим протокол PPP для установления соединения.

Открываем файл «/etc/ppp/options.xl2tpd» и вносим следующие правки:

Конфигурационный файл PPP
Конфигурационный файл PPP

Ipcp-accept-local – при указании этой опции pppd будет принимать локальный IP-адрес предложенный партнёром, даже если IP-адрес был явно указан с помощью опции.
ipcp-accept-remote – при указании этой опции pppd будет принимать удалённый IP-адрес предложенный партнёром, даже если IP-адрес был явно указан с помощью опции.
Ms-dns – прописывает у клиента dns
Noccp – отключить протокол управления сжатием.
Name – при аутентификации pppd будет использовать пароль из той строки в файле паролей, у которой во втором поле указано имя.
Persist – не завершать работу сразу после разрыва соединения.
Auth – Требовать от партнера подтвердить свою подлинность перед разрешением отправки и приема пакетов.
Crtscts – Указывает, что pppd должен настроить последовательный порт для использования аппаратного управления потоком.
Mtu – размер пакета
Mru –  максимальный размер данных, передаваемых в пакете протокола PPP, не включая заголовок пакета.
Nodefaultroute – не устанавливать маршрут по умолчанию.
Debug  – режим отладки
lock – указывает, что pppd должен создать для последовательного устройства файл блокировки в стиле UUCP, чтобы удостовериться в эксклюзивном доступе. По умолчанию pppd не создаёт файл блокировки.
Proxyarp – добавляет arp запись.
require-mschap-v2 требовать у партнёра аутентификации с помощью MS-CHAPv2.
Logfile – файл журналирования.

Далее необходимо отредактировать файл с пользователями «/etc/ppp/chap-secrets»:

настройка пользователей.
настройка пользователей.

Первый параметр это логин клиента. Второй параметр любой сервер. Третий – пароль пользователя. Четвертый «*» подключение с любого ip адреса.

После конфигурирования запускаем все службы:

# service racoon start
#chkconfig racoon on
#service xl2tpd start
#chkconfig xl2tpd on

Проверяем, поднялся ли тунель:

Работа тунеля
Работа тунеля
 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices