Настройка VPN (L2TP/IPsec) для Windows

Данная инструкция демонстрирует, как подключиться к серверу ретрансляции VPN Gate с помощью L2TP/IPsec VPN клиента, встроенного в операционные системы Windows XP, 7, 8, 10, RT, Server 2003, 2008 и 2012.

Кликните правой кнопкой мыши по значку Сеть (интернет) в области уведомления панели задач (системном трее) и выберите опцию “Центр управления сетями и общим доступом”.

Выберите опцию “Создание и настройка нового подключения или сети” на основной странице центра управления сетями.

Выберите вариант “Подключение к рабочему месту”.

Затем выберите “Использовать мое подключение к Интернету (VPN)”.

http://www.vpngate.net/en/

Важная информация

Скопируйте имя узла DDNS (идентификатор, который заканчивается на ".opengw.net") или IP-адрес (цифровое значение xxx.xxx.xxx.xxx) и введите его в поле “Адрес в Интернете”.

Примечание

Если появится экран ввода имени пользователя и пароля, то введите vpn в оба поля. Также можно отметить галочку “Запомнить пароль”.

Затем перейдите в "Центр управления сетями и общим доступом" и нажмите ссылку “Изменение параметров адаптера”.

Будет показан список настроенных подключений. Щелкните правой кнопкой мыши по иконке VPN-подключения, созданного на предыдущем шаге и нажмите “Свойства”.

Перейдите на вкладку “Безопасность” и в поле “Тип VPN” из выпадающего списка выберите вариант “Протокол L2TP с IPsec (L2TP/IPsec)”. Для параметра "Шифрование данных" выберите "обязательное (отключиться, если нет шифрования)".

Затем нажмите кнопку “Дополнительные параметры”. Появится новое окно, на котором нужно выбрать опцию “Для проверки подлинности использовать общий ключ” и введите vpn в поле “Ключ”.

После завершения конфигурации дважды нажмите кнопку “ОК”, чтобы закрыть экран настроек подключения VPN.

2. Подключение к VPN-серверу

Нажмите по значку значку Сеть (интернет) в области уведомления панели задач (системном трее) и выберите созданное VPN подключение. Нажмите кнопку “Подключиться”.

Если Имя пользователя и Пароль не заполнены автоматически, то введите vpn в оба поля и нажмите ОК.

При попытке подключения будет показываться сообщение “Подключение к [выбранный VPN-сервер]”. Если при попытке произойдет ошибка, то убедитесь, что в качестве типа VPN используется "L2TP/IPsec", а ключ проверки подлинности задан правильно.

Если VPN-соединение будет успешно установлен, то в списке сетей появится новый пункт “VPN-подключение” с состоянием “Подключено".

Теперь вы сможете быстро и просто устанавливать VPN-подключение с помощью соответствующей иконки в списке сетей.

Когда соединение установлено, весь трафик будет проходить проходить через VPN-сервер. Убедиться в этом вы сможете с помощью команды tracert 8.8.8.8 в командной строке Windows.

Как показано на скриншоте выше, если пакеты проходят через "10.211.254.254", а значит ваше подключение ретранслируется через один из серверов VPN Gate.

Вы также можете перейти на основную страницу VPN Gate

Настройка VPN (L2TP/IPsec) для MacOS

Данная инструкция демонстрирует, как подключиться к серверу ретрансляции VPN Gate с помощью L2TP/IPsec VPN клиента, встроенного в операционную систему MacOS.

1. Предварительная конфигурация

Нажмите по иконке сетевого подключения в верхнем-правом углу экрана Mac. Выберите "Открыть настройки сети..." в меню.

Нажмите кнопку "+" на экране настройки сети.

Выберите интерфейс "VPN", тип подключения "L2TP через IPsec" и нажмите кнопку "Создать".

Будет создана новая конфигурация VPN (L2TP) и появится экран настроек соединения.

На данном экране нужно ввести либо имя узла, либо IP-адреса сервера из пула открытых серверов VPN Gate.

Откройте список публичных серверов ретрансляции http://www.vpngate.net/en/ и выберите VPN-сервер, к которому хотите подключиться.

Важная информация

Для столбца L2TP/IPsec Windows, Mac, iPhone, Android No client required в списке серверов должна быть отмечена галочка, которая сообщает о поддержке настраиваемого протокола L2TP/IPsec.

