Настройка VPN pfSense

15 Февраля 2018

VPN — понятие разностороннее и VPN-сервер можно настраивать как из соображений конфиденциальности (когда не хочется показывать свой реальный IP-адрес), так и для объединения в одну сеть компьютеров, находящихся в разных филиалах компании. Именно этот сценарий и будет рассмотрен в данной статье. Настройка будет производиться на базе дистрибутива pfSense.

Прежде, чем приступить к реализации

Технически объединить в одну сеть компьютеры, находящиеся в разных города и даже странах, традиционным способом довольно затратно — стоимость каналов связи и стоимость оборудования делают эту затею нерентабельной. Но к счастью был изобретен протокол L2TP, позволяющий объединить удаленные компьютеры в одну сеть. L2TP — хороший протокол, но он не шифрует данные, которые будут передаваться по публичным каналам связи — по Интернету. Если вам нужно объединить компьютеры для чего-то несущественного, например, поиграть в какую-то сетевую игру, сервер которой может работать только при условии нахождения всех игроков в одной сети — это одно. Но когда нужно передавать конфиденциальные данные, нужно использовать шифрование. Для этого нужно, кроме L2TP, настроить еще и IPsec.

Настройку виртуальной частной сети можно было бы произвести на базе любого дистрибутива Linux и даже с использованием операционной системы Linux, однако, мы будем использовать pfSense как VPN клиент. Во-первых, он прост в использовании, что идеально для начинающих пользователей. Во-вторых, платформа xelent.cloud предоставляет уже готовый шаблон виртуального сервера на базе этого дистрибутива, так что нам даже устанавливать его не придется.

На pfSense настройка VPN сервера практически полностью осуществляется через графический интерфейс, поэтому проблем с процедурой возникнуть не должно. Это касается не только виртуальной машины, но и манипуляций, которые нужно будет произвести пользователю со своей операционной системой. При использовании pfSense как VPN клиента можно подключать к сети любое количество пользователей.

Создание виртуального сервера

Cоздайте виртуальный сервер. При создании сервера нужно выбрать шаблон PFSense 2.3 (рис. 1), а также выбрать его конфигурацию. Если компьютеров немного (до 10), то переплачивать не нужно и вполне будет достаточно 2 ядер, 3 Гб оперативной памяти и накопителя на 40 Гб.

шаблон виртуального сервера

Рис. 1. Выбор шаблона при создании сервера

конфигурация сервера

Рис. 2. Необходимая конфигурация

VPN server на pfSense такой конфигурации будет стоить всего 1365 рублей в месяц. Ради такой суммы нет необходимости покупать еще один компьютер для его использования в качестве сервера. Если же при настройке pfSense VPN server вы поймете, что выбранной конфигурации будет недостаточно, то всегда сможете изменить параметры виртуальной машины.

Стоимость выбранной конфигурации

Рис. 3. Стоимость выбранной конфигурации

Создание виртуальной сети

Настройка VPN pfSense начинается с настройки виртуальной сети. Если бы сервер находился у нас в офисе, то мы бы предоставляли доступ к сети этого офиса. Но поскольку наш сервер будет виртуальным, то ему еще понадобится виртуальная сеть, доступ к которой он будет предоставлять. Поэтому переходим в раздел Сети и создаем нашу сеть. При создании сети не забудьте включить DHCP (точнее просто не выключайте его, DHCP для частной сети включен по умолчанию).

После того, как сеть будет создана, у вас появится возможность добавить в нее сервер. Добавьте ранее созданный сервер. Подробно работа с виртуальными сетями описана в другой нашей статье.

Виртуальный сервер

Рис. 4. Виртуальный сервер добавлен к частной сети 10.0.0.0

Настройка локального сетевого интерфейса на PfSense

У VPN server pfSense должно быть два интерфейса. Первый — WAN, по которому он будет принимать соединения, второй — LAN — он будет подключен к нашей локальной (пусть и виртуальной) сети, в которую он будет объединять своих клиентов.

