Чтобы разобраться с настройкой VPN, необходимо понимать, что же это такое. VPN (Virtual Private Network) – это виртуальная частная сеть. В неё входит группа протоколов, с помощью которых можно организовать визуальную сеть поверх незащищенной сети. Её используют для того, чтобы получить доступ в интернет, доступ в корпоративную сеть и объединение её сегментов.
На какие типы делят VPN?
VPN делятся на:
Давайте более детально рассмотрим самые частые сферы применения VPN:
Присутствует большая вероятность того, что клиентами VPN будут рабочие станции под управлением операционной системы Windows. Но необходимо выделить, что сервер может беспрепятственно выполнять свои основные функции как под Windows, так и под Linux или BSD. В связи с этим мы приступим к рассмотрению Windows 7. Не стоит останавливать свое внимание на базовых настройках. В них нет ничего сложного, и они понятны абсолютно каждому пользователю. Нужно остановиться на одном тонком нюансе:
Этот вопрос не требовал подробного рассмотрения, если бы не массовые возникновения проблем и незнание причин такого странного поведения VPN соединения у многих системных сотрудников.
Что же такое маршрутизация? Если особо не вдавться в подробности темриналогий то можно сказать, что это совокупность правил, которые определяют маршрут следования данных в связных сетях. Их можно сравнить с дорожными указателями и разметкой. Представьте себе ситуацию: вы попали в совершенно чужой для вас город, где отсуствуют какие-либо знаки и разметка на перекрестках. Вы впадаете в растерянность. Аналогичная ситуация происходит и в сетях. Люые сетевые пакеты осуществляют свое передвижение согласно определенному набору правил – таблиц маршрутизации. Именно благодаря им можно отправить документ на сетевой принтер для его распечатки, а электронное письмо попадет точно адрессату.
Если же вы желаете использовать VPN соединение в качестве работы удаленных клиентов в корпоративной сети, то возникает необходимость настройки маршрутов. Если же не провести этот процесс, то, как тогда пакет самостоятельно определит, что ему необходимо именно через туннель попасть в вашу корпоративную сеть? Вы же не указываете в почтовом письме или телеграмме, что ее нужно доставить «бабушке в деревню».
На сегодняшний день известны несколько способов построения виртуальной сети. Каждый из них подразумевает в себе свою уникальную схему маршрутизации. Давайте рассмотрим их подробней:
Этот вариант функционирует только при условии поддержки со стороны Proxy ARP, позволяющий объеденить две не связные между собой сети в одну целую. Считается, что все хосты расположены на одной физической сети и обмениваются траффиком без дополнительной маршрутизации.
Основными преимуществами этого способа являются простота и полный доступ к сети удаленных клиентов. Однако в таком случае вы получаете низкий уровень безопасности и невозможность разграничения доступа между пользователями локальной сети и VPN клиентам.
В результате клиенты могут получить адреса из диапазона, не являющегося частью локальной сети, но который маршрутизируется из нее.
В таком случае удаленные клиенты выделяются в отдельную подсеть (на картинке это 10.0.1.0/24). При этом на рисунке видно, что обе подсети могут быть составляющими общей сети — 10.0.0.0/23. Таким образом, управление структурой может осуществляться с помощью маршрутизации или маски подсети.
Первый вариант заключается в перемещении компьютеров в сеть 10.0.0.0/23 (для этого необходимо изменить маску сети на 255.255.254.0), что предоставит ему доступ к обеим подсетям.
Второй вариант состоит в направлении пакетов из одной подсети в другую с помощью шлюза. Этот способ лучше подходит для этой ситуации, так как мы получим возможность настраивать правила для разных подсетей, создавая разные уровни доверия.
Для того чтобы получить доступ с клиентского компьютера, находящегося в одной подсети, в другую, следует использовать статическую маршрутизацию. Записи будут иметь такой шаблон:
X.X.X.X mask Y.Y.Y.Y Z.Z.Z.Z
В этом шаблоне сеть — Х.Х.Х.Х, маска сети — Y.Y.Y.Y, а шлюз — Z.Z.Z.Z. для того чтобы добавить маршрут в ОС Windows нужно воспользоваться командой routeadd. Общая запись команды выглядит так:
routeadd X.X.X.X mask Y.Y.Y.Y Z.Z.Z.Z
В ОС Linux запись немного меняет свою форму, но в целом остается неизменной:
routeadd -net X.X.X.X netmask Y.Y.Y.Y gw Z.Z.Z.Z
Стоит отметить, что команды действуют до первой перезагрузки. Хотя это создает определенные трудности, этим свойством можно воспользоваться при ошибке в создании маршрута. После того как вы убедились, что всё работает правильно, следует добавить постоянные маршруты. Для этого к уже известной нам команде следует добавить ключ –p:
routeadd X.X.X.X mask Y.Y.Y.Y Z.Z.Z.Z -p
Чтобы осуществить это в Ubuntu, после описания интерфейса в файле /etc/network/interfaces, следует добавить строку:
uprouteadd -net X.X.X.X netmask Y.Y.Y.Y gw Z.Z.Z.Z
Теперь вернемся к маршрутам. Для того чтобы предоставить доступ к локальной сети, следует для удаленных клиентов прописать к ней маршрут:
10.0.0.0 mask 255.255.255.0 10.0.1.1
И наоборот: для осуществления доступа из локальной сети к ПК удаленных клиентов следует прописать
10.0.1.0 mask 255.255.255.0 10.0.0.1
Такую схему рекомендуется использовать в большинстве случаев, ведь вы сможете регулировать права клиентов в локальной сети.
Удаленные клиенты имеют адреса, которые не являются частью локальной сети, но могут из нее маршрутизироваться.
Обратите внимание, что эта схема не рассчитана на маршрутизацию из локальной сети в удаленную. Зачастую она используется для предоставления доступа клиентам с низкой степенью доверия. Таким образом, клиентам доступны только опубликованные в VPN ресурсы. Стоит отметить, что для доступа к локальной сети этого недостаточно — дополнительно следует настроить сервер на трансляцию пакетов из удаленной сети в локальную и обратно.
Публикацию ресурса в сети VPN можно осуществить следующими путями: с помощью размещения его на VPN сервере и разрешению доступа к нему из удаленной сети, путем прокинутого порта в удаленную сеть или же подключения ресурса в роли клиента сети. Ниже представлена схема, на которой изображен сервер терминалов с маршрутом 10.0.0.2, доступный по адресу 172.16.0.2 удаленной сети.
Приведенная схема служит для соединения нескольких подсетей в целостную единственную сеть. Такая сеть имеет более сложную структуру. Однако если понять процесс направления пакетов через интерфейсы, сразу все становится на места. При данных условиях X.X.X.X — IP адрес основного офиса, а филиалы имеют серые IP адреса. Роутер офиса осуществляет подключение в качестве клиента. На нем находится VPN сервер.
Теперь поговорим о маршрутизации. Клиенты подсети LAN1 производят передачу пакетов к подсети LAN2 на сетевой шлюз роутера. Равным образом роутер передает пакеты на противоположный конец VPN туннеля. Точно такая же маршрутизация должна быть проведена для подсети LAN2.
Для этого необходимо написать маршрут к LAN2 на клиентах подсети LAN1:
10.0.1.0 mask 255.255.255.0 10.0.0.1
Нужно также прописать маршрут другого конца туннеля на роутере LAN1:
10.0.1.0 mask 255.255.255.0 172.16.0.2
Для клиентов LAN2 маршруты должны иметь следующий вид:
10.0.0.0 mask 255.255.255.0 10.0.1.1
PPTP является простым в реализации протоколом. Но не стоит забывать о том, что не нужно использовать его при работе с важнейшими данными, поскольку PPTP – слабозащищенный протокол.
Созданная нами в тестовой лаборатории схема, которая поможет практически ознакомиться с технологией:
Мы имеем локальную сеть 10.0.0.0/24, в которой расположен роутер, выполняющий функции VPN сервера терминальный сервер. Для VPN была закреплена сеть с маршрутом 10.0.1.0/24. Наружный вид сервера имеет условленный адрес X.X.X.X. Нам необходимо предоставить доступ удаленным клиентам к ресурсам терминального сервера.
Устанавливаем пакет pptpd:
sudo apt-get install pptpd
Далее запускаем /etc/pptpd.conf и задаем наиболее важные настройки VPN сервера. Для этого указываем в конце файла адрес сервера:
localip 10.0.1.1
Для выдачи клиентам указываем диапазон адресов:
remoteip 10.0.1.200-250
Не перезапустив pptpd, невозможно будет увеличить количество адресов, поэтому необходимо задавать их с запасом. Необходимо также найти и переписать строку:
bcrelay eth1
Существует две опции, которые возможно использовать. Это listen и speed. С помощью listen указывается IP адрес от локального интерфейса. Нужно это с целью прослушивания РРТР-соединения. Второй – speed – позволяет с точностью показать VPN-соединения в бит/с. В качестве примера можно взять разрешение для серверов прием РРТР-соединения, но лишь при внешнем интерфейсе:
listen X.X.X.X
В файле /etc/ppp/pptpd—options находятся настройки намного тоньше. Принимая настройки «по умолчанию», это будет наиболее соответствовать необходимым требованиям. Для лучшего представления стоит рассказать о нескольких из них.
За шифровку приложенных данных, а также проверку на подлинность несет ответственность секция #Encryption. Любой предположительно опасный протокол типа CHAP, PAP и MS-CHAP, устаревшие протоколы запрещаются опциями:
refuse-pap
refuse-chap
refuse-mschap
Следующим этапом является применение протокола проверки на подлинность (MS-CHAP v2, а также 128-битное MPPE-128):
require-mschap-v2
require-mppe-128
Далее стоит упомянуть о секции #Network и Routing. Секция для использования DNS-серверов, ориентируясь на внутреннюю сеть. Почему это, вероятнее всего, станет весьма выгодным? Потому что позволяет обратить сигнал напрямую к компьютеру через имена, не исключительно через IP. Такое возможно при содержании в DNS всех портативных компьютеров. Но в нашей ситуации вышеуказанная опция совершенно бесполезна. В этом случае нужно всего лишь ввести адрес WINS-сервера через опцию ms-wins.
В том же разделе имеется proxyarp опция. Она включает в себя поддержание с помощью сервера Proxy ARP.
Следующая секция #Miscellaneous и содержащаяся в ней lock-опция. Лимитирует возможности любого клиента всего лишь через одно подключение.
Настраивание сервера вполне можно считать завершенным процессом. Последнее, что осталось, это разработать самих пользователей. Для того чтобы сделать это, внесите в /etc/ppp/chap-secrets все нужные записи:
ivanov * 123 *
petrov * 456 10.0.1.201
Первая запись дает возможность подключиться к серверу пользователю, пароль которого 123, а также присваивается персональный IP-адрес. Вторая запись создает следующего пользователя. Она так же выдает ему постоянный адрес (10.0.1.201).
Далее нужно перезапустить pptpd:
sudo /etc/init.d/pptpd restart
Обратите внимание! В тех случаях, когда pptpd отказывает в перезапуске, виснет, /var/log/syslog выдает строчку о long config file line ignored, незамедлительно вводите в конце файла /etc/pptpd.conf перенос строчки.
Наконец, сервер полностью подготовлен к работе.
В большинстве случаев для VPN соединения подходят настройки «по умолчанию», но не будет лишним указать конкретный тип соединения и отключить протоколы шифрования, которые не будут использоваться.
После этого, нужно прописать адреса статических маршрутов и основного шлюза, при этом учитывая особенности структуры сети. Данные вопросы рассматривались в прошлых разделах.
После установки VPN соединения можем пропинговать любой компьютер, входящий в локальную сеть, так мы без особого труда получаем доступ к терминальному серверу:
Внимание, еще одно важное замечание! Зачастую доступ к ПК в локальной сети будет осуществляться по IP адресам. Имеется в виду – путь \\\\10.0.0.1 будет рабочим, а \\\\SERVER – не будет работать. Такой вариант будет весьма непривычным для пользователей и может вызвать дополнительные трудности. От этих проблем можно избавиться несколькими способами:
Основой нашего сервера стал маршрутизатор, использующий WindowsServer 2008 R2. Настройка сервера рассматривалась ранее. Настройки актуальны и для серверов на основе WindowsServer 2003 – 2008 с небольшими особенностями.
Настройка закончена и, в крайнем случае, в процессе запуска мастера, необходимо будет выбрать нужную конфигурацию. При открытии диспетчера сервера, в ролях нужно найти «маршрутизация и удаленный доступ» зайти в ее свойства (открывается при помощи правой кнопки мыши). В появившемся окне, нужно установить переключатель «IPv4» в состояние локальной сети и вызова по требованию и установить галочку напротив «IPv4 сервер удаленного доступа«.
После данных манипуляций нужно в закладке «безопасность» выбрать проверку подлинности при помощи протокола MS-CHAPV2 и запретить подключение без проверки.
Далее следует еще одна закладка IPv4. На ней нужно обозначить из какого диапазона значений клиенты VPN сети будут получать свои адреса, и установить интерфейс, который будет принят подключением.
После сохранения изменений, служба перезапустится и добавится роль VPN сервера. В консоли (левая часть) должен появиться пункт «порты», в его свойства нам и нужно зайти. По умолчанию система создает 5 PPTP и 5 L2TP портов. В настройках PPTP устанавливаем галочки напротив подключения по требованию и подключения удаленного доступа. Кроме этого, необходимо указать максимальное количество портов. Все лишние порты рекомендуется отключить.
На данном этапе настройка сервера может считаться оконченным действием. Необходимо лишь определить количество пользователей, для которых будет доступен удаленный доступ к серверу.
Настройка доступа производится разделе локальных пользователей и групп, где находим «свойства пользователя» и разрешаем доступ в разделе «права доступа к сети» во «входящих звонках».
Чтобы удостовериться в правильности всех настроек, нужно подключиться из клиентского компьютера, при этом выбрав нужный нам тип проверки доступа. Список подключенных клиентских компьютеров можно увидеть в консоли, где расположен пункт «Клиенты удаленного доступа».
Для произведения диагностики проблем с подключением в первую очередь необходимо изучать журнал событий, в котором фиксируются все наиболее важные происшествия. В описаниях вы сможете найти полную информацию для быстрого обнаружения и устранения возникшей проблемы.