# VyOS Software Router Lab
> [!info] Forudsætninger
> Du har gennemgået papirøvelsen om routing mellem subnets (Figure 9-1 til 9-4) og kan forklare hvordan en packet traverserer fra et source subnet til et destination subnet via en router, herunder ARP, TTL decrement og routing table lookup.
---
## Formål
I denne øvelse skal I i makkerpar opsætte en **VyOS software router** i jeres virtuelle miljø. Routeren skal fungere som gateway mellem et eksternt netværk (WAN) og et internt netværk (LAN) — præcis den rolle som R1 og R2 spillede i papirøvelsen, men nu som en fungerende implementering.
Efter øvelsen skal I kunne:
- Konfigurere network interfaces på en software router
- Opsætte DHCP-service for et internt LAN
- Konfigurere NAT/masquerade for at give LAN-klienter adgang til WAN
- Verificere og fejlsøge routing med standard netværksværktøjer
- Dokumentere en netværksopsætning professionelt
---
## Netværksdiagram
```
┌──────────────────────────────────────────────────────────────┐
│ Bridge Network (WAN) │
│ DHCP fra hypervisor aktiv │
│ Subnet: (tildelt af hypervisor) │
└──────────────────┬───────────────────────────────────────────┘
│
│ eth0 (WAN interface)
┌──────┴──────┐
│ │
│ VyOS │
│ Router │
│ │
└──────┬──────┘
│ eth1 (LAN interface)
│ IP: 10.10.10.1/24
│
┌──────────────────┴───────────────────────────────────────────┐
│ Internal Network (LAN) │
│ Ingen DHCP fra hypervisor │
│ Subnet: 10.10.10.0/24 │
│ │
│ ┌─────────────┐ │
│ │ Client VM | |
| │ LAB-PC | │
│ │ (Linux) │ │
│ │ DHCP client│ │
│ └─────────────┘ │
└──────────────────────────────────────────────────────────────┘
```
> [!important] IP-adresseplan
> Udfyld denne tabel **inden** I begynder at konfigurere. Tabellen er jeres kontrakt med jer selv om hvad I bygger.
>
> | Komponent | Interface | IP-adresse | Subnet Mask | Gateway | Bemærkning |
> |---|---|---|---|---|---|
> | VyOS Router | eth0 (WAN) | | | | DHCP fra bridge |
> | VyOS Router | eth1 (LAN) | 10.10.10.1 | /24 | — | Static |
> | Client VM | eth0 | | | | DHCP fra VyOS |
> | DHCP Range | — | 10.10.10.100 - 10.10.10.200 | /24 | 10.10.10.1 | Konfigureres på VyOS |
---
## Roller og arbejdsform
I arbejder i makkerpar med tydelige roller der **byttes halvvejs** (efter del 2).
| Rolle | Ansvar |
|---|---|
| **Operator** | Skriver kommandoer i VyOS CLI. Må kun skrive hvad Navigator dikterer eller godkender. |
| **Navigator** | Læser dokumentation, planlægger næste skridt, verificerer konfiguration. Dikterer kommandoer til Operator. |
> [!warning] Vigtig regel
> Operator må **ikke** copy-paste direkte fra dokumentationen. Navigator læser og formulerer kommandoen, Operator skriver den. Dette tvinger jer begge til at forstå hvad der konfigureres.
**Rolleskift:** Efter I har gennemført Del 1 og Del 2, bytter I roller for Del 3 og Del 4.
---
## Del 1 — Forberedelse og installation
**Rolle: Navigator læser og planlægger, Operator udfører**
1. Download VyOS rolling release ISO fra [vyos.io](https://vyos.io)
2. Opret en VM i jeres hypervisor med:
- **2 network interfaces**: Én tilsluttet bridge network (WAN), én tilsluttet det interne netværk uden DHCP
- Minimum 1 GB RAM, 10 GB disk
- Minimum 1 Processor
3. Log-in med vyos/vyos
4. Boot fra ISO og kør `install image` for at installere VyOS på disk
5. Reboot og verificér at I kan logge ind
> [!tip] Dokumentation
> VyOS Quick Start Guide: https://docs.vyos.io/en/latest/quick-start.html
**Checkpoint:** Begge i parret skal kunne forklare hvilke to netværk VyOS-routeren er tilsluttet og hvorfor.
For at sætte dansk keyboard layout på VyOS VM:
```bash
configure
set system option keyboard-layout dk
```
Test herefter, om I har et keyboard layout, I kan anvende:
```bash
[] {} # blandt andet
```
Husk:
```bash
commit
save
```
Test konfigurationen:
```bash
exit
reboot
```
- [ ] Keyboard er dansk efter reboot
> [!tip] Snapshot
>
> Dette er et godt tidspunkt at lave et snapshot.
---
## Del 2 — WAN interface konfiguration
**Rolle: Samme som Del 1**
Konfigurér eth0 (WAN) til at modtage IP-adresse via DHCP fra bridge-netværket.
Start med at verificere, hvilke interfaces på guest-VM'en der er sat op, og at de er forbundet til de korrekte netværk (bridge og et LAN/internt netværk uden aktiv DHCP-server via hypervisor).
```bash
show interfaces
```
Jeg har "snydt" lidt: ved oprettelse af min VM har jeg valgt, at netværksadapter 1 — den jeg vil bruge til WAN, koblet til mit bridge-netværk — ender sin MAC-adresse på `11`, og adapter 2, som jeg vil bruge som internt LAN-netværk, ender sin MAC-adresse på `22`.
![[vyos-show-interfaces.png]]
Brug VyOS-dokumentationen til at finde de relevante kommandoer for:
- Konfiguration af et interface med DHCP
- `commit` og `save` af konfiguration
**Verifikation:**
- [ ] `show interfaces` viser en IP-adresse på eth0
- [ ] `ping 8.8.8.8` fra VyOS lykkes (stop med ctrl-c)
- [ ] Opdatér IP-adresseplanen med den tildelte WAN-adresse
**Checkpoint:** Navigator forklarer Operator hvad der ville ske hvis eth0 *ikke* fik en IP-adresse via DHCP. Hvad ville I se? Hvordan ville I fejlsøge?
---
## Del 3 — LAN interface, DHCP og NAT
> [!attention] Rolleskift
> **Byt roller nu.** Den der var Operator bliver Navigator, og omvendt.
Konfigurér følgende på VyOS:
### 3a — LAN interface
- Sæt eth1 til static IP `10.10.10.1/24`
### 3b — DHCP-service
- Konfigurér en DHCP-server på VyOS for subnet `10.10.10.0/24`
- Address range: `10.10.10.100` – `10.10.10.200`
- Default gateway: `10.10.10.1`
- DNS-server: `8.8.8.8`
- leasetime 2 timer
> [!attention] Snapshot
>
> **SNAPSHOT TIME**
>
> - `commit` og `save`, herefter `exit` og `poweroff`
>
> - Lav et snapshot og kald det "before NAT/masq config" (vigtigt — I skal tilbage til dette punkt senere)
>
> - Start VyOS VM op igen og fortsæt
### 3c — NAT/Masquerade
- Konfigurér source NAT (masquerade) på WAN-interfacet så LAN-klienter kan tilgå det eksterne netværk
> [!tip] Dokumentation
> Se VyOS dokumentation for:
> - [DHCP Server](https://docs.vyos.io/en/latest/configuration/service/dhcp-server.html)
> - [NAT](https://docs.vyos.io/en/latest/configuration/nat/index.html)
Opsæt jeres LAB-PC / client VM, så der kun er 1 aktivt interface. Dette interface skal være koblet på det netværk, som I har valgt til LAN. Når I har opsat denne konfiguration, starter I client VM / LAB-PC op.
Fra VyOS skulle I nu gerne se en client optage en lease på en IP-adresse:
![[vyos-show-dhcp-leases.png]]
På jeres LAB-PC skulle I nu gerne se en IP inden for det range, som I har opsat:
![[lab-pc-dhcp-lease-from-vyos.png]]
**Verifikation:**
- [ ] `show dhcp server leases` viser aktive leases når client VM startes
- [ ] Client VM modtager IP-adresse i range `10.10.10.100-200`
- [ ] Client VM kan pinge `10.10.10.1` (gateway)
- [ ] Client VM kan pinge `8.8.8.8` (ekstern connectivity via NAT)
- [ ] Client VM kan pinge it-sikkerhed.org (dns er funktionsdygtig)
**Checkpoint:** Navigator forklarer Operator hvorfor NAT/masquerade er nødvendig. Hvad ville ske hvis I kun havde routing men ingen NAT? Relater til papirøvelsens eksempel med private og public IP-adresser.
> [!important] Snapshot-verifikation
>
> Gå tilbage til snapshot "before NAT/masq config". Løb ovenstående verifikationsliste igennem igen, og sammenlign jeres resultater med første gennemløb.
>
>
>
> **VIGTIGT:** Gentag fra punkt [[#3c — NAT/Masquerade]], inden I fortsætter til Del 4.
---
## Del 4 — Verifikation og fejlsøgning
**Rolle: Samme som Del 3 (de nye roller)**
Udfør følgende fra **Client VM** og dokumentér output:
| Test | Kommando | Forventet resultat | Faktisk resultat |
|---|---|---|---|
| IP-adresse tildelt | `ip addr show` | IP i 10.10.10.100-200 range | |
| Gateway reachable | `ping 10.10.10.1` | Reply | |
| DNS opslag | `nslookup google.com` | Resolved IP | |
| Extern connectivity | `ping 8.8.8.8` | Reply | |
| Trace route | `traceroute 8.8.8.8` | Første hop er 10.10.10.1 | |
Udfør følgende fra **VyOS**:
| Test | Kommando | Forventet resultat | Faktisk resultat |
|---|---|---|---|
| Routing table | `show ip route` | Routes for begge subnets | |
| Interface status | `show interfaces` | Begge interfaces UP med korrekte IP'er | |
| DHCP leases | `show dhcp server leases` | Lease til client VM | |
| NAT translations | `show nat source translations` | Aktive translations | |
---
## Del 5 — Dokumentation og refleksion
Udarbejd sammen en kort netværksdokumentation der indeholder:
1. **Netværksdiagram** med alle IP-adresser, subnet masks og interfaces udfyldt
2. **Konfigurationsoversigt** — de vigtigste VyOS-kommandoer I brugte (ikke en komplet dump, men de centrale kommandoer med en kort forklaring af hvad hver gør)
3. **Verifikationsresultater** — tabellerne fra Del 4 udfyldt
4. **Refleksion** (maks 1 side) — besvar mindst ét af følgende:
- Noget I blev overraskede over under opsætningen
- Noget der var særligt vanskeligt at få til at virke, og hvordan I løste det
- En sammenhæng I opdagede mellem papirøvelsen og den praktiske opsætning
> [!note] Præsentation
> Refleksionen danner grundlag for jeres korte oplæg ved næste undervisningsgang. Vælg det punkt fra refleksionen I finder mest interessant at dele med jeres medstuderende.
---
## Ekstraopgave — SSH
Opsæt SSH, sådan at det er muligt at forbinde via SSH fra client VM / LAB-PC til VyOS-routeren.
Diskutér, hvorfor følgende kommando — hvis den står alene — kan være farlig:
```bash
set service ssh port "22"
```
Opsæt herefter SSH, således at det kun er fra LAN-siden, SSH kan tilgås.
___
## Peer-review session (næste undervisningsgang)
### Format
- 3 makkerpar danner en gruppe af 6
- Hvert par holder et kort oplæg (5–7 minutter) baseret på deres refleksion
- Efter hvert oplæg: 5 minutters struktureret peer-review
### Feedbackstruktur for tilhørere
Hver tilhører besvarer disse tre spørgsmål **skriftligt** under/efter hvert oplæg:
> [!quote] Peer-review spørgsmål
> 1. **Hvad lærte du af dette oplæg som du ikke vidste i forvejen?**
> 2. **Er der noget teknisk du er uenig i eller vil udfordre?**
> 3. **Hvad ville du gerne vide mere om?**
Besvarelserne afleveres til det præsenterende par som skriftlig feedback efter sessionen.
### Tidsplan per gruppe
| Tid | Aktivitet |
|---|---|
| 0–7 min | Par 1 præsenterer |
| 7–12 min | Peer-review og diskussion |
| 12–19 min | Par 2 præsenterer |
| 19–24 min | Peer-review og diskussion |
| 24–31 min | Par 3 præsenterer |
| 31–36 min | Peer-review og diskussion |
| 36–45 min | Fælles opsamling: Hvad var den vigtigste indsigt på tværs af alle oplæg? |
---
## Ressourcer
- VyOS Documentation: https://docs.vyos.io/en/latest/
- VyOS Quick Start: https://docs.vyos.io/en/latest/quick-start.html
- VyOS DHCP Server: https://docs.vyos.io/en/latest/configuration/service/dhcp-server.html
- VyOS NAT: https://docs.vyos.io/en/latest/configuration/nat/index.html