VPN как средство анонимности в сети.

VPN как средство анонимности в сети.

Protocol Hacking Life

VPN - это замечательная штука, о который вы, наверняка, слышали. Уверен, это было что-то вроде "с помощью VPN можно заходить на заблокированные гос.службами сайты и заниматься в сети любой деятельностью, не боясь спалить свой айпишник" (а проблема блокировок на пустом месте в наше время до жути злободневна) - и это действительно так. Хотя, это лишь одно из применений VPN, и в данной статье мы во всех подробностях ответим на вопросы: Что такое VPN как технология; как это работает и как им пользоваться; как развернуть VPN-сервер на Linux-системе, а также рассмотрим популярные платные и бесплатные VPN-хостинги и риски их использования.

Если вы подумали, что VPN - это особая магия анонимности, то это не так, и это даже не какая-то отдельная технология, вроде SSH. В общем случае, VPN (virtual personal network) - это виртуальная сеть, организованная программно, поверх обычной сети (интернет). Пакеты данных в правильно организованной VPN-сети маскируются под обычные пакеты данных (и даже содержат заголовок), чтобы оборудование провайдеров, по которым идут эти пакеты, без проблем их распознало и правильно транспортировало. Но внутри этих пакетов содержатся зашифрованные данные, расшифровкой которых занимается VPN-сервер.

Кроме того, VPN – это средство для сохранности личных данных от перехвата, что немаловажно при работе в публичных сетях.

Для того чтобы понять, как это работает, обратимся к теории и сетевой модели OSI.

Сетевой протокол — это набор правил и действий (очерёдности действий), позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами.

Инкапсуляция - “засовывание” пакета во фрейм, или пакета в пакет. В сетях Ethernet пакеты почти всегда упакованы во фреймы из-за особенностей оборудования, через которые эти пакеты должны пройти. Инкапсулция пакетов в пакеты тоже вовсе не дикость для, например, VPN-технологии IPSec – в ней это нужно для дополнительной безопасности.

Хэш-сумма – как правило, шестнадцатеричное значение, высчитанное, путем пропускания всех данных пакета через некую оговоренную хэш-функцию (алгоритм, набор правил для подсчета). Используется для подтверждения целостности переданных данных, ведь если они изменятся по пути – повторное высчитывание хэш-суммы не даст исходного результата, высчитанного отправителем (результат записывается вместе с данными). Подойдет такой пример - “можно упрощенно представить хэш-функцию в виде кодового замка с колесиками. Вначале мы выставляем все колесики в «ноль», затем идем по тексту и для каждой буквы прокручиваем колесики в соответствии с некоторыми правилами. То число, которое окажется на замке в конце, и есть значение хэш-функции.”.

Вся наша глобальная сеть и система взаимодействия компьютеров (точнее, система протоколов, по которым они взаимодействуют) в ней построена по эдакому своду законов - эталонной сетевой модели OSI (open systems interconnection basic reference model). Протоколы распределены по уровням, выстроены в четкую иерархию по своему назначению и почти всегда взаимодействуют только с протоколами своего уровня или уровня ниже. Модель OSI разделена на 7 уровней:

  1. Физический
  2. Канальный
  3. Сетевой
  4. Транспортный
  5. Сеансовый
  6. Представительский
  7. Прикладной.

Единица данных на физическом уровне (L1) - это электрические сигналы, передаваемые по сетевому кабелю (биты). Чтобы описать его, подойдет цитата: "Если вы можете коснуться элемента сети - то это уже часть физического уровня, что делает этот слой одним из самых простейших для понимания.".

Канальный уровень (L2) манипулирует "кадрами" (фреймы) - это набор байт информации, содержащий данные о физическом адресе устройства (MAC-адрес), сами данные и контрольную сумму для проверки целостности переданных данных (иногда содержатся данные о приоритете передаваемых данных и принадлежности к VLAN). Канальный уровень взаимодействует с физикой устройства (порты) и отвечает за обеспечение доступа от устройства к устройству - организует "каналы передачи данных". На этом уровне работают коммутаторы (свитчи) - устройства, попросту принимающие данные по сетевому кабелю, распределяющие их по портам и позволяющие произвести самую простую программную настройку коммутации (вроде "с этого порта перенаправить сюда, с этого MAC-адреса ничего не принимать).

Сетевой уровень (L3) - это уровень маршрутизации, самый интересный во всей модели, ведь именно с него начинается переход с простых и понятных электросигналов в сложную и запутанную как провода в комнате сисадмина, сетевую магию. Протоколы сетевого уровня определяют пути следования данных, выбирают из них оптимальные и проверяют их на предмет проблем на пути следования (всё это и называется маршрутизацией). В основе сетевого уровня лежит протокол IP - который так же важен в интернете, как адреса и названия городов важны в человеческом мире. Единица данных на сетевом уровне - пакет, и хотя по своей структуре он похож на кадр - пакет, определенно, круче. Составные пакета можно разделить на две части - заголовок (header) и пользовательские данные (или "полезная нагрузка" - payload). В заголовок входит всё, что необходимо для правильной маршрутизации - IP-адреса отправителя и получателя, длина пакета, контрольная сумма, протокол маршрутизации и прочее.

Однако, не думайте что пакет и фрейм - это два совсем разных элемента. Пакеты почти всегда при транспортировке по проводной Ethernet-сети упаковываются во фреймы, для того, чтобы они смогли пройти по всему оборудованию (а это, как правило, L2 оборудование) по длинному пути следования пакета по сети. Когда фрейм попадает в какой-нибудь свитч при транспортировке - он направляется дальше согласно заголовку. Когда фрейм попадает в маршрутизатор, тот ищет в его данных пакет, и направляет его дальше уже согласно заголовку пакета. Можно провести (не совсем правильную) аналогию: свитчи – это почтовые отделения, передающие вашу посылку, а маршрутизаторы – это пограничники, заглядывающие внутрь.

Транспортный уровень (L4) целиком отвечает за доставку файлов - это шофер грузовичка FedEx или курьер Почты России, которому все равно что он доставляет. Единственная его задача - гарантировать доставку данных по правильным адресам в правильной последовательности. В основе транспортного уровня лежит стек протоколов TCP/IP (хотя есть и другие, вроде UDP, не проверяющие, что пакет доставлен, и потому работающие быстрее – на UDP лучше работать в нетребовательным к потере пакетов приложениях, вроде онлайн видео и играх) - с их помощью устанавливается гарантированное соединение, сообщаются результаты передачи пакетов, а самим пакетам даются номера - в общем, благодаря технологиям Транспортного уровня, вы уверены, что ни один бит переданных данных не потеряется по пути. Если на 2-м уровне есть физические порты, а на 3-м - IP, адреса, то на 4-м получателем является виртуальный порт. Для примера, IP-адрес это номер дома, а виртуальный порт - номер квартиры (физический порт и MAC-адрес - лицо, получающее письмо). Когда пакет уже передан вашему роутеру и доставлен по локальной сети на ваш компьютер – с помощью портов, компьютер знает, какому приложению нужно этот пакет передать. У каждого сетевого процесса (и использующего его приложения) на вашем компьютере есть свой порт (от 1 до 65 535), за процессами SSH зарезервирован порт 22, для HTTP - 80/8080, и т.д.

Для понимания VPN, первых 4-х уровней будет достаточно, так что остаток раздела "Модель OSI" читать необязательно.

Сеансовый уровень (L5), как ясно из названия, отвечает за создание и поддержание сеансов связи, когда это необходимо. Его протоколы, упрощенно говоря, проверяют – подает ли приложение признаки жизни, идет ли передача данных, можно ли приостановить сеанс связи, а также пытаются восстановить связь, если приложение работает и требует передачи данных, а оной нет. Яркий пример – звонок в Skype, который пытается восстановить конференцию, пока, не появится сеть.

Представительский уровень (L6) - это уровень трансформации и сжатия данных, необходимый для того, чтобы переданные данные - биты/кадры/пакеты правильно отображались - как текст, изображение или музыка, и наоборот. Также, при необходимости, данные сжимаются для повышения пропускной способности.

Прикладной уровень (L7) - последний в модели, отвечает за взаимодействие пользователя и сети. Точнее, протоколы прикладного уровня обрабатывают не сами пакеты, из которых состоит и почта, и онлайн-видео, а уже с самим текстом и прочим - рассортировывают полученные из протоколов представительского уровня данные, в удобный и понятный для конечного пользователя формат. А уже выводом этих данных занимаются приложения в операционной системе, который сами собой никак не связаны с сетями (браузер, почтовая программа и прочее). Конечный пользователь взаимодействует именно с протоколами этого уровня – дергает различные рычаги, которые уже сами собой запускают сложную цепочку действий на нижних уровнях. Наверное, слишком абстрактное объяснение, так что приведем пример.

Вы в браузере нажали на ссылку – сделать это вам позволили протоколы прикладного уровня (HTTP), которые сформировали и передали ссылку браузеру, а он правильно её отобразил. Ваше нажатие перевело вас на на уровень представления, где был сформирован некий набор байт, содержащий запрос к серверу, на котором расположена картинка. Это ещё не пакет! Потом на сетевом уровне формируется пакет, где к созданной браузером информации добавляется заголовок: кто отправил, куда отправил, хэш-сумма и прочее. Затем спускаемся ниже. Здесь пакету присваивается заголовок, где прописан МАС-адрес отправителя и получателя, хэш-сумма и прочее – здесь пакет помещается во фрейм и вылетает из сетевухи по физике. Куда – всё это определяется сетевым уровнем. Если возникнут какие-то неполадки – в дело вступят протоколы транспортного уровня. (Сеансовый уровень в данном примере не задействован, так как сеанс связи не организовывается). Когда пакет доходит до адресата, лестница проходит наоборот – и всё это произойдет за доли секунд! На самом деле всё намного сложнее, но в общих чертах так.

Более подробно о структуре сети и модели OSI можно прочесть в книге Эндрю Тенненбаума "Компьютерные сети".

Ну и как тут не вспомнить про утилиту ping – яркую иллюстрацию процесса передачи пакетов. Ping посылает пакеты размером 64 байта на указанный сервер, для проверки времени, затраченного на его пересылку и возврат ответа.

ttl в заголовках пакета – это время жизни пакета, а точнее, число единиц оборудования, которое пакет может пройти до получателя (с каждой единицей число TTL уменьшается на 1). Не было бы этого значения – пакеты ходили бы по сети бесконечно из-за различных сбоев на пути и возникающих петель, а так – когда ttl уходит в нуль – пакет уничтожается.  


Protocol Hacking Life - Авторские статьи и мануалы. Обзор софта с пошаговой настройкой. Закрытые материалы. Все о темной стороне интернета.

Report Page