Тогда уже
lac = 0.0.0.0-255.255.255.255
А то как то несправедливо кучу адресов забыли.
Согласен.
Жесть какая-то с этим статьями в интернете... У меня ощущение, что мало кто вообще понимает, как это все настраивается, поэтому пишут полную отсебятину, останавливаются на полпути, получая какую-то хрень (недоделанную, но работающую) и успокаиваются. Короче у меня получилось, но при чем тут ipsec я пока не понимаю.
Итак выводы пока следующие:
1. xl2tpd - первый демон с которым начинает взаимодействие подключающийся клиент. Задача этого демона - принять подключение на UDP порт 1701 и передать полученные данные дальше внутрь системы. В целом, больше ничего он делать не должен. Он может авторизовать входящие подключения по паролю/по имени хоста/IP адресу, но обычно это настраивают на следующих этапах, поэтому /etc/xl2tpd/l2tp-secrets должен оставаться пустым (паролей туда прописывать не нужно).
2. В /etc/xl2tpd/xl2tpd.conf есть блок с названием [lns], этот блок описывает конфигурацию сервера xl2tpd. Это как раз тот блок, который нам нужно настраивать. Подробности по настройке хорошо описаны в man xl2tpd.conf. Блок [lac] конфигурационного файла используется, если настраиваемый демон сам будет подключаться к другому серверу. Если вы хотите только принимать входящие подключения этот блок вообще не нужен.
3. Строка lac = 0.0.0.0-255.255.255.255 обязательна, если вы хотите принимать подключения с любых ip-адресов. Возможно в предыдущих версиях она была не нужна, поэтому об этом особо не пишут в манах, но сейчас ее нужно прописывать.
4. Строка "pppoptfile = /etc/ppp/options.l2tpd" в блоке [lns] говорит о том, с какими параметрами будет запущен следующий демон при входящем подключении - pppd. Именно ему передает все данные xl2tpd, если входящее подключение соответствует параметрам, указанным в конфиге.
5. На каждое входящее подключение, соответствующее требованиям, стартует своя копия pppd с параметрами из п. 4. Кстати, подробнее обо всех них читаем в man pppd. Все тоже очень подробно.
6. Учитываем, что старые маны в интернете иногда используют конструкции параметров типа:
-pap
+chap
Эти записи уже давно deprecated. Необходимо использовать refuse-pap, require-chap и т.д.
7. Именно на этапе настройки параметров pppd прописывается авторизация клиента. За нее отвечают инструкции:
auth
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
Здесь мы запрещаем устаревшие протоколы и разрешаем mschap второй версии. Логин и пароль, которые мы указываем при подключении к VPN должны быть прописаны в /etc/pppd/chap-secrets. Именно по ним, и именно на этом этапе осуществляется авторизация клиента.
8. Уже на втором этапе можно настроить шифрование по майкрософтовской технологии MPPE. За него отвечает параметр require-mppe, а лучше даже require-mppe-128, тогда шифрование будет 128-битным.
9. Если правильно настроить эти 2 демона - вы получите полностью рабочий VPN через L2TP. У меня получилось. При чем тут IPSec и как при этом используется OpenSWAN я пока не пойму. Ощущение, что в большинстве интернетовских манов этот демон ставится как талисман и авторы сами не понимают, что делают. Так при работающем L2TP вы можете вообще вырубить IPSec (service ipsec stop) и все будет работать без проблем.
10. Есть понимание, что должен быть еще 3 этап, где налаживается взаимодействие между pppd и OpenSWAN. Как заставить pppd работать только через IPSec я пока не нашел, копаю дальше. Если все оставить как есть - L2TP будет работать, но траффик шифроваться либо вообще не будет, либо будет шифроваться простеньким майкрософтовским алгоритмом. Ну и нафиг такое счастье нужно?
11. Есть подозрение, что к применению IPSec относится параметр ipsec saref = yes в xl2tpd.conf, но связи пока не вижу.
Как настрою все - выложу конфиги с комментариями.