# Практическая работа №5 "OpenVPN L3 - туннелирование"
Выполнил студент группы БСБО-04-20: Люцько С.А.
Проверил преподаватель: Садыков Ильдар Венерович
**Москва 2023г.**
---
**Построим следующую топологию:**

---
## Подготовительные действия:
* **Настроим устройство Debian-RPi4 как "мостовое"**
1. Настроим подключение к интернету:
```
nano /etc/network/interfaces
```
Устанавливаем следующие настройки:

Сохраняем файл и через консоль перезапускаем networking:
```
service networking restart
```
2. Установим bridge-utils (в диалоговом окне выбираем пункт по умолчанию):
```
apt update -y && apt upgrade -y && apt install bridge-utils -y
```
3. Настроим "мост":
```
nano /etc/network/interfaces
```
Устанавливаем следующие настройки:

Сохраняем файл и через консоль перезапускаем networking:
```
service networking restart
```
* **Настроим Vlan'ы на pfSense:**
1. Смотрим внутренний IP адрес pfSense:

LAN: 192.168.1.1
2. Подключаемся по нему с устройства из локальной сети для настройки:

3. Создадим Vlan'ы:
Interfaces -> Assignments -> VLANs -> Add


4. Привяжем к ним интерфейсы:
Interfaces -> Assignments -> Interface Assignments -> Add

5. Настроим новые интерфейсы:
Interfaces -> Assignments -> Interface Assignments -> {Название интерфейса}




6. Создадим для них правила:
Firewall -> Rules -> {Название интерфейса} -> Add


7. Включим DHCP сервер для новых интерфейсов:
Services -> DHCP Server -> {Название интерфейса}




* **Настроим Vlan'ы на коммутаторе:**
```
ena
conf t
vlan 10
vlan 20
exit
int e0/2
switchport mode access
switchport access vlan 10
int e0/3
switchport mode access
switchport access vlan 20
int e0/0
switchport trunk encapsulation dot1q
switchport mode trunk
exit
exit
wr
```
* Проверим полученные IP адреса и доступ в интернет на устройствах Win7 и Win10:
**Win7:** 172.16.10.3

**Win10:** 172.16.20.5

---
## Выполнение задания:
* **Включим SHH на устройстве Kali-2022 и узнаем его IP адрес:**
```
sudo -i
sevice ssh start
systemctl enable ssh
ip a
```

**IP адрес (Kali-2022):** 192.168.10.129
* **Подключимся с основного компьютера по SSH к Kali-2022:**
```
ssh user@192.168.10.129
```
* **Установим на Kali-2022 скрипт для развертывания OpenVPN сервера:**
```
sudo apt update -y
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
```
Результат:

* **Запусим установленный скрипт:**
```
sudo ./openvpn-install.sh
```
Выбираем следующие параметры:










Результат:


Видим, что теперь на порту 1194 работает процесс OpenVPN.
* **Настроим конфигурацию OpenVPN сервера:**
```
sudo -i
nano /etc/openvpn/server.conf
```
Устанавливаем следующие настройки:

Перезапустим OpenVPN:
```
service openvpn restart
```
* **Настроим клиент:**
```
nano /home/user/client.ovpn
```
Устанавливаем следующие настройки:

* **Переходим к Linux-VPN-Client:**
Настроим доступ в интернет:
```
nano /etc/network/interfaces
```
Устанавливаем следующие настройки:

Сохраняем файл и через консоль перезапускаем networking:
```
service networking restart
```
* **Установим OpenVPN:**
```
apt update -y && apt install openvpn -y
```
* **Скопируем с Kali-2022 на Linux-VPN-Client файл client.ovpn в формате .conf:**
```
scp user@192.168.10.129:/home/user/client.ovpn ./client.conf
```
Результат:

Перекинем файл client.conf в директорию /etc/openvpn:
```
mv client.conf /etc/openvpn/
```
* **Установим соединение:**
```
openvpn /etc/openvpn/client.conf
```
Результат:

**IP адрес туннеля:** 10.8.0.2
Попробуем пропинговать его с Kali-2022:
```
ping 10.8.0.2
```

Попробуем подключиться к нему по SSH:
```
ssh root@10.8.0.2
```

Будучи подключёнными к Linux-VPN-Client, попробуем пропинговать pfSense:
```
ping 192.168.1.1
```
Результат:

А теперь вернёмся к Kali-2022. Пропишем маршрут до локальной сети:
```
sudo -i
ip route add 192.168.1.0/24 via 10.8.0.2
```
Попробуем пропинговать pfSense:
```
ping 192.168.1.1
```
Результат:

Не получилось.
Посмотрим, идёт ли трафик через туннель на Linux-VPN-Client.
Для этого сначала установим tcpdump:
```
apt update -y && apt install tcpdump -y
```
Начнём пинговать pfSense с Kali-2022:
```
ping 10.8.0.2
```

Теперь же посмотрим трафик на Linux-VPN-Client:
```
tcpdump -i tun0
```

Трафик не идёт. Дело в том, что для L3 туннелирования необходимо указать для OpenVPN, что за клиентом client есть сеть 192.168.1.0
Для этого идём в настройки OpenVPN на Kali-2022:
```
cd /etc/openvpn/ccd/
```

Тут необходимо создать файл client, с указанием локальной сети.
```
nano client
```
Устанавливаем следующие настройки:

Перезапустим OpenVPN:
```
service openvpn restart
```
На Linux-VPN-Client переподключаем OpenVPN (остановив предыдущую сессию):
```
openvpn /etc/openvpn/client.conf
```
Попробуем заново послушать трафик c Linux-VPN-Client:
```
tcpdump -i tun0
```
Начнём пинговать pfSense с Kali-2022:
```
ping 192.168.1.1
```

Прослушка на Linux-VPN-Client выдаёт следующее:

Осталось дело за малым. Сперва разрешим маршрутизацию на Linux-VPN-Client:
```
nano /etc/sysctl.conf
```
Изменим следующие настройки:

И в заключение настроим систему, которая будет NAT'ить трафик на Linux-VPN-Client на ens3:
```
iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
```
Пробуем с Kali-2022 пропиновать pfSense:
```
ping 192.168.1.1
```

Успех! Мы получили доступ к pfSense извне, используя OpenVPN L3 туннелирование.
