Implementering af NAT i XORP projektet

Relaterede dokumenter
Application Note: AN-Z05

Cisco ASA Vejledning. Opsætning af DMZ-zone

VLAN. - mange logiske net på ét fysisk! Netteknik 1

H.323. Protocol suite. En ITU standard til VoIP

Hvis du ønsker at tilgå Internet trådløst, skal du selv anskaffe dette udstyr. Det kaldes ofte et access point eller en trådløs router.!

VLAN, Trunk & VTP. VLAN: Virtual Local Area Network

Programmering af CS7050 TCP/IP modul

Cisco ASA Introduktion & vejledning. Opsætning af DMZ-zone

Bilag 1a. Produktspecifikation for Adgang BSA Kabel-tv net

Basal TCP/IP fejlfinding

VLAN. - mange logiske net på ét fysisk! Netteknik 1

Bilag 1c. Infrastruktur & Kapacitet

VLAN. VLAN og Trunks. Region Syd Grundlæggende netværk

TCP & UDP. - de transportansvarlige på lag 4. Netteknik 1

Internet Protokollen. - IP er arbejdshesten på næsten alle netværk! Netteknik 1

Router U270 funktionsbeskrivelse

IP Modul report / Netværks software manual 1.0 Funktions beskrivelse:

LAB ØVELSE KONFIGURATION AF DHCP PÅ DANSK AF KIM DONNERBORG / RTS

SIP. Session Initiation Protocol. TDC IP telefoni Scale

Infrastruktur i hjemmet og begreber

M A D S L A R S E N, A S G E R B A L L E G A A R D & J O N A S K R O N B O R G R O S K I L D E T E K N I S K E G Y M N A S I U M.

Bilag 1c. Infrastruktur & Kapacitet

IPv6 sameksistens med IPv4. af Laurent Flindt Muller & Jakob Pedersen

VLAN - Virtual Local Area Network

Indholdsfortegnelse: Firewall Erhvervsakademi Midtjylland

Multiguide til C903IP

Datatekniker med programmering som speciale

Ruko SmartAir. Updater installation

Routeren. - og lag 3 switchen! Netteknik 1

NETVÆRKSKURSUS Oktober November jmt

QoS. - prioritering af pakketransporten! Netteknik 1

IPT Netværk. IPT netværks protokoller. TDC IP telefoni Scale

IP version 6. Kapitel 3: IPv6 in Depth Baseret på bogen: Cisco Self-study: Implementing Cisco IPv6 Networks Henrik Thomsen V1.0.

SIP. Session Initiation Protocol TDC IP telefoni Scale. SIP design mål

Datanet Obligatorisk opgave 3: IP og ICMP. René Hardi Hansen Michael Falcke Nilou Anders Bjerg Pedersen Hold september 2007

et netværk, så du kan dele filer og inter netforbindelse.

Internet Protocol (IP)

Introduktion til BGP 4 Border Gateway Protocol version 4

IP routing. - flytter pakkerne effektivt på lag 3! Netteknik 1

Før du starter installationen, skal du først kontrollere, at alle de nødvendige dele er der. Æsken skal indeholde:

IP routing. Netteknik 1. Routere er de enheder på netværket som kan flytte IP datapakker mellem forskellige logiske netværk (IP net) Router

Produktspecifikationer Hosted Firewall Version 2.5

Grundopsætning af router.

Deling i Windows. Netteknik 1

b r o a D B a N D R O U t E R 4 p O R t s 1 0 / m b p s

Computer netværk og TCP/IP protokoller. dcomnet 1

IP0027. Brugervejledning ver Side 1 af 5. IP0027 Dansk brugervejledning - tillæg til brugervejledning på CD-rom på engelsk.

CSX 75 Comfort serien

IP adresser. En ip adresse består af en 32bit adresse (dec.) En oktet består af 8 bit. Eller en Byte.

Guide til opsætning og sikring af trådløst netværk.

