diff --git a/demo.txt b/demo.txt new file mode 100644 index 00000000..cdefbefc --- /dev/null +++ b/demo.txt @@ -0,0 +1,2 @@ +"scratch" +"asdasd" diff --git a/file.txt b/file.txt new file mode 100644 index 00000000..63c798a5 --- /dev/null +++ b/file.txt @@ -0,0 +1,2 @@ +"First commit" +"Second commit" diff --git a/history.txt b/history.txt new file mode 100644 index 00000000..063a7658 --- /dev/null +++ b/history.txt @@ -0,0 +1 @@ +"Branch commit" diff --git a/labs/submission3.md b/labs/submission3.md new file mode 100644 index 00000000..d89e46e9 --- /dev/null +++ b/labs/submission3.md @@ -0,0 +1,65 @@ +ЗАДАНИЕ 1. + + +1. jobs, steps, runners, triggers +Jobs - это набор шагов, которые выполняются на одном раннере. Jobs могут выполняться параллельно или последовательно. +Steps - отдельные команды или действия внутри job. +Runners - серверы, где запускается код. Я использовал ubuntu-latest. +Triggers - события, которые запускают workflow. У меня стоит on: [push] — значит пайплайн стартует при каждом пуше в репозиторий. +2. Что запустило workflow +Workflow сработал автоматически из-за триггера on: [push]. +Я сделал коммит и запушил изменения в репозиторий - GitHub это увидел и сразу запустил job. +3. Сначала GitHub выделил виртуальную машину с Ubuntu, запустил на ней runner. Потом по очереди выполнились все шаги. +Логи можно посмотреть в Actions tab — там видно каждый шаг, что выполнялось и успешно ли. +Ссылка на фотографию успешно сделанного задания: + +https://drive.google.com/file/d/1DipT0JlJ7pkvMy4ExPwN9GglR3Den-io/view?usp=sharing + + + + + + +ЗАДАНИЕ 2. +1. Изменения, которые я внес в файл рабочего процесса: + Собственно, все его содержимое) +2. Системная информация от раннера: + В разделе hardware specifications: + +🔧=== CPU INFORMATION === +Model name: AMD EPYC 7763 64-Core Processor +CPU(s): 4 +On-line CPU(s) list: 0-3 +NUMA node0 CPU(s): 0-3 +Thread(s) per core: 2 + +💾=== MEMORY INFORMATION === + total used free shared buff/cache available +Mem: 15Gi 953Mi 9.1Gi 40Mi 5.9Gi 14Gi +Swap: 4.0Gi 0B 4.0Gi + +💽=== DISK INFORMATION === +Filesystem Size Used Avail Use% Mounted on +/dev/root 72G 50G 23G 70% / +tmpfs 7.9G 84K 7.9G 1% /dev/shm +tmpfs 3.2G 1008K 3.2G 1% /run +tmpfs 5.0M 0 5.0M 0% /run/lock +efivarfs 128M 32K 128M 1% /sys/firmware/efi/efivars +/dev/sda16 881M 62M 758M 8% /boot +/dev/sda15 105M 6.2M 99M 6% /boot/efi +/dev/sdb1 74G 4.1G 66G 6% /mnt +tmpfs 1.6G 12K 1.6G 1% /run/user/1001 + + В разделе runner capabilities: +⚡=== RUNNER CAPABILITIES === +Architecture: x86_64 +Kernel version: 6.11.0-1018-azure +Hostname: runnervmwffz4 +Current user: runner +Available processors: 4 +Total memory: 15Gi + +3. Автоматический запуск происходит сам по пушам в репозиторий. Удобно для постоянного тестирования, но не гибко - все привязано к веткам. +Ручной запускаешь когда хочешь сам через интерфейс GitHub. Можно настроить параметры под конкретную задачу, удобно для экспериментов или деплоя. В истории видно, что запускал вручную, а что сработало автоматически. + +4. Работает на архитектуре x86_64. Вилдимо, на ubuntu. Окружение, исходя из runner.environment, github-hosted. diff --git a/submission2.md b/submission2.md new file mode 100644 index 00000000..9ed2c57a --- /dev/null +++ b/submission2.md @@ -0,0 +1,305 @@ +Пояснение к файлу: + +Изначально я не знал, что нужно клонировать репозиторий курса. +Поэтому я сделал свой в и всю лабу выполнял там, заполняя этот файл, а когда узнал, +решил оставить файл, чтобы не перезаписывать (и была почти полночь), поскольку сама работа сделана, +и единственное отличие, что может быть, это сами хэши. Однако если Вы посчитаете необходимым, я сделаю это в этом репозитории. + + +4. Вот консольные команды и ответы на них: + +C:\Users\Umion\Desktop\devopshw>git cat-file -p HEAD +tree e7207f28b699ba8692587090a6f7efa77ccde434 +parent 7db866f495c5a40935350f7116ed058c85891b48 +author Umion 1770891055 +0300 +committer Umion 1770891055 +0300 +gpgsig -----BEGIN SSH SIGNATURE----- + U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgbxGtpLfbU2kcIQ5RCjSciPGvep + JKyjR+LD7275Z0vOMAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 + AAAAQAQ2oYZFpp83yNs+QbXz2tb5283dpkjTNqUAPkJjSx4mbDWYWXk5dLCkHngq4vYmJm + VSraIkP7JeV5NwH5ZHIgI= + -----END SSH SIGNATURE----- + +Add test file + +C:\Users\Umion\Desktop\devopshw>git cat-file -p e7207f28b699ba8692587090a6f7efa77ccde434 +040000 tree 54071349dfafff914c8757496a29844fdb72ce1e .github +100644 blob a4210048363c68b1a9fca2aaec800056ff96018e test.txt +100644 blob 431e4252da3f523bcb023a001b05ff91be8c29c8 text.txt + +C:\Users\Umion\Desktop\devopshw>git cat-file -p 431e4252da3f523bcb023a001b05ff91be8c29c8 +"text" + +C:\Users\Umion\Desktop\devopshw>git cat-file -p a4210048363c68b1a9fca2aaec800056ff96018e +"Test content" + +C:\Users\Umion\Desktop\devopshw>git cat-file -p 54071349dfafff914c8757496a29844fdb72ce1e +100644 blob a450cd1a37f8c2ba34aa6f5ced291dbed2d78063 pull_request_template.md + +C:\Users\Umion\Desktop\devopshw>git cat-file -p a450cd1a37f8c2ba34aa6f5ced291dbed2d78063 +## Context +Here is some context + +## Description +Here is some Description + +## Changes in the codebase +Here is what changed + +## Changes outside the codebase +The same + +## Aditional information +Additional information + +2. + +Когда мы исполняем git cat-file -p -1, мы получаем метаданные последнего коммита. +И он сохраняет и представляет собой состояние моей локальной директории и другой информации на момент этого коммита. +Сущность blob с уникальным id отождествляется с конкретным файлом, tree - с папкой, которая содержит и дргуие tree и блобы. + +3. Наверное, в прошлом пункте я как раз и описал, как Git сохраняет информацию. + +4. Примеры данных blob: 100644 a4210048363c68b1a9fca2aaec800056ff96018e test.txt + +10644 - права доступа файла +a4210048363c68b1a9fca2aaec800056ff96018e - хеш, по которому я могу получить данные самого файла test.txt на момент комита +test.txt - название файла + +Пример данных tree: + +040000 tree 54071349dfafff914c8757496a29844fdb72ce1e .github +100644 blob a4210048363c68b1a9fca2aaec800056ff96018e test.txt +100644 blob 431e4252da3f523bcb023a001b05ff91be8c29c8 text.txt + +Собственно, просто рекурсивное отображение папки + +Пример данных commit: + +tree e7207f28b699ba8692587090a6f7efa77ccde434 +parent 7db866f495c5a40935350f7116ed058c85891b48 +author Umion 1770891055 +0300 +committer Umion 1770891055 +0300 +gpgsig -----BEGIN SSH SIGNATURE----- + U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgbxGtpLfbU2kcIQ5RCjSciPGvep + JKyjR+LD7275Z0vOMAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 + AAAAQAQ2oYZFpp83yNs+QbXz2tb5283dpkjTNqUAPkJjSx4mbDWYWXk5dLCkHngq4vYmJm + VSraIkP7JeV5NwH5ZHIgI= + -----END SSH SIGNATURE----- + +Add test file + +tree - это та корневая папка +parent - предыдущий комит и его хэш +Потом подпись и сообщение комита + +2. + +Вот порядок команд, которые я выполнял, и пояснения к ним: + +git reset --soft HEAD~1 - так указано в задании (дерево не изменилось, просто HEAD подвинул) +git reset --hard HEAD~1 - так указано в задании (подвинулся HEAD и все, что было после удалилось) +git reflog - так указано в задании +git log --oneline -2 - посмотрел последние два оставшиеся комита, чтобы узнать их хэши +git show a950f20 - посмотрел полный хэш комита +git reset --hard , куда вставил в <> полный хэш, полученный с предыдущего запроса +Таким образом, я сначала просто удалил из истории один комит, потом вернулся к позапрошлому и удалил его из истории. +Затем посмотрел историю движения HEAD, последний комит и его хэш, а затем вернулся по хэшу к этому комиту. + +Сниппет reflog'a: + +git reflog +a950f20 (HEAD -> git-reset-practice) HEAD@{0}: reset: moving to HEAD~1 +40df3f5 HEAD@{1}: reset: moving to 40df3f57cc9a474ccb995a14352c7153723d93f2 +40df3f5 HEAD@{2}: reset: moving to HEAD~1 +e913cef HEAD@{3}: reset: moving to HEAD~1 +4eaaa14 HEAD@{4}: commit: First commit +e913cef HEAD@{5}: commit: Third commit +40df3f5 HEAD@{6}: commit: Second commit +a950f20 (HEAD -> git-reset-practice) HEAD@{7}: commit: First commit +5bf0b26 HEAD@{8}: reset: moving to HEAD~1 +182dfa1 HEAD@{9}: commit: First commit +5bf0b26 HEAD@{10}: reset: moving to HEAD~2 +21f3a47 HEAD@{11}: commit: First commit +6f224d9 HEAD@{12}: reset: moving to HEAD~1 +1ebc9a3 HEAD@{13}: reset: moving to HEAD~1 +40c9061 HEAD@{14}: commit: Third commit +1ebc9a3 HEAD@{15}: commit: Second commit +6f224d9 HEAD@{16}: commit: First commit +5bf0b26 HEAD@{17}: commit: Third commit +dc4158b HEAD@{18}: commit: Third commit +5e3ef7c HEAD@{19}: commit: Second commit +d141ba7 HEAD@{20}: reset: moving to HEAD~1 +80447d0 HEAD@{21}: reset: moving to HEAD~1 +65f582b HEAD@{22}: commit: Third commit +80447d0 HEAD@{23}: commit: Second commit +d141ba7 HEAD@{24}: checkout: moving from main to git-reset-practice +0fa52a3 (main) HEAD@{25}: checkout: moving from git-reset-practice to main +d141ba7 HEAD@{26}: commit: First commit +0fa52a3 (main) HEAD@{27}: checkout: moving from main to git-reset-practice +0fa52a3 (main) HEAD@{28}: checkout: moving from labs to main + +Snippet git log'a: + +commit a950f20bf14adb7422255878db692f0d9d3416ad (HEAD -> git-reset-practice) +Author: Umion +Date: Thu Feb 12 14:09:40 2026 +0300 + + First commit + +commit 5bf0b26663b5fd5650d5c95ea9ec1254ecde0dee +Author: Umion +Date: Thu Feb 12 14:02:33 2026 +0300 + + Third commit + +commit dc4158b4faa8d5892421bee039b12fbc51489aba +Author: Umion +Date: Thu Feb 12 14:02:01 2026 +0300 + + Third commit + +commit 5e3ef7ca60ac6745974656e4561b94ff76b6a489 +Author: Umion +Date: Thu Feb 12 14:01:55 2026 +0300 + + Second commit + +commit d141ba766ccc914829daf0af66a022f7be0f271d +Author: Umion +Date: Thu Feb 12 13:54:59 2026 +0300 + + First commit +. + +3. + +* 1d9bc54 (side-branch) Side branch commit +* d90db47 (HEAD -> labs, origin/labs) submission extended +* dff99a6 Merge branch 'labs' of https://github.com/Liminium/DevOpsHW into labs +|\ +| * 8744e4b Update sumbussion1.md +* | 3193784 Made submission2.md +|/ +* 74020c5 add sumbission +* 1e42cf4 (origin/feature/lab1, feature/lab1) Delete trash files +* 89e9c97 test signed commit +* d3fe943 ASD +* 9a7d1b5 ad +* 7c5f607 Verification proof +* a89d0cd Test2 +* 34ad430 Revert "adding .github" +| * a950f20 (git-reset-practice) First commit +| * 5bf0b26 Third commit +| * dc4158b Third commit +| * 5e3ef7c Second commit +| * d141ba7 First commit +| * 0fa52a3 (main) Add test file +|/ +* 7db866f (origin/main) adding .github +* 3c044e6 message + +Когда линии расходятся, это значит, что мой локальный репозиторий ветки labs и удаленный начинают отличаться. +Левая часть графа - это по всей видимости глобальная, правая - локальная. Чем ниже - тем старше действие. + + +4. Теги просто позволяют дать более осмысленное название последнему комиту, если он важен (релизы важные или сутпени развития приложения) + +Теги: tag v1.0.0, v1.1.0, v1.2.0, v1.1.1. + +Например, у меня комиту d90db473138fa59765f07d3df63aec97f6b70250 соответствует тег v1.0.0 + +5. +Использование первой команды: + +C:\Users\Umion\Desktop\devopshw>git checkout -b cmd-compare2 +Switched to a new branch 'cmd-compare2' + +C:\Users\Umion\Desktop\devopshw>echo "scratch" >> demo.txt + +C:\Users\Umion\Desktop\devopshw>git add demo.txt + +C:\Users\Umion\Desktop\devopshw>git commit -m "ASD" +[cmd-compare2 3d08845] ASD + 1 file changed, 1 insertion(+) + create mode 100644 demo.txt + +C:\Users\Umion\Desktop\devopshw>echo "adasads" >> demo.txt + +C:\Users\Umion\Desktop\devopshw>demo.txt - "scratch\nadasads" + +C:\Users\Umion\Desktop\devopshw>git restore demo.txt + +C:\Users\Umion\Desktop\devopshw>demo.txt "scratch" + +Использование второй команды: + +C:\Users\Umion\Desktop\devopshw>echo "asd" >> demo.txt + +C:\Users\Umion\Desktop\devopshw>git add demo.txt + +C:\Users\Umion\Desktop\devopshw>git restore --staged demo.txt + +Использование третьей команды: + +C:\Users\Umion\Desktop\devopshw>echo "asd" >> demo.txt - щас в demo есть строчка asd + +C:\Users\Umion\Desktop\devopshw>demo.txt + +C:\Users\Umion\Desktop\devopshw>git log +commit 3d08845ef86614383f07313f48f3d891f5f16b71 (HEAD -> cmd-compare2) +Author: Umion +Date: Thu Feb 12 22:21:09 2026 +0300 + + ASD + +commit 99161a5529be5aa8541d89033ddcffe550e61718 (origin/labs, cmd-compare) +Author: Umion +Date: Thu Feb 12 22:06:16 2026 +0300 + + 4-th task + +commit 0defaaafeec5be60fc548a4b7ee9de33ee4a81fd (tag: v1.2.0, tag: v1.1.1, tag: v1.1.0) +Merge: bae6cad a9d575e +Author: Umion +Date: Thu Feb 12 22:01:32 2026 +0300 + + Merge branch 'labs' of https://github.com/Liminium/DevOpsHW into labs + +commit bae6cadca1eb2a456c356407b281e0c56ff5d511 +Author: Umion +Date: Thu Feb 12 22:01:00 2026 +0300 + + again modified + +commit a9d575e60c1e89adcf33525c5a0dadbf6c731ad9 +Author: Liminium <96349641+Liminium@users.noreply.github.com> +Date: Thu Feb 12 21:42:37 2026 +0300 + +C:\Users\Umion\Desktop\devopshw>git restore --source 3d08845ef86614383f07313f48f3d891f5f16b71 demo.txt + +C:\Users\Umion\Desktop\devopshw>demo.txt - щас тут только scratch + +Вызов команды show: + +C:\Users\Umion\Desktop\devopshw>git show +commit 3d08845ef86614383f07313f48f3d891f5f16b71 (HEAD -> cmd-compare2) +Author: Umion +Date: Thu Feb 12 22:21:09 2026 +0300 + + ASD + +diff --git a/demo.txt b/demo.txt +new file mode 100644 +index 0000000..e58c051 +--- /dev/null ++++ b/demo.txt +@@ -0,0 +1 @@ ++"scratch" + +1. git restore demo.txt - отменить незакомиченное действие +2. git restore --staged demo.txt - убрать из зоны для комита +3. git restore --source HASH/HEAD~N demo.txt - изменить состояние файла на то, какое было при указанном комите. + +6. Звездочки показывают, что ты следишь за треднами и являешься активным пользователем github. +Following позволяет тебе следить за топовыми проектами, изучать, над чем работают твои друзья и топовые программисты и т.д. \ No newline at end of file diff --git a/submission4.md b/submission4.md new file mode 100644 index 00000000..2da940d9 --- /dev/null +++ b/submission4.md @@ -0,0 +1,280 @@ +I. + +1. systemd-analyze: + +Startup finished in 4.318s (kernel) + 11.311s (userspace) = 15.630s +graphical.target reached after 11.239s in userspace. + +Здесь указано, сколько по времени загружались основные компоненты для запуска ПК. +Ядро загрузилось быстро, а вот пользовательское пространство подтормаживает — 11 секунд. + +2. systemd-analyze blame + +6.432s snapd.seeded.service +6.237s snapd.service +5.584s logrotate.service +4.614s vboxadd.service +3.888s NetworkManager.service +2.901s systemd-udev-settle.service +2.884s blueman-mechanism.service +2.880s apport.service +2.735s dev-sda1.device +2.647s accounts-daemon.service +2.476s gpu-manager.service +2.123s polkit.service +2.061s rsyslog.service +2.043s dev-loop9.device +2.032s avahi-daemon.service +2.012s dev-loop8.device +2.004s dev-loop10.device +1.846s fwupd-refresh.service +1.841s udisks2.service +1.768s fwupd.service +1.696s grub-common.service +1.328s lm-sensors.service +1.261s switcheroo-control.service +1.031s dpkg-db-backup.service +1.005s apt-daily-upgrade.service + +Здесь показаны все программы, которые потребовались для запуска, и время, которые было использовано для их запуска + +3. uptime + +18:11:06 up 5:22, 1 user, load average: 0.19, 0.53, 0.67 + +Как долго система работает без выключения или перезагрузки, а также текущую информацию о нагрузке на сервер. +4. w + +18:11:53 up 5:23, 1 user, load average: 0.09, 0.45, 0.64 +USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT +user tty2 - 12:48 5:23m 1:22m 0.02s /usr/lib/x86_64-linux-gnu/sddm/sddm-helper --soc + +Показывает всех пользователей и то, что они делаю на данный момент + +5. ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 6 + +PID PPID CMD %MEM %CPU +2178 1300 /snap/firefox/7869/usr/lib/ 27.3 0.8 +5049 2591 /snap/firefox/7869/usr/lib/ 9.0 0.9 +1239 1202 /usr/lib/xorg/Xorg -noliste 7.1 25.4 +2773 2591 /snap/firefox/7869/usr/lib/ 7.1 0.0 +1479 1300 /usr/bin/pcmanfm-qt --deskt 6.2 0.0 + +Показывает информацию о тех программах, которые запущены на данный момент и ресурсы, которые они занимают + +6. ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 6 + + +PID PPID CMD %MEM %CPU + 1239 1202 /usr/lib/xorg/Xorg -noliste 7.1 25.3 + 5049 2591 /snap/firefox/7869/usr/lib/ 8.0 0.9 + 2178 1300 /snap/firefox/7869/usr/lib/ 26.7 0.8 + 1494 1300 /usr/bin/picom 0.3 0.5 + 1419 1414 /usr/bin/VBoxClient --draga 0.1 0.2 + +То же самое, но сортировка другая + +Команда head - берет вывод прошлой команды и выводит просто -n первых строк + +7. systemcls list-depencdencies + +default.target +● ├─accounts-daemon.service +● ├─sddm.service +● ├─switcheroo-control.service +○ ├─systemd-update-utmp-runlevel.service +● ├─udisks2.service +● └─multi-user.target +○ ├─anacron.service +● ├─apport.service +● ├─avahi-daemon.service +○ ├─blueman-mechanism.service +● ├─console-setup.service +● ├─cron.service +● ├─cups-browsed.service +● ├─cups.path +● ├─cups.service +● ├─dbus.service +○ ├─dmesg.service +○ ├─e2scrub_reap.service +○ ├─grub-common.service +○ ├─grub-initrd-fallback.service +● ├─kerneloops.service +● ├─lm-sensors.service +● ├─ModemManager.service +○ ├─networkd-dispatcher.service +lines 1-25 + +Зависимости между процессами для запуска системы + +8. systemctl list-dependencies multi-user.target + +multi-user.target +○ ├─anacron.service +● ├─apport.service +● ├─avahi-daemon.service +○ ├─blueman-mechanism.service +● ├─console-setup.service +● ├─cron.service +● ├─cups-browsed.service +● ├─cups.path +● ├─cups.service +● ├─dbus.service +○ ├─dmesg.service +○ ├─e2scrub_reap.service +○ ├─grub-common.service +○ ├─grub-initrd-fallback.service +● ├─kerneloops.service +● ├─lm-sensors.service +● ├─ModemManager.service +○ ├─networkd-dispatcher.service +● ├─NetworkManager.service +● ├─openvpn.service +○ ├─plymouth-quit-wait.service +● ├─plymouth-quit.service +● ├─rsyslog.service +○ ├─secureboot-db.service + +А тут мы указываем конкретную цель, для которой просим вывести все зависимости. + +9.who -a + + system boot 2026-02-26 12:48 + run-level 5 2026-02-26 12:48 +user + tty2 2026-02-26 12:48 05:28 1300 (:0) + +Показывает всю информацию о состоянии системы и пользователях. +(Время последней загрузки системы, текущий уровень запуска, имя пользователя ит.д.) + +10. last | head -n 5 + +user tty2 :0 Thu Feb 26 12:48 still logged in +reboot system boot 6.14.0-27-generi Thu Feb 26 12:48 still running +user tty2 :0 Wed Feb 25 17:44 - crash (19:04) +reboot system boot 6.14.0-27-generi Wed Feb 25 17:43 still running +user tty2 :0 Wed Feb 18 19:05 - crash (6+22:38) + +Последние действия различных юзеров, совмещенное с командой head. +Видно, что до этого система падала (crash) — вчера и 18 февраля. + +11. cat /proc/meminfo | grep -e MemTotal -e SwapTotal -e MemAvailable +MemTotal: 2015960 kB +MemAvailable: 700652 kB +SwapTotal: 0 kB + +cat - читает файл /proc/meminfo. +grep - выводит те строки, в которых есть слова, указанные после -e. +Сама команда - сколько памяти есть и сколько доступно, а также свап с жестким диском + +What is the top memory-consuming process? +Ответ: /snap/firefox/7869/usr/lib/ + + +ПК загружается почти 16 секунд. Ядро - быстро, а остальное долго (14 сек). +Нагрузка на процессор маленькая (0.09 за минуту), файла swap-подкачки нет, что не очень хорошо. Но я ведь на виртуальной машине сижу) + +II. +12. dig github.com + +; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> github.com +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25267 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 65494 +;; QUESTION SECTION: +;github.com. IN A + +;; ANSWER SECTION: +github.com. 29 IN A 140.82.121.4 + +;; Query time: 25 msec +;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) +;; WHEN: Sat Feb 28 14:04:43 MSK 2026 +;; MSG SIZE rcvd: 55 + +dig просто показал, что github.com лежит на адресе 140.82.121.4, запрос был осуществлен за 25 миллисекунд через локальный DNS. + +13. sudo timeout 10 tcpdump -c 5 -i any 'port 53' -nn +tcpdump: data link type LINUX_SLL2 +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes + +0 packets captured +0 packets received by filter +0 packets dropped by kernel + +за 10 секунд tcpdump ничего не обнаружил. + +14. dig -x 8.8.4.4 + +; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> -x 8.8.4.4 +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47320 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 65494 +;; QUESTION SECTION: +;4.4.8.8.in-addr.arpa. IN PTR + +;; ANSWER SECTION: +4.4.8.8.in-addr.arpa. 3863 IN PTR dns.google. + +;; Query time: 31 msec +;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) +;; WHEN: Fri Feb 27 21:28:23 MSK 2026 +;; MSG SIZE rcvd: 73 + +Запрос длился 31 msec без ошибок и вернул dns.google. +15. dig -x 1.1.2.2 + +; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> -x 1.1.2.2 +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 59354 +;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 65494 +;; QUESTION SECTION: +;2.2.1.1.in-addr.arpa. IN PTR + +;; AUTHORITY SECTION: +1.in-addr.arpa. 43 IN SOA ns.apnic.net. read-txt-record-of-zone-first-dns-admin.apnic.net. 23597 7200 1800 604800 3600 + +;; Query time: 127 msec +;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) +;; WHEN: Fri Feb 27 21:29:19 MSK 2026 +;; MSG SIZE rcvd: 137 + +Здесь уже статус не NOERROR, уперся в NXDOMAIN где на APNIC. И запрос был дольше - целых 137 секунд. + +Сравнение: в первом все хорошо, без ошибок, во втором он столкнулся с NXDOMAIN. В первом получили dns.google, во втором - ns.apnic.net, +В первом потребовалось всего лишь 31 msc, а во втором 127. + +Теперь я спецаильно через второе окно побросал запросы, чтобы увидеть примеры DNS query: + +sudo tcpdump -c 10 -i any 'port 53' -nn +tcpdump: data link type LINUX_SLL2 +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes +11:42:13.436794 eth0 Out IP 192.168.32.XXX.37111 > 192.168.32.1.53: 4955+ A? dl-cdn.alpinelinux.org. (40) +11:42:13.436860 eth0 Out IP 192.168.32.XXX.37111 > 192.168.32.1.53: 5155+ AAAA? dl-cdn.alpinelinux.org. (40) +11:42:13.462395 eth0 In IP 192.168.32.1.53 > 192.168.32.XXX.37111: 4955- 2/0/0 CNAME dualstack.j.sni.global.fastly.net., A 146.75.118.XXX (158) +11:42:13.525752 eth0 In IP 192.168.32.1.53 > 192.168.32.XXX.37111: 5155- 3/0/0 CNAME dualstack.j.sni.global.fastly.net., AAAA 2a04:4e42:8d::644, A 146.75.118.XXX (186) +11:43:21.565741 eth0 Out IP 192.168.32.XXX.51389 > 192.168.32.1.53: 32044+ A? dl-cdn.alpinelinux.org. (40) +11:43:21.565777 eth0 Out IP 192.168.32.XXX.51389 > 192.168.32.1.53: 32500+ AAAA? dl-cdn.alpinelinux.org. (40) +11:43:21.666877 eth0 In IP 192.168.32.1.53 > 192.168.32.XXX.51389: 32044- 2/0/0 CNAME dualstack.j.sni.global.fastly.net., A 146.75.122.XXX (158) +11:43:21.812841 eth0 In IP 192.168.32.1.53 > 192.168.32.XXX.51389: 32500- 3/0/0 CNAME dualstack.j.sni.global.fastly.net., AAAA 2a04:4e42:8e::644, A 146.75.122.XXX (186) +8 packets captured +8 packets received by filter +0 packets dropped by kernel + +Видно, как система сначала просит А-запись (IPv4), потом AAAA (IPv6), а в ответ получает CNAME (псевдоним) и реальный IP. +Всего было получено 8 пакетов. + + diff --git a/test.txt b/test.txt new file mode 100644 index 00000000..a4210048 --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +"Test content"