L2TP/IPSec VPN на Debian 10 без Network Manager

Вопрос или проблема

У меня есть 2 компьютера – оба на Debian 10. Мне нужно подключить их оба к одному и тому же удаленному VPN-серверу. У одного есть графический интерфейс (с Network Manager), а у другого нет. Я буду называть тот, у которого есть графический интерфейс, Debian GUI, а другой – Debian Server.

Я успешно подключил Debian GUI к удаленному VPN-серверу с использованием Network Manager, однако не могу подключить Debian Server к удаленному VPN-серверу.

Вот настройки Network Manager, детали изменены для конфиденциальности:

Мой LAN IP-адрес на клиентском ПК перед включением VPN: 192.168.0.1
Тип VPN: TTL2TP VPN
Общий IP-адрес VPN-шлюза: 100.100.100.100
Домен удаленной сети: mywindowsdomain
Имя пользователя удаленной сети: me
Пароль удаленной сети: mypassword
Включить IPSec-туннель к хосту L2TP: да
Предварительно установленный ключ: mypresharedkey
Алгоритмы фазы 1: aes256-md5-modp1024
Алгоритмы фазы 2: aes256-md5
Принудительная UDP-капсуляция: да
Аутентификация L2TP PPP: MS Chap v2
Разрешить сжатие данных BSD: да
Разрешить сжатие deflate: да
Использовать сжатие заголовков TCP: да
Использовать сжатие поля протокола: да
Использовать сжатие адреса/управления: да
MTU: 1400
MRU: 1400

network manager

network manager ipsec settings

network manager ppp settings

Это единственные настройки, которые я использовал в Network Manager, и я могу успешно подключаться к удаленному VPN-серверу на Debian GUI. Однако я не смог сделать то же самое на Debian Server. На Debian Server я установил strongswan и xl2tpd. Мне не важно, какой клиент я использую, пока я могу заставить его работать, это были просто те, которые я нашел доступными в Debian 10. Я попытался настроить их следующим образом:

$ cat /etc/xl2tpd/xl2tpd.conf
[lac vpn-connection]
lns = 100.100.100.100
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes

$ cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

$ cat /etc/ipsec.secrets
include /var/lib/strongswan/ipsec.secrets.inc
192.168.0.1 100.100.100.100 : PSK "mypresharedkey"

$ cat /etc/ipsec.conf
config setup                                                                    
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12        
    nat_traversal=yes
    protostack=netkey
    plutoopts="--interface=eth0"
    strictcrlpolicy=yes
    uniqueids = no
conn L2TP-PSK
    pfs=no
    auto=add
    authby=secret
    # фаза 1
    keyexchange=ikev1
    ike=aes256-md5-modp1024
    # фаза 2
    esp=aes256-md5
    forceencaps=yes
    keyingtries=3
    dpddelay=30
    dpdtimeout=120
    dpdaction=clear
    rekey=yes
    ikelifetime=8h
    keylife=1h
    type=transport
    type=tunnel
    left=192.168.0.1
    leftprotoport=17/1701
    right=100.100.100.100
    rightprotoport=17/1701

include /var/lib/strongswan/ipsec.conf.inc

$ cat /etc/ppp/options.l2tpd.client
ipcp-accept-local
ipcp-accept-remote
refuse-eap
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
nobsdcomp
nodeflate
noccp
noauth
idle 1800
mtu 1400
mru 1400
defaultroute
usepeerdns
debug
connect-delay 5000
name mywindowsdomain\\me
password mypassword

