Ukeoppgave 1: Maskiner og nettstruktur

Innledning

Målet med disse oppgavene er å lære hvordan man kan orientere seg i et IP-nettverk fra en Unix-plattform (Linux). Studentene skal således få en innføring i verktøy som kan brukes til å få informasjon om maskinen som brukes, som f.eks. MAC-adresse og IP adresse, hvordan LAN segmentet maskinen er tilkoblet ser ut, hvilke veier som finnes fra maskinen til andre nettverk, hvilke mellomledd pakker sendes gjennom fra en maskin til en annen, osv.

Studentene vil få en praktisk erfaring som man kan knytte de teoretiske kunnskapene til. Gjennom denne oppgaven ønsker vi også at studentene skal opparbeide noen erfaringer som vi vil bygge videre på i kurset.

Oppgaver

Oppgaven skal løses på en maskin av type unix; enten linux eller solaris. I utgangspunktet skal primært de kommandoene som her er gjennomgått brukes, men du står fritt til å bruke andre nettverkskommandoer du kjenner til, samt standard unix/linux kommandoer. Forklaringer for diverse kommandoer finner du lengre ned.

1. Navnopplysning

Finn navnet til den maskinen du sitter ved, og den tilhørende IP-adressen. Beskriv hvordan du finner denne informasjonen.

2. Gjennomsøking av navnrom

Finn navnene til flest mulig av ifi sine maskiner. Beskriv hvordan du fant denne informasjonen. Her er det tilstrekkelig å gi eksempler på 10-20 maskinnavn, samt antallet. Husk at duplikater kan forekomme, og bør fjernes for å gi et riktig inntrykk av maskinparken. kommando | wc -l er en måte å telle output linjer.

3. Forlate det lokale nettet

Når maskinen du sitter ved skal sende en pakke til en maskin på et annet nettverk, hvordan vet den da hvilket første mellomledd pakken skal sendes til? Destinasjonsmaskinen forutsettes å være vilkårlig, dvs at svaret skal gjelde for alle maskiner som det er mulig å nå via nettverket din maskin er tilkoblet. Hva er mellomleddet i ditt tilfelle? Hvordan kom du frem til svaret?

4. Mailtjener

Finn navnet til maskinen som tar imot email til cs.uit.no, og hva Internett-adressen til denne mailserveren er.

5. Rutere på veien til mailtjeneren

Finn hvilke rutere en pakke som sendes mellom lokal maskin og cs.uit.no sin mailserver vil bli sendt gjennom.

6. Responstider

Du skal pinge noen forskjellige maskiner, måle responstiden og presentere responstiden til hver av disse i en graf.


  • For å se på hvordan pakkestørrelsen påvirker responstiden, skal det pinges med pakkestørrelsene på 64, 512 og 1450 bytes.
  • For å få et tilstrekkelig tallmateriale bør du pinge hver maskin minst 200 ganger.
  • Du skal bruke følgende 3 maskiner: ifi.uio.no , benoni.uit.no og www.hpl.hp.com
  • Det skal lages 3 grafer, en for hver maskin. For hver graf (maskin) skal det plottes responstid for de tre ulike pakkestørrelsene. Vi er her ute etter at variasjonen i tallmaterialet kommer frem, og ikke kun gjennomsnittstall. Hva forteller disse grafene deg? Tolk resultatet.
    Bruk gnuplot (man gnuplot), Matlab, Mathematica, eller liknende til å generere grafene.
  • Utfør kommandoen traceroute www.sogang.ac.kr. Hvilke refleksjoner gjør du deg om listen over ruterhopp og responstidene?

Bakgrunnsinformasjon

Maskinnavn og adresser

Ved instituttet har vi flere UNIX-varianter gående på forskjellige maskiner. Denne oppgaven er formulert med tanke på at du benytter operativsystemet Linux. Dersom du sitter ved en annen type maskin kan det lønne seg å gjøre ssh til en som kjører Linux. (Det går an å løse oppgaven på en annen UNIX-variant, men da vil filene og kommandoprosedyrene ligge på andre steder enn det som er beskrevet under.) Er du usikker på hva slags maskin du er logget inn på kan du gi UNIX-kommandoen arch

Filen /etc/hosts inneholder navn og adresser til et utvalg maskiner / nettverksinterface. Ved boot vil Unix lese disse filene i oppgitt rekkefølge, og vil på grunnlag av navnet til hvert av sine interface slå opp IP adressene til disse interfacene i /etc/hosts. Fra et brukerperspektiv kan alternativt kommandoen hostname benyttes, eller oppslag på tilhørende miljøvariabel: echo $HOSTNAME.

