Настройка l2tp клиента centos 7

Обновлено: 08.07.2024

CentOS 7. Настройка клиентского подключения L2TP + IPsec к удаленной CISCO

Провайдер изменил подключение к своему серверу. Ранее было VPN IpSec, сейчас ему восхотелось перевести всех своих клиентов на связку L2TP + IPSEC!

Ну что же, приступим. В репозиториях CentOS 7 есть следующий выбор:

  • strongswan + xl2tpd + ppp
  • libreswan + xl2tpd + ppp

Проверка связки CISCO и strongswan показала, что CISCO не поддерживает протоколы XAUTH + PSK, как по-умолчанию сейчас реализовано а strongswan. Печально.

Остается только 2 вариант.

  1. Установка репозитория epel-release
  2. Установка связки libreswan + xl2tpd + ppp
  3. Настройка IPsec
  4. Настройка xl2tpd (как клиента)
  5. Скрипты по автоматическому запуску/остановки канала VPN

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

Установка связки libreswan + xl2tpd + ppp

yum install -y libreswan xl2tpd ppp

Настройка IPsec

  1. в файле /etc/ipsec.conf в раздел config setup добавляем nat_traversal=yes
  2. в директории /etc/ipsec.d/ создаем файл с расширением .conf, например my01.conf такого содержания:

далее, так как у нас аутентификация по PSK (кодовое слово), то надо сделать файл, в котором мы это дело и пропишем. Создаем файл в этой же директории, но с расширением .secrets (у меня /etc/ipsec.d/my01.secrets) :

Всё. На этом настройка IPSec закончилась.

Теперь надо обязательно проверить как установиться тоннель:

проверить статус соединения :

Если все хорошо, приступим к настройке l2tp.

Настройка xl2tpd (как клиента)

Тут всё вообще просто.

Комментируем все строки. И добавляем свою конфигурацию:

[lac my01]
lns = <здесь должен быть IP адрес удаленного сервера, с кем собираемся строить тоннель>
ppp debug = yes
pppoptfile = /etc/ppp/option.l2tpd.client
length bit = yes

Он у меня такой:

ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-mschap-v2
noccp
noauth
idle 1800
mtu 1400
mru 1400
usepeerdns
debug
connect-delay 5000
name <Имя пользователя l2tp>
password <Пароль на соединение l2tp>

Теперь для того, чтобы установить соединение l2tp надо написать:

Ну вообщем то и всё.

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

Скрипты по автоматическому запуску/остановки канала VPN

На этом практически и всё. Единственное что еще надо сделать, это сделать созданные файлы исполняемыми.

Один из лучших способов поднять сервер VPN — настроить OpenVPN. Однако, данный сервер не лишен недостатков — на клиенты потребуется устанавливать специальное программное обеспечение. Если мы хотим использовать стандартные средства операционных систем для подключения к серверу, настроим VPN IPSEC L2TP.

Подготовка сервера

Для установки ПО потребуется репозиторий EPEL:

yum install epel-release

firewall-cmd --permanent --add-port=1701/tcp

firewall-cmd --permanent --add-service=ipsec

IPSEC

yum install ipsec-tools

Открываем конфигурационный файл racoon:

Добавляем в конец файла:

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;
>
>

Теперь открываем следующий файл:

Для клиентов Windows добавляем:

ip-addres1 key-password1
ip-addres2 key-password2

* где ip-addres — ip-адрес клиента, с которого будет идти подключение; key-password — пароль для подключения.

Для клиентов Android добавляем:

identifier1 key-password1
identifier2 key-password2

* где identifier — идентификатор клиента, который будет использоваться при подключении; key-password — пароль для подключения.

Создаем скрипт с настройкой ipsec политик:

spdadd 0.0.0.0/0[l2tp] 0.0.0.0/0 any -P out ipsec esp/transport//require;
spdadd 0.0.0.0/0 0.0.0.0/0[l2tp] any -P in ipsec esp/transport//require;