Первым делом при настройке VPN pfSense нужно узнать MAC-адрес интерфейса. Для этого посмотрите на рис. 4 — интересующий нас MAC-адрес 00:50:56:01:02:23 — к этому интерфейсу подключена наша локальная сеть VPN1. При начальной настройке VPN pfSense у нас будет только один такой интерфейс, можно было бы и не заморачиваться, но, когда у вас будет более сложная конфигурация, нужно понимать, какой интерфейс и куда подключен.

Затем откройте панель управления дистрибутива. Ссылка на нее находится в панели управления виртуального сервера. Используйте предоставленные имя пользователя и пароль (admin/khVnxz7W в нашем случае) для входа.

Панель управления виртуальным сервером

Рис. 5. Панель управления виртуальным сервером

Далее перейдите в раздел Interfaces, (assign) и выполните следующие действия для настройки VPN pfSense:

  1. Выберите для LAN интерфейс с упомянутым ранее MAC-адресом (00:50:56:01:02:23)
  2. Нажмите кнопку Add.

После этого появится сообщение об успешном добавлении интерфейса (рис. 6).

 Сетевой интерфейс

Рис. 6. Сетевой интерфейс успешно добавлен

Следующий этап на pfSense настройки VPN сервера заключается в изменении параметров сетевого интерфейса. Выполните команду меню Interfaces, LAN (этот пункт меню появится после добавления сетевого интерфейса) и выполните следующие действия:

  1. Выберите для IPv4 Configuration Type значение DHCP
  2. Включите интерфейс (отметьте флажок Enable interface)
  3. Нажмите кнопку Save (она будет внизу страницы).
  4. Нажмите появившуюся кнопку Apply Changes (она появится вверху страницы, вы не сможете ее не заметить).

Настройка сетевого интерфейса

Рис. 7. Настройка сетевого интерфейса для локальной сети

На главной странице панели управления дистрибутива появятся два интерфейса — глобальный (WAN) и локальный (LAN). Они-то и понадобятся для дальнейшей pfSense VPN server настройки.

Рис. 8. Сконфигурированные сетевые интерфейсы.png

Рис. 8. Сконфигурированные сетевые интерфейсы

Настройка L2TP

Как только сетевые интерфейсы будут настроены, пора приступить к настройке L2TP на VPN server pfSense. Выберите команду меню VPN, L2TP. Включите переключатель Enable L2TP server (рис. 9).

Enable L2TP server

Рис. 9. Включите переключатель Enable L2TP server

Далее в pfSense для настройки VPN сервера нужно указать следующие параметры (рис. 10):

  • Interface — здесь выберите WAN. По этому интерфейсу будут подключаться клиенты.
  • Server Address — указываем свободный IP-адрес. Этот адрес будет передан клиентам для использования в качестве шлюза. Обратите внимание, что это не публичный IP-адрес компьютера или IP-адрес «прослушки» L2TP-сервиса. Это должен быть свободный адрес и приватной сети, в нашем случае 10.0.0.3.
  • Remote address range — укажите IP-адрес и сетевую маску подсети.
  • Number of L2TP users — количество L2TP-пользователей. Для демонстрации на pfSense VPN server настройки мы будем использовать 3, а вы установите максимальное количество пользователей, которые будут использовать ваш сервис.
  • Secret — здесь ничего вводить не нужно, оставьте пустым. Браузер попытается (во всяком случае, у меня попытался) добавить сюда пароль пользователя admin, если вы его сохранили. Поэтому убедитесь, что это поле пустое.
  • Authentication type — выберите CHAP.

Настройка L2TP

Рис. 10. Настройка L2TP

Остальные параметры (относящиеся к DNS и RADIUS) изменять не нужно. Просто нажмите кнопку Save.

Теперь перейдите на вкладку Users и добавьте L2TP-пользователей. IP-адрес пользователя для настройка VPN сервера на pfSense на данном этапе указывать не нужно, укажите только имя пользователя и пароль. IP-адрес нужно указывать только, если наша частная сеть сконфигурирована без DHCP. Когда у нас несколько пользователей, то можно обойтись и без DHCP, когда пользователей много, то сами понимаете, что сеть без DHCP с доступом по VPN на ОС pfSense полностью настроенной считать нельзя.

Созданные L2TP-пользователи