NemID DataHub adgang. & Doc , sag 10/3365

KURSER INDENFOR SOA, WEB SERVICES OG SEMANTIC WEB

Netværkslaget Rutning og sammenkobling

Delfi Connect. Bruger vejledning 1. TILSLUTNING INSTALLATION MENUSTRUKTUR...4

Computer netværk og TCP/IP protokoller. dcomnet 1

Netværk & elektronik

Bilag 1 Produktspecifikation

Her kan du læse om OSI modellen, og de 7 forskellige lag. Der er en mindre detaljeret beskrivelse udfra hvert lag.

General setup. General konfiguration. Rasmus Elmholt V1.0

Forår Firewalls

Brugermanual. Wolfgang Wi-Fi Repeater

MPLS konfiguration. Scenarie hold 1 & 2

Teknisk beskrivelse til TDC Managed Firewall

Introduktion til Quality of Service

Procedurer for styring af softwarearkitektur og koordinering af udvikling

IP Telefoni. Modul 3

Opsætning af FTP- og webserver 22. januar 2007

Deling i Windows. - via NetBIOS eller Hjemmegruppe! Netteknik 1

1 Introduktion Funktioner 3. 2 Kom godt i gang Pakkens indhold Oversigt over kameraet 5. 3 Installation 6

Netværks opsætning af IP modulet:

Det Danske Filminstitut byder velkommen til vores UDP Server. Pligtaflevering - Version 2.0

Cisco ASA Vejledning. Opsætning af Site-to-Site VPN

Bruger Manual PC Valtronics Udendørs Kamera - Windows system

DM536. Rapport og debug

PNI/GRN - 1. kursusgang

Tildel fast IP adresse til BC9xx0 via System Manageren

VPN-klienten SecureClient for TDC Managed Firewall

SYSTEMDOKUMENTATION AF POC

Bilag 1b Infrastruktur & Kapacitet

IPv6 Hvor er vi i dag? Erik Løth el@nworks.dk

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Workshops om netværk

Quality of Service. - en introduktion! IP telefoni kursus

Undervisningen, H3. Hovedforløb 3. Total antal Lektioner. Operativsystemer 3. Netværk 3. Projekt. Områdefag: Netværk

Projektopgave. Byg et netværk til gruppens nye firma!

SSSystems.local. Netværk. Sikkerhed. Webserver

Cipherlab CPT8x00 med Ethernet Cradle

ADIS, WS og Meta Service

WEB Server og Ethernet Data Logger Lonbox PID4000

Netteknik 1 Byg et netværk med SO-HO router Øvelse

Netværksmålinger. - en introduktion! Netteknik. TCP - IP - Ethernet

har jeg hentet nedenstående anmeldelse af et godt program til

Netkit Dokumentation

Bruger Manual PC Valtronics IP Kamera - Windows system

Policing og Shaping Kapitel 4

-Krav til klinikkens udstyr (hardware/netværk mm.)

Sider og segmenter. dopsys 1

Oversigts billedet: Statistik siden:

UniLock System 10. Manual til COM Server CV72. Version 1.0 Revision

Transkript:

Specialeforsvar Implementering af NAT i XORP projektet af Kristen Nielsen kristen@diku.dk, krn@krn.dk Datalogisk Institut ved Københavns Universitet. Tirsdag den 25. marts 2008 Dias 1 af 37

Hvad går XORP NAT projektet ud på? Implementere NAT (netværks adresse oversættelse) i XORProuterprojektet (extensible Open Router Project). Finde en mulig metode for at indbygge NAT support i XORP. Lave et konfigurationssprog til konfiguration af NAT delen i XORP routeren. Implementere dele af løsningen. Evaluering af løsningen. Dias 2 af 37

Resultatet af XORP NAT projektet: Generel model (arkitektur) for NAT support i XORP er formuleret og besluttet. Model og terminologi for konfigurationssprog for XORP NATmodulet er formuleret og implementeret. Forslag til reduceret syntaks til specifikation af IPadressedefinitioner, protokoller og porte. Design af XORP NAT modulet. Implementering af det meste af XORP NAT modulet. (POC) Evalueret løsningen. Dias 3 af 37