chmod 755 /etc/rc.d/init.d/racoon.init

Добавляем скрипт на автозапуск:

И добавляем строчку:

Разрешаем запуск сервиса racoon и стартуем его:

systemctl enable racoon

systemctl start racoon

Задаем политики ipsec:

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

yum install xl2tpd

Открываем конфигурационный файл:

В секцию [global] добавим:

[global]
ipsec saref = yes
force userspace = yes

В секции [lns default] изменяем диапазон IP-адресов:

[lns default]
ip range = 176.16.10.10-176.16.10.200
local ip = 176.16.10.1

Разрешаем автозапуск сервиса и стартуем его:

systemctl enable xl2tpd

systemctl start xl2tpd

Открываем следующий файл:

Вносим небольшие изменения в DNS:

ms-dns 77.88.8.8
ms-dns 8.8.8.8

Добавляем метод mschap2

Открываем файл с пользователями:

* где dmosk — логин; первая звездочка — любой сервер; password — пароль, который должен вводить пользователь dmosk; вторая звездочка — подключение с любого IP-адреса.

В предыдущей статьей была описана настройка L2TP/IPsec в маршрутизаторе Mikrotik. В той статье была настройка сервера и одного клиента под Windows для проверки, т.к. это просто и быстро. Для соединения через L2TP и IPsec клиентов на Linux уже нужно выполнить некоторые манипуляции, о которых расскажу ниже.

Последовательность настройки любая, но алгоритм подключения будет следующий: сначала устанавливается шифрованное соединение IPsec, а в нём уже поднимается L2TP, поэтому ниже будет инструкция по настройке strongswan для Centos 7.7:

Настройка IPsec (ikev1)

Использованы дефолтные и рекомендованные параметры в конфиге.

При настройке стоит обратить внимание на следующие параметры:

С используемыми шифрами ike и esp стоит поиграться и выбрать для себя наиболее оптимальные по части безопасности и скорости работы, не стоит копировать бездумно.

Далее указывается секретный ключ IPsec:

На этом настройка закончена и можно переходить к xl2tpd.

Настройка L2TP

Подключение

Создается директория для PID файла и управления xl2tpd:

Теперь можно проверить, что соединение установилось, появился интерфейс ppp с клиентским IP:

Настройка маршрутов

Соединение есть, но для доступа к нужным подсетям по этому соединению необходимо прописать необходимые маршруты. По-хорошему, для автоматического добавления маршрутов в подсети офиса в скрипте /etc/ppp/ip-up в конец файла прописано несколько маршрутов. Несмотря на то, что в этом файле сказано, что добавлять файлы нужно в /etc/ppp/ip-up.local, такой вариант не сработал, поэтому маршруты добавляются в ip-up прямо в конце файла:

Когда ppp связь установлена, этот скрипт вызывается со следующими параметрами:

Ручное управление

На данном этапе L2TP и IPsec поднимаются автоматически в случае рестарта машины или отвалившегося интернета, но если вдруг возникнет необходимость вручную управлять соединениями, то нужно выполнить следующее для остановки L2TP:

Или же воспользоваться командами systemd по перезагрузке сервисов.

Выявлено в процессе работы: при перезагрузке сервера (Mikrotik), к которому происходит подключение, соединение сбрасывается и нужно вручную перезагружать ipsec и l2tp на клиенте.

Проблема по идее кроется во времени reauth, поэтому нужно выставить рекомендуемые параметры lifetime на сервере и клиенте, а также ознакомиться с документацией. В моём случае всё сработало при параметре auto=route в конфиге strongswan.

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

l2tp/ipsec на Centos

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

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

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

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

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

Установка репозитория

Установка репозитория

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

Установка пакетов, для работы с ipsec

Установка пакетов, для работы с ipsec

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

Конфигурационный файл racoon.conf

Конфигурационный файл racoon.conf

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

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

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

После этого идет вложенный блок «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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Работа тунеля

Работа тунеля

Создание среды связи ipsec VPN на основе libreswan (openswan) и xl2tpd под CentOS 7 (сервер и клиент)

В последнее время я очень заинтересован в VPN (хотя он мне и не нужен), поэтому я хочу использовать виртуальную сеть виртуальной машины для создания среды связи VPN между сайтами для соединения двух интрасетей (сначала используйте виртуальную машину для экспериментов). IP-адрес виртуального сетевого сегмента машины был изменен (для удобства памяти), vmnet1 - это сегмент сети 192.168.10, vmnet2 - это сегмент сети 192.168.20 . и так далее.

Топология сети выглядит следующим образом (vmnet8 - это виртуальная сеть в сетевом режиме на виртуальной машине, которая специально установлена ​​в редакторе виртуальной сети)


Как показано на рисунке, два сегмента интрасети

На левом и правом VPN-серверах есть две сетевые карты, одна для внутренней сети, а другая для внешней сети (vmnet8). Адреса показаны на рисунке. На рисунке маршрутизатор используется для представления соединения двух серверов во внешнем сегменте сети (на самом деле это значительно упрощено).

PS: добавить сетевую карту в виртуальную машину vmware (по умолчанию она только одна)


После открытия виртуальной машины, под открытым, нажмите, чтобы изменить настройки виртуальной машины, нажмите Add во всплывающем диалоговом окне, выберите сетевой адаптер, а затем в диалоговом окне редактирования виртуальной машины установите две сетевые карты как vmnet8, одну Это vmnet1 (другой vmnet2).

Затем включите виртуальную машину. После открытия используйте ifconfig, чтобы проверить, совпадает ли адрес. Если вы обнаружите, что IP-адрес не совпадает с сетевой картой (у меня это ens33 и ens37), вам нужно изменить конфигурацию.

Измените ONBOOT = нет внутри на ONBOOT = да


Затем перезагрузите сеть снова

Если конфигурация снова нормальная, не забудьте использовать IP-адреса двух сетевых карт.

Далее включите пересылку данных:

Добавьте изменения в этот файл:

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0

net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0


Можно добавить их (в некоторых случаях нет необходимости добавлять их, это безопаснее >> _ >>), затем отключить перенаправление icmp.

После этого вы обнаружите, что в /etc/sysctl.conf есть еще много вещей, которые автоматически генерируются системой для их собственных сетевых карт.

Наконец, мы закрыли SELinux, и подготовка окончена!

На centos я скачал его напрямую с помощью yum. Сначала установите epel source. Если вы загрузите openswan и xl2tpd, это покажет, что такого пакета нет.

После установки просто скачайте yum нормально.

После тщательной установки вы обнаружите, что наша установка - libreswan, почти такая же, как openswan, ее не нужно тщательно изучать.

Сначала мы можем запустить ipsec и xl2tpd, чтобы увидеть, есть ли проблемы (обычно на этом этапе проблем не будет, но давайте начнем и посмотрим)


Если он не запускается нормально, удалите переустановку.

Далее, через netstat -anp, вы можете увидеть, что openswan контролирует порты 500 и 4500:


Здесь мы применяем метод аутентификации на основе алгоритма цифровой подписи RSA, сначала мы инициализируем базу данных NSS: /etc/ipsec.d,


Затем сгенерируйте новый локальный ключ


Большая серия символов после ckaid здесь будет полезна после записи

После этого сгенерируйте открытый ключ машины, здесь на правильном сервере:


Когда сервер слева меняет вышеприведенное право на --left, правый ключ (leftrsasigkey) здесь будет использоваться в файле конфигурации после записи.

Затем создайте свой собственный файл конфигурации соединения mytunnel.conf в файле /etc/ipsec.d/, это файл конфигурации для VPN-связи между двумя серверами.

