Добавить README.md
This commit is contained in:
248
README.md
Normal file
248
README.md
Normal file
@@ -0,0 +1,248 @@
|
||||
# Домашнее задание 35
|
||||
|
||||
## Мосты, туннели и VPN
|
||||
|
||||
Для выполнение задания используется vagrant box Ubuntu 22.04
|
||||
|
||||
|
||||
### Создание Vagrantfile
|
||||
|
||||
Создадим 5 VM с характеристиками
|
||||
|
||||
- CPU 1
|
||||
- RAM 512Mb
|
||||
|
||||
Создана сеть **net_01** в которой будет создан vpn туннель
|
||||
|
||||
|
||||
### ansible.yml
|
||||
|
||||
В сценарий для Ansible добавлены следующие действия:
|
||||
|
||||
1. На всех VM установлен openvpn и iperf3
|
||||
2. На VM **vpn-server**
|
||||
- Будет установлен easy-rsa, для создания сертификатов
|
||||
- Будут сгенерированы сертификаты для подключения к open vpn для 3 пользователей
|
||||
- Будет настроен и запущен openvpn server
|
||||
3. На VM **vpn-client** будет настроен и запущен openvpn client, с сертификатом client01.crt
|
||||
|
||||
|
||||
Готовый [ansible.yml](ansible.yml)
|
||||
|
||||
|
||||
### Проверка
|
||||
|
||||
Запускаем vagrant
|
||||
```bash
|
||||
alex@ubuntu-pc:~/Документы/35$ vagrant up
|
||||
Bringing machine 'vpn-server' up with 'virtualbox' provider...
|
||||
Bringing machine 'vpn-client' up with 'virtualbox' provider...
|
||||
==> vpn-server: Importing base box 'ubuntu/jammy64'...
|
||||
==> vpn-server: Matching MAC address for NAT networking...
|
||||
==> vpn-server: Checking if box 'ubuntu/jammy64' version '20241002.0.0' is up to date...
|
||||
==> vpn-server: Setting the name of the VM: 35_vpn-server_1774467930425_98670
|
||||
==> vpn-server: Clearing any previously set network interfaces...
|
||||
==> vpn-server: Preparing network interfaces based on configuration...
|
||||
vpn-server: Adapter 1: nat
|
||||
vpn-server: Adapter 2: intnet
|
||||
==> vpn-server: Forwarding ports...
|
||||
vpn-server: 22 (guest) => 2222 (host) (adapter 1)
|
||||
==> vpn-server: Running 'pre-boot' VM customizations...
|
||||
==> vpn-server: Booting VM...
|
||||
==> vpn-server: Waiting for machine to boot. This may take a few minutes...
|
||||
vpn-server: SSH address: 127.0.0.1:2222
|
||||
vpn-server: SSH username: vagrant
|
||||
vpn-server: SSH auth method: private key
|
||||
vpn-server: Warning: Connection reset. Retrying...
|
||||
vpn-server: Warning: Remote connection disconnect. Retrying...
|
||||
vpn-server: Warning: Connection reset. Retrying...
|
||||
...
|
||||
|
||||
|
||||
...
|
||||
TASK [copy client01 cert] ******************************************************
|
||||
changed: [vpn-client] => (item=ca.crt)
|
||||
changed: [vpn-client] => (item=client01.crt)
|
||||
changed: [vpn-client] => (item=client01.key)
|
||||
changed: [vpn-client] => (item=dh.pem)
|
||||
|
||||
TASK [create conf clietn openvpn] **********************************************
|
||||
changed: [vpn-client]
|
||||
|
||||
RUNNING HANDLER [restart openvpn] **********************************************
|
||||
changed: [vpn-client]
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
vpn-client : ok=9 changed=7 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
```
|
||||
|
||||
После запуска машин, подключимся к VM **vpn-client** и проверим, установилось ли соединение vpn
|
||||
```bash
|
||||
vagrant@vpn-client:~$ ip a
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
inet 127.0.0.1/8 scope host lo
|
||||
valid_lft forever preferred_lft forever
|
||||
inet6 ::1/128 scope host
|
||||
valid_lft forever preferred_lft forever
|
||||
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
|
||||
link/ether 02:a0:d2:64:f1:28 brd ff:ff:ff:ff:ff:ff
|
||||
inet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic enp0s3
|
||||
valid_lft 86252sec preferred_lft 86252sec
|
||||
inet6 fd17:625c:f037:2:a0:d2ff:fe64:f128/64 scope global dynamic mngtmpaddr noprefixroute
|
||||
valid_lft 86253sec preferred_lft 14253sec
|
||||
inet6 fe80::a0:d2ff:fe64:f128/64 scope link
|
||||
valid_lft forever preferred_lft forever
|
||||
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
|
||||
link/ether 08:00:27:a2:b6:15 brd ff:ff:ff:ff:ff:ff
|
||||
inet 10.10.1.20/24 brd 10.10.1.255 scope global enp0s8
|
||||
valid_lft forever preferred_lft forever
|
||||
inet6 fe80::a00:27ff:fea2:b615/64 scope link
|
||||
valid_lft forever preferred_lft forever
|
||||
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
|
||||
link/none
|
||||
inet 172.16.10.6 peer 172.16.10.5/32 scope global tun0
|
||||
valid_lft forever preferred_lft forever
|
||||
inet6 fe80::25ec:da12:e5e9:81c5/64 scope link stable-privacy
|
||||
valid_lft forever preferred_lft forever
|
||||
```
|
||||
|
||||
Как видим присутствует интерфейс **tun0** с ip адресом **172.16.10.6**.
|
||||
|
||||
Проверим ICMP
|
||||
|
||||
```bash
|
||||
vagrant@vpn-client:~$ ping 172.16.10.1
|
||||
PING 172.16.10.1 (172.16.10.1) 56(84) bytes of data.
|
||||
64 bytes from 172.16.10.1: icmp_seq=1 ttl=64 time=0.519 ms
|
||||
64 bytes from 172.16.10.1: icmp_seq=2 ttl=64 time=0.525 ms
|
||||
64 bytes from 172.16.10.1: icmp_seq=3 ttl=64 time=0.551 ms
|
||||
^C
|
||||
--- 172.16.10.1 ping statistics ---
|
||||
3 packets transmitted, 3 received, 0% packet loss, time 2055ms
|
||||
rtt min/avg/max/mdev = 0.519/0.531/0.551/0.013 ms
|
||||
```
|
||||
Как видим пинг успешно проходит.
|
||||
|
||||
VPN соединение успешно установлено!
|
||||
|
||||
### Замер скоорости в TUN и TAP режимах
|
||||
|
||||
|
||||
Через ansible мы настроили VPN в tun режиме, проведем замеры с помощью iperf.
|
||||
На VM **vpn-server** запусти iperff в режиме сервера
|
||||
|
||||
```bash
|
||||
vagrant@vpn-server:~$ iperf3 -s
|
||||
-----------------------------------------------------------
|
||||
Server listening on 5201
|
||||
-----------------------------------------------------------
|
||||
|
||||
```
|
||||
|
||||
На VM **vpn-client** iperf будет подключаться к **vpn-server** внутри VPN туннеля
|
||||
```bash
|
||||
vagrant@vpn-client:~$ iperf3 -c 172.16.10.1
|
||||
Connecting to host 172.16.10.1, port 5201
|
||||
[ 5] local 172.16.10.6 port 38838 connected to 172.16.10.1 port 5201
|
||||
[ ID] Interval Transfer Bitrate Retr Cwnd
|
||||
[ 5] 0.00-1.00 sec 20.2 MBytes 170 Mbits/sec 21 131 KBytes
|
||||
[ 5] 1.00-2.00 sec 18.1 MBytes 152 Mbits/sec 4 168 KBytes
|
||||
[ 5] 2.00-3.00 sec 18.5 MBytes 155 Mbits/sec 11 112 KBytes
|
||||
[ 5] 3.00-4.00 sec 16.6 MBytes 139 Mbits/sec 2 155 KBytes
|
||||
[ 5] 4.00-5.00 sec 13.7 MBytes 115 Mbits/sec 16 133 KBytes
|
||||
[ 5] 5.00-6.00 sec 16.5 MBytes 138 Mbits/sec 5 137 KBytes
|
||||
[ 5] 6.00-7.00 sec 17.7 MBytes 149 Mbits/sec 21 139 KBytes
|
||||
[ 5] 7.00-8.00 sec 16.3 MBytes 136 Mbits/sec 5 120 KBytes
|
||||
[ 5] 8.00-9.00 sec 17.4 MBytes 146 Mbits/sec 19 127 KBytes
|
||||
[ 5] 9.00-10.00 sec 14.8 MBytes 124 Mbits/sec 5 123 KBytes
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
[ ID] Interval Transfer Bitrate Retr
|
||||
[ 5] 0.00-10.00 sec 170 MBytes 142 Mbits/sec 109 sender
|
||||
[ 5] 0.00-10.04 sec 169 MBytes 141 Mbits/sec receiver
|
||||
|
||||
iperf Done.
|
||||
```
|
||||
|
||||
Как видим средняя скорость 142 Mbits/sec
|
||||
|
||||
Теперь отредактируем конфигурацию openvpn на сервере и клиенте, изменив режим с TUN на TAP
|
||||
|
||||
Hа сервере
|
||||
|
||||
```bash
|
||||
vagrant@vpn-server:~$ sudo sed -i 's/^dev tun$/dev tap/' /etc/openvpn/server.conf
|
||||
vagrant@vpn-server:~$ sudo systemctl restart openvpn@server
|
||||
```
|
||||
На клиенте
|
||||
```bash
|
||||
vagrant@vpn-client:~$ sudo sed -i 's/^dev tun$/dev tap/' /etc/openvpn/client.conf
|
||||
vagrant@vpn-server:~$ sudo systemctl restart openvpn@client
|
||||
```
|
||||
|
||||
Посмотрим интерфейсы на **vpn-client**
|
||||
```bash
|
||||
vagrant@vpn-client:~$ ip a
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
inet 127.0.0.1/8 scope host lo
|
||||
valid_lft forever preferred_lft forever
|
||||
inet6 ::1/128 scope host
|
||||
valid_lft forever preferred_lft forever
|
||||
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
|
||||
link/ether 02:a0:d2:64:f1:28 brd ff:ff:ff:ff:ff:ff
|
||||
inet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic enp0s3
|
||||
valid_lft 84585sec preferred_lft 84585sec
|
||||
inet6 fd17:625c:f037:2:a0:d2ff:fe64:f128/64 scope global dynamic mngtmpaddr noprefixroute
|
||||
valid_lft 86047sec preferred_lft 14047sec
|
||||
inet6 fe80::a0:d2ff:fe64:f128/64 scope link
|
||||
valid_lft forever preferred_lft forever
|
||||
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
|
||||
link/ether 08:00:27:a2:b6:15 brd ff:ff:ff:ff:ff:ff
|
||||
inet 10.10.1.20/24 brd 10.10.1.255 scope global enp0s8
|
||||
valid_lft forever preferred_lft forever
|
||||
inet6 fe80::a00:27ff:fea2:b615/64 scope link
|
||||
valid_lft forever preferred_lft forever
|
||||
6: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
|
||||
link/ether 16:57:f1:51:c5:dc brd ff:ff:ff:ff:ff:ff
|
||||
inet 172.16.10.2/24 scope global tap0
|
||||
valid_lft forever preferred_lft forever
|
||||
inet6 fe80::2ce0:3ff:fe3d:f6fd/64 scope link
|
||||
valid_lft forever preferred_lft forever
|
||||
```
|
||||
|
||||
Терерь уже видим интерфейс **tap0** мак адресом **16:57:f1:51:c5:dc** и ip **172.16.10.2**
|
||||
|
||||
Проверим скорость через iperf, как и в предыдущий раз запускаем iperf сервер н а**vpn-sever**, а c **vpn-clietn** подключаемся
|
||||
```bash
|
||||
vagrant@vpn-client:~$ iperf3 -c 172.16.10.1
|
||||
Connecting to host 172.16.10.1, port 5201
|
||||
[ 5] local 172.16.10.2 port 34070 connected to 172.16.10.1 port 5201
|
||||
[ ID] Interval Transfer Bitrate Retr Cwnd
|
||||
[ 5] 0.00-1.00 sec 20.9 MBytes 175 Mbits/sec 15 135 KBytes
|
||||
[ 5] 1.00-2.00 sec 18.5 MBytes 155 Mbits/sec 5 146 KBytes
|
||||
[ 5] 2.00-3.00 sec 17.6 MBytes 148 Mbits/sec 5 136 KBytes
|
||||
[ 5] 3.00-4.00 sec 17.2 MBytes 145 Mbits/sec 10 131 KBytes
|
||||
[ 5] 4.00-5.00 sec 13.0 MBytes 109 Mbits/sec 1 147 KBytes
|
||||
[ 5] 5.00-6.00 sec 15.3 MBytes 129 Mbits/sec 9 136 KBytes
|
||||
[ 5] 6.00-7.00 sec 18.5 MBytes 155 Mbits/sec 23 118 KBytes
|
||||
[ 5] 7.00-8.00 sec 15.4 MBytes 129 Mbits/sec 5 106 KBytes
|
||||
[ 5] 8.00-9.00 sec 17.5 MBytes 147 Mbits/sec 5 153 KBytes
|
||||
[ 5] 9.00-10.00 sec 15.6 MBytes 131 Mbits/sec 5 168 KBytes
|
||||
- - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
[ ID] Interval Transfer Bitrate Retr
|
||||
[ 5] 0.00-10.00 sec 170 MBytes 142 Mbits/sec 83 sender
|
||||
[ 5] 0.00-10.05 sec 169 MBytes 141 Mbits/sec receiver
|
||||
|
||||
iperf Done.
|
||||
```
|
||||
|
||||
Как видим средняя скорость все так же на уровне 142 Mbits/sec.
|
||||
|
||||
**Делаем вывод**
|
||||
|
||||
Внутри Virtualbox, для двух VM со слабыми характеристика, нет никакой разницы!!
|
||||
|
||||
Но если не нужеж именно L2 туннель то лучше стоит использовать TUN режим вместе, там нет лишнего L2 трафика, что при высоких нагрузках будет только плюсом
|
||||
|
||||
Все готово!
|
||||
Reference in New Issue
Block a user