Program Præsentation af specialet (45 min) Del 1. Indledning Del 2. Detaljeret gennemgang af udvalgte dele af projektet Del 3. Evaluering og konklusion Kort pause Spørgsmål Dias 4 af 37

Program Præsentation af specialet (45 min) Del 1. Indledning Kort introduktion til: XORP projektet og NAT implementationen Realms, NAT vs. NAPT, basal NAT funktion, IP adresser, protokoller, porte, offentlige vs. private IP adresser. Del 2. Detaljeret gennemgang af udvalgte dele af projektet Del 3. Evaluering og konklusion Kort pause Spørgsmål Dias 5 af 37

Program Præsentation af specialet (45 min) Del 1. Indledning Del 2. Detaljeret gennemgang af udvalgte dele af projektet Udvidelsen af XORPs konfigurationssprog med support for NAT Kort om implementationen af XORP NAT modulet Del 3. Evaluering og konklusion Kort pause Spørgsmål Dias 6 af 37

Program Præsentation af specialet (45 min) Del 1. Indledning Del 2. Detaljeret gennemgang af udvalgte dele af projektet Del 3. Evaluering og konklusion Mine bidrag De valgte løsninger Implementeringen Ydelsesaspekter Konklusionen Kort pause Spørgsmål Dias 7 af 37

Program Præsentation af specialet (45 min) Del 1. Indledning Kort introduktion til: XORP projektet og NAT implementationen Realms, NAT vs. NAPT, basal NAT funktion, IP adresser, protokoller, porte, offentlige vs. private IP adresser. Del 2. Detaljeret gennemgang af udvalgte dele af projektet Del 3. Evaluering og konklusion Kort pause Spørgsmål Dias 8 af 37

Introduktion: Overordnet arkitektur for XORP projektet XORP processer taler sammen via XRLs Multiprocess og enkelt trådet arkitektur FEA er interfacet imod IP laget. Resten er O.S. uafhængig kode Dias 9 af 37

Introduktion: overordnet arkitektur for XORP NAT projektet XORP afvikles som brugerapplikation. FreeBSD natdprogrammet er selve NAT funktionen. FreeBSDs IPdivert anvendes til at dirigere trafik til/fra kernen og natd. Dias 10 af 37

Introduktion: Realms NAT enheder oversætter IPadresser imellem 2 IP realms. Kun 1 realm på hver side af NATenheden. Flere IP net pr. realm. Dias 11 af 37

Intro: IP adresser (offentlige / private) Offentlige IP (unicast)adresser, som må anvendes på Internettet. 0.0.0.0 223.255.255.255 (undtaget de nævnte private IP adresser) Private IP (unicast)adresser, kan anvendes mange steder, men aldrig på Internettet. 10.0.0.0 10.255.255.255 172.16.0.0 172.31.255.255 192.168.0.0 192.168.255.255 Dias 12 af 37

Introduktion: TCP, UDP og portadresser Hver IP adresse har 2 typer serviceadresser der kaldes porte. Disse kaldes TCP og UDP porte og der er 65.536 af hver slags. (fra 0 til 65535) TCP: Transmissions kontrol protokol UDP: User datagram protocol Dias 13 af 37

Introduktion: IP pakker IP pakker består hovedsageligt af: Afsenderadresse, protokol og portnummer Modtageradresse, protokol og portnummer Data som sendes til modtageren Dias 14 af 37

Introduktion: NAT vs. NAPT (netværksadresse og portoversættelse) De fleste som kender til NAT har mødt dette i forbindelse med deling af en Internetforbindelse imellem flere computere. Der findes 2 grundlæggende typer: NAT og NAPT. I daglig tale siger vi NAT men vi mener (og anvender) oftest NAPT. NAT oversætter kun IP adresser NAPT oversætter både IP adresser og TCP/UDP portnumre Dias 15 af 37

