diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..5f280000 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,26 @@ +## Goal + + + + + +## Changes + + + + + +## Testing + + + + + +## Checklist + + + +- [ ] Clear, descriptive PR title +- [ ] Documentation/README updated (if needed) +- [ ] No secrets or large temporary files committed + diff --git a/.github/workflows/lab3-ci.yml b/.github/workflows/lab3-ci.yml new file mode 100644 index 00000000..6b41577d --- /dev/null +++ b/.github/workflows/lab3-ci.yml @@ -0,0 +1,29 @@ +name: Lab 3 CI + +on: + push: + branches: + - "**" + workflow_dispatch: + +jobs: + system-info-job: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Say Hello + run: echo "Starting the Lab 3 pipeline..." + + - name: Gather System Info + run: | + echo "--- OS Info ---" + cat /etc/os-release + echo "--- Kernel ---" + uname -a + echo "--- CPU Info ---" + lscpu + echo "--- Memory Info ---" + free -h diff --git a/README.md b/README.md index 6e60bebe..e0d4d6a2 100644 --- a/README.md +++ b/README.md @@ -991,3 +991,4 @@ Upon successful completion of this course, you will have: **Bonus Achievements (if completed):** ⭐ **Web3 Experience** — Decentralized storage and hosting knowledge ⭐ **Edge Computing Skills** — WebAssembly and next-gen container technology +# test-push diff --git a/labs/Verified.png b/labs/Verified.png new file mode 100644 index 00000000..13a620bb Binary files /dev/null and b/labs/Verified.png differ diff --git a/labs/demo.txt b/labs/demo.txt new file mode 100644 index 00000000..8430408a --- /dev/null +++ b/labs/demo.txt @@ -0,0 +1 @@ +Initial content diff --git a/labs/images/Verified.png b/labs/images/Verified.png new file mode 100644 index 00000000..13a620bb Binary files /dev/null and b/labs/images/Verified.png differ diff --git a/labs/images/pr_autofill.png b/labs/images/pr_autofill.png new file mode 100644 index 00000000..75553b20 Binary files /dev/null and b/labs/images/pr_autofill.png differ diff --git a/labs/images/template_exists.png b/labs/images/template_exists.png new file mode 100644 index 00000000..1b70d5b2 Binary files /dev/null and b/labs/images/template_exists.png differ diff --git a/labs/manually_run.png b/labs/manually_run.png new file mode 100644 index 00000000..bf794a9d Binary files /dev/null and b/labs/manually_run.png differ diff --git a/labs/pr_autofill.png b/labs/pr_autofill.png new file mode 100644 index 00000000..75553b20 Binary files /dev/null and b/labs/pr_autofill.png differ diff --git a/labs/run_1.png b/labs/run_1.png new file mode 100644 index 00000000..6bcbc95a Binary files /dev/null and b/labs/run_1.png differ diff --git a/labs/submission1.md b/labs/submission1.md new file mode 100644 index 00000000..b9eeaab4 --- /dev/null +++ b/labs/submission1.md @@ -0,0 +1,35 @@ +## Task 1 +# Short Summary + +## Benefits of Signing Commits + +Signing commits ensures that all changes in the repository are authentic and made by trusted contributors. +It helps prevent impersonation, protects code integrity, and increases trust within DevOps teams. + +## Evidence of Successful SSH Key Setup and Signed Commit + +- An SSH key was generated and added to GitHub. +- Git was configured to sign commits using SSH. +- A signed commit was created and verified on GitHub with a "Verified" badge. + +## Why is commit signing important in DevOps workflows? + +Commit signing is important in DevOps workflows because it establishes trust, accountability, and security. +It allows DevOps teams to verify the author of each commit, prevent unauthorized changes, and maintain a reliable audit trail in collaborative environments. + +## Task 2: PR Template & Checklist + +### Analysis + +Templates standardize the review process by reminding developers of necessary checks and helping reviewers quickly understand the nature of changes. + +### Challenges +"None" + + +## Verification + +**ALL SCREENSHOTS:** `DevOps-Intro/labs/images` +![Verified.png](Verified.png) +![template_exists.png](template_exists.png) +![pr_autofill.png](pr_autofill.png) \ No newline at end of file diff --git a/labs/submission2.md b/labs/submission2.md new file mode 100644 index 00000000..be02d002 --- /dev/null +++ b/labs/submission2.md @@ -0,0 +1,354 @@ +# Lab 2 Submission + +## Task 1: Git Object Model + + +$ git log --oneline -1 + + +25e5541 (HEAD -> feature/lab2) Add test file + +``` +$ git cat-file -p 25e5541 +tree abe22c39e214852ffa286a0d9d5bfdb1dc4eb999 +parent 5f704ed3fc31d9f4e03b8133ea3d4779d4a9b577 +author mishin-mikhail 1770561450 +0300 +committer mishin-mikhail 1770561450 +0300 +gpgsig -----BEGIN SSH SIGNATURE----- + U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgI4OohC2h8iqNW6WJLqyNEh099Q + YY6s8ijzXoW3P8FeUAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 + AAAAQPF71FN4al9yvZaKoPmFDGs+CWhgAFn5SrSiY2oyyTA5TY+XsDeiYQqa5tAZ3hhgRi + 9TBlWAEKXKpiRkuV28HAA= + -----END SSH SIGNATURE----- +``` + + +``` +$ git cat-file -p abe22c39e214852ffa286a0d9d5bfdb1dc4eb999 +040000 tree b2efec4d0a10c0632fb5f32d67f7be429f5c2dd8 .github +100644 blob 6e60bebec0724892a7c82c52183d0a7b467cb6bb README.md +040000 tree a1061247fd38ef2a568735939f86af7b1000f83c app +040000 tree 81100a3c9af72daeedbf951ee0c5e6b4e5635866 labs +040000 tree d3fb3722b7a867a83efde73c57c49b5ab3e62c63 lectures +``` + + +$ git cat-file -p 6e60bebec0724892a7c82c52183d0a7b467cb6bb + + +# 🚀 DevOps Introduction Course: Principles, Practices & Tooling + +[![Labs](https://img.shields.io/badge/Labs-80%25-blue)](#-lab-based-learning-experience) +[![Exam](https://img.shields.io/badge/Exam-20%25-orange)](#-evaluation-framework) +[![Hands-On](https://img.shields.io/badge/Focus-Hands--On%20Labs-success)](#-lab-based-learning-experience) +[![Duration](https://img.shields.io/badge/Duration-10%20Weeks-lightgrey)](#-course-roadmap) + +Welcome to the **DevOps Introduction Course**, where you will gain a **solid foundation in DevOps principles and practical skills**. +This course is designed to provide a comprehensive understanding of DevOps and its key components. + +Through **hands-on labs and lectures**, you'll explore version control, software distribution, CI/CD, containerization, cloud computing, and beyond — the same workflows used by modern engineering teams. + +--- + +## 📚 Course Roadmap + +**10-week intensive course** with practical modules designed for incremental skill development: + + +(Not full output)(too much text) + + +------------------------------------------------------------------------------------ + + +**Questions:** + + +Blob object: blob represents the contents of a file in Git. It stores raw data without filenames or directory structure. + +Tree object: tree represents a directory in Git. It contains references to blobs and other trees along with filenames and permissions. + +Commit object: commit represents a snapshot of the repository at a specific point in time. It links to a tree object and includes metadata such as author, date, and commit message. + +How Git stores repository data: all data as objects in a content-addressable database using SHA-1 (or SHA-256) hashes. Files are stored as blobs, directories as trees, and history as commits that reference other objects. + +Example object contents: + +Blob: plain text or binary file data + +Tree: list of filenames with their blob or tree hashes + +Commit: tree hash, parent commit hash(es), author/committer info, and commit message + + +## Task 2: Reset and Reflog + + +**Commands Executed and Purpose** + + +"git switch -c git-reset-practice": + + +New branch to safely practice git reset without affecting other branches. + + +*Commits creating:* + + +echo "First commit" > file.txt && git add file.txt && git commit -m "First commit" + + +echo "Second commit" >> file.txt && git add file.txt && git commit -m "Second commit" + + +echo "Third commit" >> file.txt && git add file.txt && git commit -m "Third commit" + + +"git reset --soft HEAD~1": + + +Moved HEAD back by one commit while keeping changes from the last commit staged in the index. + + +"git reset --hard HEAD~1": + + +Moved HEAD back another commit and discarded changes from the working tree and index. + + +"git reflog": + + +Displayed the reference log to track previous HEAD positions and enable recovery. + + +"git reset --hard 14b0a79": + + +Recovered the repository state by resetting HEAD back to the commit labeled “Third commit”. + + +"git log --oneline" (snippet): + + +14b0a79 (HEAD -> git-reset-practice) Third commit + + +9434991 Second commit + + +54ee4e6 First commit + + +25e5541 (feature/lab2) Add test file + + +.................................................... + + +"git reflog" (snippet): + + +14b0a79 (HEAD -> git-reset-practice) HEAD@{0}: reset: moving to 14b0a79 + + +54ee4e6 HEAD@{1}: reset: moving to HEAD~1 + + +9434991 HEAD@{2}: reset: moving to HEAD~1 + + +14b0a79 (HEAD -> git-reset-practice) HEAD@{3}: commit: Third commit + + +9434991 HEAD@{4}: commit: Second commit + + +54ee4e6 HEAD@{5}: commit: First commit + + +25e5541 (feature/lab2) HEAD@{6}: checkout: moving from feature/lab2 to git-reset-practice + + +**Effect of Each Reset** + + +"git reset --soft HEAD~1": + + +Working tree: No changes + + +Index (staging area): Changes from “Third commit” remained staged + + +Commit history: HEAD moved from “Third commit” to “Second commit” + + +"git reset --hard HEAD~1": + + +Working tree: Reverted to the state of “First commit” + + +Index: Cleared to match HEAD + + +Commit history: “Second commit” and “Third commit” were removed from the current branch history + + +Recovery Using Reflog + + +Although the commits were no longer visible in the branch history after the hard reset, they were still accessible through git reflog. + + +By identifying the commit hash 14b0a79 in the reflog and running git reset --hard 14b0a79, the repository was successfully restored to the state of the “Third commit”. + + +## Task 3: Visualization(snippet) + + +``` +* c394079 (side-branch) Side branch commit +| * 14b0a79 (git-reset-practice) Third commit +| * 9434991 Second commit +| * 54ee4e6 First commit +|/ +* 25e5541 (HEAD -> feature/lab2) Add test file +* 5f704ed (origin/feature/lab1, feature/lab1) docs: complete lab1 submission with eviden +* 9acd4b4 docs: complete lab1 submission with evidence +* b60dca8 chore: add pull request template +* 2f7abf4 docs: add lab1 submission draft +* d9f33d6 docs: add lab1 submission stub +* 16eadab (origin/main, origin/HEAD, main) docs: add pull request template +* 329111c docs: add commit signing summary +* 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 +:...skipping... +* c394079 (side-branch) Side branch commit +| * 14b0a79 (git-reset-practice) Third commit +| * 9434991 Second commit +| * 54ee4e6 First commit +|/ +* 25e5541 (HEAD -> feature/lab2) Add test file + +``` + + +The commit graph visually shows the linear sequence of commits with branch movements caused by reset operations. This visualization helps clearly understand how HEAD changes over time and how commits can be recovered using the reflog. + + +## Task 4: Tagging + + +**Commands used:** + + +``` +git tag v1.0.0 +git push origin v1.0.0 +#Optional part +echo "..." >> test.txt && git commit ... +git tag v1.1.0 +git push origin v1.1.0 +``` + +**Tags and Hashes:** + + +commit 25e55416a155cd1359c4ba691d56c8e769da320c (tag: v1.0.0) + +commit 3635a841ea9f2315b7bbd9e66ac38614b311bcc9 (HEAD -> feature/lab2, tag: v1.1.0) + + +**Why tags matter:** + + +Tags are critical for semantic versioning (marking release points). They allow CI/CD pipelines to automatically build and deploy specific versions of the software and generate release notes based on the differences between tags. + + +## Task 5: Switch vs Restore + + +**Commands and outputs:** + + +``` +mngtr@MM MINGW64 ~/DevOps-Intro/labs (feature/lab2) +$ git switch cmd-compare +Switched to branch 'cmd-compare' + +mngtr@MM MINGW64 ~/DevOps-Intro/labs (cmd-compare) +$ git switch - +Switched to branch 'feature/lab2' + +mngtr@MM MINGW64 ~/DevOps-Intro/labs (feature/lab2) +$ echo "Initial content" > demo.txt + +mngtr@MM MINGW64 ~/DevOps-Intro/labs (feature/lab2) +$ git add demo.txt +warning: in the working copy of 'labs/demo.txt', LF will be replaced by CRLF the next time Git touches it + +mngtr@MM MINGW64 ~/DevOps-Intro/labs (feature/lab2) +$ git commit -m "Add demo file for restore practice" +Enter passphrase for "C:/Users/mngtr/.ssh/id_ed25519": +[feature/lab2 d368792] Add demo file for restore practice + 1 file changed, 1 insertion(+) + create mode 100644 labs/demo.txt + +mngtr@MM MINGW64 ~/DevOps-Intro/labs (feature/lab2) +$ echo "scratch - bad changes" >> demo.txt + +mngtr@MM MINGW64 ~/DevOps-Intro/labs (feature/lab2) +$ git status +On branch feature/lab2 +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) + submission2.md + +no changes added to commit (use "git add" and/or "git commit -a") + +mngtr@MM MINGW64 ~/DevOps-Intro/labs (feature/lab2) +$ git restore demo.txt + +mngtr@MM MINGW64 ~/DevOps-Intro/labs (feature/lab2) +$ git status +On branch feature/lab2 +Untracked files: + (use "git add ..." to include in what will be committed) + submission2.md + +nothing added to commit but untracked files present (use "git add" to track) + +``` + + +git switch is used specifically for changing branches and is safer and clearer than older commands because it cannot modify files. + + +git checkout is a legacy, multi-purpose command that can switch branches or restore files, but its mixed behavior can be confusing and error-prone. + + +git restore is used to discard or recover changes in the working directory or staging area without affecting branch history. + + +## GitHub Community + + +Starring repositories helps signal appreciation for a project, increases its visibility in the open-source community, and makes it easier to track useful tools or codebases. + + +Following developers helps you stay updated on their work, learn from their practices, and build professional connections within a team or the wider developer community. \ No newline at end of file diff --git a/labs/submission3.md b/labs/submission3.md new file mode 100644 index 00000000..bb207f82 --- /dev/null +++ b/labs/submission3.md @@ -0,0 +1,54 @@ +# Lab 3 Submission (GitHub Actions) + +## Task 1: First Workflow + +I created a workflow file `.github/workflows/lab3-ci.yml`. It runs automatically when I push code. + +**Link to successful run:** + + +https://github.com/mishin-mikhail/DevOps-Intro/actions/runs/22037526290 + +![run_1](run_1.png) + + +**Observations:** +The workflow consists of jobs and steps. I learned that `runs-on` specifies the OS (Ubuntu), and `run` executes shell commands. + +## Task 2: Manual Trigger & System Info + +**Changes made:** +1. Added `workflow_dispatch:` to the `on:` section to enable manual trigger. +2. Added commands like `lscpu`, `free -h`, and `uname -a` to inspect the runner. + + +**Link to successful run:** + + +https://github.com/mishin-mikhail/DevOps-Intro/actions/runs/22038317262 + + +![manually_run](manually_run.png) + + +**System info** + + +Based on the logs, the runner specifications are: +* **OS:** Ubuntu 22.04.3 LTS +* **Kernel:** Linux 6.14.0 +* **CPU:** AMD EPYC 7763 +* **RAM:** 16 GB + + +![system_info](system_info.png) + +**Analysis of runner environment and capabilities.(all system info on screenshot)** + + + +The GitHub-hosted Ubuntu runner provides a stable, cloud-based virtual environment with moderate computational resources. It is well-suited for continuous integration tasks, automated testing, and general development workflows, while maintaining isolation and reproducibility. + + +**Manual vs Automatic:** +Automatic triggers happen on `git push`. Manual triggers allow me to run the pipeline anytime via the GitHub UI ("Run workflow" button) without changing code. diff --git a/labs/submission4.md b/labs/submission4.md new file mode 100644 index 00000000..fea7f5b9 --- /dev/null +++ b/labs/submission4.md @@ -0,0 +1,385 @@ +# Lab 4 Submission + +## Task 1: Operating System Analysis + +### 1.1 Boot Performance +**Command: `systemd-analyze`** +``` +Startup finished in 2.422s (userspace) +graphical.target reached after 2.376s in userspace. +``` + + +**Command: `system-analyze blame`** +``` +1.752s snapd.seeded.service + 614ms landscape-client.service + 290ms dev-sdd.device + 234ms snapd.service + 131ms user@1000.service + 125ms systemd-udev-trigger.service + 87ms systemd-resolved.service + 80ms rsyslog.service + 62ms systemd-timesyncd.service + 56ms systemd-logind.service + 48ms polkit.service + 48ms systemd-sysctl.service + 47ms snapd.socket + 46ms systemd-tmpfiles-setup-dev-early.service + 44ms user-runtime-dir@1000.service + 44ms keyboard-setup.service + 42ms systemd-tmpfiles-clean.service + 42ms systemd-journald.service + 40ms dbus.service + 39ms systemd-udevd.service + 36ms e2scrub_reap.service + 28ms dev-hugepages.mount + 27ms dev-mqueue.mount + 27ms systemd-journal-flush.service + 27ms sys-kernel-debug.mount + 26ms sys-kernel-tracing.mount + 26ms systemd-tmpfiles-setup.service + 22ms kmod-static-nodes.service + 22ms modprobe@configfs.service +lines 1-29 +``` + + +**Command: `uptime`** +``` + 14:01:07 up 24 min, 1 user, load average: 0.00, 0.00, 0.00 + ``` + + + **Command: `w`** +``` + 14:02:40 up 25 min, 1 user, load average: 0.00, 0.00, 0.00 +USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT +mngtr pts/1 - 13:39 23:39 0.02s 0.01s -bash + ``` + + +**Observations:** +``` +The system boots in 2.422 seconds (userspace). +The main delay is caused by the snapd.seeded.service, which takes 1.752 seconds to start. +The current load average is 0.00, 0.00, 0.00, indicating the system is mostly idle with minimal activity. +``` + + +### 1.2 Process Forensics + + +**Top Memory Processes:(command: `ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 6`)** +``` + PID PPID CMD %MEM %CPU + 231 1 /usr/bin/python3 /usr/share 0.2 0.0 + 52 1 /usr/lib/systemd/systemd-jo 0.2 0.0 + 1 0 /sbin/init 0.1 0.0 + 120 1 /usr/lib/systemd/systemd-re 0.1 0.0 + 527 1 /usr/lib/systemd/systemd -- 0.1 0.0 +``` + + +``` +The top memory-consuming process is: PID 231 (python3) +``` + + +**Top CPU Processes:(command: `ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 6`)** +``` + PID PPID CMD %MEM %CPU + 1 0 /sbin/init 0.1 0.0 + 106 1 /usr/lib/systemd/systemd-ud 0.0 0.0 + 52 1 /usr/lib/systemd/systemd-jo 0.2 0.0 + 193 1 @dbus-daemon --system --add 0.0 0.0 + 930 1 /usr/lib/polkit-1/polkitd - 0.1 0.0 +``` + + +``` +The top cpu-consuming process is: PID 1 (init) +``` + + +### 1.3: Service Dependencies + +**Command: `systemctl list-dependencies`** + +``` +default.target +○ ├─display-manager.service +○ ├─systemd-update-utmp-runlevel.service +○ ├─wslg.service +● └─multi-user.target +○ ├─apport.service +● ├─console-setup.service +● ├─cron.service +● ├─dbus.service +○ ├─dmesg.service +○ ├─e2scrub_reap.service +○ ├─landscape-client.service +○ ├─networkd-dispatcher.service +● ├─rsyslog.service +○ ├─snapd.apparmor.service +○ ├─snapd.autoimport.service +○ ├─snapd.core-fixup.service +○ ├─snapd.recovery-chooser-trigger.service +● ├─snapd.seeded.service +○ ├─snapd.service +● ├─systemd-ask-password-wall.path +● ├─systemd-logind.service +○ ├─systemd-update-utmp-runlevel.service +● ├─systemd-user-sessions.service +○ ├─ua-reboot-cmds.service +○ ├─ubuntu-advantage.service +● ├─unattended-upgrades.service +● ├─wsl-pro.service +● ├─basic.target +lines 1-29 +``` + + +**Command: `systemctl list-dependencies multi-user.target`** + +``` +multi-user.target +○ ├─apport.service +● ├─console-setup.service +● ├─cron.service +● ├─dbus.service +○ ├─dmesg.service +○ ├─e2scrub_reap.service +○ ├─landscape-client.service +○ ├─networkd-dispatcher.service +● ├─rsyslog.service +○ ├─snapd.apparmor.service +○ ├─snapd.autoimport.service +○ ├─snapd.core-fixup.service +○ ├─snapd.recovery-chooser-trigger.service +● ├─snapd.seeded.service +○ ├─snapd.service +● ├─systemd-ask-password-wall.path +● ├─systemd-logind.service +○ ├─systemd-update-utmp-runlevel.service +● ├─systemd-user-sessions.service +○ ├─ua-reboot-cmds.service +○ ├─ubuntu-advantage.service +● ├─unattended-upgrades.service +● ├─wsl-pro.service +● ├─basic.target +○ │ ├─tmp.mount +● │ ├─paths.target +○ │ │ └─apport-autoreport.path +● │ ├─slices.target +lines 1-29 +``` + + +### 1.4: User Sessions + +**Command: `who -a`** + +``` + system boot 2026-02-22 13:38 + run-level 5 2026-02-22 13:38 +LOGIN console 2026-02-22 13:38 220 id=cons +LOGIN tty1 2026-02-22 13:38 225 id=tty1 +mngtr - pts/1 2026-02-22 13:39 00:40 550 + pts/2 2026-02-22 13:41 968 id=ts/2 term=0 exit=0 +``` + +**Command: `last -n 5`** + +``` +reboot system boot 6.6.87.2-microso Sun Feb 22 13:38 still running + +wtmp begins Sun Feb 22 13:38:39 2026 +``` + +### 1.5: Memory Analysis + +**Command: `free -h`** + +``` + total used free shared buff/cache available +Mem: 7.4Gi 537Mi 6.8Gi 3.6Mi 185Mi 6.8Gi +Swap: 2.0Gi 0B 2.0Gi +``` + + +**Command: `cat /proc/meminfo | grep -e MemTotal -e SwapTotal -e MemAvailable`** + +``` +MemTotal: 7712956 kB +MemAvailable: 7162332 kB +SwapTotal: 2097152 kB +``` + +**Observations:** + +``` +Total memory: 7.4 GiB (7,712,956 kB). +Available memory: 6.8 GiB (7,162,332 kB). +Swap: 2.0 GiB total, currently not used (0 B used). +``` + + +**Resource Utilization Patterns:** +``` +CPU: System is mostly idle with load average of 0.00, indicating no significant CPU contention +Memory: Only ~7% of total memory is used (537 MiB out of 7.4 GiB), with 6.8 GiB freely available +Swap: Currently unused (0 B), suggesting physical memory is sufficient for current workload +Processes: No single process consumes significant resources - top memory users use only 0.2% MEM each, top CPU users show 0.0% CPU usage +``` + +## Task 2: Networking Analysis + +### 2.1: Network Path Tracing + +**Command: `traceroute github.com`** + +``` +traceroute to github.com (140.82.121.3), 30 hops max, 60 byte packets + 1 MM.mshome.net (172.xx.xx.x) 0.580 ms 0.499 ms 0.465 ms + 2 xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx) 26.854 ms 26.842 ms 26.830 ms + 3 xxx.xxx.x.x (xxx.xxx.x.x) 28.125 ms 28.109 ms 28.082 ms + 4 xxx.xx.xxx.xxx (xxx.xx.xxx.xxx) 28.068 ms 28.056 ms 28.042 ms + 5 xx.x.xxx.x (xx.x.xxx.x) 28.196 ms 28.184 ms 28.143 ms + 6 ae1-1.rt.irx.vie.at.retn.net (xx.xxx.xxx.x) 48.545 ms 51.666 ms 51.647 ms + 7 ae11-61.cr3-vie2.ip4.gtt.net (xxx.xx.xx.xxx) 51.631 ms 47.207 ms 46.911 ms + 8 ae33.cr1-fra6.ip4.gtt.net (xxx.xxx.xxx.xxx) 55.640 ms 58.974 ms 58.946 ms + 9 ip4.gtt.net (xx.xxx.xx.xxx) 58.148 ms 58.130 ms 58.112 ms +10 * * * +11 * * * +12 * * * +13 * * * +14 * * * +15 * * * +16 * * * +17 * * * +18 * * * +19 * * * +20 * * * +21 * * * +22 * * * +23 * * * +24 * * * +25 * * * +26 * * * +27 * * * +28 * * * +29 * * * +30 * * * +``` + + +**Command: `dig github.com`** + +``` +; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> github.com +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59133 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 512 +;; QUESTION SECTION: +;github.com. IN A + +;; ANSWER SECTION: +github.com. 60 IN A 140.82.121.3 + +;; Query time: 79 msec +;; SERVER: xxx.xxx.xxx.xxx#xx(xxx.xxx.xxx.xxx) (UDP) +;; WHEN: Sun Feb 22 14:42:35 MSK 2026 +;; MSG SIZE rcvd: 55 +``` + + +**Observations:** +``` +The route to GitHub took 9 hops before timing out (asterisks appear after hop 9) +DNS query successfully returned an A-record with IP address 140.82.121.3 in 79 ms +``` + +### 2.2 Packet Capture + +**Command: `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 +14:53:26.357533 lo In IP 10.2xx.xxx.xxx.xxxxx > 10.2xx.xxx.xxx.xx: 9313+ A? google.com. (28) +14:53:26.357575 lo In IP 10.2xx.xxx.xxx.xxxxx > 10.2xx.xxx.xxx.xx: 43366+ AAAA? google.com. (28) +14:53:26.411053 lo In IP 10.2xx.xxx.xxx.xx > 10.2xx.xxx.xxx.xxxxx: 43366 1/0/0 AAAA 2a00:1450:4005:X (56) +14:53:26.426360 lo In IP 10.2xx.xxx.xxx.xx > 10.2xx.xxx.xxx.xxxxx: 9313 1/0/0 A 142.xxxxxx (44) +14:53:26.493231 lo In IP 10.2xx.xxx.xxx.xxxxx > 10.2xx.xxx.xxx.xx: 22108+ PTR? 238.39.xxxx.in-addr.arpa. (45) +5 packets captured +12 packets received by filter +0 packets dropped by kernel +``` + +**Observation:** +``` +I observed a DNS query for: google.com. +The packet shows a request from IP X.X.X.X to port 53. +Note: IPs have been sanitized. +``` + +### 2.3 Reverse DNS + + +**Command: `dig -x 8.8.4.4`** +``` +; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> -x 8.8.4.4 +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26201 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 512 +;; QUESTION SECTION: +;4.4.8.8.in-addr.arpa. IN PTR + +;; ANSWER SECTION: +4.4.8.8.in-addr.arpa. 12785 IN PTR dns.google. + +;; Query time: 56 msec +;; SERVER: 10.2xx.xxx.xxx#xx(10.2xx.xxx.xxx) (UDP) +;; WHEN: Sun Feb 22 15:12:10 MSK 2026 +;; MSG SIZE rcvd: 73 +``` + + +**Command: `dig -x 1.1.2.2`** + +``` +; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> -x 1.1.2.2 +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28703 +;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 512 +;; QUESTION SECTION: +;2.2.1.1.in-addr.arpa. IN PTR + +;; AUTHORITY SECTION: +1.in-addr.arpa. 1072 IN SOA ns.apnic.net. read-txt-record-of-zone-first-dns-admin.apnic.net. 23597 7200 1800 xxx800 3600 + +;; Query time: 294 msec +;; SERVER: 10.2xx.xxx.xxx#xx(10.2xx.xxx.xxx) (UDP) +;; WHEN: Sun Feb 22 15:17:04 MSK 2026 +;; MSG SIZE rcvd: 137 +``` + +**Comparison:** +``` +IP 8.8.4.4 resolves to dns.google. +IP 1.1.2.2 has no PTR record (NXDOMAIN response). +``` \ No newline at end of file diff --git a/labs/system_info.png b/labs/system_info.png new file mode 100644 index 00000000..8abaa200 Binary files /dev/null and b/labs/system_info.png differ diff --git a/labs/template_exists.png b/labs/template_exists.png new file mode 100644 index 00000000..1b70d5b2 Binary files /dev/null and b/labs/template_exists.png differ diff --git a/labs/test.txt b/labs/test.txt new file mode 100644 index 00000000..3b3a8363 --- /dev/null +++ b/labs/test.txt @@ -0,0 +1,2 @@ +Test content +Update for version 1.1