ypcat

Kommandoen /usr/bin/ypcat vil printe verdier til alle nøklene i en NIS database. For å få en oversikt over tilgjengelige mapnames, benyttes kommandoen med prefiks -x. Som listingen viser, er hosts et av de gyldige mapnames, og kan benyttes til å finne info om andre maskiner. På samme måte kan en også finne info om grupper, passord etc.

netstat

Denne kommandoen /bin/netstat kan brukes til mangt; den kan vise hvilke porter som er bundet av programmer, og for TCP-porter vises hvilken fjern maskin som er koblet opp til porten; netstat kan også vise en del statistikk relatert til sitt interface (-i opsjonen) og den interne rutingtabellen til maskinen (-r opsjonen). Se man netstat for mer informasjon.

Address Resolution Protocol (ARP)

ARP er en protokoll som brukes til å finne (og sette) MAC adressen til en maskin ut fra IP-adressen. Protokollen fungerer på den måten at en maskin A som ønsker å sende en IP-pakke til en maskin B (som den kjenner IP-adressen til, men ikke MAC adressen), kringkaster en pakke som inneholder IP-adressen til B på lokalnettsegmentet. Maskinen B fanger opp denne pakken, fyller ut MAC-adresse feltet i pakken, og kringkaster den slik at A får informasjonen. Siden pakken kringkastes, får også alle andre stasjoner på segmentet kjennskap til bindingen mellom MAC-adressen og IP-adressen til B.

Kommandoen /sbin/arp -a dumper all adresseinformasjonen maskinen har i sin cache.

ifconfig

Denne kommandoen /sbin/ifconfig brukes til å sette og lese konfigurasjonsparametre for nettverksgrensesnitt.

traceroute

(/local/bin/traceroute) er et program for å følge de veivalg som gjøres for en pakke p, som sendes mellom to maskiner A og B. Ved å angi adressen til maskin B, vil man få en liste over alle rutere pakken som sendes fra maskin A er blitt sendt gjennom før den når frem til maskin B. Når traceroute kalles med opsjonen -n, indikeres Internett-adressen.

Programmet sender ut en sekvens av User Datagram Protocol (UDP) pakker med Time To Live (TTL) feltet lik henholdsvis 1, 2, 3, etc. Mellom hver utsendelse av en UDP-pakke, lytter det etter en Internet Control Message Protocol (ICMP) pakke som indikerer at TTL er overskredet og at pakken derfor ikke videresendes. TTL satt til 1 vil dermed gi respons tilbake fra den første ruteren pakken må gjennom. TTL-feltet inkrementeres med 1, helt til ICMP-meldingen gir "port unreachable", noe som indikerer at vi er kommet frem til maskin B, eller at TTL-verdien nå har maksimalverdien som er blitt angitt (default 30) og at programmet derfor terminerer uten å ha sendt en pakke som har nådd frem til maskin B. For å dekke muligheten av at der kan være parallelle ruter mellom maskinene A og B, blir det (default) sendt ut 3 UDP-pakker med samme TTL-verdi, og hvis der er flere enn en ruter som svarer, så vil dette gå frem av resultatet som tracerouteleverer.
Se man traceroute

Navnedatabaser og dig

dig er et program som gjør det mulig å aksessere informasjon som finnes i navnedatabaser i Internett. En navnetjener har som oppgave å holde rede på bl.a. maskiners navn og IP-adresser, eller hvis IP-adressen ikke kjennes direkte, kunne vite hvilken navnetjener den må spørre for å få adressen. En annen oppgave er ved ruting av elektronisk post. Dersom maskinen oppgitt i mailadressen ikke er kjent i systemet, men det finnes informasjon om hvilken maskin som er posttjener for domenet til destinasjonsadressen, så sendes mailen til den maskinen som navnetjenesten oppgir som posttjener for domenet, og denne tjeneren har så ansvaret for at posten skal komme frem til mottageren.

Adressering i Internett

Hver maskin i Internett har minst en unik, logisk IP-adresse som entydig identifiserer den innenfor nettverket. De fleste adresser er av typen IPv4 (IP versjon 4), består av 32 bit fordelt på fire oktetter. Noen maskiner har IPv6 addresser, som består av 128 bits.

Den vanligste måten å representere IPv4 adresser på, er såkalt dott-notasjon (dotted decimal notation). Hver oktett representeres som et desimalt tall, som igjen adskilles med et punktum, f.eks. 129.240.80.2. For å skrive IPv6 adresser, deles de opp i åtte grupper med 16 bits som skilles med kolon. Ledende 0-verdier må ikke skrives, slik at IPv6 adresser skrives for eksempel som FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 eller 1080::::8:800:200C:417A. I denne oppgaven brukes kun IPv4 adresser.