Introduktion: 3 typer NAT/NAPT. Statisk NAT. Oversætter adresser udfra en (forud)konfigureret tabel. Anvendes oftest ved oversættelse af IP strømme oprindende fra ydersiden af NAT funktionen. Kaldes også 1:1 oversættelse. Dynamisk NAT. Opretter og nedlægger automatisk adresseoversættelsesregler udfra regler i konfigurationen. Anvendes hovedsageligt ved oversættelse af IP strømme oprindende fra indersiden af NAT funktionen Loadsharing NAT (LS NAT). Fordeler henvendelser til en fælles serviceadresse på ydersiden imellem en række foruddefinerede servere placeret på indersiden. Dias 16 af 37

Introduktion: NAT basal funktion. NAT modulet oversætter P y afsenderadressen til @ A udgående, og modtageradressen @ A til P y indgående. Et særligt tilfælde er når NAT modulet også oversætter @ X værtens IPadresse til P H i det private IP område. Dvs. både modtager og afsenderadresser oversættes. IP verdenen på den modsatte side af NAT modulet skjules dermed helt. Dias 17 af 37

Program Præsentation af specialet (45 min) Del 1. Indledning Del 2. Detaljeret gennemgang af udvalgte dele af projektet Udvidelsen af XORPs konfigurationssprog med support for NAT Kort om implementationen af XORP NAT modulet Del 3. Evaluering og konklusion Kort pause Spørgsmål Dias 18 af 37

XORP NAT konfigurationssprog 1/7 IP definitioner for inside og outside siden af NAT modulet består af 4 dele: Realm, IP, protokol og porte med flere varianter for nogle af parametrene: IP Realm name adresse IP subnet (2) IP adresse interval (2) Netværks interface + Vif (2) Protokol (TCP/UDP) Port nummer (2) Port interval (2) Port liste (2) Der kan være 1 eller flere af sådanne definitioner på hver side af NAT modulet, alle definitioner, på en side, skal tilhøre samme realm. Dias 19 af 37

XORP NAT konfigurationssprog 2/7 Den implementerede version nat { static nat { map <id> { inside <id> {<ip def>} outside <id>{<ip def>} }} dynamic nat { map <id> { inside <id> {<ip def>} outside <id>{<ip def>}}} } ls nat { map <id> { inside <id> {<ip def>} outside <id>{<ip def>}}} Dias 20 af 37

XORP NAT konfigurationssprog 3/7 Den implementerede version inside <id> { /* outside har samme format */ realm: <realm:txt> ip address: <ip:ipv4> ip range: <ipfrom:ipv4> <ipto:ipv4> ipnet: <ipnet:ipv4net> interface: <interface:txt> IP def vif: <vif:txt> protocols: <protocols:txt> } Dias 21 af 37

XORP NAT konfigurationssprog 4/7 Den implementerede version protocols: <protocols.txt> Argumentet er et sprog der beskriver protokoller og porte (subprotokoller). Eks: protocols: tcp: 22 23, 80, udp: 53 Ovenstående specificerer tcp protokol port 22,23 og 80 og udp protokol port 53 Dias 22 af 37

XORP NAT konfigurationssprog 5/7 Forslag til optimeret IP def syntaks IP adresse: 10.10.10.10, IP net: 10.10.10.0/24, IP interval: 10.10.10.10.. 10.10.10.15 Protokol og port: tcp: 20 23, 80 IP, protokol og porte: 10.10.10.0/24: tcp: 20 23, 80 eksempel 1 inside <id> { realm: <id> ip: <IP def> } eksempel 2: inside <id> { ip: realm: <realm id> ip: <IP def> } Dias 23 af 37