Рис. 11. Созданные L2TP-пользователи

Настройка IPsec

С L2TP все просто, а вот настройка IPsec для VPN на pfSense будет чуть сложнее, если можно вообще назвать сложной настройку средствами веб-интерфейса. Перейдите в раздел VPN, IPsec и сразу перейдите на вкладку Mobile Clients.

Включите параметр Enable IPsec Mobile Clients Support, в качестве значения параметра User Authentication выберите Local Database и убедитесь, что остальные параметры выключены. Нажмите кнопку Save.

Настройка IPsec

Рис. 12. Настройка IPsec

Появятся два сообщения (рис. 13). Первое о том, что конфигурация IPsec-туннеля была изменена и нужно нажать кнопку Apply Changes, чтобы изменения вступили в силу. Нажмите эту кнопку. Второе — о том, что нужно создать определение Phase 1. Нажмите кнопку Create Phase 1, чтобы сделать это.

Поддержка мобильных клиентов включена

Рис. 13. Поддержка мобильных клиентов включена

Далее для pfSense VPN server настройки нужно установить параметры, как показано на рис. 14, а именно:

  • Выбрать версию обмена ключами (Key Exchange version) — V1
  • Выбрать протокол IPv4
  • Выбрать интерфейс — WAN
  • Установить IP-адрес удаленного шлюза — это наш публичный IP или имя узла. В вашем случае IP-адрес будет другим.
  • Установить метод аутентификации (Authentication Method) — Mutual PSK
  • Проверить, чтобы параметр Negotiation mode содержал значение Main
  • Установить идентификатор (My identifier) — My IP address
  • Установить значение для Pre-Shared Key. Для простоты я установил 123, но вы установите более сложное значение, например, dfd3426. Запомните его.
  • Убедиться, что таймаут равен 28800 секундам.
  • Убедиться, что параметры Disable rekey и Responder only выключены.
  • Установить для параметра NAT Traversal значение Auto
  • Включить параметр Enable DPD
  • Установить для параметра Delay значение 10
  • Установить для параметра Max failures значение 5.

Настройка фазы 1

Рис. 14. Настройка фазы 1

Нажмите кнопку Save, а затем — Apply Changes. Настройка фазы 1 VPN server на pfSense завершена. Далее появится информация об IPsec-туннелях. Вы видите, что нет записей для фазы 2. Нажмите кнопку Show Phase 2 Entries (0), см. рис. 15.

Нет записей фазы 2

Рис. 15. Нет записей фазы 2

Далее появится кнопка Add P2, нажмите ее (рис. 16).

Кнопка Add P2

Рис. 16. Нажмите кнопку Add P2

Если облака для вас
не просто теория
Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям
Конфигурация VPS и бесплатный тест уже через 2 минуты
Организация вашей IT-инфраструктуры на основе мультиклауд-решения

Для настройки фазы 2 (рис. 17) нужно выполнить следующие действия:

  1. Параметр Mode установить в Transport
  2. Параметр Protocol установить в ESP
  3. Со списка алгоритмов шифрования (Encryption Algorithms) выбрать только AES с длиной ключа 128 бит.
  4. В списке алгоритмов хэширования выберите только SHA1
  5. Для параметра PFS key group установите значение off
  6. Установить таймаут — 3600 секунд
  7. Нажать кнопку Save и Apply Changes.

Настройка фазы 2

Рис. 17. Настройка фазы 2

На этом настройка фазы 2 для VPN pfSense будет завершена. Теперь переходим на вкладку Pre-Shared Keys. Создайте ключ с идентификатором any (в предыдущих версиях PfSense нужно было использовать идентификатор allusers, который, впрочем, работает и в новой версии), выберите тип ключа — PSK и введите сам ключ (123, хотя в реальных условиях лучше ввести что-то более сложное). Нажмите кнопку Save, а затем — опять Apply Changes.

Pre-Shared Keys

Рис. 18. Настройка Pre-Shared Keys

Настройка правил брандмауэра

