reorganize homeworks structure for parts 1-3

This commit is contained in:
2022-04-06 10:22:40 +07:00
parent e8c9ed8597
commit 2f7fd3bee7
30 changed files with 156 additions and 160 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2022-03-17T03:03:17.629Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 OPR/83.0.4254.70" etag="NbVIYXF-muBXRySHjtu2" version="14.6.7" type="device"><diagram name="Page-1" id="c37626ed-c26b-45fb-9056-f9ebc6bb27b6">7Vpbc5s6EP41fgzDTVwec23PTM9MZjLT9jx1ZJCBE0BUyLHdX39WRoAExHEcu2566swEtBIrsd+3q13ZM+e6WH9guEr/pjHJZ7YZr2fOzcy2LTMM4SIkm0YS+lYjSFgWy0G94CH7QdonpXSZxaTWBnJKc55VujCiZUkirskwY3SlD1vQXJ+1wgkZCR4inI+lX7KYp1JqmWbf8ZFkSSqnDpDsmOPoMWF0Wcr5SlqSpqfArRo5tE5xTFeKyLmdOdeMUt7cFetrkguzthZrnrt7prdbMiMl3+uByMeeP18Ei9ixHXNxYaFGxRPOl9IOf5WcsJJwuWK+aQ0EqgALaFzBa1RCGOV0CZqvVmnGyUOFIyFcAT1AlvIih5YFt1vbELEEs3m4sYFoRLTIoraDM/rY2V48uKAlv8NFlgtKfSYsxiWWYskfC0x4NbaCNMwTYZysFZG0ygdCC8LZBobIXrdFSJIX+dIwK4UKLeCpwoKOHljSL+l09zjAjYRiT1iQPbZ+DGyVzS3DNBPneE7yq46I1zSnrB9Yc8z4XSbm31qalPGl8Jh+BEiUfh0J+whI1HTJIvLM27qBdHfMEsJfYKqww05EGckxz550r34LOpeLB/Or/z2J2Wd8Yf24nJv+lwt75Dc7EaOMpzShJc5ve+nAMfoxnyitJLD/Es430sR4yakO+0tAknXGv4p7A8nWP0rPzVptbJTGPWEZ2ImwjjBgM6kIte2tKiPs2r26bWujtoYKJ7E8DnMm4XorV+Sj9zSD5fVRI/QNU/nYWgxxTaQrbF5F6lCj9EAtQnowcryBouZ1R4qACnijDKvEgHrX8pE2j+2HO9cFr7trPNw0K+i9qjP1YWGwhXeXl7V7UbFORF5iRFkdUQM8C8hWy6vuNDGu087pFuAsbbScwaSOF8BbtiFQ6VlsP5PBUWwzGSQSn0QQvqd1xjNaQt+cck4LZcBlniWigwv33ndb/ImboCvixCSF1W3QDMfboO8apneiUGtNkMDLubSBxgbv+5K2HRf11jqXMMByq3XfCXeJvKpaog7rfqAjvBpQV0SHzvYRrAGdOQUewBUSrBVlj+0awDDNMvSlzVkrsULbsLzAsAyIDXe2++yD7ytpG5FzgsLP8tXx9ThpTSRtAOFE0uYcIWmb5Kp7aMACm1bbkPUNl/G3CrbLKiUM57VRRTow26hO2O0TEcH91wppWLYiUjZhF8JvnpUwaVuzmceBHiLTIFCNkPeDiTB1KtzHZdSbcc9x1Rj1D/aDbQqFo21qhH444fbeqYoB71D0CxqTQkKfQgJfGxFM19wfFXk1QJ8U3xHRrm7E33GQ9wZej8a4O+4YdxScCHf/ZdzHFZpWvvVllVpVdX2vKan6Ws/01WLPcF9d7s0Oqs52JW8vFmjuNPAKslOnL63sjXWcPTj9sb3BPrFv5WYPMpLucPOFyu2AYmnSinvUS+cgpGdrxw+G/R4Yic7JSBf5hhkqHz3RDfzD+OkMThaG+dCJ6RkejZ5HJGcQ6NxE74Gc3jnJiQJIwGzPD4IQql3fHJLTNWzTRMgMPRRaqN2RX8tVzxxUdz85lrbTKWyN06gaMRbSGa7TVM+BJI3V/EyKRhnVMPEqsjjeHhRP1ep6gX6E7MpxBgZH43LanWCVfaqiyhofsv/eCIDLDCqb7qTibBg4/zcMwoEX+OdG4OAzpQL+G/zpzxHCONR5+jcZEwcIyJnYP51TYbzH+dE5Eve2dGxSI+s9ZEbWWStJV3wR8mzebjuBceB3gkPGWrY1VHXqfGh8yvV77wSuNdqN7ZPtBdDsfwbUQNb/zMq5/Q8=</diagram></mxfile>