XORP NAT konfigurationssprog 6/7 Forslag til reduceret konfigurationssprog Implementerede version /* inside og outside har samme format */ inside homenet { realm: inside ip address: 10.10.10.10 ip range: Foreslåede ny version /* inside og outside har samme format */ inside homenet { realm: inside ip: 10.10.10.10: tcp: 22 } ipnet: interface: vif: protocols: tcp: 22 } Dias 24 af 37

XORP NAT konfigurationssprog 7/7 Opsummering Sproget er designet så det passer til alle NAT moduler. Det store antal konfigurationsparametre på hver side af NAT modulet bør reduceres. Der er foreslået en reduceret syntaks der gør det muligt at udtrykke tilsvarende rige konfigurationer på kun få linier. NAT tabel timeouts er ikke suporteret i sproget. Dias 25 af 37

Implementering af XORP NAT modulet 1/4 NAT modulet er en selvstændig process under XORP. Skrevet i C++ (som resten af XORP). Templates til rtrmgr og xorpsh, og xrl interfaces lavet. Undervejs var jeg forbi en række tools: gnu autoconf og automake som skulle kende til NAT delen af XORP. Dias 26 af 37

Implementering af XORP NAT modulet 2/4 overblikstegning kommandoflow Dias 27 af 37

Implementering af XORP NAT modulet 3/4 Dias 28 af 37

Implementering af XORP NAT 4/4 Opsummering XRL og datastoragedelen er implementeret og testet. Alt er integreret med XORPs autoconfig og build system. XORP NAT modulet er testet selvstændigt, kun testet lidt sammen med resten af XORP systemet. Dias 29 af 37

Program Præsentation af specialet (45 min) Del 1. Indledning Del 2. Detaljeret gennemgang af udvalgte dele af projektet Del 3. Evaluering og konklusion Mine bidrag De valgte løsninger Implementeringen Ydelsesaspekter Konklusionen Kort pause Spørgsmål Dias 30 af 37

Evaluering og konklusion 1/6 Mine bidrag Analyse af opgaven og XORP Fundet en generel løsning der rummer samspillet med fremtidige NAT moduler. (f.eks. fra nye O.S.) Implementeret løsningen til et vist niveau, men før det bliver open source software med god kvalitet skal det færdiggøres, pudses af og testes grundigere. Dias 31 af 37

Evaluering og konklusion 2/6 De valgte løsninger Generelle løsninger er søgt i fremfor for ad hoc løsninger overalt hvor dette var muligt. NAT modulet implementeret som et selvstændigt XORP modul. Konfigurationen af NAT modulet er løst med et mix af eksisterende XORPkonfigurationselementer og ved tilføjelse af et sprog for protokoller og porte. Forslag til udvidelse af dette til at dække hele IP delen af NATkonfigurationen. Generelt udvidbar kode der muliggør udvidelse f.eks. med nye protokoltyper og med henblik på genanvendelse andre steder i XORP hvis projektet vælger dette. Dias 32 af 37

Evaluering og konklusion 3/6 De valgte løsninger NAT datastorageklassen komprimerer de lagrede portdefinitioner, således at disse altid udlæses i deres mest kompakte form. Realms er indført fordi jeg forventer at XORP/FreeBSD snart får kerne support for virtuelle IP stakke. Indtil da kan realms tildeles default værdier som fastsættes i templaten. F.eks. inside og outside for et NAT modul. Dias 33 af 37

Evaluering og konklusion 4/6 Implementeringen Hensigten at ændre færrest steder i den eksisterende XORP kode base, og have minimale afhængigheder til anden XORP kode. Tilføjelse af ny kode fremfor at tilrette eksisterende kode. Anvende eksisterende templates og værktøjer i XORP, hvor dette er muligt. Muligør let decentral vedligeholelse af koden. Dias 34 af 37