Настраивая pfSense как VPN клиент, нужно позаботиться о безопасности. Первым делом создадим правило для IPsec (рис. 19):

  • Действие — Pass
  • Интерфейс — IPsec
  • Семейство протоколов — IPv4
  • Протокол — any
  • Источник (Source) — any
  • Назначение (Destination) — any
  • Описание правила — Allow L2TP/IPsec clients или любое другое, главное, чтобы вы понимали, зачем используется это правило.

Данное правило будет пропускать весь трафик. Если вы — перфекционист, тогда выберите протокол UDP и укажите диапазон портов от 1701 до 1701 (L2TP), а в качестве назначения — ваш WAN IP. Правило должно получиться, как показано на рис. 20.

брандмауэр для IPsec

Рис. 19. Создание правила брандмауэра для IPsec

правило для IPsec

Рис. 20. Созданное правило для IPsec

Далее на pfSense настройка VPN сервера продолжается на вкладке L2TP VPN. Добавьте новое правило, нажав кнопку Add. Здесь все аналогично: протокол — любой (any), источник и назначение — любые (any). Визуализация правила приведена на рис. 21.

брандмауэр для L2TP

Рис. 21. Правило брандмауэра для L2TP

В pfSense для дальнейшей настройки VPN сервера перейдите на вкладку Floating. Создайте новое правило:

  • Действие — Pass
  • Включите параметр Apply the action immediately on match
  • Выберите интерфейс — L2TP VPN
  • Направление (Direction) — out
  • Версия TCP/IP — IPv4
  • Источник (Source) — LAN net
  • Назначение (Destination) — сеть, которую вы указывали при настройке L2TP (10.0.0.0)

Если вы хотите использовать pfSense как защищенный VPN клиент, также нужно развернуть расширенные параметры и для параметра TCP Flags выбрать значение Any flags, а для значения State Type — значение Sloppy State (рис. 22).

Расширенные параметры правила

Рис. 22. Расширенные параметры правила

Осталось на вкладке WAN создать правило, пропускающее (Pass) все UDP пакеты на порт 1701 (L2TP) назначения 46.229.220.143 (это наш WAN IP, у вас он будет другим), см. рис. 23. Более полная конфигурация приведена на рис. 24.

Правила для WAN

Рис. 23. Правила для WAN

Параметры созданного правила (WAN)

Рис. 24. Параметры созданного правила (WAN)

Не забудьте нажать кнопку Apply Changes и дождаться применения правил.

Настройка клиента

При использовании pfSense как VPN клиента придется внести некоторые настройки в операционную систему. Откройте Центр управления сетями и общим доступом. Выполните команду Настройка нового подключения или сети (Set-Up a Connection or Network), см. рис. 25.

Настройка нового подключения или сети в Windows 7

Рис. 25а. Настройка нового подключения или сети в Windows 7

Настройка нового подключения или сети в Windows 10

Рис. 25б. Настройка нового подключения или сети в Windows 10

Выберите Подключение к рабочему месту (Connect to a workplace), затем — Использовать моё подключение к интернету (Use my Internet connection), рис. 26.

Подключение к рабочему месту (Windows 7)

Рис. 26а. Подключение к рабочему месту (Windows 7)

Подключение к рабочему месту (Windows 10)

Рис. 26б. Подключение к рабочему месту (Windows 10)

Введите IP-адрес сервера VPN на pfSense и название соединения (рис. 27).

 IP-адрес сервера, где pfSense применяют как VPN клиент (Windows 7)

Рис. 27а. IP-адрес сервера, где pfSense применяют как VPN клиент (Windows 7)

IP-адрес сервера (Windows 10)

Рис. 27б. IP-адрес сервера (Windows 10)

Далее настройке Windows 7 и Windows 10 немного отличается. В Windows 7 вам будет предложено ввести имя пользователя и пароль (рис. 28).

Имя пользователя и пароль

Рис. 28. Введите имя пользователя, пароль и нажмите кнопку Подключить

Вы увидите сообщение об ошибке 800 — так и должно быть (рис. 29). Выберите Все равно создать это подключение.

Ошибка 800

Рис. 29. Ошибка 800

