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


Тематические термины: VPN, CentOS
Один из лучших способов поднять сервер VPN — настроить OpenVPN. Однако, данный сервер не лишен недостатков — на клиенты потребуется устанавливать специальное программное обеспечение. Если мы хотим использовать стандартные средства операционных систем для подключения к серверу, настроим VPN IPSEC L2TP.
0. Подготовка сервера
1. Настройка IPsec
2. Настройка L2TP
3. Настройка PPP
4. Настройка клиента
5. Настройка сервера как шлюза
Подготовка сервера
Для установки ПО потребуется репозиторий EPEL:
yum install epel-release
Настраиваем брандмауэр:
firewall-cmd --permanent --add-port=1701/tcp
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-сервера IPSEC-L2TP PSK и вводим данные из файла psk.txt (например, identifier1 и key-password1). Пример подключения на Android:
VPN-сервер как шлюз
Для этого настраиваем только CentOS.
Подробное описание в статье Настройка Интернет шлюза на CentOS 7.