Затем начните писать этот файл конфигурации:


Rightrsasigkey (leftrsasigkey) выше - это открытый ключ только что сгенерированного сервера, который будет использоваться для шифрования во время передачи для обеспечения безопасности.

слева и справа - адреса сетевых карт двух серверов в сегменте сети 80 (vmnet8) (записанные ранее), а leftsubnet (rightsubnet) - это адрес двух интрасетей, к которым принадлежат две другие сетевые карты сервера и которые хотят использовать VPN для связи (В этом примере 10 сегментов сети и 20 сегментов сети). Leftnexthop (rightnexthop) настроен на маршрут по умолчанию, а auto настроен на запуск. При запуске ipsec автоматически будет введен файл конфигурации mytunnel.

Затем измените файл /etc/ipsec.conf

Добавьте эти три ниже виртуальных: (виртуальное значение не должно быть изменено !!)


Затем настройте файлы, связанные с xl2tpd:



Диапазон ip - это диапазон IP-адресов во внутренней сети, который вы хотите разрешить для связи, а локальный ip - это IP-адрес сетевой карты, на которой расположен сервер во внутренней сети. Остальное так же, как написано.

Затем добавьте имя пользователя и пароль пользователя xl2tpd, который может использовать клиент


Затем вам нужно изменить политику брандмауэра и выполнить следующие строки кода напрямую:

Ip в последних трех командах должен быть изменен на сегмент сети интрасети, где расположен сервер.

Серверы на обоих концах настроены так

Наконец, перезапустите ipsec и xl2tpd.

Проверьте статус работы ipsec еще раз, чтобы увидеть, подключен ли он:

systemctl status -l ipsec


Настройка этого сервера завершена. Далее рассмотрим, как подключиться к серверу для связи под Linux и Windows

4.1 Конфигурация под Linux (centos7):

Я уже говорил, что до того, как клиент загрузит xl2tpd

После загрузки сначала отредактируйте файл /etc/xl2tpd/xl2tpd.conf.


Перечисленные выше не нужно перемещать, просто удалите столбец [lns . ] внутри и непосредственно добавьте столбец [lac l2tpvpn] на рисунке.

Затем отредактируйте файл /etc/ppp/options.xl2tpd:


user и password - это имя пользователя и пароль, установленные на сервере.

Затем создайте файл управления l2tpd-control в следующем каталоге:


Затем перезапустите (запустите) xl2tpd, чтобы представить клиентскую конфигурацию lac:

Проверьте ссылку ip, чтобы увидеть, появился ли коммуникационный туннель ppp (клиент и хост):


Вы увидите ppp0 ниже, и он был успешно установлен здесь!



Здесь вы увидите, что он был успешно создан!

Затем добавьте таблицу маршрутизации на клиенте (еще один сегмент сети 80, где расположен сегмент внутренней сети для связи с сервером):


192.168.10.1 - это адрес туннельной связи, используемой ppp0, видимой после ifconfig

После этого вы можете пропинговать адреса серверов сегмента сети 80 и сегмента сети 20 (интрасеть). сайт на сайт vpn связь успешно выстроена! ! ! ! !

Анализ захвата пакетов в сегменте 80 сети и сегменте 10 сети:


Пакеты данных от клиентского пакета в сегменте 80 между двумя серверами были зашифрованы (зашифрованные пакеты ESP), и состояние является нормальным.


Связь между сервером и клиентом также использует пакеты данных l2tp, все нормально, хахахахаха

4.2 Конфигурация на клиенте Windows 10

Конфигурация в Windows относительно проста



Настройте, как указано выше, затем сохраните


Нажмите «Подключиться», затем введите имя пользователя и пароль, установленные на сервере.



Пинг также работает, иногда он истекает, не беспокойтесь об этом, перейдите к другому клиенту интрасети, чтобы пропинговать его, затем вернитесь и пропингуйте это.

Читайте также: