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

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

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

Работа тунеля
Работа тунеля
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

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

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

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

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

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

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

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

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.