Скопируйте имя узла DDNS (идентификатор, который заканчивается на ".opengw.net") или IP-адрес (цифровое значение xxx.xxx.xxx.xxx) и введите его в поле "Адрес сервера" на экране конфигурации.

Примечание : рекомендуется использовать имя DDNS - его можно продолжать использовать, даже если соответствующий DDNS IP-адрес в будущем изменится. Тем не менее, в некоторых странах у вас не получиться использовать имя узла DDNS - в этом случае следует использовать IP-адрес.

После того, как вы указали "Адрес сервера", введите vpn в поле "Имя учетной записи".

Затем нажмите кнопку "Настройки аутентификации".

Появится экран настроек аутентификации. Введите vpn в поле "Пароль" и в поле "Общий ключ (Shared Secret)". После этого нажмите кнопку "ОК".

Затем вернитесь на предыдущий экран, отметьте пункт “Показывать статус VPN в строке меню” и нажмите кнопку "Дополнительно...".

Откроется экран дополнительных настроек. Отметьте галочку "Отправлять весь трафик через VPN" и нажмите кнопку "ОК".

На экране настроек VPN-подключения нажмите кнопку "Применить", чтобы сохранить настройки соединение.

2. Запуск VPN -подключения

Вы можете в любое время установить новое подключение к VPN-серверу, нажав кнопку "Подключить". Вы можете также запустить подключение к VPN, нажав иконку VPN на верхней панели инструментов MacOS.

После установки VPN-подключения на экране настроек VPN будет отображаться статус "Подключено", а также вам новый IP-адрес и продолжительность подключения.

Когда соединение установлено, весь трафик будет проходить проходить через VPN-сервер. Вы также можете перейти на основную страницу VPN Gate , чтобы посмотреть глобальный IP-адрес. Вы сможете посмотреть видимое из сети местоположение, которое будет отличаться от вашей фактической локации.

При подключении к VPN вы сможете посещать заблокированные веб-сайты и играть в заблокированные игры.

Нашли опечатку? Выделите и нажмите Ctrl + Enter

Иногда мне кажется, что создатели Mikrotik намеренно лишают себя прибыли, не создавая однозначных пошаговых руководств по настройке своих детищ. Почти 100% потребителей этих роутеров пытаются настроить VPN, использовать два или более WAN одновременно или в качестве резервных. Именно это ищут по всей сети (и часто вне рунета) счастливые владельцы этих замечательных устройств. Представьте, на сколько бы увеличилась армия владельцев, если бы для настройки этих функций было два-три визарда в веб-интерфейсе. А сейчас.. сейчас именно благодаря сложности настройки (и, соотв., меньшему количеству желающих купить) мы имеем недорогое, малокапризное для несложных задач устройство, которое надо заставить работать 24х7х365. Например, в качестве VPN-сервера. Поехали!

Протокол L2TP обеспечивает канал передачи данных, туннель.

IPSec обеспечивает защиту данных от просмотра.

Настраивать мы будем тоже по частям - сначала туннель, потом - защита данных.

Примечание 1: я не очень люблю текстовые команды с кучей ключей при настройке вещей, которые достаточно много где описаны, но описаны каждый раз с незаметными опечатками, где-то что-то не скопировалось при написании (или при копировании с другого сайта, что случается чаще всего) или просто съелось текстовым редактором CMS сайта. Настройка VPN как раз такой случай. Поэтому я специально каждый шаг прописал для GUI Mikrotik - Winbox, тем более что не так уж тут и много всего надо сделать.

Примечание 2: до версии 6.18 в прошивке есть баг, из-за которого всегда применяется default policy template, поэтому обновите прошивку до последней стабильной. Не обновляйте прошивку до самой последней, но нестабильной версии, если вы настраиваете VPN.

Итак, имеем роутер Mikrotik с прошивкой 6.30 (июль 2015) c LAN 192.168.88.0/24 (сеть по-умолчанию). WAN не важен, например, 1.2.3.4.

Настройка туннелирования (L2TP)

1. IP - Pool / Определям диапазон адресов VPN-пользователей

Name: vpn_pool
Addresses: 192.168.112.1-192.168.112.10
Next pool: none

