# **Практика №5. OpenVPN L3 - туннелирование**
## **Подготовка стенда. Tunneling L3**
Инфраструктуру взял из практической работы №3, но добавил к инфраструктуре ещё одну Debian-машинку, выступающую в виде **OVPN L3-client**. В этой практической работе используется технология OpenVPN.
**OpenVPN** - это одна из самых распространенных реализаций технологии VPN, которую, используют для организации доступа к внутренним корпоративным сетям. По сравнению с другими протоколами (например, SSTP, Wireguard, SoftEther) он более удобный, эффективный, надёжный и стабильный. Распространяется с открытым исходным кодом.
**VPN (Virtual Private Network)** - технология для построения виртуальной сети поверх физической. По сути, это виртуальная сеть, образованная путём установления туннелей (туннельных соединений) между выбранными узлами.

<center>Рисунок 1. Инфраструктура</center>
Перезапустил (reboot) Debian-машинку, прописал **ip a** и посмотрел есть ли **br0** интерфейс с 4 практики, он есть, всё хорошо, даже пингует ya.ru (рис. 1.1). На OpenVPN L3-srv (Kali) я загрузил скрипт **angristan/openvpn-install** (рис. 1.3).
Это скрипт для быстрой установки openvpn для Debian, Ubuntu, Fedora, CentOS, Arch Linux, Oracle Linux, Rocky Linux and AlmaLinux
**Команда для загрузки скрипта**: curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh - дает права на выполнение скрипта
**Команда для запуска скрипта**: ./openvpn-install.sh
На рисунке 1.6 показана настройка **br0** интерфейса. Я ens3 и ens4 объединил в один интерфейс, чтобы они между собой пропускали трафик так как делает это коммутатор.

<center>Рисунок 1.1. ping ya.ru </center>

<center>Рисунок 1.2 ip адрес kali</center>

<center>Рисунок 1.3. Подгружён скрипт</center>

<center>Рисунок 1.4. Настройка server.conf</center>

<center>Рисунок 1.5. Настройка nano clietn.ovpn</center>

<center>Рисунок 1.6. Настройка Debian-RPi4</center>

<center>Рисунок 1.7. Получил br0 интерфейс</center>

<center>Рисунок 1.8. Включение ssh и создание пароля для подключения</center>

<center>Рисунок 1.9. Добавление br0 интерфейса на tap0</center>

<center>Рисунок 1.10. Получил ip на tap0</center>
---
На Debian-RPi4 загрузил openvpn с помощью команды **apt install openvpn**. С помощью команды **openvpn /etc/openvpn/client.conf** установил соединение с машинкой, на которой стоит openvpn server (рис 3), получил **ip 10.8.0.2** на **tun0** интерфейсе и на машинке с сервером пропинговал 10.8.0.2 (рисунок 3.1), а так же подключился к Debian-машинке 10.8.0.2, фактически я с Kali linux (OpenVPN L3-srv) могу подключиться к Linux-VPN-client (OpenVPN-L3 Client), а значит есть доступ до всей инфраструктуры.

<center>Рисунок 2. scp clietn.ovpn</center>

<center>Рисунок 3. Установлено соединение</center>

<center>Рисунок 3.1. ping 10.8.0.2</center>
Следующим шагом практической работы пингую FW. На рисунке 4 видны ip FW (WAN, LAN), а на рисунке 4.1. я пингую внутренний ip FW - LAN.

<center>Рисунок 4. FW: WAN, LAN</center>

<center>Рисунок 4.1. ping LAN</center>
---
## **Linux-VPN-client**
Всё то же самое настраиваю на машинке Linux-VPN-client, надо было сразу с ней работать, а не с RPi4. На рисунке 5 видны ip на этой машинке. На рисунке 5.1. показано, что я с vpn client подключился к ovpn server и передал файл client.ovpn. С помощью команды **openvpn /etc/openvpn/client.conf** установил соединение с машинкой, на которой стоит openvpn server (рис. 5.2.). Пропинговал tun0 интерфейс с помощью команды **ping 10.8.0.2** и на рисунке 5.3. видно, что я посмотрел с помощью tcpdump какие пакеты "прилетают" на этот интерфейс. Команда **tcpdump -i tun0**. На рисунке 5.4. видно, что я прописал параметр, который говорил, что за клиентом есть сетка. На рисунке 5.6. показаны **ip a** и **ip routing** на kali linux.
Я сделал туннель, чтобы можно было через kali linux через openvpn L3 подключиться к любой из машинок в инфраструктуре.

<center>Рисунок 5. ip a</center>

<center>Рисунок 5.1. Подключился к OpenVPN L3-srv</center>

<center>Рисунок 5.2. Соединение установлено</center>

<center>Рисунок 5.3. Идёт ping tun0 интерфейса</center>

<center>Рисунок 5.4. nano client</center>

<center>Рисунок 5.5. Разрешил routing</center>

<center>Рисунок 5.6. ip a, ip routing</center>

<center>Рисунок 5.7. Пинги</center>