Авторизация

НАСТРОЙКИ DEBIAN JESSIE L2TP IPSEC

для работы с сервисом VPNKI по протоколам L2TP / IPsec

Важно! Прежде чем начать нам потребуется узнать версию Raspbian (Debian) на вашей машине. От этого будут зависеть некоторые тонкости.

1. Выполните команду
sudo cat /etc/os-release

в первой строке вывода будет информация о версии. Например:
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"

Итак, если у вас Jessie, то выполняйте пункты с 1 по ... Если Wheezy то идите в конец страницы, там вас ждут некоторые небольшие хлопоты.

Немного теории.

Сначала устанавливаем соединение IPsec, которое и создает шифрованный туннель. Затем внутри этого туннеля запускается протокол L2TP для авторизации по имени пользователя и паролю системы VPNKI.

 

Debian Jessie

 

*** Сначала IPSEC

 

2. Установим пакет strongswan для шифрования IPsec
sudo apt-get install -y strongswan

3. Добавим в файл /etc/ipsec.secrets общий ключ для всех соединений
sudo nano /etc/ipsec.secrets

вот прямо вот такой текст

: PSK "vpnki"

Сохраняем Ctrl+X

4. Откроем файл /etc/ipsec.conf
sudo nano /etc/ipsec.conf

и добавим в конец

conn %default
   ikelifetime=16h
   keylife=12h
   rekeymargin=3m
   keyingtries=1
   keyexchange=ikev1
   authby=secret
   aggressive = no

conn vpnki-l2tp
   authby=secret
   auto=add
   rekey=no
   type=transport
   right=msk.vpnki.ru ### в случае использования московского сервера vpnki или ams.vpnki.ru в случае сервера в Амстердаме
   rightid=%any
   rightprotoport=17/1701
   ike=aes256-sha1-modp2048
   esp=aes256-null
   left=%any
   leftprotoport=17/%any
   dpdaction=clear

 

Сохраняем Ctrl+X

5. Перезапустим strongswan
sudo ipsec restart

6. Проверим что IPsec устанавливает туннель, выполните команду
sudo ipsec up vpnki-l2tp

7. Проверим, что ассоциации созданы
sudo ipsec statusall

(добавить скриншот)

 

*** Затем xl2tpd

 

8. Установим пакет xl2tpd для подключения по протоколу L2TP
sudo apt-get install -y xl2tpd


9. Настроим пакет xl2tpd, для этого добавим в файл /etc/xl2tpd/xl2tpd.conf новое соединение с именем vpnki

sudo nano /etc/xl2tpd/xl2tpd.conf

и добавим в конец следующий текст

[lac vpnki]
lns = msk.vpnki.ru
require chap = yes
refuse pap = yes
require authentication = yes
name = <имя пользователя в формате userXXXX>
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes


10. Создадим новый файл
sudo nano /etc/ppp/options.l2tpd.client

и добавим туда

ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
#proxyarp
connect-delay 5000
name <имя пользователя vpnki в формате userXXXX>
password <пароль для пользователя vpnki userXXXX>
remotename vpnki
ipparam vpnki

Сохраняем Ctrl+X

11. Создайте управляющий файл для демона xl2tpd
sudo mkdir -p /var/run/xl2tpd
sudo touch /var/run/xl2tpd/l2tp-control

12. Перезапустите демон xl2tpd
sudo service xl2tpd restart

13. Теперь запустите соединение
sudo echo "c vpnki" > /var/run/xl2tpd/l2tp-control

14. Проверим, что соединение успешно установлено. Для этого выполните команду
sudo ifconfig -s

в ней вы должны обнаружить работающий интерфейс ppp0

15. Выполните команду ping для проверки доступности сервера vpnki
ping 172.16.0.1

16. Разорвите соединение командой и перезапустите xl2tpd
sudo echo "d vpnki" > /var/run/xl2tpd/l2tp-control
К сожалению, на момент написания инструкции эта команда приводит к крэшу демона xl2tpd на одной из двух тестируемых нами систем, что описано в баге 838998 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=838998
Поэтому после разрыва соединения лучше выполнить команду перезагрузки демона
sudo service xl2tpd restart

 

*** Автозапуск при старте

 

17. Добавим установление соединения ipsec к серверу vpnki при старте системы. Для этого выполните:
sudo nano /etc/ipsec.conf
найдите параметр auto=add и замените его на auto=start