Лучше для клиентов vpn использовать отдельную адресацию. Так проще отделять одних от других. И вообще, бест практис.

2. PPP - Profiles / Профиль для нашего конкретного туннеля

General:
Name: l2tp_profile
Local address: vpn_pool (а можно указать 192.168.88.1 , сами смотрите, как вам больше нравится)
Remote address: vpn_pool
Change TCP MSS: yes

Protocols:
all to default:
Use MPLS: default
Use compression: default
Use Encription: default

Limits:
Only one: default

3. PPP - Secrets / Готовим пользователя VPN

Name: vpn_user1
Password: bla-bla-bla
Service: l2tp
Profile: l2tp_profile

4. PPP - Interface - клик на L2TP Server / Включаем сервер L2TP

Enabled - yes
MTU / MRU - 1450
Keepalive Timeout - 30
Default profile - l2tp_profile
Authentication - mschap2
Use IPSec - yes
IPSec Secret: tumba-yumba-setebryaki (это не пароль пользователя, а предварительный ключ, который надо будет указывать на клиентах в дополнение к логину/паролю)

Настройка шифрования данных в "туннеле" (IPSec)

На предыдущем этапе мы создали туннель для передачи данных и включили IPSec. В этом разделе мы настроим параметры IPSec.

5. IP - IPSec - Groups

Т.к. велика вероятность появления , просто удалим и тут же создадим ее. Например, с именем "policy_group1". Также можно просто удалить эту группу, но через веб-интерфейс будут показываться ошибки.

6. IP - IPSec - Peers

Address: 0.0.0.0/0
Port: 500
Auth method: pre shared key
Passive: yes (set)
Secret: tumba-yumba-setebryaki (это не пароль пользователя!)

Policy template group: policy_group1
Exchange mode: main l2tp
Send Initial Contact: yes (set)
NAT Traversal: yes (set)
My id: auto
Proposal check: obey
Hash algorithm: sha1
Encryption Algorithm: 3des aes-128 aes-256

DH Group: modp 1024
Generate policy: port override
Lifitime: 1d 00:00:00
DPD Interval: 120
DPD Maximum failures: 5

7. IP - IPSec - Proposals / "Предложения".

Что-то вроде "что мы можем вам предложить". Другими словами, задаем опции подключения, которые смогут пытаться использовать удаленные клиенты.

Name: default
Auth algorithms: sha1
Enrc. algorithms: 3des, aes-256 cbc, aes-256 ctr
Life time: 00:30:00
PFS Group: mod 1024

Вы наверняка заметили, что пункты 6 и 7 похожи, а если еще добавить, что один и тот же Secret мы добавляли и пункте 4 и пункте 6, то возникает вопрос: почему одни и те же опции повторно настраиваются? Ответ у меня такой: чисто из практики вышло, что Windows 7 требовал одного, а iPhone - другого. Как так работает, не знаю. Но факт чисто из практики. Например, изменяю в Proposal PFS Group на 2048 - Windows нормально коннектиться, а iPhone перестает. Делаю наоборот (в proposal ставлю 1024, а в ip-ipsec-peers ставлю 2048) - iPhone коннектиться, а Windows - нет:) Т.е. при подключении разных клиентов используются разные части конфигов. Бред? Может быть, это следствие постепенных изменений в конфигурацию VPN сервера, не могу сказать, т.к. может иметь место даже влияние старых прошивок, конфигов и др. Я не исключаю, что что-то здесь избыточно, но что именно, не знаю.

Firewall

Давайте уж к консоли, что-ли для разнообразия:

/ip firewall filter
add chain=input action=accept protocol=udp port=1701,500,4500
add chain=input action=accept protocol=ipsec-esp

Если у вас по-умолчанию политика forward установлена в drop (последнее правило для forward "chain=forward action=drop"), вам может быть необходимым разрешить forward с ip-адресов vpn_pool в локальную сеть:

add chain=forward action=accept src-address=192.168.112.0/24 in-interface=!ether1 out-interface=bridge-local comment="allow vpn to lan" log=no log-prefix=""

Вот теперь с сервером все.

Подключение удаленного клиента

Пробуем подключить Windows 7:

