TLT-2600 Verkkotekniikan jatkokurssi NAT ja NAT traversal Heikki Vatiainen <hessu@cs.tut.fi> TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 1 Network Address Translator NAT lyhyesti RF 1631 The IP Network Address Translator (NAT), toukokuu 1994, 10 sivua Uusi versio RF 3022 Traditional IP Network Address Translator (Traditional NAT), tammikuu 2001, 16 sivua RF 1631 määritteli osoitemuunnoksen (NAT) RF 3022 laajentaa muunnoksen koskemaan myös TP- ja UDPportteja: Network Address Port Translation (NAPT) RF 3022: Pelkästään osoitemuunnoksen tekevä NAT on Basic NAT Ongelmia Se miten NAPT tehdään ei ole tarkasti määritelty P2P-käyttö, esimerkiksi VOIP, on lisännyt painetta saada NATtien takana olevat laitteet toimimaan keskenään (NAT Traversal) TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 2
STUN 1/2 RF 3489 STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs), 47 sivua, maaliskuu 2003 Työn alla päivitys: draft-ietf-behave-rfc3489bis-02.txt Simple Traversal of UDP Through Network Address Translators (NAT) (STUN), 46 s. Menetelmä julkisen IP:n (ja portin) selvittämiseen Osoite- ja porttitietoa voidaan käyttää yhteyksien rakentamiseen suoraan NAT:ien välillä Ongelmia STUN ei ole käyttöjärjestelmän palvelu: jokainen sovellus sisältää STUN-toteutuksen Selvittelyn tulokset eivät aina ole varmoja TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 3 STUN 2/2 STUN jakaa NAT-toteutukset neljään eri luokkaan RF 3489 sisältää menetelmän NAT-toteutuksen luokan selvittämiseen Päivitys poistaa luokittelumenetelmän: syy NAT-toteutusten erilaisuus NAT voi vaihtaa toimintatapaansa esimerkiksi liikenteen perusteella STUN on tarkoitettu vain UDP:lle TP:lle on kehitetty myöhemmin muita menetelmiä (esim. STUNT) TP NAT Traversal on vaikeampi: NAT toteuttaa TP:n tilakoneen TP:lle ja UDP:lle on kehitteillä TURN draft-rosenberg-midcom-turn-08.txt Traversal Using Relay NAT (TURN), 40 sivua TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 4
10.1.1.2 A one NAT 130.230.52.42 130.230.52.43 NAT :100 :101 10.1.1.1 / 130.230.52.99 one NAT eli suppilo-nat Harmaa lähde-ip ja portti kuvataan aina samaan julkiseen IP:hen ja porttiin. Sopivasti katsoen paluuliikenne tulee suppilosta sisään. Tutkimusten mukaan tällä hetkellä yleisin NAT-tyyppi kotikäytössä STUNTin (viimeisellä sivulla) tekijöiden kokeilut http://midcom-p2p.sourceforge.net/ TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 5 B :202 10.1.1.2 A Restricted one NAT 130.230.52.42 130.230.52.43 NAT :100 :101 10.1.1.1 / 130.230.52.99 Restricted one NAT eli rajattu suppilo-nat Harmaa lähde-ip ja portti kuvataan aina samaan julkiseen IP:hen ja porttiin. Lisäksi kohde-ip:istä pidetään kirjaa. NAT ei hyväksy liikennettä kohteeseen muilta kuin B:ltä ja :ltä B 130.230.52.42 130.230.52.43 :202 TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 6
10.1.1.2 A Port Restricted one NAT 130.230.52.42 130.230.52.43 NAT :100 :101 10.1.1.1 / 130.230.52.99 Port Restricted one NAT eli porttirajattu suppilo-nat Kuten edellinen, mutta myös kohdeportista pidetään kirjaa. NAT ei hyväksy liikennettä kohteeseen muilta kuin B:ltä ja :ltä ja ainoastaan niistä porteista joihin A on jo liikennöinyt B :202 TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 7 10.1.1.2 A Symmetric NAT 130.230.52.42 130.230.52.43 130.230.52.99:1001 NAT :100 :101 10.1.1.1 / 130.230.52.99 130.230.52.99:1001 130.230.52.99:2002 Symmetric NAT eli symmetrinen NAT NAT muodostaa kuvauksen lähde- ja kohde-porttien ja osoitteiden perusteella NAT ei hyväksy liikennettä lähteeseen muilta kuin B:ltä ja :ltä ja ainoastaan niistä porteista joihin A on jo liikennöinyt B :202 130.230.52.99:2002 TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 8
NAT-tyyppien vertailua Suora liikennöinti suppilo-nattien välillä on mahdollista Julkinen kuvaus NATin harmaalla puolella olevalle päätepisteelle (IPosoite:portti) on aina sama riippumatta julkisen puolen päätepisteestä Kolmas osapuoli voi kertoa vastapuolille sopivat osoite- ja porttiparit kahdenvälistä kommunikointia varten Pelkkä suppilo-nat ei vaadi juurikaan NATin reittämistä Rajatun ja porttirajatun suppilo-natin tapauksessa molempien puolien pitää avata reikä, eli liikennöidä toisiaan kohti Symmetrinen NAT Sopivia kahdenvälisiä osoite- ja porttipareja ei voida selvittää kolmannen osapuolen avulla TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 9 STUN-protokolla STUN-asiakas selvittää STUN-palvelimen avulla NATin tyypin, sekä julkiset kuvaukset osoite- ja porttiparille Aloitus tapahtuu sopimalla jaettu salaisuus myöhempien viestien eheystarkistusta varten Shared Secret Request, SS Response ja SS Error Response Myöhemmät viestit Binding Request, Binding Response ja Binding Error Response Viestien hyötykuorma kulkee TLV-muotoisissa attribuuteissa Yksinkertaistettu protokollan toiminta on esitetty seuraavana TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 10
STUN-protokolla W:X A1:P1 -> W:X W:X -> A1:P1 n:kpl NATteja Bind Req: HANGE_REQUEST 0:0 Y:Z -> A1:P1 A1:P1 -> Y:Z Bind Rsp: HANGED_ADDRESS A2:P2, MAPPED_ADDRESS Y:Z A1:P1 A2:P2 STUN server Oletetaan jaetun salaisuuden noutamisen jo tapahtuneen STUN-asiakas tietää nyt julkisen päätepisteensä (Y:Z) sekä STUN-palvelimen toisen julkisen osoitteen ja portin (A2:P2) Mikäli W:X ei ole Y:Z, n > 0 TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 11 STUN-protokolla W:X A2:P2 -> W:X W:X -> A1:P1 n:kpl NATteja Bind Req: HANGE_REQUEST 1:1 Y:Z -> A1:P1 A2:P2 -> Y:Z Bind Rsp: HANGED_ADDRESS A2:P2, MAPPED_ADDRESS Y:Z A1:P1 A2:P2 STUN server Mikäli n > 0, selvittää rajoittavimman NATin tyypin Mikäli vastaus saapuu, kysessä on rajoittamaton suppilo-nat (one NAT) Kuka tahansa voi lähettää A:lle liikennettä julkisen päätepisteen Y:Z kautta Mikäli vastaus ei saavu, kysessä on symmetrinen tai jollain tapaa rajoitettu suppilo-nat TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 12
STUN-protokolla W:X A2:P2 -> W:X W:X -> A2:P2 n:kpl NATteja Bind Req: HANGE_REQUEST 0:0 Y2:Z2 -> A2:P2 A2:P2 -> Y2:Z2 Bind Rsp: HANGED_ADDRESS A2:P2, MAPPED_ADDRESS Y2:Z2 A1:P1 A2:P2 STUN server Mikäli Y2 ja Z2 ovat eri kuin ensimmäisen viestinvaihdon Y ja Z, kyseessä on Symmetrinen NAT Symmetrinen NAT varaa jokaiselle kohde- ja lähde- osoite- ja porttiparille oman kuvauksensa Mikäli Y2 ja Z2 ovat samat kuin ensimmäisen kerran Y ja Z, kyseessä on jollain tapaa rajoitettu suppilo-nat :n harmaa päätepiste ei ole muuttunut, joten kyseessä on suppilo-nat TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 13 STUN-protokolla W:X A1:P2 -> W:X W:X -> A1:P1 n:kpl NATteja Bind Req: HANGE_REQUEST 0:1 Y:Z -> A1:P1 A1:P2 -> Y:Z Bind Rsp: HANGED_ADDRESS A2:P2, MAPPED_ADDRESS Y:Z A1:P1,P2 A2:P2 STUN server Mikäli vastaus saapuu perille, kyseessä on rajoitettu suppilo-nat (Restricted one NAT) on liikennöinyt osoitteeseen A1, joten kuvaus on olemassa Mikäli vastaus ei saavu perille, kyseessä on porttirajoitettu suppilo-nat (Port Restricted one NAT) Vastaus ei saavu perille, koska ei ole liikennöinyt A1:n porttiin P2 TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 14
STUN käytössä RF:n tietoturvaan liittyvät huomautukset kannattaa lukea Useat SIP-toteutukset käyttävät STUN-protokollaa Skype ja Google talk käyttävät joko STUN-protokollaa tai sen johdannaisia TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 15 NAT traversal tulevaisuudessa Useat IETF:n työryhmät määrittelevät NATin käyttöön liittyviä asioita STUN on ongelmistaan huolimatta valmis ja käytössä. Muut ovat vasta tulossa. BEHAVE määrittelee STUNin uutta versiota sekä vaatimuksia NATin toimimiseen mahdollisimman UDP-yhteensopivasti This working group proposes to generate requirements documents and best current practices to enable NATs to function in as deterministic a fashion as possible. MIDOM (mahdollinen TURN-protokolla) This working group will focus its attention on communication with firewalls and network address translators (including translation between IPv6 and IPv4). TURN ei ole vielä MIDOM-työryhmän drafti TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 16
NAT traversal tulevaisuudessa MMUSI draft-ietf-mmusic-ice-06.txt Interactive onnectivity Establishment (IE): A Methodology for Network Address Translator (NAT) Traversal for Offer/Answer Protocols, 82 sivua IE käyttää sekä STUN- että MIDOM-työryhmän TURN-protokollaa Painetta NATtien läpäisyyn on tullut viime aikoina Suuri osa työstä on statuksella Work in progress. TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 17 NAT Traversal ja TP TP-yhteydet suoraan NAT-laitteiden ylitse ovat vielä huonosti toteutettu ja ymmärretty alue NAT-laitteet toteuttavat TP:n tilakoneen UDP-yhteydet kierrätetään (garbage collect) ajastimen perusteella TP-yhteyksissä seurataan kolmitiekättelyä sekä FIN/RSTsegmenttejä Toteutuksissa on eroja TP:n kolmitiekättely aiheuttaa ongelmia SYN, SYN/AK, AK SYN/AK ei tule takaisin koska edes SYN ei pääse perille Lupaavimmat menetelmät lähettävät yhdestä suunnasta SYNsegmentin (joka ei pääse perille) ja vastakkaisesta suunnasta tämän jälkeen SYN-segmetin, joka käyttää ensimmäisen SYNin aiheuttamaan reikää. TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 18
STUNT STUNT Simple Traversal of UDP Through NATs and TP too (STUNT) http://nutss.gforge.cis.cornell.edu/stunt.php Kehittäjänä mm. Paul Francis, NAT-RF:n kirjoittaja S. Guha and P. Francis. "haracterization and Measurement of TP Traversal through NATs and Firewalls," in Proceedings of Interet Measurement onference (IM), Berkeley, A, Oct 2005. NAT-toteutusten vertailua TP:n kannalta NAT-traversal-toteutusten vertailua http://nutss.gforge.cis.cornell.edu/publications.php TLT-2600 Verkkotekniikan jatkokurssi Tietoliikennetekniikan laitos 19