diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..d9d6fa17 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,15 @@ +## Цель + + +## Изменения + + +## Тестирование + + +## Контрольный список +- [ ] Заголовок четкий и информативный. +- [ ] Документация (README) обновлена (при необходимости). +- [ ] В коде нет секретов (паролей, ключей) и лишних файлов. +- [ ] Task 1 done +- [ ] Task 2 done \ No newline at end of file diff --git a/.github/workflows/lab3-demo.yml b/.github/workflows/lab3-demo.yml new file mode 100644 index 00000000..dfc62bd8 --- /dev/null +++ b/.github/workflows/lab3-demo.yml @@ -0,0 +1,36 @@ +name: Lab3 GitHub Actions Demo + +on: + push: + workflow_dispatch: + +jobs: + explore-github-actions: + runs-on: ubuntu-latest + + steps: + - run: echo "The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "This job is now running on a ${{ runner.os }} server hosted by GitHub!" + - run: echo "The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v4 + - run: echo "The ${{ github.repository }} repository has been cloned to the runner." + - name: List files in the repository + run: ls ${{ github.workspace }} + + - name: Show system information + run: | + echo "=== uname -a ===" + uname -a + echo "=== lscpu ===" + lscpu + echo "=== free -h ===" + free -h + + - name: Print job status + run: echo "This job's status is ${{ job.status }}." + + + + + diff --git a/labs/image-1.png b/labs/image-1.png new file mode 100644 index 00000000..3160dd19 Binary files /dev/null and b/labs/image-1.png differ diff --git a/labs/image-10.png b/labs/image-10.png new file mode 100644 index 00000000..644c327f Binary files /dev/null and b/labs/image-10.png differ diff --git a/labs/image-2.png b/labs/image-2.png new file mode 100644 index 00000000..a54eeb40 Binary files /dev/null and b/labs/image-2.png differ diff --git a/labs/image-3.png b/labs/image-3.png new file mode 100644 index 00000000..a98a864c Binary files /dev/null and b/labs/image-3.png differ diff --git a/labs/image-4.png b/labs/image-4.png new file mode 100644 index 00000000..c3318d99 Binary files /dev/null and b/labs/image-4.png differ diff --git a/labs/image-5.png b/labs/image-5.png new file mode 100644 index 00000000..058cfa13 Binary files /dev/null and b/labs/image-5.png differ diff --git a/labs/image-6.png b/labs/image-6.png new file mode 100644 index 00000000..5e3cbb09 Binary files /dev/null and b/labs/image-6.png differ diff --git a/labs/image-7.png b/labs/image-7.png new file mode 100644 index 00000000..490138a7 Binary files /dev/null and b/labs/image-7.png differ diff --git a/labs/image-8.png b/labs/image-8.png new file mode 100644 index 00000000..e11db01c Binary files /dev/null and b/labs/image-8.png differ diff --git a/labs/image-9.png b/labs/image-9.png new file mode 100644 index 00000000..516f1fc2 Binary files /dev/null and b/labs/image-9.png differ diff --git a/labs/image.png b/labs/image.png new file mode 100644 index 00000000..aa1129aa Binary files /dev/null and b/labs/image.png differ diff --git a/labs/submission1.md b/labs/submission1.md new file mode 100644 index 00000000..b1925ae9 --- /dev/null +++ b/labs/submission1.md @@ -0,0 +1,58 @@ +# Задание 1 Проверка подписи подтверждения SSH-соединения + +## 1. Преимущества подписания коммитов +Подписание коммитов обеспечивает **аутентификацию** и **целостность** данных. +* **Подтверждение авторства:** Гарантирует, что код написал именно владелец приватного ключа, а не злоумышленник, подставивший чужой `user.name` в настройки Git. +* **Защита от подмены:** Любое изменение кода после подписания сделает подпись недействительной. + +## 2. Почему подписание коммитов важно в DevOps? +В процессах DevOps и CI/CD автоматизация играет ключевую роль. Если pipeline автоматически берет код и отправляет его в продакшн, критически важно быть уверенным в источнике этого кода. +Подпись коммитов защищает от атак, когда хакеры внедряют вредоносный код в надежный репозиторий. Системы безопасности могут быть настроены так, чтобы отвергать любые изменения без валидной подписи. + +## 3. Подтверждение +### Скриншот Verified статуса на GitHub +*![alt text](image.png)* + + +# Task 1 (English version) + +## 1. Benefits of Signing Commits +Signing commits ensures both **authentication** and **data integrity**. +* **Proof of Authorship:** It guarantees that the code was written by the owner of the private key, preventing malicious actors from spoofing the `user.name` or email. +* **Tamper Protection:** It ensures that the commit data has not been altered by third parties after it was signed; any modification would invalidate the signature. + +## 2. Why is Commit Signing Important in DevOps Workflows? +In DevOps and CI/CD pipelines, automation is key. Since automated systems deploy code to production without manual checks, verifying the source of the code is critical. +Commit signing protects against **Supply Chain Attacks**, where attackers might try to inject malicious code into a trusted repository. Security policies in CI/CD can be configured to automatically reject any changes that lack a valid signature, ensuring only verified code reaches production. + +## 3. Just look at the screenshot in russian version + +# Задание 2 Шаблон Pull Request + +## Скриншот шаблона +*![alt text](image-1.png)* + +Шаблон работает / template is workong +![alt text](image-3.png) + +## Доказательство наличия файла +![alt text](image-2.png). + +## Анализ пользы шаблонов +Использование шаблонов для PR значительно улучшает сотрудничество, так как: +1. **Стандартизация:** Все разработчики оформляют описание одинаково. +2. **Напоминание:** Чек-лист не дает забыть про важные вещи (тесты, документация). +3. **Экономия времени:** Не нужно каждый раз придумывать структуру описания с нуля. + +# Task 2 English version + +## for paragraph 1 and task 2 loot at screenshots + +## 3. Analysis: How PR Templates Improve Collaboration +Using Pull Request templates significantly enhances team collaboration by: +1. **Standardization:** It ensures all developers follow a consistent format for descriptions, making it easier for reviewers to understand the context. +2. **Compliance & Quality:** The checklist serves as a mandatory reminder for critical steps (e.g., running tests, updating documentation), reducing the chance of human error. +3. **Efficiency:** It saves time by providing a ready-to-use structure, eliminating the need to write descriptions from scratch for every change. + + + diff --git a/labs/submission2.md b/labs/submission2.md new file mode 100644 index 00000000..cd6bf411 --- /dev/null +++ b/labs/submission2.md @@ -0,0 +1,808 @@ +## Задание 1 + +### Результаты выполненных команд + +``` bash + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (feature/lab2) +$ git log --oneline -1 +ea6d103 (HEAD -> feature/lab2) Add test file + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (feature/lab2) +$ git cat-file -p HEAD +tree 0b1af5dfbac819f4b038dfcab1dd239a2724795e +parent 0501766af31d6dead9956a6587e54bdc84aa5da0 +author z0sh22 1770748679 +0300 +committer z0sh22 1770748679 +0300 +gpgsig -----BEGIN SSH SIGNATURE----- +... + -----END SSH SIGNATURE----- + +Add test file + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (feature/lab2) +$ git cat-file -p 0b1af5dfbac819f4b038dfcab1dd239a2724795e +040000 tree 24a1f87f8f57cf1a2d4892e5bfe04dc80d9dad12 .github +100644 blob 6e60bebec0724892a7c82c52183d0a7b467cb6bb README.md +040000 tree a1061247fd38ef2a568735939f86af7b1000f83c app +040000 tree ae64d50b15dbf90ef3b7140501bc30344762b7d0 labs +040000 tree d3fb3722b7a867a83efde73c57c49b5ab3e62c63 lectures +100644 blob 2eec599a1130d2ff231309bb776d1989b97c6ab2 test.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (feature/lab2) +$ git cat-file -p 2eec599a1130d2ff231309bb776d1989b97c6ab2 +Test content + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (feature/lab2) +$ git cat-file -p 0b1af5dfbac819f4b038dfcab1dd239a2724795e +040000 tree 24a1f87f8f57cf1a2d4892e5bfe04dc80d9dad12 .github +100644 blob 6e60bebec0724892a7c82c52183d0a7b467cb6bb README.md +040000 tree a1061247fd38ef2a568735939f86af7b1000f83c app +040000 tree ae64d50b15dbf90ef3b7140501bc30344762b7d0 labs +040000 tree d3fb3722b7a867a83efde73c57c49b5ab3e62c63 lectures +100644 blob 2eec599a1130d2ff231309bb776d1989b97c6ab2 test.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (feature/lab2) +$ git cat-file -p a1061247fd38ef2a568735939f86af7b1000f83c +100644 blob ece7bac66166c385e145b0a004d40973d7cc060c index.html + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (feature/lab2) +$ git cat-file -p ae64d50b15dbf90ef3b7140501bc30344762b7d0 +100644 blob 3160dd19bd05ce1496be0d8ead7011e0ab58bc63 image-1.png +100644 blob a54eeb406976a91fecbfd6ba32b1b80501f923d1 image-2.png +100644 blob a98a864c7ed7f4896c59316918eb82c581bfc2fc image-3.png +100644 blob aa1129aa93b6fbd82ccd1607d2bcbb7cf0e2077d image.png +100644 blob aa6b7b5c478b439d2c1e9b4f085257782dd68d25 lab1.md +100644 blob cf1ba99be683932b0a1e1cfd84f0d6f0dc0d184f lab10.md +100644 blob ca6bbf33cb79a950fbf3c517e6b174ac65f5334b lab11.md +040000 tree 16bf9eb348f7da4acbec0a94fc4a09e46c40064f lab11 +100644 blob fcd2509fd7a30ea3b5cc9e879f97fbb32d3e660d lab12.md +040000 tree 129069dd8e40511c9ab6c889b375532b1d68fde3 lab12 +100644 blob 3128f48b832e6592d02ae82a18f9b89af82c9658 lab2.md +100644 blob 6e453f5c97f02a4bca77db29549154072771ad4a lab3.md +100644 blob 3aa4439565d04ff637e909ffc164d59a60749239 lab4.md +100644 blob 0435c3fcbd5d21b21cf253af0544a6536247cdb9 lab5.md +100644 blob af90a7fa02f582cd3d31f4d9f71360878f031e92 lab6.md +100644 blob ee11bdfb0d71048268ec439ad0c4ee2f7bf6fd1b lab7.md +100644 blob 9df09119213b81f88f6b61c89f3bcf223a32ecf6 lab8.md +100644 blob 12e1b875e40d5ef91f11c36fb259f23069fc458f lab9.md +100644 blob b1925ae955752c04fcceba2af3a584a7a155e674 submission1.md + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (feature/lab2) +$ git cat-file -p ea6d103 +tree 0b1af5dfbac819f4b038dfcab1dd239a2724795e +parent 0501766af31d6dead9956a6587e54bdc84aa5da0 +author z0sh22 1770748679 +0300 +committer z0sh22 1770748679 +0300 +gpgsig -----BEGIN SSH SIGNATURE----- + ...- + +Add test file +``` + +### Объяснение типов объектов +- **Blob (Binary Large Object)**: Хранит только содержимое файла (байт-код), не сохраняя имени файла, прав доступа или времени создания. +- **Tree (Дерево)**: Аналог директории в файловой системе. Хранит список файлов и вложенных папок, связывая их имена с соответствующими blob-объектами и правами доступа (например, `100644`). +- **Commit (Коммит)**: Снимок состояния проекта в конкретный момент времени. Содержит ссылку на корневой объект `tree`, метаданные (автор, email, дата, сообщение) и ссылку на родительский коммит (если он есть). + +### Анализ хранения данных +Git — это **content-addressable filesystem** (файловая система, адресуемая по содержимому). В папке `.git/objects` данные хранятся в виде пар «ключ-значение», где ключом является SHA-1 хеш содержимого, а значением — сжатые данные. +Главная особенность: имя файла не влияет на хеш блоба, влияет только контент. Два файла с разным названием, но одинаковым содержимым будут указывать на один и тот же blob, что экономит место (дедупликация). Изменение любого бита информации меняет хеш, что гарантирует криптографическую целостность истории. + +### Пример содержимого объектов + +**1. Blob (содержимое файла)** +```text ``` +Test content + + +## Занаие 2 + +### Результаты выполнения команд + +```bash + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ echo "content 1" > 1.txt +git add 1.txt +git commit -m "feat: add first file" + +echo "content 2" > 2.txt +git add 2.txt +git commit -m "feat: add second file" + +echo "content 3" > 3.txt +git add 3.txt +git commit -m "feat: add third file" +warning: in the working copy of '1.txt', LF will be replaced by CRLF the next time Git touches it +[git-reset-practice 18d92ce] feat: add first file + 1 file changed, 1 insertion(+) + create mode 100644 1.txt +warning: in the working copy of '2.txt', LF will be replaced by CRLF the next time Git touches it +[git-reset-practice faf24af] feat: add second file + 1 file changed, 1 insertion(+) + create mode 100644 2.txt +warning: in the working copy of '3.txt', LF will be replaced by CRLF the next time Git touches it +[git-reset-practice 764b8a3] feat: add third file + 1 file changed, 1 insertion(+) + create mode 100644 3.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git log --oneline +764b8a3 (HEAD -> git-reset-practice) feat: add third file +faf24af feat: add second file +18d92ce feat: add first file +78168e8 Third commit +854ec7e Second commit +d101b5b First commit +ea6d103 (feature/lab2) Add test file +0501766 (origin/feature/lab1, feature/lab1) docs: for my first lab +0501766 (origin/feature/lab1, feature/lab1) docs: for my first lab +3ab1c3c docs: done +b42e848 docs: with photo +e760ad5 docs: done task 2 +60fac05 docs: done task 2 +870ef94 Merge branch 'main' into feature/lab1 +266051b docs: add PR template structure +e9a00f0 docs: add lab1 submission +d6b6a03 Update lab2 +87810a0 feat: remove old Exam Exemption Policy +1e1c32b feat: update structure +6c27ee7 feat: publish lecs 9 & 10 +1826c36 feat: update lab7 +3049f08 feat: publish lec8 +da8f635 feat: introduce all labs and revised structure +04b174e feat: publish lab and lec #5 +67f12f1 feat: publish labs 4&5, revise others +82d1989 feat: publish lab3 and lec3 +3f80c83 feat: publish lec2 +499f2ba feat: publish lab2 +af0da89 feat: update lab1 +74a8c27 Publish lab1 +f0485c0 Publish lec1 +31dd11b Publish README.md + ESCOC + + + + +/lab1 + + + +Policy + + + + +ised structure + +thers + + + + + + + + ESCOD +3ab1c3c docs: done +b42e848 docs: with photo +e760ad5 docs: done task 2 +60fac05 docs: done task 2 +870ef94 Merge branch 'main' into feature/lab1 +266051b docs: add PR template structure +e9a00f0 docs: add lab1 submission +d6b6a03 Update lab2 +87810a0 feat: remove old Exam Exemption Policy +1e1c32b feat: update structure +6c27ee7 feat: publish lecs 9 & 10 +1826c36 feat: update lab7 +3049f08 feat: publish lec8 +da8f635 feat: introduce all labs and revised structure +04b174e feat: publish lab and lec #5 +67f12f1 feat: publish labs 4&5, revise others +82d1989 feat: publish lab3 and lec3 +3f80c83 feat: publish lec2 +499f2ba feat: publish lab2 +af0da89 feat: update lab1 +74a8c27 Publish lab1 +f0485c0 Publish lec1 +31dd11b Publish README.md + ESCOC + + + + +/lab1 + + + +Policy + + + + +ised structure + +thers + + + + + + + + ESCOD +3ab1c3c docs: done +b42e848 docs: with photo +e760ad5 docs: done task 2 +60fac05 docs: done task 2 +870ef94 Merge branch 'main' into feature/lab1 +266051b docs: add PR template structure +e9a00f0 docs: add lab1 submission +d6b6a03 Update lab2 +87810a0 feat: remove old Exam Exemption Policy +1e1c32b feat: update structure +6c27ee7 feat: publish lecs 9 & 10 +1826c36 feat: update lab7 +3049f08 feat: publish lec8 +da8f635 feat: introduce all labs and revised structure +04b174e feat: publish lab and lec #5 +67f12f1 feat: publish labs 4&5, revise others +82d1989 feat: publish lab3 and lec3 +3f80c83 feat: publish lec2 +499f2ba feat: publish lab2 +af0da89 feat: update lab1 +74a8c27 Publish lab1 +f0485c0 Publish lec1 +31dd11b Publish README.md + ESCOD +3ab1c3c docs: done +b42e848 docs: with photo +e760ad5 docs: done task 2 +60fac05 docs: done task 2 +870ef94 Merge branch 'main' into feature/lab1 +266051b docs: add PR template structure +e9a00f0 docs: add lab1 submission +d6b6a03 Update lab2 +87810a0 feat: remove old Exam Exemption Policy +1e1c32b feat: update structure +6c27ee7 feat: publish lecs 9 & 10 +1826c36 feat: update lab7 +3049f08 feat: publish lec8 +da8f635 feat: introduce all labs and revised structure +04b174e feat: publish lab and lec #5 +67f12f1 feat: publish labs 4&5, revise others +82d1989 feat: publish lab3 and lec3 +3f80c83 feat: publish lec2 +499f2ba feat: publish lab2 +af0da89 feat: update lab1 +74a8c27 Publish lab1 +f0485c0 Publish lec1 +31dd11b Publish README.md + ESCOD +3ab1c3c docs: done +b42e848 docs: with photo +e760ad5 docs: done task 2 +60fac05 docs: done task 2 +870ef94 Merge branch 'main' into feature/lab1 +266051b docs: add PR template structure +e9a00f0 docs: add lab1 submission +d6b6a03 Update lab2 +87810a0 feat: remove old Exam Exemption Policy +1e1c32b feat: update structure +6c27ee7 feat: publish lecs 9 & 10 +1826c36 feat: update lab7 +3049f08 feat: publish lec8 +da8f635 feat: introduce all labs and revised structure +04b174e feat: publish lab and lec #5 +67f12f1 feat: publish labs 4&5, revise others +82d1989 feat: publish lab3 and lec3 +3f80c83 feat: publish lec2 +499f2ba feat: publish lab2 +af0da89 feat: update lab1 +74a8c27 Publish lab1 +f0485c0 Publish lec1 +31dd11b Publish README.md + ESCOD +764b8a3 (HEAD -> git-reset-practice) feat: add third file +faf24af feat: add second file +18d92ce feat: add first file +78168e8 Third commit +854ec7e Second commit +d101b5b First commit +ea6d103 (feature/lab2) Add test file +0501766 (origin/feature/lab1, feature/lab1) docs: for my first lab +3ab1c3c docs: done +b42e848 docs: with photo +e760ad5 docs: done task 2 +60fac05 docs: done task 2 +870ef94 Merge branch 'main' into feature/lab1 +266051b docs: add PR template structure +e9a00f0 docs: add lab1 submission +d6b6a03 Update lab2 +87810a0 feat: remove old Exam Exemption Policy +1e1c32b feat: update structure +6c27ee7 feat: publish lecs 9 & 10 +1826c36 feat: update lab7 +3049f08 feat: publish lec8 +da8f635 feat: introduce all labs and revised structure +04b174e feat: publish lab and lec #5 +67f12f1 feat: publish labs 4&5, revise others +82d1989 feat: publish lab3 and lec3 +3f80c83 feat: publish lec2 +499f2ba feat: publish lab2 +af0da89 feat: update lab1 +74a8c27 Publish lab1 +f0485c0 Publish lec1 +31dd11b Publish README.md + + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git reset --soft HEAD~1 + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git status +On branch git-reset-practice +Changes to be committed: + (use "git restore --staged ..." to unstage) + new file: 3.txt + +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: .github/pull_request_template.md + +Untracked files: + (use "git add ..." to include in what will be committed) + labs/submission2.md + + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git reset --hard HEAD~1 +HEAD is now at 18d92ce feat: add first file + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ ls +1.txt README.md app/ file.txt labs/ lectures/ test.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git log --oneline +18d92ce (HEAD -> git-reset-practice) feat: add first file +78168e8 Third commit +854ec7e Second commit +d101b5b First commit +ea6d103 (feature/lab2) Add test file +0501766 (origin/feature/lab1, feature/lab1) docs: for my first lab +3ab1c3c docs: done +b42e848 docs: with photo +e760ad5 docs: done task 2 +60fac05 docs: done task 2 +870ef94 Merge branch 'main' into feature/lab1 +266051b docs: add PR template structure +e9a00f0 docs: add lab1 submission +d6b6a03 Update lab2 +87810a0 feat: remove old Exam Exemption Policy +1e1c32b feat: update structure +6c27ee7 feat: publish lecs 9 & 10 +1826c36 feat: update lab7 +3049f08 feat: publish lec8 +da8f635 feat: introduce all labs and revised structure +04b174e feat: publish lab and lec #5 +67f12f1 feat: publish labs 4&5, revise others +82d1989 feat: publish lab3 and lec3 + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git reflog +18d92ce (HEAD -> git-reset-practice) HEAD@{0}: reset: moving to HEAD~1 +faf24af HEAD@{1}: reset: moving to HEAD~1 +764b8a3 HEAD@{2}: commit: feat: add third file +faf24af HEAD@{3}: commit: feat: add second file +18d92ce (HEAD -> git-reset-practice) HEAD@{4}: commit: feat: add first file +78168e8 HEAD@{5}: commit: Third commit +854ec7e HEAD@{6}: commit: Second commit +d101b5b HEAD@{7}: commit: First commit +ea6d103 (feature/lab2) HEAD@{8}: checkout: moving from feature/lab2 to git-reset-practice +ea6d103 (feature/lab2) HEAD@{9}: commit: Add test file +0501766 (origin/feature/lab1, feature/lab1) HEAD@{10}: checkout: moving from feature/lab1 to feature/lab2 +0501766 (origin/feature/lab1, feature/lab1) HEAD@{11}: commit: docs: for my first lab +3ab1c3c HEAD@{12}: checkout: moving from main to feature/lab1 +b6dc181 (origin/main, origin/HEAD, main) HEAD@{13}: reset: moving to HEAD +b6dc181 (origin/main, origin/HEAD, main) HEAD@{14}: commit: docs: this template +bae7d8e HEAD@{15}: checkout: moving from feature/lab1 to main +3ab1c3c HEAD@{16}: checkout: moving from main to feature/lab1 +bae7d8e HEAD@{17}: commit: docs: finish +266051b HEAD@{18}: checkout: moving from feature/lab1 to main +3ab1c3c HEAD@{19}: commit: docs: done +b42e848 HEAD@{20}: commit: docs: with photo +e760ad5 HEAD@{21}: commit: docs: done task 2 +60fac05 HEAD@{22}: commit: docs: done task 2 +870ef94 HEAD@{23}: merge main: Merge made by the 'ort' strategy. +e9a00f0 HEAD@{24}: checkout: moving from main to feature/lab1 +266051b HEAD@{25}: commit: docs: add PR template structure +d6b6a03 HEAD@{26}: checkout: moving from feature/lab1 to main +e9a00f0 HEAD@{27}: checkout: moving from main to feature/lab1 +d6b6a03 HEAD@{28}: checkout: moving from feature/lab1 to main +e9a00f0 HEAD@{29}: commit: docs: add lab1 submission +d6b6a03 HEAD@{30}: checkout: moving from main to feature/lab1 +d6b6a03 HEAD@{31}: clone: from github.com:z0sh22/DevOps-Intro.git + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git reset --hard 78168e8 +HEAD is now at 78168e8 Third commit + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ ls +README.md app/ file.txt labs/ lectures/ test.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git log --oneline +78168e8 (HEAD -> git-reset-practice) Third commit +854ec7e Second commit +d101b5b First commit +ea6d103 (feature/lab2) Add test file +0501766 (origin/feature/lab1, feature/lab1) docs: for my first lab +3ab1c3c docs: done +b42e848 docs: with photo +e760ad5 docs: done task 2 +60fac05 docs: done task 2 +870ef94 Merge branch 'main' into feature/lab1 +266051b docs: add PR template structure +e9a00f0 docs: add lab1 submission +d6b6a03 Update lab2 +87810a0 feat: remove old Exam Exemption Policy +1e1c32b feat: update structure +6c27ee7 feat: publish lecs 9 & 10 +1826c36 feat: update lab7 +3049f08 feat: publish lec8 +da8f635 feat: introduce all labs and revised structure +04b174e feat: publish lab and lec #5 +67f12f1 feat: publish labs 4&5, revise others +82d1989 feat: publish lab3 and lec3 +3f80c83 feat: publish lec2 +499f2ba feat: publish lab2 +af0da89 feat: update lab1 +74a8c27 Publish lab1 +f0485c0 Publish lec1 +31dd11b Publish README.md + +``` + + +### Выполненные действия и анализ +В рамках задания была создана ветка `git-reset-practice` и сделано три последовательных коммита. Затем были протестированы механизмы сброса состояния. + +#### 1. Soft Reset +Команда: `git reset --soft HEAD~1` +**Что произошло:** +- Указатель `HEAD` переместился на один коммит назад (на "feat: add second file"). +- **Рабочее дерево (Working Tree):** Файл `3.txt` остался на диске без изменений. +- **Индекс (Staging Area):** Изменения из отмененного коммита (добавление `3.txt`) остались в индексе. Они помечены как готовые к коммиту ("Changes to be committed"). +- **История:** Последний коммит исчез из `git log`. + +#### 2. Hard Reset +Команда: `git reset --hard HEAD~1` +**Что произошло:** +- Указатель `HEAD` переместился еще на один коммит назад (на "feat: add first file"). +- **Рабочее дерево:** Файл `2.txt` был физически удален с диска. +- **Индекс:** Очищен. Все изменения, накопленные после нового `HEAD`, были уничтожены. +- **История:** Коммит "feat: add second file" также исчез из лога. + +### Восстановление через Reflog + +После выполнения сбросов (resets) коммиты пропали из обычного `git log`, но остались в журнале ссылок (`reflog`). + + +## Задание 3 + +![alt text](image-4.png) + +### Текстовое представление графа + +* 338a8fa (side-branch) Side branch commit +* 78168e8 (HEAD -> git-reset-practice) Third commit +* 854ec7e Second commit +* d101b5b First commit +* ea6d103 (feature/lab2) Add test file +* 0501766 (origin/feature/lab1, feature/lab1) docs: for my first lab +* 3ab1c3c docs: done +* b42e848 docs: with photo +* e760ad5 docs: done task 2 +* 60fac05 docs: done task 2 +* 870ef94 Merge branch 'main' into feature/lab1 +|\ +* | e9a00f0 docs: add lab1 submission +| * ebe5f9a (refs/stash) WIP on main: b6dc181 docs: this template +| | +| * b6dc181 (origin/main, origin/HEAD, main) docs: this template +| * bae7d8e docs: finish +|/ +* 266051b docs: add PR template structure +|/ +* d6b6a03 Update lab2 + +Список сообщений коммитов +Side branch commit (в ветке side-branch) + +Third commit (текущий HEAD в git-reset-practice) + +Second commit + +First commit + +Add test file (точка начала работы над заданием 1) + +docs: for my first lab (история предыдущей лабы) + +... и коммиты слияния (Merge branch 'main'...), показывающие интеграцию изменений. + +Размышление о визуализации +Команда git log --graph --oneline --all позволяет наглядно увидеть, как ветвилась история разработки: где именно отошли новые ветки (side-branch, feature/lab2) от основной линии и где происходили слияния. Это помогает мгновенно понять структуру проекта и отношений между ветками, что невозможно сделать, глядя только на линейный список коммитов. + + +## Задание 4 + +```bash + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git tag v1.0.0 + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git push origin v1.0.0 +Enumerating objects: 13, done. +Counting objects: 100% (13/13), done. +Delta compression using up to 8 threads +Compressing objects: 100% (8/8), done. +Writing objects: 100% (12/12), 1.35 KiB | 1.35 MiB/s, done. +Total 12 (delta 7), reused 0 (delta 0), pack-reused 0 +remote: Resolving deltas: 100% (7/7), completed with 1 local object. +To github.com:z0sh22/DevOps-Intro.git + [new tag] v1.0.0 -> v1.0.0 + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git show v1.0.0 +commit 78168e8feb9c65953110b7727e982d53e359e57b (HEAD -> git-reset-practice, tag: v1.0.0) +Author: z0sh22 +Date: Tue Feb 10 21:58:58 2026 +0300 + + Third commit + +diff --git a/file.txt b/file.txt +index c133ee6..4775dab 100644 +--- a/file.txt ++++ b/file.txt +@@ -1 +1 @@ +-Second commit ++Third commit +``` + +![alt text](image-5.png) + +Теги критически важны для фиксирования стабильных точек в истории проекта (релизов), так как в отличие от веток они неизменяемы и всегда указывают на один и тот же код. В DevOps теги часто служат триггерами для CI/CD пайплайнов: например, создание тега v* может автоматически запускать сборку production-версии приложения и деплой на сервер, а также генерацию Release Notes. + +## Задание 5 + +```bash +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git switch -c cmd-compare +Switched to a new branch 'cmd-compare' + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare) +$ git switch - +Switched to branch 'git-reset-practice' + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git checkot -b cmd-compare-2 +git: 'checkot' is not a git command. See 'git --help'. + +The most similar command is + checkout + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git status +On branch git-reset-practice +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +nothing added to commit but untracked files present (use "git add" to track) + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git branch + cmd-compare + feature/lab1 + feature/lab2 +* git-reset-practice + main + side-branch + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (git-reset-practice) +$ git checkout -b cmd-compare-2 +Switched to a new branch 'cmd-compare-2' + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git branch + cmd-compare +* cmd-compare-2 + feature/lab1 + feature/lab2 + git-reset-practice + main + side-branch + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git status +On branch cmd-compare-2 +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +nothing added to commit but untracked files present (use "git add" to track) + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ echo "base" > demo.txt +git add demo.txt +git commit -m "chore: add demo for restore" +warning: in the working copy of 'demo.txt', LF will be replaced by CRLF the next time Git touches it +On branch cmd-compare-2 +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +nothing added to commit but untracked files present (use "git add" to track) + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ echo "base" > demo.txt # создать/перезаписать файл +git add demo.txt # добавить в индекс +git commit -m "chore: add demo for restore" +warning: in the working copy of 'demo.txt', LF will be replaced by CRLF the next time Git touches it +On branch cmd-compare-2 +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +nothing added to commit but untracked files present (use "git add" to track) + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ echo "base" > demo.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git add demo.txt +warning: in the working copy of 'demo.txt', LF will be replaced by CRLF the next time Git touches it + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git commit -m "chore: add demo for restore" +On branch cmd-compare-2 +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +nothing added to commit but untracked files present (use "git add" to track) + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git status +On branch cmd-compare-2 +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +nothing added to commit but untracked files present (use "git add" to track) + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ echo "scratch" >> demo.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git status +On branch cmd-compare-2 +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: demo.txt + +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +no changes added to commit (use "git add" and/or "git commit -a") + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git restore demo.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git status +On branch cmd-compare-2 +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +nothing added to commit but untracked files present (use "git add" to track) + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ echo "scratch" >> demo.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git add demo.txt +warning: in the working copy of 'demo.txt', LF will be replaced by CRLF the next time Git touches it + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git status +On branch cmd-compare-2 +Changes to be committed: + (use "git restore --staged ..." to unstage) + modified: demo.txt + +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git restore --staged demo.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git status +On branch cmd-compare-2 +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: demo.txt + +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +no changes added to commit (use "git add" and/or "git commit -a") + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git restore --source=HEAD~1 demo.txt + +Дарья@LAPTOP-HVHDMKR2 MINGW64 /d/homeworkIU/DevOps-Intro (cmd-compare-2) +$ git status +On branch cmd-compare-2 +Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + deleted: demo.txt + +Untracked files: + (use "git add ..." to include in what will be committed) + labs/image-4.png + labs/image-5.png + labs/submission2.md + +no changes added to commit (use "git add" and/or "git commit -a") + +``` +### Короткое сравнение +- `git switch` — лучше для веток (понятнее: create/switch branch). +- `git checkout` — «универсальный» и из-за этого более запутанный (ветки и файлы одной командой). +- `git restore` — для файлов (вернуть изменения из рабочего дерева и/или из индекса). + +## Задание 6 + +### Почему это важно (1–2 предложения) +Stars и подписки помогают поддерживать open-source, повышают видимость проектов и упрощают отслеживание обновлений. Это также помогает быстрее находить полезные репозитории и людей для взаимодействия в сообществе. + + + diff --git a/labs/submission3.md b/labs/submission3.md new file mode 100644 index 00000000..2eb9a9f9 --- /dev/null +++ b/labs/submission3.md @@ -0,0 +1,60 @@ +## Task 1 — First GitHub Actions Workflow + +### 1.1 Quickstart workflow + +- Я создал файл `.github/workflows/lab3-demo.yml`. +- Workflow содержит: + - **job** `explore-github-actions`, который запускается на `ubuntu-latest`. + - Несколько **steps**: вывод информации, `actions/checkout`, `ls` репозитория и т. д. [web:1] + +Ключевые концепции: +- **Jobs** — независимые единицы работы, которые могут идти параллельно (в YAML — секция `jobs:`, внутри `explore-github-actions:`). [web:1] +- **Steps** — последовательные шаги внутри job (каждый `- run:` или `- uses:`). [web:1] +- **Runners** — виртуальные машины, на которых выполняются jobs (здесь `runs-on: ubuntu-latest`). [web:1] +- **Triggers** — события, которые запускают workflow, в данном случае `on: push`. [web:1] + +### 1.2 Trigger и анализ выполнения + +- Workflow запускается при каждом `git push` в репозиторий, потому что в `on` указано событие `push`. [web:1] +- Ссылка на успешный run: https://github.com/z0sh22/DevOps-Intro/actions/runs/22187270097/job/64164528087. + +![alt text](image-10.png) +![alt text](image-6.png) +![alt text](image-7.png) +![alt text](image-8.png) +![alt text](image-9.png) + + +## Task 2 — Manual trigger + System Info + +### 2.1 Changes to workflow + +https://github.com/z0sh22/DevOps-Intro/actions/runs/22187742506/job/64167020774 + +- В секции `on` добавил событие `workflow_dispatch`, чтобы можно было запускать workflow вручную из UI (кнопка **Run workflow** в Actions). +- Добавлен шаг `Show system information`, который выполняет `uname -a`, `lscpu`, `free -h` для получения OS/CPU/RAM. + +Фрагмент YAML: + +```yaml +on: + push: + workflow_dispatch: + +jobs: + explore-github-actions: + runs-on: ubuntu-latest + steps: + - name: Show system information + run: | + echo "=== uname -a ===" + uname -a + echo "=== lscpu ===" + lscpu + echo "=== free -h ===" + free -h +``` +https://github.com/z0sh22/DevOps-Intro/actions/runs/22188124141/job/64167696797 + + + diff --git a/labs/submission4.md b/labs/submission4.md new file mode 100644 index 00000000..7dbb1d06 --- /dev/null +++ b/labs/submission4.md @@ -0,0 +1,249 @@ +### Задание 2 + +## 1.1 Время загрузки системы + +**Команда:** `systemd-analyze` + +**Вывод:** + +``` +Startup finished in 2.360s (userspace) +graphical.target reached after 2.331s in userspace. +``` + +**Вывод:** Система загрузилась за 2.360s в userspace. Это очень быстрая загрузка, типичная для WSL2-окружения с ядром Microsoft. + + + +## 1.2 Самые медленные сервисы при загрузке + +**Команда:** `systemd-analyze blame` + +**Топ-5 сервисов по времени запуска:** + +| Сервис | Время запуска | +|---|---| +| `landscape-client.service` | 1.338s | +| `snapd.seeded.service` | 747ms | +| `snapd.service` | 624ms | +| `dev-sdd.device` | 584ms | +| `dpkg-db-backup.service` | 486ms | + +**Вывод:** Главный виновник медленного старта — `landscape-client.service` (агент мониторинга Canonical), на который уходит более половины времени загрузки. Сервисы `snapd` в совокупности занимают ещё ~1.3s. + + + +## 1.3 Текущая загрузка системы + +**Команды:** `uptime`, `w` + +**Вывод:** + +``` +18:04:29 up 1 min, 1 user, load average: 0.14, 0.05, 0.02 +``` + +| Параметр | Значение | +|---|---| +| Время работы | 1 минута | +| Активных пользователей | 1 (`z` в `pts/1`) | +| Load average (1/5/15 мин) | 0.14 / 0.05 / 0.02 | + +**Вывод:** Нагрузка на систему практически нулевая — система находится в состоянии покоя сразу после загрузки. + + + +## 1.4 Процессы по потреблению ресурсов + +**Команды:** + +```bash +ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 6 +ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 6 +``` + +**Топ процессов по памяти:** + +| PID | PPID | CMD | %MEM | %CPU | +|---|---|---|---|---| +| 232 | 1 | `/usr/bin/python3 /usr/share...` | 0.2 | 0.1 | +| 43 | 1 | `/usr/lib/systemd/systemd-jo` | 0.1 | 0.1 | +| 108 | 1 | `/usr/lib/systemd/systemd-re` | 0.1 | 0.0 | +| 1 | 0 | `/sbin/init` | 0.1 | 0.4 | +| 454 | 1 | `/usr/lib/systemd/systemd --` | 0.1 | 0.0 | + +**Топ процессов по CPU:** + +| PID | PPID | CMD | %MEM | %CPU | +|---|---|---|---|---| +| 1 | 0 | `/sbin/init` | 0.1 | 0.4 | +| 232 | 1 | `/usr/bin/python3 /usr/share` | 0.2 | 0.1 | +| 43 | 1 | `/usr/lib/systemd/systemd-jo` | 0.1 | 0.1 | +| 162 | 1 | `@dbus-daemon --system` | 0.0 | 0.0 | +| 94 | 1 | `/usr/lib/systemd/systemd-ud` | 0.0 | 0.0 | + +**Какой процесс потребляет больше всего памяти?** + +> **PID 232** — `/usr/bin/python3 /usr/share...` (`landscape-client`) — **0.2% RAM**. + +**Какой процесс потребляет больше всего CPU?** + +> **PID 1** — `/sbin/init` (systemd) — **0.4% CPU**. + +**Вывод:** Потребление ресурсов минимальное. Ни один процесс не занимает более 0.2% памяти или 0.4% CPU. Python-процесс `landscape-client` является единственным заметным потребителем RAM при простое системы. + + + +## 1.5 Использование памяти + +**Команды:** `free -h`, `cat /proc/meminfo | grep -e MemTotal -e SwapTotal -e MemAvailable` + +**Вывод:** + +``` + total used free shared buff/cache available +Mem: 7.6Gi 467Mi 6.9Gi 3.4Mi 501Mi 7.2Gi +Swap: 2.0Gi 0B 2.0Gi + +MemTotal: 8020184 kB +MemAvailable: 7541192 kB +SwapTotal: 2097152 kB +``` + +| Параметр | Значение | +|---|---| +| Всего RAM | 7.6 GiB (8 020 184 kB) | +| Использовано | 467 MiB (~6%) | +| Доступно | 7.2 GiB (7 541 192 kB) | +| Swap всего | 2.0 GiB | +| Swap использовано | 0 B | + +**Вывод:** ~94% оперативной памяти свободно, swap не задействован вовсе. Система работает с очень низким потреблением памяти. + +--- + +## Общие выводы + +1. **Узкое место при загрузке** — `landscape-client.service` (1.338s) и сервисы `snapd` (~1.37s суммарно). Их отключение ускорит старт: `sudo systemctl disable landscape-client snapd snapd.seeded` +2. **Система не нагружена**: из 7.6 GiB RAM занято лишь ~467 MiB, нагрузка на CPU близка к нулю (load average 0.14). +3. **Единственный заметный потребитель памяти** при простое — Python-процесс `landscape-client` (PID 232, 0.2% RAM). +4. **Среда выполнения — WSL2** (ядро `6.6.87.2-microsoft`), что объясняет быстрый старт и отсутствие аппаратных драйверов в списке сервисов. +5. **Закономерность**: все активные (●) сервисы — базовые компоненты systemd и Ubuntu; большинство Ubuntu-специфичных сервисов (`apport`, `snapd`, `landscape-client`) находятся в неактивном (○) состоянии. + +### Задание 2 + +## 2.1 Трассировка маршрута до github.com + +**Команда:** `traceroute github.com` + +**Вывод:** + +``` +traceroute to github.com (140.82.121.4), 30 hops max, 60 byte packets + 1 LAPTOP-HVHDMKR2.mshome.net (172.31.0.1) 0.582 ms + 2 10.91.48.1 (10.91.48.1) 2.740 ms + 3 10.252.6.1 (10.252.6.1) 2.730 ms + 4 84.18.123.1 15.668 ms + 5 178.176.191.24 7.590 ms + 6-9 * * * +10 83.169.204.82 41.950 ms +11 netnod-ix-ge-a-sth-1500.inter.link 41.923 ms +12-16 * * * +17 r1-fra3-de.as5405.net (94.103.180.24) 64.691 ms +18 cust-sid435.r1-fra3-de.as5405.net 65.961 ms +19-30 * * * +``` + +**Анализ сетевого пути:** + +- Маршрут проходит через **30 хопов**, конечный IP github.com — `140.82.121.4` +- **Хоп 1** — шлюз WSL2 (`172.31.0.1`), задержка ~0.5ms +- **Хопы 2–3** — внутренняя сеть провайдера (`10.x.x.x`), задержка ~2.7ms +- **Хоп 4** — выход в публичную сеть (`84.18.123.1`), скачок до ~15ms +- **Хопы 6–9, 12–16, 19–30** — `* * *` означает, что промежуточные маршрутизаторы блокируют ICMP-пакеты (firewall), это нормальное явление +- **Хоп 11** — шведский узел обмена трафиком Netnod IX (Стокгольм), задержка ~42ms +- **Хопы 17–18** — немецкий узел (Франкфурт, AS5405), задержка ~65ms +- До github.com пакеты идут через **Швецию → Германию**, конечный хоп не отвечает (типично для GitHub) + + +## 2.2 DNS-запросы (tcpdump + dig) + +**Команда:** `sudo timeout 10 tcpdump -c 5 -i any 'port 53' -nn` + +**Вывод:** + +``` +tcpdump: data link type LINUX_SLL2 +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 секунд DNS-трафик не был зафиксирован — система не делала DNS-запросов в фоне. Это подтверждает минимальную сетевую активность WSL2-окружения в состоянии покоя. + +**Команда:** `dig github.com` + +**Вывод:** + +``` +;; ANSWER SECTION: +github.com. 0 IN A 140.82.121.4 + +;; Query time: 7 msec +;; SERVER: 10.255.255.254#53 +``` + +**Анализ DNS-запроса:** +- DNS-резолвер WSL2 — `10.255.255.254` (внутренний резолвер Windows) +- Запрос типа **A** (IPv4-адрес) для `github.com` выполнен за **7ms** +- TTL = 0 — GitHub использует очень короткое время жизни записи (балансировка нагрузки) +- Ответ содержит 1 A-запись: `140.82.121.4` + + +## 2.3 Обратный DNS-поиск + +**Команда:** `dig -x 8.8.4.4` и `dig -x 1.1.2.2` + +**Вывод `dig -x 8.8.4.4`:** + +``` +;; ANSWER SECTION: +4.4.8.8.in-addr.arpa. 5409 IN PTR dns.google. + +;; Query time: 27 msec +;; SERVER: 10.255.255.254#53 +``` + +**Вывод `dig -x 1.1.2.2`:** + +``` +;; status: NXDOMAIN + +;; AUTHORITY SECTION: +1.in-addr.arpa. 900 IN SOA ns.apnic.net. + +;; Query time: 30 msec +``` + +**Сравнение результатов обратного поиска:** + +| IP-адрес | PTR-запись | Статус | Владелец | +|---|---|---|---| +| `8.8.4.4` | `dns.google.` | NOERROR | Google DNS | +| `1.1.2.2` | — | NXDOMAIN | APNIC (нет PTR-записи) | + +**Анализ:** +- `8.8.4.4` — публичный DNS Google, PTR-запись корректно настроена: `dns.google.` +- `1.1.2.2` — адрес из диапазона APNIC, PTR-запись отсутствует (NXDOMAIN); это обычная ситуация — не все IP имеют обратные DNS-записи +- Оба запроса обслуживает резолвер `10.255.255.254` за ~27–30ms +- Авторитетный сервер для зоны `1.in-addr.arpa` — `ns.apnic.net` + + +## Общие выводы по разделам 2.1–2.3 + +1. **Сетевой путь до github.com** проходит через ~18 видимых хопов (Иннополис → Швеция → Германия), итоговая задержка ~65ms — нормальный показатель для маршрута в Европу. +2. **Блокировка ICMP** на промежуточных узлах (`* * *`) — стандартная практика безопасности, не означает разрыва соединения. +3. **DNS-резолвер WSL2** (`10.255.255.254`) работает быстро (7–30ms) и корректно обрабатывает как прямые, так и обратные запросы. +4. **tcpdump** не зафиксировал фонового DNS-трафика — система не отправляет паразитных запросов в состоянии покоя. +5. **TTL=0** у github.com указывает на использование DNS-based load balancing — IP может меняться при каждом запросе. diff --git a/test.txt b/test.txt new file mode 100644 index 00000000..2eec599a --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +Test content diff --git a/tmp.md b/tmp.md new file mode 100644 index 00000000..5fdc3d31 --- /dev/null +++ b/tmp.md @@ -0,0 +1 @@ +# tmp