Litt historikk om maskinnavn og navnedatabaser

For at mennesker lettere skulle kunne referere til maskiner, ga man maskiner navn som ved behov ble konvertert til en IP-adresse ved tabelloppslag. Innenfor ett og samme lokalnett kunne systemadministrasjonen vedlikeholde tabeller over sammenhengen mellom maskinnavn og IP-adresse. Tabellen måtte distribueres til alle maskiner på nettverket. De maskiner som det skulle være mulig å adressere ved navn fra andre nettverk, måtte registreres ved Network Information Center (NIC). Navn-til-adresse mappingene ble lagret i en fil kalt HOSTS.TXT som måtte lastes ned via anonym FTP med jevne mellomrom for å ha oppdatert adresseinformasjon.

Etter hvert som Internett vokste dukket det opp flere problemer med dette systemet, som tilsa at den måtte organiseres distribuert. Belastningen på NIC's FTP-tjenere og nettverket vokste med kvadratet av antall vertsmaskiner på Internett, og ble etterhvert betydelig. NIC ble en flaskehals; det tok lang tid fra en ny maskin ble meldt til NIC, til den ble lagt til i navnedatabasen og distribuert i Internett, og slike endringer i databasen forekom hyppig.

Det man ønsket var å kunne gi lokal kontroll over en del av navnerommet til lokale nettverksadministratorer slik at de selv kunne tildele maskiner navn og distribuere disse navnene til resten av Internett. Dette arbeidet ble igangsatt på begynnelsen av 1980-tallet og resulterte i Domain Name System (DNS) som idag er en Internett-standard og som brukes i de aller fleste nettverk.

DNS er en distribuert database over maskiner i et IP-nettverk. Det er idag meget utbredt i Internett. De aller fleste nettverk bruker DNS til registrering av maskiner og navneoppslag. DNS består av et hierarkisk oppbygget navnerom (Domain Name Space) med tilhørende ressursposter (Resource Record), navnetjenere, og navneløsere (Resolver). Systemet er klient-tjener basert, og tillater lokal kontroll av et horisontalt fragment av databasen som systemadministrasjonen for hvert nettverk vedlikeholder. Navnetjenere sørger for at informasjonen fra hver del av domenetreet gjøres tilgjengelig for klienter på andre nettverk.

dig

diger et verktøy som gjør oppslag i DNS. Det har en mengde opsjoner som ligger utenfor skopet til denne oppgaven, men et par av disse er det greit å vite om: dig kan brukes til å gjøre enkeltoppslag eller i batch modus. Vi skal her konsentrere oss om det første. I det følgende eksemplet ser vi hvordan dig brukes for å finne en adresse som tilhører et gitt navn:

kuusi% dig +short www.ifi.uio.no
glitnir.ifi.uio.no.
129.240.64.16
kuusi%

Navneoppslaget lyktes: kuusi%er shellets prompt. Programmet returnerer såsnart det har skrevet adressen 129.240.64.16 for navnet www.ifi.uio.no I tillegg opplyser den om at maskinen egentlig heter glitnir.ifi.uio.no.

Med parameteren +short bestemmer vi at vi ønsker at dig bare skal skrive svaret uten nærmere opplysninger. For å få flere opplysninger brukes kommandoen uten denne opsjonen.

kuusi% dig www.ifi.uio.no
; <<>> DiG 9.2.1 <<>> www.ifi.uio.no
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2291
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 2

;; QUESTION SECTION:
;www.ifi.uio.no.                        IN      A

;; ANSWER SECTION:
www.ifi.uio.no.         3600    IN      CNAME   glitnir.ifi.uio.no.
glitnir.ifi.uio.no.     3600    IN      A       129.240.64.16

;; AUTHORITY SECTION:
ifi.uio.no.             3600    IN      NS      nn.uninett.no.
ifi.uio.no.             3600    IN      NS      ifi.uio.no.
ifi.uio.no.             3600    IN      NS      nissen.uio.no.

;; ADDITIONAL SECTION:
nn.uninett.no.          3181    IN      A       158.38.0.181
ifi.uio.no.             3600    IN      A       129.240.64.2

;; Query time: 34 msec
;; SERVER: 129.240.65.2#53(129.240.65.2)
;; WHEN: Thu Sep  9 10:38:00 2004
;; MSG SIZE  rcvd: 162
kuusi%

