Настройка IPSEC L2TP VPN-сервера на CentOS 7

Обновлено и опубликовано Опубликовано:

Тематические термины: VPN, CentOS

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

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

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

yum install epel-release

Настраиваем брандмауэр:

firewall-cmd --permanent --add-service=l2tpd

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

firewall-cmd --reload

IPSEC

Устанавливаем ipsec-tools:

yum install ipsec-tools

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

vi /etc/racoon/racoon.conf

Добавляем:

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

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

vi /etc/racoon/psk.txt

Для клиентов 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 политик:

vi /etc/rc.d/init.d/racoon.init

#!/sbin/setkey -f
 

flush;
spdflush;
 

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

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

vi /etc/rc.local

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

/etc/rc.d/init.d/racoon.init

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

systemctl enable racoon

systemctl start racoon

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

/etc/rc.d/init.d/racoon.init

L2TP

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

yum install xl2tpd

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

vi /etc/xl2tpd/xl2tpd.conf

В секцию [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

PPP

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

vi /etc/ppp/options.xl2tpd

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

ms-dns  77.88.8.8
ms-dns  8.8.8.8

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

require-mschap-v2

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

vi /etc/ppp/chap-secrets

Добавляем первого:

dmosk     *       password        *

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

Перезапускаем xl2tpd:

systemctl restart xl2tpd

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

Пример настройки клиента Windows:

Пример настройки клиента VPN на Windows

На устройстве с Андроидом настраиваем выбираем в качестве VPN-сервера IPSEC-L2TP PSK и вводим данные из файла psk.txt (например, identifier1 и key-password1). Пример подключения на Android:

Пример настройки клиента VPN на Android

VPN-сервер как шлюз

Для этого настраиваем только CentOS.

Подробное описание в статье Настройка Интернет шлюза на CentOS 7.

# Сети # Серверы # Интернет # Безопасность # Linux # CentOS
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет