# Практика №6. OpenVPN L2 - туннелирование ## Задание к практической работе №6 - Построить инфраструктуру в системе pnet - Организация OpenVPN L2 тоннеля вовнутрь инфраструктуры --- ## Выполнение практической работы ### Построить инфраструктуру в системе pnetlab Начиная с практической работы №5 работы, все пользователи и устройства были переименованы, чтобы соотвествовать требованиям преподавателя по идентификации учеников. Выбор пал на имя, которое установлено на родном ноутбуке. При выполнении данного пункта было решено модифицировать инфраструктуру из предыдущей практики №4. На устройствах pfSense и Switch сохраняются VLAN 10 и VLAN 20 c сетями 172.16.10.0/24 и 172.16.20.0/24 соотстветсвенно. SecretDebianOlezhi с предыдущей практики является "мостовым" устройством, чужим во внутренней инфраструктуре. Через него и будем проводить L2 тоннель OpenVPN вовнутрь инфраструктуры. ![](https://i.imgur.com/AIMwy11.png) **OpenVPN L2** (уровень 2) используется для создания виртуального частного сетевого соединения между двумя удаленными сетями на уровне канального уровня (уровень 2) модели OSI. Это означает, что OpenVPN L2 создает виртуальный Ethernet-мост между двумя удаленными сетями, позволяя устройствам, подключенным к этому мосту, обмениваться данными напрямую, так как они будто бы находятся в одной локальной сети. Когда клиентское устройство подключается к серверу OpenVPN L2, оно получает виртуальный Ethernet-адаптер (TAP-интерфейс) и IP-адрес из IP-подсети сервера. Далее, клиентское устройство может обмениваться данными с другими устройствами, подключенными к этой же IP-подсети через виртуальный Ethernet-мост. OpenVPN L2 использует протокол Ethernet для передачи данных между устройствами, поэтому он поддерживает все протоколы и приложения, работающие на канальном уровне модели OSI, такие как ARP, DHCP, NetBIOS, и т.д. :::danger **!!ВАЖНОЕ ЗАМЕЧАНИЕ!!** После закрытия лабаторной работы IP некоторых устройств менются, поэтому неудивительно, что на некоторых скриншотах разные IP одних и тех же устройств! ::: ### Организация OpenVPN L2 тоннеля вовнутрь инфраструктуры Сохраним настройки уровня l3 с предыдущей практики, скопировав их в отдельный файл, поскольку для l2 нам будет необходимо поменять некоторые параметры. ``` cp server.conf server.conf.l3 ``` ![](https://i.imgur.com/f0CcK0U.png) Открываем server.conf для редактирования. ![](https://i.imgur.com/zNbhLmi.png) Здесь нам необходимо всего лишь сменить tun интерфейс на tap. > **tun и tap** -- это виртуальные сетевые интерфейсы в Linux, которые используются для реализации виртуальных частных сетей (VPN) и других сетевых приложений. > > **tun** (название происходит от "tunnel") интерфейс используется для создания p2p соединения между двумя сетями. Он работает на уровне сетевого уровня (Layer 3) и используется для маршрутизации пакетов между виртуальными сетями. TUN-интерфейс может быть использован для создания VPN-соединений, а также для реализации других сетевых приложений, таких как динамический маршрутизатор или мост между сетями. > > **tap** (название происходит от "tap-bridge") интерфейс, в отличие от tun, работает на уровне канального уровня (Layer 2) и используется для создания Ethernet-соединений между виртуальными машинами или между виртуальными машинами и хост-системой. tap-интерфейс может быть использован для создания моста между виртуальными машинами и физической сетью, а также для реализации других сетевых приложений, таких как симулятор сетевого устройства. ![](https://i.imgur.com/vF2RmVe.png) Перезапускаем сервис openvpn, чтобы задействовать изменения. ``` service openvpn restart ``` ![](https://i.imgur.com/3iRUIv5.png) Далее необходимо поставить OpenVPN на "мостовой" дебиан SecretDebianOlezhi. ``` apt install openvpn ``` ![](https://i.imgur.com/ddedJBK.png) Необходимо передать файл client.ovpn из 5 практики, но не забудем, что там тоже следует изменить настройки. Сделаем это позже. Для передачи используем всё тот же scp. ``` scp olezha@192.168.192.131:/home/olezha/client.ovpn ./client.conf ``` Убедимся, что файл передался, вписав `ls` и увидев его в списке. ![](https://i.imgur.com/pJ5pRua.png) Перенесём его в новообразовавшуюся после установки папку openvpn. ``` mv client.conf /etc/openvpn/ ``` ![](https://i.imgur.com/Necc74l.png) Наконец мы подошли к изменениям в данной файлике. Тут так же необходимо поменять tun интерфейс на tap. ![](https://i.imgur.com/0oB3fpz.png) Вводим изменения, чтобы соединение присходило на уровне L2. ![](https://i.imgur.com/GyzUGiX.png) И вновь перезапускаем сервис openvpn. ![](https://i.imgur.com/9slsFAc.png) Если на данном моменте что-то пошло не так и интерфейс не поднялся, как было у меня, необходимо ещё прописать `service networking restart`, которая перезапускает сетевую службу и перезагружает сетевые интерфейсы, и `reboot`, чтобы система перезагрузилась самостоятельно. В том числе надо удалить оставшиеся следы от l3, а точнее файл client, который мы прописывали для добавления IP-адресов сетей в таблицу маршрутизации. ![](https://i.imgur.com/a9nVMOL.png) И опять перезапускаем службу openvpn.. ![](https://i.imgur.com/z7Ds0qc.png) После этого можем удачно наблюдать, как поднялся tap0-тоннель. ![](https://i.imgur.com/XM7Qx3w.png) Необходимо добавить его в конфигурацию интерфейсов на SecretDevianOlezhi. Для этого откроем файл `/etc/network/interfaces` и допишем в него: ``` auto tap0 iface tap0 inet manual ``` Также не забываем указать его как часть моста br0 и перезапускаем сетевую службу. ``` service networking restart ``` ![](https://i.imgur.com/AwxsVQQ.png) ![](https://i.imgur.com/N0eunBO.png) ![](https://i.imgur.com/zoqPX9D.png) Вернёмся на Kali Linux и просмотрим, появился ли tap0 там. Да, всё создалось как надо. ![](https://i.imgur.com/vst6QYL.png) Пробуем прослушать tap0 на всю входящую/выходящую информацию. Ничего интересного на нём найдено не было (логично, поскольку в сети ничего и не происходит). ![](https://i.imgur.com/hBlOsQI.png) ![](https://i.imgur.com/oSUuGI8.png) Попробуем получить запустить команду dhclient tap0, которая отправляет запрос на сервер DHCP для получения IP-адреса, маски подсети, шлюза по умолчанию и других сетевых настроек. По сути, сейчас мы ведём себя так, будто мы внутри сети и выделенный нам IP должен будет соотвествовать внутренним настройкам инфраструктуры. Как видно нас скрине ниже, наш "конец тоннеля" получает внутренный IP корпоративной сети. ![](https://i.imgur.com/gsmAs0w.png) Так, как у нас уровень l2, то нам не нужна маршрутизация для того, чтобы пинговать устройства откуда угодно. Пропингуем старый-добрый фаервол и хотя бы один компьютер в VLAN. ![](https://i.imgur.com/ySH067L.png) Он отлично пингуется. Заходим на веб-интерфейс фаекрвола и видим то же подтверждение, что и раньше: мы часть локальной сети с IP 192.168.1.105. ![](https://i.imgur.com/zgRRED2.png) Для пинга устройства необходимо знать его IP с помощью ipconfig. Получаем 172.16.20.102. ![](https://i.imgur.com/iX9nHBL.png) Как видно ниже, VLAN данный l2 тоннель в том числе обходит. ![](https://i.imgur.com/tUa6ROy.png) Таким образом, на основе 5 практики, сервер OpenVPN был скорректирован для работы с уровнем L2 вместо L3, и нам вновь удалось проникнуть в инфраструктуру, но используя технологии OpenVPN.