# Terminal og netværk
## Formål
- At give dig praktisk erfaring med terminalen (CLI) på din laptop
- At give dig kendskab til grundlæggende systemkommandoer og netværksværktøjer
- At give dig forståelse for hvordan din laptop kommunikerer på netværket
>[!task] Lab-journal
>Du skal undervejs i disse opgaver lave noter og udarbejde en journal over dine fund. Det kan også være her du skriver spørgsmål til dig selv ind, hvis der er noget du ikke helt forstår, eller skal undersøge/læse mere om. Journalen er først og fremmest et produkt til dig og din læring, så udform den så den giver mening for dig og i det værktøj som du arbejder bedst i, digitalt eller analogt. Dog kan det være nyttigt at tage screenshots af dit arbejde og på den måde få dokumenteret dine fremskridt.
---
## Del 1: Opstart og PowerShell opdatering (kun Windows)
>[!info] Til Windows-brugere
>Før vi går i gang, skal vi sikre at du har den nyeste version af PowerShell installeret. Dette giver dig adgang til bedre kommandoer og funktionalitet. macOS og Linux-brugere kan springe til Del 2.
**Check din PowerShell version**
Åbn din Terminal og skriv:
```powershell
Get-Host | Select-Object Version
```
![[powershell_version.png]]
Du bør have version 7.0 eller højere. Hvis du har version 5.x, skal du opdatere.
**Opdater PowerShell via winget**
1. Check om winget er installeret: `winget --version`
![[powershell_winget_version.png]]
2. Installer nyeste PowerShell:
```powershell
winget install --id Microsoft.Powershell --source winget
```
![[powershell_install_PS_winget.png]]
Læs mere om [WinGet](https://learn.microsoft.com/en-us/windows/package-manager/winget/) på Microsofts side.
3. Luk Terminal med `exit` og genstart
4. Åbn Terminal Settings (Ctrl+,) og vælg **PowerShell** som Default Profile
![[Terminal_settings_defaultProfile.png]]
![[Terminal_settings_profil.png]]
5. Luk og genstart Terminal — bekræft at du nu har PowerShell 7.x
![[powershell_version_new.png]]
---
## Del 2: Systeminfo
**1**
Åbn din terminal. På Windows kan din prompt se forskellig ud afhængig af din konfiguration. Læs evt. mere om prompts her: [learn.microsoft.com](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_prompts?view=powershell-7.5)
![[powershell_prompt.png]]
**2**
Find din computers navn med
```bash
hostname
```
Check: Noter computernavnet ned — du skal bruge det senere i øvelsen.
**Windows:**
![[powershell_hostname.png]]
**macOS:**
![[apple_terminal_hostname.png]]
**3**
Find din OS version:
**Windows:**
```powershell
winver
```
Dette åbner en popup med Windows version.
![[powershell_winver.png]]
**macOS:**
```bash
uname -r
```
Dette viser kernel/release version.
![[apple_terminal_uname_-r.png]]
>[!info] macOS arkitektur
>Da Apple skiftede til deres egen [M1](https://en.wikipedia.org/wiki/Apple_M1) processor i 2020, kan du tjekke din hardware med:
>```bash
>uname -m
>```
>![[apple_terminal_uname_-m.png]]
**Linux:**
```bash
uname -r # Kernel version
uname -v # Mere detaljeret OS info
```
![[linux_terminal_uname_-r_-v.png]]
>[!task] OPGAVE: OS Banko — bytte "OS kort"
>Det gælder nu om at indsamle flest forskellige versioner og typer af operativsystemer og platforme. Du skal altså rundt til dine medstuderende og "bytte OS kort". Måske har I det samme OS og nummer, så må I på jagt efter en ny at bytte oplysninger med. Se om det er muligt at komme over 3 forskellige versioner/systemer.
**4**
Find din brugeridentitet med
```bash
whoami
```
Check: Noter brugernavnet ned i formatet `maskine\bruger` (Windows) eller bare `bruger` (macOS/Linux).
>[!tip] Status check
>Nu ved du: (i) computernavn, (ii) OS version, og (iii) hvilken bruger du er logget ind som. Det virker måske ikke helt så overvældende lige nu, men senere i jeres uddannelse vil I skulle bruge netop disse informationer til at navigere rundt mellem forskellige maskiner og brugerkonti.
---
## Del 3: Netværkskonfiguration
Nu skal vi kigge på netværk og mere specifikt hvilke netværksmuligheder din maskine har. For at have datakommunikation kræver det mange ting, men en af dem er at din maskine skal have en IP (Internet Protocol) adresse.
Da jeres maskiner alle er tilkoblet via NAT (Network Address Translation) på skolen, har I private IP-adresser som beskrevet i [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918).
**5**
Vis din netværkskonfiguration:
**Windows:**
```powershell
ipconfig
```
Alternativt kan du i PowerShell bruge:
```powershell
Get-NetIPConfiguration
```
Se mere her [[Get-NetIPConfiguration]]
![[powershell_GetIPConf.png]]
**macOS:**
```bash
ifconfig en0
```
(Prøv `en1` hvis `en0` ikke viser en IP-adresse)
Check: Find din **IPv4-adresse** i output og noter den ned.
**6**
Vis din detaljerede netværkskonfiguration:
**Windows:**
```powershell
ipconfig /all
```
![[powershell_ipconfig_all.png]]
**macOS:**
```bash
ifconfig
```
![[apple_terminal_ifconfig.png]]
Check: Find din **MAC-adresse** i output og noter den ned:
- Windows: Hedder "Physical Address" eller "Fysisk adresse"
- macOS: Hedder "ether"
>[!task] Opgave: RFC 1918
>I RFC 1918 skal I finde sektion 3 hvor de 3 private blokke af IP-adresser er beskrevet. Find ud af hvilken blok din IP-adresse passer ind i: "24-bit block" (10.x.x.x), "20-bit block" (172.16.x.x til 172.31.x.x), eller "16-bit block" (192.168.x.x).
>[!task] Opgave: Sammenlign med makker
>Sammenlign dette output fra din PC med din makkers output. Hvilke informationer er ens? Hvilke er forskellige? Hvorfor er de forskellige? Beskriv jeres diskussion og svar i din lab-journal.
**7**
Find din **default gateway**:
**Windows:**
Se "Default Gateway" i output fra `ipconfig`
**macOS:**
```bash
netstat -nr | grep default
```
Find linjen med "en0" (eller "en1") i slutningen — IP-adressen i den linje er din gateway.
Check: Noter gateway IP-adressen ned.
>[!info] Hvad er en gateway?
>På samme måde som når I skal ud i verden igen efter dagens undervisning skal I gennem en "gateway" — en dør — så skal jeres maskiner igennem en default gateway for at komme videre ud på internettet. Det er typisk jeres router.
**8**
Find din **DNS-server**:
**Windows:**
Se "DNS Servers" i output fra `ipconfig /all`
**macOS:**
```bash
scutil --dns
```
Find "nameserver\[0]" — det er din primære DNS-server.
Check: Noter DNS-server IP-adressen ned.
>[!info] Hvad er DNS?
>DNS (Domain Name System) er "internettets telefonbog". Når du skriver `google.com` i din browser, er det DNS-serveren der oversætter det til en IP-adresse som f.eks. 142.250.74.78.
---
## Del 4: Test forbindelsen
Nu har vi alle de grundlæggende oplysninger om dit netværk. Lad os teste om forbindelserne faktisk virker.
**9**
Test at din maskine kan kommunikere med sig selv (loopback-test):
**Windows:**
```powershell
ping 127.0.0.1
```
**macOS:**
```bash
ping -c 4 127.0.0.1
```
Check: Bekræft at du modtager svar. 127.0.0.1 er en særlig adresse der altid peger på din egen maskine. Hvis dette ikke virker, er der et alvorligt problem med netværksstakken.
>[!info] Windows vs macOS ping
>På Windows sender `ping` automatisk 4 pakker og stopper. På macOS kører `ping` i evighed indtil du stopper den med Ctrl+C — derfor bruger vi `-c 4` for at sende præcis 4 pakker.
**10**
Test forbindelse til din router (gateway):
**Windows:**
```powershell
ping [indsæt din gateway IP fra trin 7]
```
**macOS:**
```bash
ping -c 4 [indsæt din gateway IP fra trin 7]
```
Check: Bekræft at du modtager svar fra din gateway. Hvis ikke, kan det betyde et problem med din lokale netværksforbindelse. Eller som det gør her på skolen, at default gateway ikke tillader ICMP (Internet Control Message Protocol) pakker, den protocol som `ping` benytter sig af. Altså må vi prøve en anden IP adresse på EDU netværket. Så når du kommer hertil, så kommer du forbi mig (Hans) og spørger om min IP.
**11**
Test forbindelse til internettet ved at pinge Googles offentlige DNS-server:
**Windows:**
```powershell
ping 8.8.8.8
```
Alternativt i PowerShell
```powershell
Test-Connection -TargetName 8.8.8.8 -IPv4
```
**macOS:**
```bash
ping -c 4 8.8.8.8
```
Check: Bekræft at du modtager svar. Her pinger du direkte på en IP-adresse uden at bruge DNS.
**12**
Test at DNS virker ved at pinge et hostnavn:
**Windows:**
```powershell
ping google.com
```
**macOS:**
```bash
ping -c 4 google.com
```
Check: Sammenlign IP-adressen i output med 8.8.8.8 fra trin 11. De er med stor sandsynlighed forskellige.
>[!question] Diskuter med din makker
>I trin 11 pinger du direkte på en IP-adresse. I trin 12 beder du din maskine om først at oversætte `google.com` til en IP-adresse — det er DNS' job. Hvorfor får du forskellige IP-adresser? Hvad fortæller det dig om Googles infrastruktur?
**13**
Følg den vej dine datapakker tager fra din maskine til Google:
**Windows:**
```powershell
tracert google.com
```
**macOS:**
```bash
traceroute google.com
```
Forventet output er en liste af "hop" — routere din data rejser igennem på vejen til Google. Hver hop viser IP-adresse og responstid i millisekunder.
Check: Tæl antal hop til Google og noter det ned. Hvor mange routere skal dine datapakker igennem?
>[!info] Hvad er et "hop"?
>Hvert hop repræsenterer en router eller gateway som din data skal igennem på vejen til destinationen. Jo flere hop, jo længere er den fysiske rute.
**14**
Slå IP-adresse op for et hostnavn ved at spørge DNS direkte:
**Begge systemer:**
```bash
nslookup google.com
```
Check: Sammenlign IP-adressen fra output med hvad du fik i trin 12. De bør være ens (eller tilhøre samme Google-infrastruktur).
---
## Del 5: Netværksrapport
**15**
Udfyld din netværksrapport med alle de oplysninger du har noteret undervejs:
```
NETVÆRKSRAPPORT
===============
Dato:
Computernavn: [trin 2]
Bruger: [trin 4]
OS version: [trin 3]
NETVÆRKSKONFIGURATION
---------------------
IPv4-adresse: [trin 5]
MAC-adresse: [trin 6]
Private IP-blok (RFC 1918): [opgave trin 6]
Default gateway: [trin 7]
DNS-server: [trin 8]
FORBINDELSESTEST
----------------
ping 127.0.0.1: Virker / Virker ikke [trin 9]
ping [gateway]: Virker / Virker ikke [trin 10]
ping 8.8.8.8: Virker / Virker ikke [trin 11]
ping google.com: Virker / Virker ikke [trin 12]
IP fra ping google.com: [trin 12]
IP fra nslookup google.com: [trin 14]
TRACEROUTE
----------
Antal hop til google.com: [trin 13]
Første hop (gateway): [fra tracert/traceroute output]
```
>[!task] Sammenlign med makker
>Sammenlign din rapport med din makkers. Hvad er ens, og hvad er forskelligt? Diskuter hvorfor:
>- Computernavne er forskellige
>- MAC-adresser er forskellige (hardwarespecifik)
>- IP-adresser er sandsynligvis forskellige
>- Gateway og DNS er sandsynligvis ens (samme netværk)
>- Antal hop til Google kan variere lidt
**16**
Gem din netværksrapport vi skal bruge den senere.
**17**
Luk terminalvinduet.
---
## Opfølgende hjemmearbejde
- **Test alle netværkskommandoer på mindst ét andet netværk** (hjemme, café, mobilhotspot) og sammenlign resultaterne i din lab-journal:
- Ændrer din IP-adresse sig?
- Er det stadig samme private IP-blok (RFC 1918)?
- Ændrer gateway sig?
- Ændrer DNS-server sig?
- Hvor mange hop til google.com fra forskellige netværk?
Er der noget, der ikke giver mening? Brug din studiegruppe. Brug dit hold. Eller stil dit spørgsmål [her](https://eaaa.instructure.com/courses/31351/discussion_topics/163954): — du er med garanti ikke den eneste med det spørgsmål.
---
## Reference: Vigtige kommandoer
Se også det separate cheat sheet for en komplet oversigt.
| Kommando | Windows | macOS |
| --------------------- | --------------------- | ----------------------- |
| Find computernavn | `hostname` | `hostname` |
| Find IP-konfiguration | `ipconfig` | `ifconfig en0` |
| Ping (4 pakker) | `ping 8.8.8.8` | `ping -c 4 8.8.8.8` |
| Trace route | `tracert google.com` | `traceroute google.com` |
| DNS lookup | `nslookup google.com` | `nslookup google.com` |