Dette forklarer blant annet at DNS serveren 129.240.65.2 har svart på forespørselen, og at serverne nn.uninett.no, ifi.uio.no og nissen.uio.no er serverne som kjenner det endelige svaret. Teksten viser også at maskinen glitnir.ifi.uio.no har IP addressen (IN A) 129.240.65.16 og at dette navnet er et såkalt kanonisk navn til aliasnavnet www.ifi.uio.no

Vi kan også foreta såkalte revers-oppslag, dvs. slå opp en adresse og få navnet knyttet til denne adressen. Til dette brukes opsjonen -x.

kuusi% dig +short -x 129.240.64.16
glitnir.ifi.uio.no.

Den lange versjonen ser slikt ut:

kuusi% dig -x 129.240.64.16
; <<>> DiG 9.2.1 <<>> -x 129.240.64.16
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38116
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 2

;; QUESTION SECTION:
;16.64.240.129.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
16.64.240.129.in-addr.arpa. 3600 IN     PTR     glitnir.ifi.uio.no.

;; AUTHORITY SECTION:
64.240.129.in-addr.arpa. 3600   IN      NS      nissen.uio.no.
64.240.129.in-addr.arpa. 3600   IN      NS      nn.uninett.no.
64.240.129.in-addr.arpa. 3600   IN      NS      ifi.uio.no.

;; ADDITIONAL SECTION:
nn.uninett.no.          2696    IN      A       158.38.0.181
ifi.uio.no.             3600    IN      A       129.240.64.2

;; Query time: 2 msec
;; SERVER: 129.240.65.2#53(129.240.65.2)
;; WHEN: Thu Sep  9 10:46:05 2004
;; MSG SIZE  rcvd: 168

Det som skjer i dette oppslaget er at dig finner navn i to trinn. For å kunne gjøre det nødvendige oppslaget mellom Internett-adresse og -navn, er det nødvendig med et eget domene IN-ADDR.ARPA. Problemet ved konvertering denne veien er at det ikke er noen direkte sammenheng mellom Internett-adresse og Internett-navn. IN-ADDR.ARPA er delt i subdomener avhengig av den hierarkiske Internett-adressen.

For å kunne spørre om navnet til maskinen med adresse 129.240.64.16, må man først sette domenet 64.240.129.IN-ADDR.ARPA og deretter spørre om 16, eller direkte spørre om 16.64.240.129.IN-ADDR.ARPA

>Hvis det oppstår en feil, så gir >dig +short ingen tilbakemelding. For eksempel med bruk av ugyldig adresse gir +short

kuusi% dig +short nothere.ifi.uio.no
kuusi%

mens det fulle svaret er:

kuusi% dig nothere.ifi.uio.no
; <<>> DiG 9.2.1 <<>> nothere.ifi.uio.no
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 39948
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;nothere.ifi.uio.no.            IN      A

;; AUTHORITY SECTION:
ifi.uio.no.             3600    IN      SOA     bestemor.ifi.uio.no. hostmaster.ifi.uio.no. 200409083 1800 900 960000 86400

;; Query time: 3 msec
;; SERVER: 129.240.65.2#53(129.240.65.2)
;; WHEN: Thu Sep  9 10:55:24 2004
;; MSG SIZE  rcvd: 92
kuusi%

dig har mange andre parametere som hjelper deg å finne annen informasjon, slik som å finne ut til hvilke maskiner email er levert når du sender til en adresse. For eksempel, for å finne ut hvilken maskin som email til studenter.inf3190@ifi.uio.no leveres til, kan du utføre:

kuusi% dig +short mx ifi.uio.no
33 ulrik.uio.no.
10 smtp.uio.no.
15 pat.uio.no.
kuusi%

Dermed finner du ut at tre mailservere tar imot mail til IFI brukere, og at ulrik.uio.no er første valg siden presedens-verdien 33 er den høyeste

dig -h gir en kort forklaring på andre mulige parametere som kan brukes med programmet.

ping

/local/bin/ping er et program som kan brukes for å sjekke om en maskin har forbindelse med nettverket. ping benytter seg i likhet med traceroute også av ICMP. ICMPs ECHO-REQUEST sendes for å få en ECHO-RESPONSE fra maskinen eller ruteren som pinges ping-pakkene har en IP og en ICMP header.

ping kan benyttes til å isolere feil, dvs. finne ut hvor langt man kan nå i nettet før man ikke får noen respons. Dersom man f.eks. ikke klarer å pinge en maskin på et nabonett, så er det enten feil med rutingen på din egen maskin, problemer med ruteren mellom de to subnettene eller at maskinen som pinges ikke svarer.

Publisert 16. jan. 2012 15:43