Hvilke komponenter påvirker XORP systemets ydelse? Evaluering og konklusion 5/6 Ydelse af ruteadministration og systemkonfiguration Ydelsen af IP pakkeflow (Rutning, IP divert og NAT) Ydelsesaspekter XORPs effektivitet har kun betydningfor hvor hurtigt en ændring i systemet formidles ud til IPforwarding delen. Værtens Netværkskort, TCP stak og NAT modul er de eneste elementer der har indflydelse på systemets ydelse rent rutnings og NAT mæssigt. Effektiviteten afhænger derfor udelukkende af værtssystemets ydelse. Dias 35 af 37

Projektet har været en succes. Evaluering og konklusion 6/6 Konklusionen Der er fundet en god generel løsning Den opfylder de stillede krav. Der er del løsninger der rækker videre end vores brug, hvis projektet ønsker det. Punkter hvor jeg er mindre tilfreds Syntaksen: 10.10.10.0/28: tcp: 22 kunne være pænere. (1. kolon) Syntaksen: tcp: 22 23, 80, udp: 53 (2. komma) Termen sub protokol er det bedste bud jeg kunne finde, men det er ikke helt godt. Heldigvis indgår den ikke direkte i brugerdialoger. Dias 36 af 37

Program Præsentation af specialet (45 min) Del 1. Indledning Del 2. Detaljeret gennemgang af udvalgte dele af projektet Del 3. Evaluering og konklusion Kort pause Spørgsmål Dias 37 af 37

Program Præsentation af specialet (45 min) Del 1. Indledning Del 2. Detaljeret gennemgang af udvalgte dele af projektet Del 3. Evaluering og konklusion Kort pause Spørgsmål Dias 38 af 37

Spørgsmål? Dias 39 af 37

Program The END (og forfriskninger) Dias 40 af 37

Statisk NAT (ikke NAPT) Dias 41 af 37

Statisk NAPT (kort) Dias 42 af 37

Statisk NAPT (manglende oversættelsesregel) Dias 43 af 37

Dynamisk NAT/NAPT Dias 44 af 37

Dynamisk NAT/NAPT Dias 45 af 37

Load sharing NAT/NAPT 1/2 Dias 46 af 37

Load sharing NAT/NAPT 2/2 Dias 47 af 37

Introduktion: IP router Dias 48 af 37

Introduktion: IP router Dias 49 af 37

Analyse af andre NAT implementationer. 1/3 Cisco, Juniper, FreeBSD natd. Analyse af: Hvor er NAT funktionen placeret i routeren? Er det muligt (og en fordel) med mere end 2 NAT interfaces (sider) per NAT enhed? Få inspiration fra konfigurationssprogene Åbenlyse fordele/begrænsninger ved hver enkelt implementation Dias 50 af 37

Analyse af andre NAT implementationer. 2/3 En router med indbygget NAT Hvor sidder den præcis. Cisco og FreeBSD definerer begge at NAT delen sidder imellem det udvendige interface og rutningsfunktionen:(juniper nævner ikke noget om dette) Dias 51 af 37

Analyse af andre NAT implementationer. 3/3 Ingen af de valgte versioner har mulighed for mere end 2 sidet NATinterfaces. Sprogforskelle Cisco: Tagger interfaces med inside og outside, god support for time out indstillinger i sproget (ved time out fjernes NAT tabel regler) Juniper: Anvender kun IP definitionen til dette. FreeBSD: Har LS NAT som den eneste af de 3. Er meget begrænset mht. konfigurerbarhed ved dynamisk nat. Dias 52 af 37

XORP NAT konfigurationssprog 6/9 Forslag til forbedringer Nødvendigt med mange parametre per NAT interface. Muligt at reducere antallet af parametre per NAT interface ved at anvende en defineret syntax repræsenteret i en tekststreng. Fortolkning i NAT modulet er nødvendig for at udtrække konfigurations data og type informationen. Dias 53 af 37

XORP NAT konfigurationssprog 1/8 NAT moduler har 2 sider vi kalder dem hhv inside og outside. Mange mulige parametre på hver side af NAT modulet. Dias 54 af 37

Implementering af XORP NAT konfigurationsdatalager 4/5 Dias 55 af 37

Program The END Dias 56 af 37