Панель управленияСеть и ИнтернетЦентр управления сетями и общим доступом:
Настройка нового подключения или сети
Подключение к рабочему месту
Создать новое подключение
Использовать мое подключение к интернету (VPN)
Интернет-адрес: ip или имя роутера в сети
Пользователь и пароль из PPP->Secrets. В нашем случае это vpn_user1 и его пароль.

Пытаемся подключиться.

Если не выходит, или просто надо настроить созданное подключение:

Вкладка Безопасность:

Тип VPN: L2TP IPSec VPN

Дополнительные параметры: для проверки подлинности использовать предварительный ключ. В нашем случае это "tumba-yumba-setebryaki" (IP - IPSec - Peers):

Здесь же, в группе "Проверка подлинности", оставляем только CHAP v2:

Жмем ОК и пытаемся подключиться. Должно получиться. Если нет, загляните на страницу ошибок при настройке VPN .

Update 1: часто люди интересуются, как несколько (больше одного) клиентов из одной локальной сети (за nat) могут подключаться к одному удаленному vpn-серверу микротик. Не знаю, как в L2TP/IPSec связке это обеспечить. Можно назвать это багом реализации. Я не нашел простого объяснения и решения проблемы.

18.07.2016 19:29 Птррр

09.08.2016 10:00 Mapc

19.08.2016 17:35 Vertall

10.09.2016 23:29 Nikpo

02.10.2016 15:28 Anatoly

18.10.2016 12:39 Daimos

19.10.2016 01:02 Бумер

19.10.2016 01:05 Бумер

19.10.2016 01:16 Бумер

19.10.2016 09:34 Daimos

19.10.2016 10:07 Daimos

20.10.2016 12:54 bzzz

20.10.2016 13:04 bzzz

22.10.2016 13:44 Hippomsk

24.10.2016 00:01 bzzz

24.10.2016 00:04 bzzz

24.10.2016 00:11 bzzz

24.10.2016 10:35 Daimos

24.10.2016 14:41 bzzz

24.10.2016 14:46 bzzz

25.10.2016 08:41 Daimos

25.10.2016 08:51 Daimos

Многие операционные системы поддерживают L2TP/IPsec VPN "из коробки". Объединяя сервисы конфиденциальности и аутентификации IPsec (безопасность Интернет-протокола), сетевое туннелирование протокола туннелирования второго уровня (L2TP) и идентификацию пользователя через pppd, администраторы могут создавать VPN-сети на множестве разнородных систем. Это позволяет настроить VPN на Android, Windows, Linux, MacOS и других операционных системах без использования какого-либо коммерческого ПО.

Введение

IPsec/L2TP – повсеместно используемый VPN протокол, применяемый в Windows и других операционных системах. Все версии Windows, начиная с Windows 2000, имеют встроенную поддержку этого протокола и не требуют сторонних клиентов (например, OpenVPN), что делает его более удобным. Однако, значительно сложнее настроить серверную сторону на Linux, поскольку задействованы как минимум 3 слоя: IPsec, L2TP и PPP.

  1. IPsec обеспечивает конфиденциальность сетевого соединения и авторизации клиента (системы)
  2. С L2TP туннель настроен так, что VPN трафик прозрачно проходит через IPsec
  3. PPP (протокол точка-точка) контролирует авторизацию пользователей

Это руководство не охватывает установку DHCP, RADIUS, Samba или Инфраструктуры Открытых Ключей (PKI). Оно также совсем не объясняет, как настраивать Linux-клиентов, хотя этот шаг может быть довольно легко получен из руководства. Будет освещена часть конфигурации Windows-клиентов с целью устранения неполадок в настройке сервера.

Условные обозначения

В этом руководстве будут использованы следующие условные обозначения (пример настроек):

  • Домен – example.com
  • Имя сервера – vpn.example.com
  • Имя файла сертификата CA – ca.crt
  • Сертификат сервера – vpn.example.com.crt
  • Ключ сервера – vpn.example.com.key
  • Сертификат клиента – client.example.com.crt
  • Ключ клиента – client.example.com.key

IPsec

Первый и самый сложный уровень для настройки – IPsec. Заметим, что IPsec – одноранговая сеть, таким образом, в её терминологии клиент называется инициатор , а сервер ответчик .

Windows использует IKEv1. Существуют 3 реализации IPsec в Portage: ipsec-tools (racoon), LibreSwan и strongswan.

