Объединение двух офисов через VPN. Часть 1 – обходимся средствами Windows
Хотя тема и избита, но тем не менее, часто многие испытывают затруднения – будь то начинающий системный администратор или же просто продвинутый пользователь, которого начальство заставило выполнять функции эникейщика. Парадоксально, но несмотря на обилие информации по VPN, найти внятный вариант — целая проблема. Более того, даже складывается впечатление, что один написал – другие же нагло скопировали текст. В итоге, поисковая выдача буквально захламлена обилием ненужной информации, из которой стоящее редко можно вычленить. Поэтому я решил в своей манере разжевать все нюансы (может, кому и пригодится).
Итак, что такое VPN? VPN ( Virtual Private Network — виртуальная частная сеть) — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (в том числе и интернет). В зависимости от применяемых протоколов и назначений, VPN может обеспечивать соединения трёх видов: узел-узел, узел-сеть и сеть-сеть. Как говорится, без комментариев.
VPN позволяет легко объединить удаленный хост с локальной сеткой фирмы или другого хоста, а также объединить сети в одну. Выгода вполне очевидна – мы легко с клиента VPN получаем доступ к сети предприятия. Кроме того, VPN еще и защищает ваши данные посредством шифрования.
Я не претендую на то, чтобы вам описать все принципы работы VPN, так как есть масса специальной литературы, да и если честно, я и сам много чего не знаю. Тем не менее, если у вас стоит задача «Сделай!», нужно срочно вливаться в тему.
Давайте рассмотрим задачу из моей личной практики, когда нужно было объединить по VPN два офиса –головной и филиал. Ситуацию еще и осложнял тот факт, что в головном офисе стоял видео-сервер, который должен принимать видео с IP камеры филиала. Вот вам вкратце задача.
Способов решения много. Все зависит от того, что у вас есть под рукой. Вообще, VPN легко построить с помощью железного решения на базе различных роутеров Zyxel. В идеале, может случиться и то, что интернет обоим офисам раздает один провайдер и тогда у вас вообще проблем не возникнет (достаточно просто обратиться к прову). Если фирма богата, то может себе позволить и CISCO. Но обычно все решается программными средствами.
А тут выбор велик – Open VPN, WinRoute (учтите, что он платный), средства операционной системы, программы типа Hamanchi (честно говоря, в редких случаях она может и выручит, но полагаться на нее не рекомендую – бесплатная версия имеет ограничение в 5 хостов и еще один существенный минус заключается в том, что все ваше соединение зависит хоста Hamanchi, что не всегда гуд). В моем случае идеально было бы воспользоваться OpenVPN – бесплатной программой, способной незатейливо создать надежное VPN-соединение. Но мы, как всегда, пойдем по пути наименьшего сопротивления.
У меня в филиале интернет раздает шлюз на базе клиентской Windows. Согласен, не самое лучшее решение, но для тройки клиентских компьютеров хватит с головой. Мне нужно сделать VPN-сервер из этого шлюза. Так как вы читаете эту статью, то наверняка уверен, что являетесь новичком в VPN. Поэтому для вас я привожу самый простой пример, который, в принципе, устраивает и меня.
В Windows семейства NT уже вшиты зачаточные возможности серверов. Поднять VPN-сервер на одной из машин не составит труда. В качестве сервера я буду приводить примеры скриншотов Windows 7, но общие принципы будут теми же самыми, что и для старушки XP.
Учтите, что для соединения двух сетей, нужно чтобы они имели разный диапазон! Например, в головном офисе диапазон может быть 192.168.0.x, а в филиале – 192.168.20.x (или любой диапазон серых ip). Это очень важно, так что будьте внимательны. Теперь, можно приступать к настройке.
Зайдите на сервере VPN в Панель управления -> Центр управления сетями и общим доступом ->изменение параметров адаптера.
Теперь нажмите клавишу Alt, вызвав меню. Там в пункте Файл нужно выбрать «Новое входящее подключение».
Поставьте галочки тем пользователям, которые могут входить в систему по VPN. Я настоятельно рекомендую Добавить нового пользователя, назвать его понятным именем и назначить пароль.
После того, как вы это сделали, нужно в следующем окне выбрать как будут подключаться пользователи. Ставьте галку «Через интернет». Теперь вам остается назначить диапазон адресов виртуальной сети. Причем, можно выбрать сколько всего компьютеров может участвовать в обмене данных. В следующем окне выберите протокол TCP/IP версии 4 нажмите «Свойства»:
У вас появится то, что у меня на скриншоте. Если вы хотите, чтобы клиент получил доступ к локальной сети, в которой находится сервер, просто ставьте галку «Разрешить звонящим доступ к локальной сети». В пункте «Назначение IP адресов» я рекомендую указать адреса вручную по принципу, который я выше описал. В моем примере я дал диапазону всего двадцать пять адресов, хотя мог указать просто и два и 255.
После этого жмем на кнопку «Разрешить доступ».
Система автоматически создаст VPN-сервер, который будет сиротливо ожидать, когда к нему кто-либо присоединится.
Теперь остается дело за малым – настроить VPN-клиента. На клиентской машине также идете в Центр управления сетями и общим доступом и выбираете Настройка нового подключения или сети. Теперь вам нужно будет выбрать пункт «Подключение к рабочему месту»
Жмете на «Использовать мое подключение к Интернету и теперь вас выбросит в окно, где нужно будет ввести адрес нашего интернет-шлюза в филиале. У меня он имеет вид 95.2.x.x
Теперь можно вызывать подключение, вводить то имя пользователя и пароль, который вы ввели на сервере и пытаться подключиться. Если все правильно, то вы подключитесь. В моем случае, я могу уже посылать пинг любому компьютеру филиала и запрашивать камеру. Теперь ее моно легко цеплять к видеосерверу. У вас же может быть что-то другое.
Как вариант, при подключении может выскочить ошибка 800, сигнализируящая о том, что с подключением что-то не то. Это проблема брэндмауэра либо клиента, либо сервера. Конкретно я сказать вам не могу – все определяется экспериментально.
Вот так незатейливо мы создали VPN между двумя офисами. Таким же образом можно объединить и игроков. Однако не стоит забывать, что это будет все-таки не полноценный сервер и лучше использовать более продвинутые средства, о которых я расскажу в следующих частях.
В частности, в части 2 мы с вами рассмотрим настройку OPenVPN под Windows и Linux.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Настраиваем VPN. Часть 2 — Cтруктура сети
Продолжая разговор о виртуальных частных сетях (VPN) следует обязательно коснуться вопроса структуры создаваемой сети, которая в свою очередь зависит от выполняемых задач. Неверные решения на стадии проектирования могут сказаться далеко не сразу, а по мере роста и развития инфраструктуры, когда поменять что-либо «малой кровью» будет очень проблематично. В статье мы рассмотрим типовые сценарии использования VPN, области их применения, достоинства и недостатки.
Мы не будем рассматривать решения на базе топологии L2, когда сети объединяются на канальном уровне, таких сценариев следует избегать, допуская их только в том случае, когда вам действительно нужен L2-туннель.
Очень часто L2-решения используют начинающие администраторы, которые испытывают затруднения с маршрутизацией и таким образом решают вопрос недостатка знаний и практических навыков. Но по факту бездумное использование соединений на канальном уровне приносит только пласт новых проблем, которые будут накапливаться по мере роста сети и решить которые без существенного изменения сетевой структуры будет невозможно.
Для оставшегося большинства задач следует использовать L3 VPN, работающий на сетевом уровне и использующий маршрутизацию, которая позволяет эффективно управлять потоками трафика и строить достаточно сложные сетевые решения. В данной статье мы не будем подробно разбирать вопросы маршрутизации, для знакомства с ее основами рекомендуем обратиться к другой нашей статье.
Соединение хост-хост (Сквозной VPN, End-to-End)
Самая простая схема, при которой туннель непосредственно соединяет два узла. В данном случае VPN-сервер не является маршрутизатором и клиент не имеет доступа за его пределы. В данной схеме не используется маршрутизация и нет требований к локальным адресам клиента и сервера.
Данное решение используется в первую очередь для создания защищенного канала связи для удаленной работы с сервисами, имеющими недостаточный уровень безопасности. Например, для организации удаленного доступа бухгалтера к базам 1С:Предприятия, либо для доступа к административной панели расположенного в сети интернет сервера.
Также подобное решение часто используют для защиты недостаточно защищенных протоколов, скажем FTP или POP3, если вариант с SSL по какой-либо причине (чаще всего обратной совместимости) недоступен.
При этом следует понимать, что клиент получает полный доступ к серверу, минуя сетевой периметр защиты, и здесь выходит на первый план вопрос доверия. Поэтому подобный вид доступа чаще всего используется для ключевых сотрудников, уровень доверия к которым высок, либо для доступа к ограниченному количеству сетевых служб, когда VPN выступает только в роли дополнительной защиты канала связи.
Соединение хост — сеть (Удаленный доступ, End-to-Site)
В случаях, когда удаленному сотруднику требуется полный доступ к сети предприятия используют несколько иную схему. В этом случае VPN-сервер должен являться маршрутизатором, а адресное пространство клиента и локальной сети не должно пересекаться. Именно поэтому мы категорически не рекомендуем использовать в локальных сетях подсети 192.168.0.0 и 192.168.1.0, которые широко используются в сетевом оборудовании уровня SOHO (для дома и малого офиса), так как в этом случае вы с очень большой долей вероятности столкнетесь с пересечением адресного пространства.
Для того, чтобы удаленный компьютер имел доступ к локальной сети нам потребуется использовать маршрутизацию. Для этого на клиенте потребуется создать маршрут, который укажет, что все пакеты для сети 192.168.51.0 следует направлять через туннель на адрес VPN-сервера 10.10.0.1. Никаких обратных маршрутов со стороны локальной сети указывать не нужно.
Как и в предыдущем сценарии следует понимать, что подобное соединение дает доступ внутрь периметра и требует доверия к удаленному пользователю. В ряде случаев, когда уровень доверия низок, имеет смысл изолировать удаленных пользователей в DMZ-зоне и контролируя с помощью брандмауэра их доступ к остальной части сети.
Еще один сценарий использования подобного соединения — административный, используемый системным администратором для доступа к собственной сети из любой точки земного шара.
Соединение сеть-сеть (Site-to-Site)
Наиболее популярная в корпоративной среде схема, позволяющая соединить сети офисов между собой. В этом случае туннель обычно поднимается между маршрутизаторами сетей, хотя это не обязательно, но при расположении VPN-сервера и клиента на отдельных узлах сети потребуется дополнительная маршрутизация.
В нашем примере узлы VPN-сети совпадают с основными шлюзами и на каждом их них потребуется добавить дополнительный маршрут, который будет направлять пакеты к удаленной сети на другую сторону туннеля.
При наличии нескольких филиалов схема немного усложнится. Так как VPN — это всегда соединения точка-точка, то следует понимать, что даже если различные узлы VPN-сети находятся в едином адресном пространстве обмен трафиком возможен только между двумя концами туннеля. Все прочие взаимодействия решаются исключительно с помощью маршрутизации.
Как видно из следующей схемы, два филиала с сетями 192.168.41.0/24 и 192.168.31.0/24 могут общаться между собой исключительно через сервер центрального офиса. Все пакеты для иных сетей филиалы направляют на VPN-адрес офиса — 10.10.0.1, потому как если указать для 41-й сети путь к 31-й через 10.10.0.2, то такой маршрут работать не будет.
Почему? Потому что туннель — это точка-точка, в данном случае у нас есть соединения 10.10.0.2-10.10.0.1 и 10.10.0.3-10.10.0.1, но соединения 10.10.0.2 — 10.10.0.3 нет и быть не может. Понимание данного факта заставляет по-новому взглянуть на потоки трафика между удаленными сетями и предполагает построение оптимальной топологии с учетом этого факта.
Допустим сети 31 и 41 территориально расположены в одном городе и предполагают большой объем трафика между ними (скажем филиал и производственная площадка). В этом случае нет никакой необходимости гонять трафик через центральный офис и более правильно будет настроить два VPN-канала: между 31-й и 51-й сетями (филиал — офис) и 31-й и 41-й (филиал — производство), а благодаря маршрутизации мы можем также без проблем настроить соединение офис — производство через филиал.
Доступ в интернет
Если быть формалистами, то данный сценарий к виртуальной частной сети (VPN) не относится, но использование VPN-соединений для доступа в интернет становится все более и более популярным, поэтому рассмотрим и этот сценарий.
В каких случаях использование VPN для доступа в интернет оправдано? В первую очередь низкий уровень доверия к текущей сети. Скажем вы находитесь в командировке и вынуждены использовать гостиничный Wi-Fi, вы не знаете, что это за сеть и какой у нее уровень безопасности, поэтому для работы будет вполне оправданно поднять VPN-соединение с корпоративным шлюзом и уже через него выходить в глобальную сеть.
Другой сценарий — это доступ к сайтам, которые недоступны через вашего основного провайдера или для вашего регионального расположения. В этом случае VPN-сервер должен располагаться в юрисдикции, из которой доступ к интересующему сайту ничем не ограничен.
Так если вы занимаетесь работой с американскими интернет-магазинами, то вам понадобится VPN-сервер в США, чтобы вы выглядели для сайтов резидентами этой страны.
В подобных случаях нет никакой необходимости пускать в туннель весь исходящий трафик, более разумно настроить правила, когда через VPN будут работать только необходимые сайты, а весь остальной трафик пойдет через основного провайдера.
Данный сценарий применим и для локальных сетей, но в этом случае VPN-клиент следует располагать на шлюзе, который получая запросы из локальной сети будет решать, какой пакет отправить дальше через провайдера, а какой через VPN.