319 lines
14 KiB
Markdown
319 lines
14 KiB
Markdown
# Домашнее задание 37
|
||
|
||
## Сетевые пакеты. VLAN'ы. LACP
|
||
|
||
Так как из описания задания не понятно, нужно ли использовать предыдущие стенды в которых фигурировали **centralRouter** и **inetRouter**. Построим новую сеть с теми же именами.
|
||
|
||
### Создание Vagrantfile
|
||
|
||
Зададим следующие характеристики для всех VM
|
||
|
||
- CPU - 1
|
||
- Memory - 512mb
|
||
|
||
Бедет создано 7 VM
|
||
|
||
- inetRouter
|
||
- centralRouter
|
||
- testServer1
|
||
- testClient1
|
||
- testServer2
|
||
- testClient2
|
||
|
||
Созданы следующие сети:
|
||
- **router-net** 2 линка между **inetRouter** и **centralRouter** для LACP
|
||
- **vlan10** линк между **testServer1**, **testClient1** и **centralRouter**
|
||
- **vlan20** линк между **testServer2**, **testClient2** и **centralRouter**
|
||
|
||
Для линков в сети **router-net** включаем promiscuous mode
|
||
|
||
|
||
Текущая карта сети
|
||

|
||
|
||
|
||
|
||
Готовый [Vagrantfile](Vagrantfile)
|
||
|
||
|
||
### Cоздание ansible.yml
|
||
|
||
Сценарий для Ansible будет выполнять следующие действия:
|
||
|
||
1. На **inetRouter** интерфейсы которые присоеденены к сети **router-net**, будут объеденены в bond0 в режиме LACP, и назначен ip 192.168.255.1/30
|
||
2. На **inetRouter** на интерфейсах которые объеденены в bond0, будет включен promiscuous mode
|
||
3. На **centralRouter** интерфейсы которые присоеденены к сети **router-net**, будут объеденены в bond0 в режиме LACP, и назначен ip 192.168.255.2/30
|
||
4. На **centralRouter** на интерфейсах которые объеденены в bond0, будет включен promiscuous mode
|
||
5. На **centralRouter** на интерфейсе который присоеденен к сети **vlan10**, будет создан vlan c тегом 10
|
||
6. На **centralRouter** на интерфейсе который присоеденен к сети **vlan20**, будет создан vlan c тегом 20
|
||
7. На **testServer1** на интерфейсе который присоеденен к сети **vlan10**, будет создан vlan c тегом 10 и задан ip 10.10.10.1
|
||
8. На **testClient1** на интерфейсе который присоеденен к сети **vlan10**, будет создан vlan c тегом 10 и задан ip 10.10.10.254
|
||
9. На **testServer2** на интерфейсе который присоеденен к сети **vlan20**, будет создан vlan c тегом 20 и задан ip 10.10.10.1
|
||
10. На **testClient2** на интерфейсе который присоеденен к сети **vlan20**, будет создан vlan c тегом 20 и задан ip 10.10.10.254
|
||
|
||
|
||
|
||
Готовый [ansible.yml](ansible.yml)
|
||
|
||
|
||
|
||
|
||
### Проверка
|
||
|
||
Запускаем vagrant
|
||
```bash
|
||
alex@ubuntu-pc:~/Документы/37$ vagrant up
|
||
Bringing machine 'inetRouter' up with 'virtualbox' provider...
|
||
Bringing machine 'centralRouter' up with 'virtualbox' provider...
|
||
Bringing machine 'testServer1' up with 'virtualbox' provider...
|
||
Bringing machine 'testClient1' up with 'virtualbox' provider...
|
||
Bringing machine 'testServer2' up with 'virtualbox' provider...
|
||
Bringing machine 'testClient2' up with 'virtualbox' provider...
|
||
==> inetRouter: Importing base box 'ubuntu/jammy64'...
|
||
==> inetRouter: Matching MAC address for NAT networking...
|
||
==> inetRouter: Checking if box 'ubuntu/jammy64' version '20241002.0.0' is up to date...
|
||
==> inetRouter: Setting the name of the VM: 37_inetRouter_1775546834028_76172
|
||
==> inetRouter: Clearing any previously set network interfaces...
|
||
==> inetRouter: Preparing network interfaces based on configuration...
|
||
inetRouter: Adapter 1: nat
|
||
inetRouter: Adapter 2: intnet
|
||
inetRouter: Adapter 3: intnet
|
||
==> inetRouter: Forwarding ports...
|
||
inetRouter: 22 (guest) => 2222 (host) (adapter 1)
|
||
==> inetRouter: Running 'pre-boot' VM customizations...
|
||
==> inetRouter: Booting VM...
|
||
==> inetRouter: Waiting for machine to boot. This may take a few minutes...
|
||
...
|
||
|
||
|
||
...
|
||
PLAY [centralRouter] ***********************************************************
|
||
skipping: no hosts matched
|
||
|
||
PLAY [testServer1] *************************************************************
|
||
skipping: no hosts matched
|
||
|
||
PLAY [testClient1] *************************************************************
|
||
skipping: no hosts matched
|
||
|
||
PLAY [testServer2] *************************************************************
|
||
skipping: no hosts matched
|
||
|
||
PLAY [testClient2] *************************************************************
|
||
|
||
TASK [Gathering Facts] *********************************************************
|
||
ok: [testClient2]
|
||
|
||
TASK [get int name to link vlan20] *********************************************
|
||
changed: [testClient2]
|
||
|
||
TASK [add vlan netplan] ********************************************************
|
||
changed: [testClient2]
|
||
|
||
RUNNING HANDLER [apply netplan] ************************************************
|
||
changed: [testClient2]
|
||
|
||
PLAY RECAP *********************************************************************
|
||
testClient2 : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||
```
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#### Проверка LACP
|
||
|
||
Подключимся к inetRouter, состояния интерфейсов, и доступность centralRouter
|
||
|
||
|
||
```bash
|
||
vagrant@inetRouter:~$ 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 86080sec preferred_lft 86080sec
|
||
inet6 fd17:625c:f037:2:a0:d2ff:fe64:f128/64 scope global dynamic mngtmpaddr noprefixroute
|
||
valid_lft 86282sec preferred_lft 14282sec
|
||
inet6 fe80::a0:d2ff:fe64:f128/64 scope link
|
||
valid_lft forever preferred_lft forever
|
||
3: enp0s8: <BROADCAST,MULTICAST,PROMISC,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
|
||
link/ether c6:91:6a:ba:79:e8 brd ff:ff:ff:ff:ff:ff permaddr 08:00:27:8c:41:2d
|
||
4: enp0s9: <BROADCAST,MULTICAST,PROMISC,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
|
||
link/ether c6:91:6a:ba:79:e8 brd ff:ff:ff:ff:ff:ff permaddr 08:00:27:ae:40:e4
|
||
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
|
||
link/ether c6:91:6a:ba:79:e8 brd ff:ff:ff:ff:ff:ff
|
||
inet 192.168.255.1/30 brd 192.168.255.3 scope global bond0
|
||
valid_lft forever preferred_lft forever
|
||
inet6 fe80::c491:6aff:feba:79e8/64 scope link
|
||
valid_lft forever preferred_lft forever
|
||
vagrant@inetRouter:~$ ping 192.168.255.2
|
||
PING 192.168.255.2 (192.168.255.2) 56(84) bytes of data.
|
||
64 bytes from 192.168.255.2: icmp_seq=1 ttl=64 time=4.66 ms
|
||
64 bytes from 192.168.255.2: icmp_seq=2 ttl=64 time=85.7 ms
|
||
64 bytes from 192.168.255.2: icmp_seq=3 ttl=64 time=11.0 ms
|
||
64 bytes from 192.168.255.2: icmp_seq=4 ttl=64 time=0.567 ms
|
||
64 bytes from 192.168.255.2: icmp_seq=5 ttl=64 time=71.5 ms
|
||
^C
|
||
--- 192.168.255.2 ping statistics ---
|
||
5 packets transmitted, 5 received, 0% packet loss, time 4100ms
|
||
rtt min/avg/max/mdev = 0.567/34.693/85.702/36.286 ms
|
||
|
||
|
||
```
|
||
|
||
|
||
Как видим появился интерфейс bond0 с ip 192.168.255.1/30. А так же centralRouter отвечает на пинг.
|
||
|
||
|
||
Теперь отключим один из интерфейсов который входит в bond0.
|
||
|
||
```bash
|
||
vagrant@inetRouter:~$ sudo ip link set down enp0s8
|
||
vagrant@inetRouter:~$ ping 192.168.255.2
|
||
PING 192.168.255.2 (192.168.255.2) 56(84) bytes of data.
|
||
64 bytes from 192.168.255.2: icmp_seq=1 ttl=64 time=28.2 ms
|
||
64 bytes from 192.168.255.2: icmp_seq=2 ttl=64 time=33.0 ms
|
||
64 bytes from 192.168.255.2: icmp_seq=3 ttl=64 time=2.67 ms
|
||
^C
|
||
--- 192.168.255.2 ping statistics ---
|
||
3 packets transmitted, 3 received, 0% packet loss, time 2029ms
|
||
rtt min/avg/max/mdev = 2.668/21.273/32.986/13.302 ms
|
||
```
|
||
|
||
Как видим доступность centralRouter осталась
|
||
|
||
Отключим второй интерфейс
|
||
```bash
|
||
vagrant@inetRouter:~$ sudo ip link set down enp0s9
|
||
vagrant@inetRouter:~$ ping 192.168.255.2
|
||
PING 192.168.255.2 (192.168.255.2) 56(84) bytes of data.
|
||
From 192.168.255.1 icmp_seq=1 Destination Host Unreachable
|
||
From 192.168.255.1 icmp_seq=2 Destination Host Unreachable
|
||
From 192.168.255.1 icmp_seq=3 Destination Host Unreachable
|
||
^C
|
||
--- 192.168.255.2 ping statistics ---
|
||
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3090ms
|
||
pipe 3
|
||
```
|
||
|
||
Вот теперь centralRouter не доступен.
|
||
|
||
Включим первый интерфейс
|
||
|
||
```bash
|
||
vagrant@inetRouter:~$ sudo ip link set up enp0s8
|
||
vagrant@inetRouter:~$ ping 192.168.255.2
|
||
PING 192.168.255.2 (192.168.255.2) 56(84) bytes of data.
|
||
64 bytes from 192.168.255.2: icmp_seq=1 ttl=64 time=12.5 ms
|
||
64 bytes from 192.168.255.2: icmp_seq=2 ttl=64 time=1.87 ms
|
||
^C
|
||
--- 192.168.255.2 ping statistics ---
|
||
2 packets transmitted, 2 received, 0% packet loss, time 1024ms
|
||
rtt min/avg/max/mdev = 1.867/7.188/12.509/5.321 ms
|
||
```
|
||
|
||
Связь с centralRouter восстановилась
|
||
|
||
|
||
|
||
#### Проверка VLAN
|
||
|
||
Поключимся к testClient1, посмотрим вывод ip a
|
||
```bash
|
||
vagrant@testClient1:~$ 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 85760sec preferred_lft 85760sec
|
||
inet6 fd17:625c:f037:2:a0:d2ff:fe64:f128/64 scope global dynamic mngtmpaddr noprefixroute
|
||
valid_lft 86222sec preferred_lft 14222sec
|
||
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:45:b2:6d brd ff:ff:ff:ff:ff:ff
|
||
inet6 fe80::a00:27ff:fe45:b26d/64 scope link
|
||
valid_lft forever preferred_lft forever
|
||
4: vlan10@enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
|
||
link/ether 08:00:27:45:b2:6d brd ff:ff:ff:ff:ff:ff
|
||
inet 10.10.10.254/24 brd 10.10.10.255 scope global vlan10
|
||
valid_lft forever preferred_lft forever
|
||
inet6 fe80::a00:27ff:fe45:b26d/64 scope link
|
||
valid_lft forever preferred_lft forever
|
||
```
|
||
|
||
Видим, что присутсвуем инретфейс vlan10 c ip 10.10.10.254/24.
|
||
Проверим доступность testServer1
|
||
```bash
|
||
vagrant@testClient1:~$ ping 10.10.10.1
|
||
PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.
|
||
64 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=4.49 ms
|
||
64 bytes from 10.10.10.1: icmp_seq=2 ttl=64 time=0.498 ms
|
||
|
||
--- 10.10.10.1 ping statistics ---
|
||
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
|
||
rtt min/avg/max/mdev = 0.498/2.492/4.487/1.994 ms
|
||
|
||
```
|
||
testServer1 доступен.
|
||
|
||
|
||
То же самое проверим и на testClient2
|
||
|
||
```bash
|
||
vagrant@testClient2:~$ 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 85872sec preferred_lft 85872sec
|
||
inet6 fd17:625c:f037:2:a0:d2ff:fe64:f128/64 scope global dynamic mngtmpaddr noprefixroute
|
||
valid_lft 86352sec preferred_lft 14352sec
|
||
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:9a:7a:58 brd ff:ff:ff:ff:ff:ff
|
||
inet6 fe80::a00:27ff:fe9a:7a58/64 scope link
|
||
valid_lft forever preferred_lft forever
|
||
4: vlan20@enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
|
||
link/ether 08:00:27:9a:7a:58 brd ff:ff:ff:ff:ff:ff
|
||
inet 10.10.10.254/24 brd 10.10.10.255 scope global vlan20
|
||
valid_lft forever preferred_lft forever
|
||
inet6 fe80::a00:27ff:fe9a:7a58/64 scope link
|
||
valid_lft forever preferred_lft forever
|
||
|
||
```
|
||
|
||
Как видим на testClient2 ip 10.10.10.254/24 имеет уже другой интерфейс, а имеено vlan20
|
||
```bash
|
||
vagrant@testClient2:~$ ping 10.10.10.1
|
||
PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.
|
||
64 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=5.83 ms
|
||
64 bytes from 10.10.10.1: icmp_seq=2 ttl=64 time=0.940 ms
|
||
64 bytes from 10.10.10.1: icmp_seq=3 ttl=64 time=0.424 ms
|
||
^C
|
||
--- 10.10.10.1 ping statistics ---
|
||
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
|
||
rtt min/avg/max/mdev = 0.424/2.396/5.826/2.434 ms
|
||
```
|
||
И testServer2 доступен
|
||
|
||
|
||
Все готово! |