В следующих разделах объясняются различные конфигурации. Для каждого варианта документируется

  • как использовать PSK для авторизации и
  • как использовать сертификаты для авторизации

Выберете один из вариантов (PSK или сертификаты). При использовании авторизации на основе сертификата предполагается, что нужные сертификаты уже доступны.

Вариант 1: ipsec-tools (racoon)

root # emerge --ask net-dialup/pptpd

Авторизация

Без авторизации

Самый простой путь настройки pppd – вообще не использовать авторизацию. В этом случае, убедитесь что указан "noauth". Это может оказаться полезным с целью тестирования, но в противном случае не рекомендуется, особенно с использованием PSK. Для некоторых установок PKI, такая конфигурация может быть благоразумной, например,

  • все клиентские компьютеры полностью доверены и находятся под контролем, или
  • все пользователи доверены и ключи есть только на компьютерах рядом с самими пользователями, имеющими доступ, и нигде более, или
  • все соединения являются автоматическими (этот метод используется для подключения нескольких мест)

Авторизация через chap.secrets

Для небольших пользователей (обычно тех, кто хочет подключаться к своей домашней сети в другом месте), авторизация может быть произведена через файл chap.secrets :

Файл /etc/ppp/chap-secrets

Предупреждение
/etc/ppp/chap-secrets содержит незашифрованные пароли, поэтому убедитесь, что только root может выполнять чтение или запись в этот файл

Авторизация через Samba

Если компьютер является частью домена Microsoft или леса Active Directory, а клиенты используют winbind, то авторизацию может выполнять Samba. Добавьте plugin winbind.so к опциям ppp. Настройка Samba и pppd находится за пределами этого руководства.

Авторизация через RADIUS

Если на компьютере запущен сервер RADIUS, то pppd может использовать его. Убедитесь, что net-dialup/ppp собран с USE-флагом radius . Затем добавьте plugin radius.so к опциям PPP. Настройка RADIUS и pppd находится за пределами этого руководства.

Авторизация через EAP-TLS

Если у пользователя есть сертификаты (не такие, как сертификаты компьютера, о которых говорилось раньше), тогда настройте pppd для авторизации через EAP-TLS. Рекомендуется, чтобы пользователи авторизовались с помощью смарт-карт или RSA secureID. Убедитесь, что net-dialup/ppp собран с USE-флагом eap-tls . Требуется, чтобы был настроен RADIUS (см. выше). Может потребоваться включить require-eap в файл опций PPP. Настройка pppd выходит за пределы этого руководства.

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

Windows: Правильная установка сертификата (для пользователей PKI)

Сертификат должен быть запакован в пакет PKCS12. Это может быть сделано посредством openssl или gnutls:

user $ openssl pkcs12 -export -certfile ca.crt -inkey client.example.com.key -in client.example.com.crt -out client.example.p12

user $ certtool --load-ca-certificate ca.crt --load-certificate client.example.com.crt --load-privkey client.example.com.key --to-p12 --outfile client.example.com.p12

Когда создан файл .p12 , импортируйте его в Windows. Однако, способ не очевиден. Не надо дважды щёлкать по ключу и следовать инструкциям, это не будет работать. Ключ будет импортирован в личное хранилище сертификатов, но в Windows в авторизации нуждается локальный компьютер, таким образом сертификат должен быть добавлен в хранилище ключей локального компьютера. Для этого используйте Консоль управления Microsoft (MMC). Для работы требуются привилегии администратора.

Код Импорт ключа в Windows

Пуск -> Выполнить -> mmc Файл -> Добавить или удалить оснастку... -> Сертификаты -> Добавить учетной записи компьютера -> локальным компьютером -> Готово -> OK.

Разверните Сертификаты. Выберете любую папку (без разницы какую), щёлкните правой кнопкой мыши, выберете "Все задачи", затем "Импорт...". Только сейчас следуйте указаниям мастера, но на последнем шаге убедитесь, что выбрано "Автоматически выбрать хранилище на основе типа сертификата".

Windows: Сетевые ошибки RAS

Ошибка 766: Сертификат не может быть найден

Если происходит такая ошибка, значит сертификат не был правильно импортирован. Убедитесь, что импортировали его через MMC, а не двойным щелчком файла.

Ошибка 810: VPN соединение не завершено