$ cat /etc/strongswan.conf
charon {
    # эта строка была закомментирована 2020-11-19
    #load_modular = yes
    plugins {
        include strongswan.d/charon/*.conf
    }
}

include strongswan.d/*.conf

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

Затем я запустил все и получил следующие результаты:

$ sudo systemctl restart xl2tpd.service
$ sudo systemctl status xl2tpd.service 
● xl2tpd.service - LSB: демон протокола туннелирования уровня 2
   Loaded: loaded (/etc/init.d/xl2tpd; generated)
   Active: active (running) since Thu 2020-11-19 21:13:41 ACDT; 12s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 11111 ExecStart=/etc/init.d/xl2tpd start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4915)
   Memory: 876.0K
   CGroup: /system.slice/xl2tpd.service
           └─11112 /usr/sbin/xl2tpd

$ sudo systemctl restart strongswan.service
$ sudo systemctl status strongswan.service 
● strongswan.service - демон strongSwan IPsec IKEv1/IKEv2, использующий ipsec.conf
   Loaded: loaded (/lib/systemd/system/strongswan.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-11-19 21:17:16 ACDT; 9s ago
 Main PID: 11113 (starter)
    Tasks: 18 (limit: 4915)
   Memory: 3.4M
   CGroup: /system.slice/strongswan.service
           ├─11114 /usr/lib/ipsec/starter --daemon charon --nofork
           └─11115 /usr/lib/ipsec/charon

$ # все хорошо до сих пор, я думаю, но затем это не удается:
$ sudo ipsec up L2TP-PSK
инициирование основного режима IKE_SA L2TP-PSK[2] к 100.100.100.100
генерация запроса ID_PROT 0 [ SA V V V V V ]
отправка пакета: от 192.168.0.1[500] к 100.100.100.100[500] (240 байт)
получен пакет: от 100.100.100.100[500] к 192.168.0.1[500] (188 байт)
разбор ответа ID_PROT 0 [ SA V V V V V ]
получен NAT-T (RFC 3947) идентификатор производителя
получен идентификатор производителя DPD
получен неизвестный идентификатор производителя: 88:77:44:11:55:aa:66:88:cc:aa:22:dd:00:00:00:00
получен идентификатор производителя ФРАГМЕНТАЦИЯ
получен идентификатор производителя ФРАГМЕНТАЦИЯ
выбранное предложение: IKE:AES_CBC_256/HMAC_MD5_96/PRF_HMAC_MD5/MODP_1024
генерация запроса ID_PROT 0 [ KE No NAT-D NAT-D ]
отправка пакета: от 192.168.0.1[500] к 100.100.100.100[500] (236 байт)
получен пакет: от 100.100.100.100[500] к 192.168.0.1[500] (220 байт)
разбор ответа ID_PROT 0 [ KE No NAT-D NAT-D ]
локальный хост находится за NAT, отправка keep alives
генерация запроса ID_PROT 0 [ ID HASH N(INITIAL_CONTACT) ]
отправка пакета: от 192.168.0.1[4500] к 100.100.100.100[4500] (92 байта)
получен пакет: от 100.100.100.100[4500] к 192.168.0.1[4500] (76 байт)
разбор ответа ID_PROT 0 [ ID HASH ]
IKE_SA L2TP-PSK[2] установлен между 192.168.0.1[192.168.0.1]...100.100.100.100[100.100.100.100]
планирование повторной аутентификации через 28017s
максимальное время жизни IKE_SA 28557s
генерация запроса QUICK_MODE 3034622638 [ HASH SA No ID ID ]
отправка пакета: от 192.168.0.1[4500] к 100.100.100.100[4500] (204 байта)
получен пакет: от 100.100.100.100[4500] к 192.168.0.1[4500] (76 байт)
разбор информационного запроса V1 3102838840 [ HASH N(NO_PROP) ]
получен уведомление об ошибке NO_PROPOSAL_CHOSEN
установление соединения 'L2TP-PSK' не удалось

Источники, которые я использовал (я попробовал много комбинаций):

https://wiki.archlinux.org/index.php/Openswan_L2TP/IPsec_VPN_client_setup
https://github.com/xelerance/Openswan/wiki/L2tp-ipsec-configuration-using-openswan-and-xl2tpd
http://manpages.ubuntu.com/manpages/bionic/man5/ipsec.conf.5.html

Ошибка связана с предложением режиме быстрого IPsec (т.е. предложением фазы 2), то, что у вас в графическом интерфейсе не совпадает с тем, что у вас в файле ipsec.conf, отсутствующий восклицательный знак может быть значительным.

Не использует ли Debian Server вообще NetworkManager для своей проводной (или WiFi) сети? У NetworkManager есть интерфейс командной строки.

Вы можете использовать CLI NetworkManager с помощью команды nmcli:

  • перечислить все соединения NM: nmcli con
  • установить VPN-соединение: nmcli con up id VPN-Connection-Name
  • снять VPN-соединение: nmcli con down id VPN-Connection-Name

Где VPN-Connection-Name – это фактическое название VPN-соединения, как указано в выводе nmcli con.

Вы можете скопировать соответствующий файл профиля VPN-соединения NetworkManager, который хранится по адресу /etc/NetworkManager/system-connections/, с настольного компьютера на сервер без головы.

Чтобы принять новый файл профиля VPN-соединения (или изменения, которые вы можете внести в файл, если вы его отредактируете), выполните следующее:

  • nmcli con reload

Не забудьте установить network-manager-l2tp, вам не понадобится пакет GNOME GUI network-manager-l2tp-gnome.

Ответ или решение

Подключение к L2TP/IPSec VPN на Debian 10 без использования Network Manager

Введение

В ситуации, когда нам необходимо организовать VPN-соединение между двумя компьютерами, из которых один работает с графическим интерфейсом, а другой – на сервере без GUI, может возникнуть ряд трудностей. Ваша главная задача – настроить соединение L2TP/IPSec VPN на "Debian Server". В данной статье будет представлена подробная инструкция по настройке, основанная на конфигурации, которую вы пробовали, а также устранение возникающих проблем.

Установка необходимых пакетов

Для начала необходимо установить требуемые пакеты:

sudo apt update
sudo apt install strongswan xl2tpd

Конфигурация IPSec

Настройка /etc/ipsec.conf

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

sudo nano /etc/ipsec.conf

Измените содержимое на следующее:

config setup                                                                    
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12        
    nat_traversal=yes
    protostack=netkey
    uniqueids = no

conn L2TP-PSK
    authby=secret
    keyexchange=ikev1
    left=192.168.0.1
    leftprotoport=17/1701
    right=100.100.100.100
    rightprotoport=17/1701
    ike=aes256-md5-modp1024
    esp=aes256-md5
    keyingtries=3
    dpddelay=30
    dpdtimeout=120
    dpdaction=clear
    rekey=yes
    ikelifetime=8h
    keylife=1h
    type=tunnel

Настройка секрета IPSec

Отредактируйте файл /etc/ipsec.secrets:

sudo nano /etc/ipsec.secrets

Добавьте следующую строку:

192.168.0.1 100.100.100.100 : PSK "mypresharedkey"

Настройка xl2tpd

Теперь откройте файл конфигурации xl2tpd:

sudo nano /etc/xl2tpd/xl2tpd.conf

Настройте его следующим образом:

[lac vpn-connection]
lns = 100.100.100.100
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes

Опции PPP

Настройте файл PPP:

sudo nano /etc/ppp/options.l2tpd.client

Замените его содержимое на:

ipcp-accept-local
ipcp-accept-remote
refuse-eap
refuse-pap
refuse-chap
require-mschap-v2
nobsdcomp
nodeflate
noccp
noauth
idle 1800
mtu 1400
mru 1400
defaultroute
usepeerdns
debug
connect-delay 5000
name mywindowsdomain\\me
password mypassword

Включение перенаправления IP

Убедитесь, что у вас включено перенаправление IP. Откройте файл /etc/sysctl.conf и добавьте или раскомментируйте следующие строки:

net.ipv4.ip_forward = 1

Затем примените изменения:

sudo sysctl -p

Запуск сервисов

Запустите и проверьте состояние служб:

sudo systemctl restart strongswan
sudo systemctl restart xl2tpd
sudo systemctl status strongswan
sudo systemctl status xl2tpd

Установление VPN-соединения

Теперь создайте соединение с VPN:

sudo ipsec up L2TP-PSK
sudo xl2tpd-control connect vpn-connection

Устранение неполадок

Если соединение не удается установить, проверьте следующие аспекты:

  1. Убедитесь, что все параметры конфигурации совпадают с теми, что вы использовали в "Debian GUI".
  2. Проверьте журналы для получения более детальной информации об ошибках. Вы можете просматривать логи StrongSwan:
sudo journalctl -u strongswan

Для xl2tpd:

sudo journalctl -u xl2tpd
  1. Обратите внимание на ошибки "NO_PROPOSAL_CHOSEN", которые указывают на несоответствие настроек шифрования (Phase 2). Проверьте соответствие алгоритмов, указанных в конфигурации, тем, что использует сервер.

Заключение

Настройка L2TP/IPSec VPN-соединения на Debian 10 без Network Manager может быть сложной, но с помощью описанных шагов и выполнения всех рекомендаций, вы сможете успешно установить VPN-соединение. Не стесняйтесь делиться своими вопросами и проблемами, и удачи в настройке!

Оцените материал
Добавить комментарий

Капча загружается...