8.7 KiB
Сетевая безопасность. Лабораторная работа №1 (HW)
Ход работы
Для стенда мы будем использовать 2 виртуальные машины Ubuntu Linux 22.04:
| hostname | ip address |
|---|---|
| ubuntu | 192.168.103.100 |
| ubuntu2 | 192.168.103.101 |
ubuntu будет использоваться в качестве сервера, а ubuntu2 -- в качестве клиента.
С помощью инструмента iperf3 и замерим скорость передачи данных в условиях открытой сети.
Как видим, при отсутствии VPN скорость между хостами около 18 Гбит/с.
Настройка OpenVPN
- Для настройки OpenVPN установим необходимые пакеты на обе машины с помощью
sudo apt install openvpn
ubuntu
ubuntu2
-
Настроим сервер OpenVPN на
ubuntu- Создадим каталог
/etc/openvpn/easy-rsaи скопируем в него исполняемый файлeasy-rsa
root@ubuntu:/home/marker# mkdir /etc/openvpn/easy-rsa root@ubuntu:/home/marker# cp -R /usr/share/easy-rsa /etc/openvpn/ root@ubuntu:/home/marker# cd /etc/openvpn/easy-rsa/- Выполним инициализацию PKI
./easyrsa init-pki- Выпустим корневой сертификат
./easyrsa build-ca- Сгенерируем последовательность Диффи-Хелмана (DH)
./easyrsa gen-dh- Создадим CRL
./easyrsa gen-crl- Сгенерируем ключ TLS-Auth
openvpn --genkey tls-auth /etc/openvpn/ta.key- Сгенерируем серверный сертификат
./easyrsa build-server-full server nopass- Скопируем криптографическую информацию в папку
/etc/openvpn/
cp ./pki/ca.crt /etc/openvpn/ca.crt cp ./pki/dh.pem /etc/openvpn/dh2048.pem cp ./pki/crl.pem /etc/openvpn/crl.pem cp ./pki/issued/server.crt /etc/openvpn/server.crt cp ./pki/private/server.key /etc/openvpn/server.key- Создадим файл
/etc/openvpn/server.confи наполним его следующим:
port 1194 # TCP or UDP server? ;proto tcp proto udp dev tun ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist /var/log/openvpn/ipp.txt keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher CHACHA20-POLY1305 data-ciphers CHACHA20-POLY1305 persist-key persist-tun status /var/log/openvpn/openvpn-status.log verb 3Таким образом мы указали, что мы будем работать по протоколу UDP на порту 1194, использовать ранее сгенерированные криптопоследовательности, а частной сетью будет
10.8.0.0/24(у сервера будет адрес10.8.0.1)- Сгенерируем клиентский сертификат
./easyrsa build-client-full client nopass- Скопируем криптографическую информацию клиента в папку
/etc/openvpn/clients/client
mkdir /etc/openvpn/clients mkdir /etc/openvpn/clients/client cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/clients/client/ cp /etc/openvpn/ta.key /etc/openvpn/clients/client/ cp /etc/openvpn/easy-rsa/pki/issued/client.crt /etc/openvpn/clients/client/ cp /etc/openvpn/easy-rsa/pki/private/client.key /etc/openvpn/clients/client/- Создадим файл конфигурации клиента
/etc/openvpn/clients/client/client.conf
client dev tun ;proto tcp proto udp remote 192.168.103.100 1194 nobind persist-key persist-tun ca ca.crt cert client.crt key client.key remote-cert-tls server tls-auth ta.key 1 cipher CHACHA20-POLY1305 data-ciphers CHACHA20-POLY1305 verb 3- Папку с конфигурацией клиента и криптографической информацией передадим на машину
ubuntu2с помощьюscp
scp /etc/openvpn/clients/client/* marker@192.168.103.101:/home/marker/client- Запустим сервер и клиент.
- Проверим наличие сетевых интерфейсов.
- Создадим каталог
-
Проверим скорость соединения с помощью
iperf3Мы получили среднюю скорость около 850 Мбит/c. Теперь проверим, как этот результат изменится, в случае использования TCP.
-
Изменяем строку
proto udpнаproto tcpв конфигах сервера и клиента. -
Перезапускаем сервер и клиент и проверяем скорость.
Мы получили среднюю скорость в 1.1 Гбит/с. Что довольно странно, учитывая, что мы используем TCP. Я предполагаю, что дело в том, что в данном тесте мы используем одно L2 пространство, где нет маршрутизирующих устройств, а при режиме UDP OpenVPN по сути просто инкапсулирует SSL/TLS в UDP, отсюда появляется значимый оверхед, который нивелируется в реальном использовании.
Настройка Wireguard
- С помощью
sudo apt install wireguardустановим необходимые пакеты на виртуальные машины
ubuntu:
ubuntu2:
- С помощью утилиты
wg genkeyсгенерируем на машинах пары приватный-публичный ключ.
- Составим конфиги для машин на основании полученных пар ключей.
- Запустим демонов, которые поднимут указанные интерфейсы и проверим связность по VPN интерфейсам.
- Мы обеспечили связность через VPN. Теперь замерим скорость между машинами с помощью
iperf3
Средняя скорость 7.7 Гбит/с.
Выводы
Итак, мы получили следующие результаты:
| VPN Protocol | Bitrate |
|---|---|
| OpenVPN (UDP) | 850 Mbps |
| OpenVPN (TCP) | 1.1 Gbps |
| Wireguard | 7.7 Gbps |
OpenVPN в режиме TCP показал более высокую скорость, но только в рамках стенда, как показывает практика режим UDP является более предпочтительным для обеспечения большей скорости передачи.
Wireguard обеспечивает значительно более высокую производительность благодаря своей более легковесной архитектуре, использованию более современных алгоритмов шифрования и механизмам оптимизации.
Wireguard работает поверх протокола UDP, чем и объясняется такая скорость, а легковесная архитектура позволяет максимизировать это преимущество.
Выполнил: Харитонов Марат Русланович, студенческий билет М235314.




