При использовании ipsec-tools (racoon) в системном логе может появится следующее сообщение:

Код Сообщение об ошибке в системном логе при использовании ipsec-tools/racoon

ERROR: ignore information because ISAKMP-SAhas not been established yet.

Это значит, что сертификат был неправильно импортирован, или пакет p12 отсутствует в сертификате ЦС. Убедитесь, что импортировали ключ через MMC и выбрали "Автоматически выбрать хранилище на основе типа сертификата" в конце процесса импорта.

XP SP2 и выше: Ошибка 809: Сервер не отвечает (Сервер за NAT)

Windows XP SP2 и Vista умолчанию не будут подключаться к серверу за NAT . Требуется взлом реестра. Отдельные исправления требуются для Windows XP и Windows Vista.

Vista: Ошибка 835 Невозможно авторизоваться

Эта ошибка появляется только при использовании PKI. Она значит, что subjectAltName не соответствует серверу, к которому подключается клиент. Такое часто случается при использовании динамического DNS, – сертификат имеет внутреннее имя, а не внешнее. Добавьте к сертификату внешнее имя или отключите опцию "Проверить атрибуты имени и использования у сертификата сервера" в настройках соединения: Безопасность -> Дополнительные параметры -> L2TP.

Ошибка 741: Локальный компьютер не поддерживает требуемый тип шифрования

Windows будет пытаться реализовать MPPE (слабое) шифрование, когда

  • система не использует авторизацию PPP, или
  • система не имеет pppd с поддержкой MPPE, или
  • MPPE поддерживается, но не скомпилировано с ядром (или как модуль)

тогда происходит данная ошибка.

Если используется авторизация PPP, рекомендуется исправить pppd или ядро (с минимальными изменениями конфигурации), даже если нет смысла в двойном шифровании. Если система не использует авторизацию PPP, или двойное шифрование однозначно не требуется, тогда отключите его на вкладке Безопасность.

Заметка
Соединение всё же так или иначе защищено шифрованием IPsec, отключится только потребность в MPPE.

Mac OS X

Mac OS X клиенты должны быть требовательны к рекомендациям, с которыми они соглашаются. В частности:

  • dh_group должен быть modp1024 .
  • my_identifier должен быть адресом, а не полным именем домена (адрес используется по умолчанию, таким образом просто уберите эту строку из racoon.conf ).

Mac OS X не будет подключаться, если subjectAltName не соответствует имени сервера, с которым он соединяется. В отличие от Vista, эта проверка не может быть отключена.

Также, Mac OS X не подключится, если сертификат сервера содержит поля "Расширенное использование ключа" (EKU) (кроме устаревших ikeIntermediate). В частности, при использовании сертификатов из утилиты easy-rsa OpenVPN , добавляются EKU "TLS WWW Сервер" или "TLS WWW Клиент", поэтому такие сертификаты не будут работать. Однако, они всё же могут быть использованы Mac OS X клиентом, поскольку его интересуют только сертификаты сервера.

Ссылки

  • a Linux L2TP/IPsec VPN server от Jacco de Leeuw

Руководство по настройке VPN сервера IPSEC L2TP

  • Установка осуществляется на сервер под управлением CentOS 6
  • В качестве клиентов могут выступать операционные системы поддерживающие IPsec/L2tp (Mac OS, Android, Windows, Ubuntu )
  • Используемые порты, которые следует открыть на файрволе 1701/TCP , 4500/UDP и 500/UDP

Перед началом установки немного разъяснений о том, почему я выбрал стек IPSec/L2TP и для чего нам понадобится xl2tpd и ppp .

IPSec шифрует пакеты для обеспечения шифрования и аутентификации, чтобы никто не смог расшифровать или подделать данные между клиентами и сервером.
L2TP обеспечивает туннель для передачи данных, он ни в коем случае не обеспечивает шифрование и аутентификацию.
xl2tpd используется как демон L2TP и ppp для обеспечения аутентификации соединения.

Установка Epel

Поскольку в релизе OpenSwan из EPEL 6.8 существует баг , то нам необходимо выполнить даунгрейд пакета или установить вручную.

Скачиваем необходимые пакеты: i686 , x86_64

В sysctl.conf добавим следующие строчки

%SERVERIP% - IP-адрес VPN сервера.
Вышеуказанные строчки необходимо добавить до строки exit 0

