AfterDawn logo

NAT

NAT on lyhenne sanoista Network Address Translation ja se on internetissä (TCP/IP-verkoissa) käytettävissä oleva osoitteenmuunnostekniikka, jonka avulla yhtä julkista IP-osoitetta voi käyttää useampi verkkoa käyttävä laite. Tällöin kaikilla koneilla näkyy sama osoite ulospäin, joka on samalla NAT:ista huolehtivan laitteen IP-osoite.

NAT:ista vastaa yleensä reititin, joka huolehtii siitä, että eri verkkolaitteiden välinen verkkoliikenne ohjataan oikeaan osoitteeseen.

Suurin osa NAT-toteutuksista on PAT-mallisia (Port Address Translation), eli NAT-laite muuttaa datapaketin käyttämän portin ja IP-osoitteen toiseksi. Tämän vuoksi NAT:ista huolehtivan laitteen on pidettävä kirjaa käytetyistä porteista, jotta yksi portti on käytössä vain yhdellä verkon koneella kerrallaan.

NAT:in avulla saavutetaan tavallista parempi tietoturva internetissä, sillä sen avulla NAT:in takana oleviin laitteisiin ei saada suoraan yhteyttä, ellei sitä ole erikseen sallittu tai pyydetty. Tästä tulee myös NAT:in suurin ongelma, eli palvelimien pitäminen ei onnistu suoraa NAT:in kanssa, koska ulkopuoliset tahot eivät voi ottaa oletuksena yhteyksiä NAT:in takana oleviin laitteisiin. Tämän vaikuttaa mm. monien P2P-ohjelmien käyttöön, jolloin se yleensä vaikuttaa tiedonsiirtonopeuksiin hidastaen niitä. Tämän ongelman voi kuitenkin kiertää laittamalla NAT:in asetuksiin porttiohjauksen (Port forwarding), jolloin NAT sallii yhteydet ulkoa päin tiettyyn porttiin ja palvelimen pitäminen onnistuu jälleen normaalisti (NAT siis varaa tietyn portin tietylle verkkolaitteelle).

NAT:ia käytetään tietoturvan lisäksi myös sen takia, että nykyään käytössä oleva IPv4-protokolla tarjoaa vain noin 4 miljardia IP-osoitetta, jotka eivät siis riitä kaikille mahdollisille verkkolaitteille. Koska NAT:in avulla saa yhden IP-osoitteen taakse kätkettyä useamman verkkolaitteen, voidaan verkkoon liittää useampi laite ilman ylimääräisiä IP-osoitteita.

esimerkkejä:
sisäverkossa on kaksi tietokonetta ja pelikonsoli, jotka ovat yhdistetty keskenään ADSL-modeemin kautta, joka toimii samalla reitittimenä.

Ilman NAT:ia jokainen verkon laite saa oman ulkoisen IP-osoitteen, jolloin ulkomaailman kanssa kommunikointi ei tuota ongelmia.

Jos NAT laitetaan päälle, saavat tietokoneet IP-osoitteet 192.168.0.31-33 (eli 192.168.0.31, 192.168.0.32 ja 192.168.0.33, annetut osoitteet vaihtelevat reitittimen mukaan, mutta yleensä käytetään 10.x.x.x- ja 192.168.x.x-osoiteavaruuksia). Reititin saa nyt ainoana laitteena oman internetiin näkyvän IP-osoitteen (tässä esimerkissä 89.166.100.100).

Kun ensimmäinen tietokone hakee joltain web-palvelimelta tiedostoa laittaa sen pyynnön lähettäjän osoitteeksi 192.168.0.31 (koneen oma osoite) ja portiksi 2020 (ohjelman satunnaisesti valitsema portti) ja kohteeksi tulee 64.233.183.147 (Googlen IP-osoite) ja portiksi 80 (oletus web-palvelimen portti). Sitten tietokone siirtää paketin reitittimelle, joka muuttaa lähettäjän osoitteeksi 89.166.100.100 ja portiksi 3151 (satunnaisesti valittu vapaa portti PAT-taulussa), jonka jälkeen se lähettää paketin eteenpäin. Kun web-palvelin vastaa takaisin, muuttaa reititin vastaanottajan osoitteeksi 192.168.0.31 ja portiksi 2020, jonka jälkeen se ohjaa paketin tietokoneelle.

Vastaavasti toinen tietokone voi tehdä samaan aikaan vastaavan pyynnön (lähettäjän osoite 192.168.0.32 ja portti 2020), jolloin reititin muuntaa lähettäjän osoitteeksi 89.166.100.100 ja portiksi 3152. Koska reititin käyttää eri portteja kuin itse tietokoneet, voi tietokoneilla käyttää samoja palveluita samaan aikaan ilman ongelmia.

Koska toista tietokonetta käytetään myös web-palvelimena, asetetaan sille porttiohjaus, jotta palvelimeen pääsee käsiksi myös ulkopuolelta. Nyt kaikki ulkoa päin reitittimelle (osoite 89.166.100.100) porttiin 80 tuleva liikenne ohjataan osoitteelle 192.168.0.32 porttiin 80 (ohjattavat portit voi yleensä valita vapaasti, eli porttiin 443 tulevan liikenteen voi ohjata vaikka tietyn koneen porttiin 2222).

NAT aiheuttaa usein harmaita hiuksia P2P-ohjelmien käyttäjille. Aiheeseen liittyviä kysymyksiä on vastattuna P2P-keskustelualueillamme