Откройте список соединений (рис. 30), щелкните по созданному VPN-соединению и выберите команду Свойства, перейдите на вкладку Безопасность (рис. 31). Выберите типа VPN — L2TP IPsec VPN, далее нажмите кнопку Дополнительные параметры и укажите наш предварительный ключ (Pre-Share Key), как показано на рис. 32.

Список соединений

Рис. 30. Список соединений

Свойства соединения

Рис. 31. Свойства соединения

Указываем предварительный ключ

Рис. 32. Указываем предварительный ключ

После этого соединение с VPN на системе pfSense должно быть установлено (рис. 33). Для установки соединения щелкните правой кнопкой мыши на VPN-соединении и выберите команду Подключение / отключение.

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

Рис. 33. VPN-соединение установлено, брандмауэр просит выбрать тип сети

Теперь вернемся к Windows 10. Соединение с VPN server на pfSense создается, но не устанавливается автоматически. Поэтому сообщения с ошибкой, как в случае с Windows 7, вы не увидите. Перейдите к списку сетевых соединений (Network Connections), щелкните правой кнопкой на соединении и выберите команду Properties, затем — перейдите на вкладку Security и выберите тип VPN — Layer 2 Tunneling Protocol with IPsec (L2TP/IPsec), рис. 34.

Свойства сетевого соединения

Рис. 34. Свойства сетевого соединения (Windows 10)

Затем, как и в случае с Windows 7, нажмите кнопку Advanced settings и укажите наш предварительный ключ (рис. 35).

предварительный ключ (Windows 10)

Рис. 35. Указываем предварительный ключ (Windows 10)

Откройте окно Settings, перейдите в раздел Network & Internet, VPN. Вы увидите созданное соединение (рис. 36).

Рис. 36. VPN-соединения (Windows 10).png

Рис. 36. VPN-соединения (Windows 10)

Нажимать кнопку Connect пока рано. Если вы заметили, мы пока еще не указывали имя пользователя и пароль, с помощью которых вы сможете подключиться к VPN на ОС pfSense. Поэтому нажмите кнопку Advanced options, затем — Edit, выберите тип входа — User name and password и введите имя пользователя и пароль, указанные при настройке L2TP (рис. 37).

Указываем имя пользователя и пароль

Рис. 37. Указываем имя пользователя и пароль (VPN)

Вот теперь можно вернуться на предыдущий экран и нажать кнопку Connect. При успешном подключении вы увидите состояние Connected.

Соединение установлено

Рис. 38. Соединение установлено

Решение проблем

К сожалению, при настройке соединения с VPN server на pfSense возникают определенные проблемы.

Зависает установка соединения

Вы видите, что система пытается установить подключение (рис. 39), но соединение не устанавливается. Причина сему — брандмауэр и, возможно, антивирус. Отключите брандмауэр (в том числе и штатный), а также антивирус и любое другое ПО вроде Internet Security. После этого попытайтесь снова.

Соединение подвисло

Рис. 39. Соединение «подвисло»

Ошибка 789

Ошибка стара как мир и с завидной регулярностью переходит из одной версии Windows в другую и тянется еще с Windows XP (рис. 40).

Ошибка 789 в Windows 7

Рис. 40. Ошибка 789 в Windows 7

Каково было мое удивление, когда в Windows 10 тоже был этот " баг». Правда, система не сообщила, что это именно ошибка 789, но опыт подсказал, в чем дело (рис. 41).

Ошибка соединения в Windows 10

Рис. 41. Ошибка соединения в Windows 10

Исправить ошибку довольно просто. Запустите редактор реестра и перейдите в раздел HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters. Далее для параметра AllowL2TPWeakCrypto установите значение 1, а также создайте DWORD-параметр ProhibitIpSec и для него также установите значение 1 (рис. 42). После этого нужо перезагрузить компьютер. Данное решение универсальное и подходит, как для Windows 7, так и для Windows 10.

Редактируем реестр

Рис. 42. Редактируем реестр

На этом все. Теперь можно использовать соединение с VPN на ОС pfSense в полном объеме: клиенты из разных офисов могут подключаться к нашему серверу и работать в составе одной общей сети.

Получить консультацию специалиста
Персональный ассистент
Cloud.Xelent