Конфигурация Openswan (IPSEC)

nano /etc/ipsec.conf
version 2 # conforms to second version of ipsec.conf specification

config setup
dumpdir=/var/run/pluto/
#in what directory should things started by setup (notably the Pluto daemon) be allowed to dump core?

nat_traversal=yes
#whether to accept/offer to support NAT (NAPT, also known as "IP Masqurade") workaround for IPsec

virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v6:fd00::/8,%v6:fe80::/10
#contains the networks that are allowed as subnet= for the remote client. In other words, the address ranges that may live behind a NAT router through which a client connects.

protostack=netkey
#decide which protocol stack is going to be used.

force_keepalive=yes
keep_alive=60
# Send a keep-alive packet every 60 seconds.

conn L2TP-PSK-noNAT
authby=secret
#shared secret. Use rsasig for certificates.

pfs=no
#Disable pfs

auto=add
#the ipsec tunnel should be started and routes created when the ipsec daemon itself starts.

keyingtries=3
#Only negotiate a conn. 3 times.

ikelifetime=8h
keylife=1h

ike=aes256-sha1;modp1024!
phase2alg=aes256-sha1;modp1024
# specifies the phase 1 encryption scheme, the hashing algorithm, and the diffie-hellman group. The modp1024 is for Diffie-Hellman 2. Why "modp" instead of dh? DH2 is a 1028 bit encryption algorithm that modulo"s a prime number, e.g. modp1028. See RFC 5114 for details or the wiki page on diffie hellmann, if interested.

type =transport
#because we use l2tp as tunnel protocol

left=%SERVERIP%
#fill in server IP above

leftprotoport=17/1701
right=%any
rightprotoport=17/%any

dpddelay=10
# Dead Peer Dectection (RFC 3706) keepalives delay
dpdtimeout=20
# length of time (in seconds) we will idle without hearing either an R_U_THERE poll from our peer, or an R_U_THERE_ACK reply.
dpdaction=clear
# When a DPD enabled peer is declared dead, what action should be taken. clear means the eroute and SA with both be cleared.

Общий пароль

Общий пароль находится в файле /etc/ipsec.secrets .
Убедитесь в его надежности, также не забудьте изменить IP-адрес на свой.

%SERVERIP% %any: PSK "357xCT1h2QY8+059k2eHZdaL3eogoTM8jHyzCF2kQxr6Zn4+PGmvuEILJMW8fP63"

Проверка

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

ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path
Linux Openswan U2.6.32/K2.6.32-573.7.1.el6.x86_64 (netkey)
Checking for IPsec support in kernel
SAref kernel support
NETKEY: Testing for disabled ICMP send_redirects
NETKEY detected, testing for disabled ICMP accept_redirects
Checking that pluto is running
Pluto listening for IKE on udp 500
Pluto listening for NAT-T on udp 4500
Two or more interfaces found, checking IP forwarding
Checking NAT and MASQUERADEing
Checking for "ip" command
Checking /bin/sh is not /bin/dash
Checking for "iptables" command
Opportunistic Encryption Support

Если много ошибок - проверяем, запущен ли сервис ipsec , если нет, то запускаем

  • force userspace = из-за ошибки, по которой мы вынуждены были сделать даунгрейд Ipsec ;
  • ip range = Диапазон IP-адресов, который будет назначен клиентам;
  • local ip = IP адрес VPN сервера;
  • refuse pap = отключаем pap-аутентификацию;
  • ppp debug = yes - когда тестируем, no в продакшн.

Локальные пользователи (PAM авторизация//etc/passwd)

Чтобы использовать локальные учетные записи пользователей для авторизации через PAM (или /etc/passwd) и, таким образом, не использовать пароли пользователя в открытом виде в текстовом файле, необходимо выполнить следующее:

В файле конфигурации /etc/xl2tpd/xl2tpd.conf добавим

В файле /etc/ppp/options.xl2tpdz убедимся, что отсутствует строка (ниже говорится добавить его, но если хотим использовать UNIX аторизацию, то удаляем)

Файл /etc/pam.d/ppp приводим к следующему виду:

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

Редактируем конфигурационный файл /etc/ppp/options.xl2tpd

Проверка

Перезапускаем сервисы и проверяем

/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart