Аццкий конструктор IPSec
До настройки OpenSwan я думал, что имею представление о Linux-шаманстве. Но это чудо, усыпанное независимыми ручками настройки, тумблерочками и кнопочками, бьет все рекорды. И, что характерно для подобных продуктов, уже отлаженный, рабочий конфиг выглядит настолько очевидным и логичным, что поневоле удивляешься: с чем там можно было бороться столько дней подряд?
Но все закончилось хорошо. IPSec с сертификатами и L2TP-туннель заработали, офисная сеть открылась избранным (roadwarriors).
P.S. Почему у l2tpns нельзя указать локальный IP и как это хозяйство роутить — осталось загадкой. Пришлось ставить обратно l2tpd.
UPD: Судя по рейтингам поста, людей интересует сам конфиг. Исправляю упущение.
Задача: открыть доступ к ресурсам корпоративной сети для сотрудников, которые находятся дома или в командировке.
Подзадача: создать безопасный канал связи между роутером корпоративной сети (внешний адрес, для определенности, 80.80.80.219/29) и компьютером сотрудника.
Листинг /etc/ipsec.conf:
version 2.0
config setup
nat_traversal=yes # для тех, кто за NAT-ом
interfaces=%defaultroute
virtual_private=%v4:80.80.80.216/29 # подсеть, в которую входит наш секурный хост
conn %default
keyingtries=1
compress=yes
disablearrivalcheck=no
authby=rsasig
leftrsasigkey=%cert
rightrsasigkey=%cert
conn roadwarrior-l2tp # имя соединения произвольное, т.к. соединение
# выбирается опенсваном по параметрам
left=80.80.80.219 # должен быть в virtual_private
leftnexthop=80.80.80.217 # инет-роутер подсети
leftcert=mydomain.ru.pem # сертификат должен лежать в /etc/ipsec.d/certs
leftprotoport=17/1701
right=%any # принимаем соединения с любого адреса
rightsubnet=vhost:%no,%priv
rightprotoport=17/1701
pfs=no
auto=add
type=transport
include /etc/ipsec.d/examples/no_oe.conf
conn block
auto=ignore
conn private-or-clear
auto=ignore
conn clear-or-private
auto=ignore
conn clear
auto=ignore
conn packetdefault
auto=ignore
P. P. S. OpenSwan ничего не знает ни о настройках L2TP, ни о топологии внутренней подсети, к которой предполагается открыть доступ через VPN. Подобные тонкости не фигурируют в ipsec.conf. Применительно к L2TP, задача IPSec только в создании безопасного транспорта между двумя хостами.