TDDI41 Grundläggande systemadministration
Labb NET: Nätverk
Nätverket är en central del för att få våra maskiner att kunna
kommunicera med varandra. I denna laborationen kommer du börja
jobba med att sätta upp nätverket för era maskiner. Från och med
denna laboration kommer du jobba med fyra olika maskiner router,
server, samt två klienter. Huvudmålet med denna laboration är att
se till så att alla maskiner når varandra samt att alla maskiner
når ut på internet. För att starta era fyra maskiner kör
du /courses/TDDI41/start_project.sh
.
Förberedelser
Nätverkskort och interface
En dator kan ha flera nätverks-gränssnitt (interface). Varje interface möjliggör anslutningen till ett nätverk. I regel har man ett interface per nätverkskort (exempelvis ett för Ethernet, ett för WiFi, ...), men undantag finns.
Övning 1
Verktyget/kommandot ping
är ett enkelt men kraftfullt verktyg för att undersöka nätverk. Läs på dokumentationen om ping(8)
man-sidan och besvara följande frågor:
ping
- [NET.1]
- Vad är kommandot för att skicka fem paket till
localhost
? - Vad är kommandot för att skicka tre paket till
localhost
med två sekunders mellanrum mellan varje paket?
Inlämning: Kommando och utdata.
Övning 2
Verktyget ip
är ett användbart verktyg för att både konfigurera och undersöka nätverket och nätverksinterfacen på den lokala maskinen.
ip
- [NET.2]
Läs dokumentationen om ip(8)
på man-sidan samt följande Fusklapp (cheat sheet) och besvara följande frågor (med hjälp av ip
-kommandot):
- Vad är kommandot för att lista adresserna för alla nätverksinterface i datorn?
- Vad är kommandot för att ta nätverksinterfacet ens4 online?
- Vad är kommandot för att ge nätverksinterfacet ens4 ip-adressen 192.168.1.2 med en 24-bitars nätmask?
- Vad är kommandot för att visa routing-tabellen?
Inlämning: Svar på frågor.
Huvuduppgift
Nu kommer vi till huvuduppgiften ni ska här konfigurera ert egna nätverk.
För att göra det lite lättare är det bra att få en bild över hur era fyra maskiner är kopplade.
Figur 1 illustrerar hur dina maskiner är ihopkopplade.
Dina virtuella maskiner körs på den arbetsstation du arbetar på.
De är anslutna till varandra med VDE-switch (en funktionsrik virtuell switch).
Din router är också ansluten till en extern virtuell VDE-switch som i sin tur är kopplad mot internet.
I labben här kommer vi att tala om routern omväxlande som router och gateway.
Figur 1
Innan du börjar den här delen eller någon senare del, se till att du tänker på vilka adresser och värdnamn ditt system kommer att använda.
Vi rekommenderar att ni väljer 10.0.0.0/24
som nätverk.
Det krockar inte med några av IDA:s egna nät.
Bestäm er för vilken ip-adress ni vill ge varje maskin.
Tänk på att ni inte vill använda adresser som slutar på .0.
Det finns två filer som är relevanta för namngivning av en dator: /etc/hostname
och /etc/hosts
.
/etc/hostname
innehåller värdnamnet för datorn (inte FQDN1) medan /etc/hosts
innehåller värdens adress, FQDN och värdnamn.
Observera att manipulering /etc/hosts
bara skapar en IP-adressnamnmappning; den tilldelar inte en IP-adress till datorn.
Som ett exempel: om en dator har ip adressen 192.168.1.2
och FQDN proxy.example.com.
, så kommer
/etc/hostname
innehållaproxy
- och
/etc/hosts
192.168.1.2 proxy.example.com proxy
Nätverkskonfiguration
För Debianmaskiner finns nätverksskonfiguration i filen /etc/network/interfaces
.
Nätverkskonfiguration - [NET.3]
Nu börjar vi bygga upp en första nätverkskonfiguration. Se till att alla era maskiner har ip-adresser, nätmask, samt gateway; samt verifiera att server, client-1 och client-2 når din router (börja med din router). Din konfiguration ska klara av en omstart av maskinerna. (För er router är det enbart gränssnittet ens4 som behöver konfigureras. ens3 får en ip-adress (samt default route, m.m.) av en extern dhcp-server.) Era maskiner kommer ännu inte åt internet; det är okej. Använd nc (även känd som netcat) för att skicka meddelanden mellan era virtuella maskiner. Testa på lite olika portnummer! Sätt upp något som lyssnar på en viss port på en av maskinerna, och försök ansluta och skicka meddelanden från en annan.
Inlämning: Vilka steg ni gjorde och varför.
Brandvägg
Ni kan ännu inte installera paket på client-1, client-2 eller servern.
På er gateway når ni dock internet, och debians paketrepon.
Installera paketet nftables
till att börja med.
Detta ger er en brandvägg, och ett sätt att interagera med den (programmet nft
).
Man kan läsa mycket om denna brandvägg, exempelvis på archwiki sida om nftables.
Brandväggen kan användas för att stänga ute trafik, men kommer också hjälpa er att skicka den vidare på rätt sätt.
Ändra inte någon default-policy än!
Än så länge är det OK att den släpper igenom all trafik!
Obs! Vi tillåter inte iptables
(ens som front-end, eller för att generera regler som vi sedan omvandlar till nftables
-regler).
iptables
är på väg ut (något som i ärlighetens namn varit sant i många år, i skrivande stund).
För den intresserade, har nftables en sida om skillnaderna.
Man kan skriva konfiguration i /etc/nftables.conf
och starta om brandväggen för att få den att få genomslag (systemctl restart nftables
).
Man kan också manipulera den direkt (nft add ...
).
Om man gjort det, kan man ibland vilja ta en titt på utdata genom från nft list ruleset
.
IP-forwarding och NAT
IP-forwarding är processen som accepterar paket från ett nätverksinterface och skickar dem till ett annat, enligt nuvarande routing-tabell.
Du kan läsa mer om IP-forwarding på Debian IP-forwarding.
Network address translation (NAT) är en metod för att mappa om ett IP-adressutrymme till ett annat genom att ändra nätverksadressinformation i Internet-protokoll (IP) datagram pakethuvudet.
För detta projekt kommer ni använda IP-masquerading som är en teknik för att helt dölja en intern private addressrymd.
Du kan läsa mer om NAT och masquerading på nftables
-wikin eller mer utförligt hos Red Hat.
IP-forwarding och -masquerading - [NET.4]
Konfigurera din gateway så att den tillåter dina övriga maskiner (server, client-1, client-2) att nå internet.
Du behöver både konfigurera IP-forwarding samt IP-masquerading.
Du gör dina mer permanenta IP-masquerading-inställningar i /etc/nftables.conf
.
Man ska kunna starta om routern utan att behöva göra några manuella inställningar för att IP-forwarding och NAT fungerar.
Inlämning: Vilka steg ni gjorde och varför.
Värdnamn
Justering av värdnamn - [NET.5]
Ställ in värdnamnet på alla dina maskiner. Routern ska namnges 'gw', servern ska namnges 'server' och klienterna 'client-1' samt 'client-2'. Glöm inte FQDN (t ex server.grupp13.liu.se, om ni valt att låtsas att ni har de adresserna).
Inlämning: Vilka steg ni gjorde och varför.
Brandväggar, del 2
I denna kurs kommer vi bara att snudda vid brandväggskonfiguration. Detta är ett stort och viktigt område, och vi kommer medvetet att förenkla en hel del för att ge en inledning.
Om ni tittar på utdata från nft list ruleset
ser ni att alla kedjor slutar med att acceptera all trafik som inte har förkastats (policy accept
).
Det är ofta en dålig idé.
Här nedan kommer vi att stegvis arbeta för att göra extremt grundläggande ingress-filtrering (inkommande trafik) utifrån deny by default-principen.
Vi kommer inte att komma in ens på enkel filtrering av utgående trafik, djup paketinspektion, detektering av olika kända attacker eller dylikt, utan skrapar bara på ytan.
Bra att veta: Det är helt okej att lägga in alla era regler i respektive standardkedja, utan att tänka på hopp, hooks och annat.
Brandväggar med nftables
- [NET.6]
Nu ska vi konfigurera brandväggar.
Konfigurera client-1 så att den släpper (drop
) all inkommande trafik, förutom det som anges nedan.
client-1
ska släppa igenom trafik som tillhör etablerade konversationer eller kopplingar, och relaterad trafik (established,related
).
TCP är ett uppkopplings-orienterat (connection-oriented) protokoll, där detta bör fungera.
Använd något eller några av verktygen ni har läst om hittills (ssh
, ping
, nc
...) för att testa att ni lyckats med detta.
Ytterligare krav:
client-1
ska tillåta ICMP-trafik överlag (så det ska exempelvis gå attping
:aclient-1
).client-1
ska tillåta trafik på normala SSH-porten (fundera på vad detta innebär).client-1
ska tillåta inkommande (och utgående) trafik påloopback
-gränssnittet
client-1
fungerar som den ska, konfigurera client-2
, server
och router
också.
Inlämning Konfigureringar för nftables
samt förklaring.
Kom ihåg att ni, även om du klipp-klistrat ihop lösningarna, ska kunna (i) källhänvisa, (ii) förklara vad de olika delarna betyder, (iii) förklara varför det här borde lösa uppgiften (och inte mer).
Obs! I senare labbar kommer ni att lägga till tjänster. Ni kan behöva förändra er brandväggskonfiguration för att tjänsterna ska fungera som de ska.
Testning
Testning av nätverkskonfiguration - [NET.7]
För denna labb ska du även skriva automatiserade tester som visar att ditt nätverk är korrekt uppsatt.
Saker att testa för alla maskiner:
- Har maskinen rätt IP, nätmask, och gateway?
- Har maskinen rätt namn?
- Kan maskinen nå routern?
Saker att testa och verifiera för routern:
- Kan routern nå 10.0.2.2?
- Är IP-forwarding påslaget?
- Är IP-masquerading korrekt uppsatt?
Saker att testa överlag:
- Uppfylls kraven på brandväggen, såsom de skrivs ovan?
Inlämning: Lämna in tester tillsamans med ändringar ni gjort i systemets konfiguration.
Redovisning
Visa upp ett korrekt konfigurerat system, samt fungerande tester för er labbassistent. Skicka sedan era lösningar för uppgifterna till er labbassistent enligt de allmänna instruktionerna kring inlämning.
Sidansvarig: Daniel de Leng
Senast uppdaterad: 2025-08-13