18. Осталось уже немного. Добавим старт соединения к серверу vpnki через соединение xl2tpd при старте системы
Для этого откроем файл
sudo nano /etc/rc.local

и добавим в него:
 
#!/bin/sh -e
sudo service xl2tpd restart
sudo echo "c vpnki" > /var/run/xl2tpd/l2tp-control
exit 0

Сохраняем Ctrl+X
Обратите внимание, что в скрипте запуска есть команда перезапуска демона xl2tpd. Она нужна по причине наличия ранее описанного бага

19. Протестируем rc.local без перезагрузки
sudo /etc/rc.local

20. Соединение должно установиться. Для проверки выполните команду
sudo ifconfig -s

в ней вы должны обнаружить работающий интерфейс ppp0
Если все ок, значит скрипт в /etc/rc.local работает корректно

 

*** Маршруты

 

21. Осталось прописать маршруты. Сделать это можно как вручную, так и получив по DHCP от сервера vpnki
Для автоматического получения о сети VPNKI и сетей ваших других туннелей (DHCP Option 249) необходимо скачать, разархивировать и разместить этот файл (с названием splitp) в /etc/ppp/ip-up.d

Вариант с получением маргрутор по DHCP - НЕ основной, так как не на всех инсталляциях нами был получен качественный результат. Дело в том, что используемый нами далее скрипт splitp не вполне корректно ведет себя с маршрутами в которых встречаются адреса с маской /32 и из-за этого могут быть сложности с маршрутизацией.

Лучше переходите к п.23.

22. Измените права для исполнения файла при поднятии интерфейса

sudo chmod 755 /etc/ppp/ip-up.d/splitp

23. Если вы хотите все прописать руками, то сделать это можно так
В случае обрыва связи и ее восстановлении нам также потребуется автоматически прописать маршруты к сети VPNKI и к вашей "другой" сети. Для этого создайте файл

sudo nano -B /etc/ppp/ip-up.d/routeadd

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

#!/bin/sh -e
route add -net "172.16.0.0/16" dev "ppp0" #Маршрут к сети VPNKI
route add -net "192.168.100.0/24" dev "ppp0" #Например маршрут к вашей "другой" сети 192.168.100.0/24
 
Сохраните нажав Ctrl+X

24. Измените права на исполнение файла при поднятии интерфейса ppp0

chmod 755 /etc/ppp/ip-up.d/routeadd

 

-------------------------------------------------

Если у вас Debian Wheezy

К сожалению для пользователей Wheezy, из репозитория устанавливается пакет strongswan версии 4.x.x, но... устанавливается некорректно (по крайней мере у нас) и поэтому не работает. Для нашей же конфигурации требуется версия пакета strongswan 5.2.1 который легко устанавливается на Jessie. Однако установить его на Wheezy все-таки возможно. Мы, конечно, должны предупредить, что вы делаете все на свой страх и риски и обязательно сделайте бэкап.

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

1. Выполните sudo nano /etc/apt/sources.list и сделайте так, что бы ваша Raspberry могла получать пакеты для двух типов ОС:

deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
# Source repository to add
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb http://archive.raspbian.org/raspbian jessie main contrib non-free rpi
# Source repository to add
deb-src http://archive.raspbian.org/raspbian jessie main contrib non-free rpi

 

Сохраните Ctrl-X

2. Добавим новые слова для выбора версии ОС при обновлении. Для этого создайте новый файл

sudo nano /etc/apt/preferences

и добавьте в него

Package: *
Pin: release n=jessie
Pin-Priority: 900

Package: *
Pin: release n=wheezy
Pin-Priority: 300

Package: *
Pin: release o=Raspbian
Pin-Priority: -10

Or, if you want to stick to wheezy
Package: *
Pin: release n=wheezy
Pin-Priority: 900

Package: *
Pin: release n=jessie
Pin-Priority: 300

Package: *
Pin: release o=Raspbian
Pin-Priority: -10

Сохраните Ctrl-X

3. Сделайте команду apt-get upgrade для загрузки новых версий приложений

4. Установите требуемую версию strongswan 5.2.1 из репозитория Jessie командой

sudo apt-get install -t jessie strongswan

Если все успешно установилось, то переходите к настройкам ipsec и xl2tpd, которые приведены в пунктах 1 - 24

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


Защитный код
Обновить