mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
reorganize homeworks structure for parts 1-3
This commit is contained in:
BIN
src/homework/03-sysadmin/3.8/network.png
Normal file
BIN
src/homework/03-sysadmin/3.8/network.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
1
src/homework/03-sysadmin/3.8/network.xml
Normal file
1
src/homework/03-sysadmin/3.8/network.xml
Normal 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>
|
||||
231
src/homework/03-sysadmin/3.8/readme.md
Normal file
231
src/homework/03-sysadmin/3.8/readme.md
Normal 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).
|
||||
|
||||

|
||||
|
||||
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 пытается проксировать запрос на несуществующий адрес.
|
||||
Reference in New Issue
Block a user