View File

@@ -0,0 +1,231 @@
Выполнение [домашнего задания](https://github.com/netology-code/sysadm-homeworks/blob/devsys10/03-sysadmin-08-net/README.md)
по теме "3.8. Компьютерные сети, лекция 3".
## Q/A
1. Подключитесь к публичному маршрутизатору в интернет. Найдите маршрут к вашему публичному IP
```shell
telnet route-views.routeviews.org
Trying 128.223.51.103...
Connected to route-views.routeviews.org.
<...>
User Access Verification
Username: rviews
route-views>show ip route 46.181.144.146
Routing entry for 46.180.0.0/15
Known via "bgp 6447", distance 20, metric 0
Tag 6939, type external
Last update from 64.71.137.241 7w0d ago
Routing Descriptor Blocks:
* 64.71.137.241, from 64.71.137.241, 7w0d ago
Route metric is 0, traffic share count is 1
AS Hops 3
Route tag 6939
MPLS label: none
route-views>show bgp 46.181.144.146
BGP routing table entry for 46.180.0.0/15, version 150820343
Paths: (23 available, best #22, table default)
Not advertised to any peer
Refresh Epoch 1
3333 31133 39927, (aggregated by 65423 192.168.21.211)
193.0.0.56 from 193.0.0.56 (193.0.0.56)
Origin IGP, localpref 100, valid, external, atomic-aggregate
path 7FE1040964D8 RPKI State not found
rx pathid: 0, tx pathid: 0
Refresh Epoch 1
8283 1299 39927, (aggregated by 65423 192.168.21.136)
94.142.247.3 from 94.142.247.3 (94.142.247.3)
Origin IGP, metric 0, localpref 100, valid, external, atomic-aggregate
Community: 1299:30000 8283:1 8283:101
unknown transitive attribute: flag 0xE0 type 0x20 length 0x18
value 0000 205B 0000 0000 0000 0001 0000 205B
0000 0005 0000 0001
path 7FE0A25887D8 RPKI State not found
rx pathid: 0, tx pathid: 0
Refresh Epoch 1
4901 6079 31133 39927, (aggregated by 65423 192.168.21.211)
162.250.137.254 from 162.250.137.254 (162.250.137.254)
Origin IGP, localpref 100, valid, external, atomic-aggregate
Community: 65000:10100 65000:10300 65000:10400
path 7FE154880220 RPKI State not found
rx pathid: 0, tx pathid: 0
<...>
```
2. Создайте dummy0 интерфейс в Ubuntu. Добавьте несколько статических маршрутов. Проверьте таблицу маршрутизации.
Создание dummy-интерфейса:
```shell
echo "dummy" | sudo tee -a /etc/modules
sudo touch /etc/modprobe.d/dummy.conf
echo "options dummy numdummies=1" | sudo tee /etc/modprobe.d/dummy.conf
sudo ip link add dummy0 type dummy
```
Добавление маршрутов и вывод таблицы маршрутизации:
```shell
sudo ip route add 10.2.2.2/32 dev eth0
sudo ip route add 10.2.2.3/32 via 10.0.2.16
ip route
default via 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
10.0.2.2 dev eth0 proto dhcp scope link src 10.0.2.15 metric 100
10.2.2.2 dev eth0 scope link
10.2.2.3 via 10.0.2.16 dev eth0
```
3. Проверьте открытые TCP порты в Ubuntu, какие протоколы и приложения используют эти порты? Приведите несколько примеров.
Для вывода открытых TCP-портов используем утилиту `ss` со следующими флагами:
* `-t` вывод только TCP-портов
* `-l` вывод портов в состоянии `LISTEN`, то есть открытые для прослушивания
* `-n` использовать числовое представление портов (например, `:ssh` -> `:22`)
*
```shell
ss -tln
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
```
В данном случае открыты только порты для соединения по `ssh` (порты `:22`) и для [`systemd-resolved`](https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html) (порт `:53`).
4. Проверьте используемые UDP сокеты в Ubuntu, какие протоколы и приложения используют эти порты?
По аналогии с предыдущим заданием используем утилиту `ss`, заменив флаг `-t` на `-u`
```shell
ss -ulpn
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
UNCONN 0 0 10.0.2.15%eth0:68 0.0.0.0:*
```
Порт `:53` предназначается для использования [`systemd-resolved`](https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html),
а порт `68` используется для получения информации о динамической IP-адресации от DHCP-сервера.
5. Используя diagrams.net, создайте L3 диаграмму вашей домашней сети или любой другой сети, с которой вы работали.
В качестве сети взята стандартная домашняя сеть с wi-fi-роутером.
Файл [network.xml](network.xml) для открытия в [diagrams.net](https://diagrams.net).
![network.png](network.png)
6. Установите Nginx, настройте в режиме балансировщика TCP или UDP.
Установка nginx:
```shell
sudo apt install nginx
sudo service nginx status
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-03-17 03:14:31 UTC; 24s ago
Docs: man:nginx(8)
Main PID: 1830 (nginx)
Tasks: 3 (limit: 1107)
Memory: 5.0M
CGroup: /system.slice/nginx.service
├─1830 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1831 nginx: worker process
└─1832 nginx: worker process
```
Далее, определим, что есть два ip-адреса, на которые необходимо сделать проксирование и балансировку трафика:
* `10.2.2.2`
* `10.2.2.3`
Оба ip-адреса слушают следующие порты: `:25` - upd-трафик, `:80` - tcp-трафик.
Настроим nginx на прослушивание порта `:80` для обоих типов трафика с дальнейшей балансировкой и проксированием.
Добавим новый блок конфигурации в файл `/etc/nginx/nginx.conf`:
```
stream {
upstream tcp_backend {
server 10.2.2.2:80;
server 10.2.2.3:80;
}
upstream upd_backend {
server 10.2.2.2:25;
server 10.2.2.3:25;
}
server {
listen 80;
proxy_pass tcp_backend;
}
server {
listen 80 udp;
proxy_pass upd_backend;
}
}
```
Дополнительно, нужно убрать конфигурацию приветственной страницы, которая работает по умолчанию и слушает порт `80`:
```shell
sudo rm -f /etc/nginx/sites-enabled/default
```
Проверим, что конфигурация в порядке:
```shell
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```
Затем нужно применить конфигурацию nginx
```shell
sudo nginx -s reload
sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-03-21 03:37:24 UTC; 6s ago
Docs: man:nginx(8)
Process: 1364 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 1367 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 1376 (nginx)
Tasks: 3 (limit: 1107)
Memory: 3.3M
CGroup: /system.slice/nginx.service
├─1376 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1377 nginx: worker process
└─1378 nginx: worker process
```
Проверим, что nginx принимает соединение на порт `80`
```shell
curl -v --max-time 5 http://localhost:80
* Trying 127.0.0.1:80...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: localhost
> User-Agent: curl/7.68.0
> Accept: */*
>
* Operation timed out after 5001 milliseconds with 0 bytes received
* Closing connection 0
curl: (28) Operation timed out after 5001 milliseconds with 0 bytes received
```
В данном случае добавили `--max-time 5`, чтобы быстрее получить ошибку, так как nginx пытается проксировать запрос на несуществующий адрес.