---
# System prepended metadata

title: Практика №6. OpenVPN L2 - туннелирование

---

# Практика №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.