{"id":833,"date":"2004-06-18T00:00:00","date_gmt":"2004-06-17T22:00:00","guid":{"rendered":""},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T22:00:00","slug":"833","status":"publish","type":"post","link":"https:\/\/www.vialattea.net\/content\/833\/","title":{"rendered":"Vorrei sapere che cosa \u00e8 e come funziona un server NAT.\r\nGrazie."},"content":{"rendered":"<p><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><\/p>\n<p>Il termine NAT (<b>N<\/b>etwork <b>A<\/b>ddress <b>T<\/b>ranslation)<br \/>\nindica non tanto un tipo di server, ma un servizio svolto da un router.<br \/>\n<\/font><\/p>\n<p><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Il &#8220;router&#8221; \u00e8 un dispositivo di rete necessario per<br \/>\ninterconnettere due reti locali (LAN) fra loro; l&#8217;insieme delle LAN<br \/>\ninterconnesse costituisce la<br \/>\nrete Internet.  In particolare il router ha lo scopo<br \/>\ndi instradare i messaggi IP in modo che possano giungere a<br \/>\ndestinazione (si vedano anche le risposte relative alle <a href=\"http:\/\/www.vialattea.net\/esperti\/php\/risposta.php?num=8409\"><br \/>\napparecchiature di rete<\/a> ed al <a href=\"http:\/\/www.vialattea.net\/esperti\/php\/risposta.php?num=590\"> protocollo<br \/>\nTCP\/IP<\/a>).<\/p>\n<p><\/font><\/p>\n<p><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Nei casi pi\u00f9 semplici una LAN ha una sola via di interconnessione con<br \/>\nil resto di Internet, costituita da un router che ha un&#8217;interfaccia<br \/>\nverso la LAN ed una verso un provider.<br \/>\nIn questo caso la funzione del<br \/>\nrouter \u00e8 abbastanza semplice: tutti i messaggi che non sono<br \/>\nindirizzati ad un nodo interno della LAN (che si riconoscono dalla prima parte<br \/>\ndell&#8217;indirizzo) vengono inviati al router che, semplicemente, li manda<br \/>\nal router corrispondente, il quale a sua volta dovr\u00e0 decidere il passo<br \/>\nsuccessivo verso la destinazione finale.<br \/>\n<\/font><\/p>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Per<br \/>\ncomprendere la funzione NAT occorre aggiungere un ulteriore<br \/>\nprecisazione:<br \/>\nogni messaggio TCP\/IP \u00e8 caratterizzato da un specifica di provenienza<br \/>\ned una specifica di destinazione. Ciascuna di queste \u00e8 composta da due<br \/>\nparti:<br \/>\nl&#8217;indirizzo IP che identifica il nodo di rete (solitamente<br \/>\nrappresentato<br \/>\nmediante quattro cifre decimali comprese fra 0 e 255, ad esempio:<br \/>\n195.204.33.12) ed il <b>port<\/b>, che identifica, all&#8217;interno del particolare<br \/>\nnodo di rete, quale programma riceve effettivamente il messaggio.<br \/>\n<\/font><\/p>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Nel funzionamento base della rete Internet,<br \/>\nciascun nodo viene univocamente identificato mediante il suo numero<br \/>\nIP<a href=\"http:\/\/www.vialattea.net\/esperti\/php\/risposta.php?num=4788#note\"><sup>1<\/sup><\/a>,<br \/>\nche deve essere assegnato da un&#8217;apposita autorit\u00e0 e che non pu\u00f2<br \/>\nessere contempraneamente usato da alcun altro nodo in nessun punto della rete.<br \/>\n<\/font><\/p>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Con l&#8217;enorme sviluppo dell&#8217;uso della rete Internet degli ultimi 15 anni si<br \/>\n\u00e8 presto presentato il problema della limitatezza degli indirizzi IP.<br \/>\nI possibili indirizzi diversi rappresentabili sono infatti meno di 4 miliardi<br \/>\ne tenuto conto che per le LAN devono essere assegnati blocchi<br \/>\ndi indirizzi con numero di nodi che sono potenze di 2, ne<br \/>\nsono<br \/>\neffettivamente disponibili assai di meno. In attesa che si diffonda la versione<br \/>\naggiornata dei protocolli di rete (la IPV6 o Internet 2) occorreva trovare un<br \/>\nmodo per utilizzare meglio gli indirizzi disponibili.<br \/>\nA questo scopo sono state introdotte le funzioni NAT dei router.<br \/>\n<\/font><\/p>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">La funzione NAT consiste nel &#8220;mascherare&#8221; dietro un unico indirizzo IP<br \/>\nun&#8217;intera LAN.<br \/>\nIl meccanismo di funzionamento \u00e8<br \/>\npiuttosto<br \/>\nsemplice: a tutti i nodi della LAN vengono assegnati numeri in modo<br \/>\narbitrario, quindi anche utilizzando insiemi di numeri gi\u00e0 utilizzati da altre<br \/>\nLAN. All&#8217;interno della LAN questi numeri funzionano<br \/>\nperfettamente: i nodi sono in grado di  comunicare fra loro usando questi<br \/>\nindirizzi. Il problema nasce quando un nodo interno alla LAN deve<br \/>\ncomunicare con l&#8217;esterno: il suo indirizzo entrerebbe infatti in conflitto con<br \/>\nqualche altro nodo di rete che usa lo stesso numero. Il router allora effettua<br \/>\nuna &#8220;traduzione dell&#8217;indirizzo&#8221;, ovvero cambia la specifica di provenienza<br \/>\ndell&#8217;indirizzo assegnando un nuovo numero di port (che non sia gi\u00e0<br \/>\nutilizzato) e cambiando il numero IP nel numero ufficialmente assegnato.<br \/>\n<\/font><\/p>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Supponiamo ad esempio, che all&#8217;interno della LAN vengano utilizzati numeri del tipo<br \/>\n10.0.0.x (con x fra 1 e 254) e che la stessa LAN sia stata autorizzata ad<br \/>\nusare un indirizzo IP &#8220;ufficiale&#8221;: 177.43.22.121.<\/p>\n<p>Quando il nodo 10.0.0.7 deve comunicare con l&#8217;esterno (ad esempio con il nodo<br \/>\n193.206.214.6) il messaggio da trasmettere avr\u00e0 la forma seguente:<\/p>\n<p><\/font><\/p>\n<blockquote>\n<pre><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Provenienza   Destinazione      Dati<br\/>10.0.0.7:54   193.206.214.6:80  ...............<br\/><\/font><\/pre>\n<\/blockquote>\n<p><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">si noti il numero dopo il segno &#8220;:&#8221; che rappresenta il port (ovvero<br \/>\nl&#8217;identificatore del<br \/>\nprogramma che deve entrare in comunicazione con il programma corrispondente<br \/>\nsul nodo remoto).<br \/>\n<\/font><\/p>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Poich\u00e9 la destinazione \u00e8 esterna alla LAN il messaggio viene<br \/>\ninviato al router.<br \/>\nIl router, prima di inviare il messaggio, applica la funzione NAT cambiando<br \/>\nl&#8217;indirizzo di provenienza in modo<br \/>\nche il messaggio uscente risulta:<\/p>\n<p><\/font><\/p>\n<blockquote>\n<pre><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Provenienza          Destinazione     Dati<br\/><font color=\"red\">177.43.22.121:2077<\/font>   193.206.214.6:80  ...............<br\/><\/font><\/pre>\n<\/blockquote>\n<p><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Il nuovo numero di port (2077) viene scelto a caso ed in modo che sia<br \/>\nunivoco<a href=\"http:\/\/www.vialattea.net\/esperti\/php\/risposta.php?num=4788#note\"><sup>2<\/sup><\/a>.<br \/>\nContemporaneamente il router registra in una sua tabella interna<br \/>\nun&#8217;associazione fra il port 2077<br \/>\ne la specifica di provenienza originale del messaggio (cio\u00e8:<br \/>\n10.0.0.7:54) che servir\u00e0 quando il nodo di destinazione finale<br \/>\nrisponder\u00e0.<br \/>\n<\/font><\/p>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Il nodo destinatario per rispondere al messaggio ricevuto scambia<br \/>\nfra loro i campi di provenineza e di destinazione,<br \/>\nquindi il messaggio di risposta risulta:<\/p>\n<p><\/font><\/p>\n<blockquote>\n<pre><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Provenienza       Destinazione         Dati<br\/>193.206.214.6:80  <font color=\"red\">177.43.22.121:2077<\/font>   ...............<br\/><\/font><\/pre>\n<\/blockquote>\n<p><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Il messaggio quindi viene instradato verso la destinazione e raggiunge il<br \/>\nrouter che, tramite la tabella interna, pu\u00f2 sostituire l&#8217;indirizzo di<br \/>\ndestinazione con quello corretto all&#8217;interno della LAN:<\/p>\n<p><\/font><\/p>\n<blockquote>\n<pre><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Provenienza       Destinazione    Dati<br\/>193.206.214.6:80  10.0.0.7:54     ...............<br\/><\/font><\/pre>\n<\/blockquote>\n<p><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Come si pu\u00f2 comprendere la funzione NAT del router rende completamente<br \/>\ntrasparente ai due nodi finali della comunicazione il fatto che all&#8217;interno<br \/>\ndella LAN vengono utilizzati numeri del tipo 10.0.0.x che quindi possono essere<br \/>\nutilizzati all&#8217;interno di altre LAN senza alcuna interferenza.<br \/>\nPer quanto riguarda tutta la rete esterna alla LAN tutti i messaggi<br \/>\nsembrano provenire dallo stesso nodo di rete, l&#8217;unico con indirizzo<br \/>\nufficialmente assegnato<\/p>\n<p><\/font><\/p>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">L&#8217;uso di questa tecnica comporta alcuni problemi:<br \/>\n<\/font><\/p>\n<ul><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><\/p>\n<li> Se gli stessi numeri<br \/>\nusati all&#8217;interno della LAN sono assegnati in modo standard ad altri nodi di rete<br \/>\nquesti particolari numeri non possono essere raggiunti dai nodi della nostra<br \/>\nLAN, perch\u00e9 vengono considerati nodi interni.<br \/>\nPer questo motivo le autorit\u00e0 di assegnazione hanno<br \/>\nconcordato di riservare alcuni insiemi di numeri per supportare le funzioni<br \/>\nNAT<a href=\"http:\/\/www.vialattea.net\/esperti\/php\/risposta.php?num=4788#note\"><sup>3<\/sup><\/a><\/p>\n<\/li>\n<li> Poich\u00e9 per l&#8217;accesso ad un servizio offerto da uno<br \/>\nspecifico nodo di rete (ad esempio per accedere al sito Web di un provider)<br \/>\noccorre conoscere sia il numero IP del sito che il port assegnato al<br \/>\nparticolare servizio<a href=\"http:\/\/www.vialattea.net\/esperti\/php\/risposta.php?num=4788#note\"><sup>4<\/sup><\/a>, una rete &#8220;mascherata&#8221;<br \/>\ntramite NAT non \u00e8 adatta a contenere server che debbano essere<br \/>\nutilizzabili dall&#8217;esterno. In altre parole, i nodi che devono<br \/>\nfungere da server non possono avere la specifica di destinazione (Indirizzo<br \/>\nIP e port) generata dinamicamente dal servizio NAT, ma devono averla fissa. Per risolvere<br \/>\nquesto problema \u00e8 necessario che alla LAN vengano assegnati<br \/>\nalmeno due indirizzi in modo ufficiale: uno pu\u00f2 essere usato<br \/>\ncome indirizzo visibile dall&#8217;esterno per un server<a href=\"http:\/\/www.vialattea.net\/esperti\/php\/risposta.php?num=4788#note\"><sup>5<\/sup><\/a>, l&#8217;altro per tutto il<br \/>\nresto delle attivit\u00e0 verso l&#8217;esterno. Anche in questo modo, rimane<br \/>\nil vantaggio che tutti i nodi della LAN che non sono server &#8220;occupano&#8221;<br \/>\nun solo indirizzo IP ufficiale.<\/p>\n<\/li>\n<p><\/font><\/ul>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">L&#8217;uso di tecniche NAT ha anche per\u00f2 un vantaggio significativo:<br \/>\ndato che di fatto rende possibili solo collegamenti che vengono iniziati<br \/>\nda un nodo interno alla LAN verso l&#8217;esterno, e non viceversa (se non nel caso<br \/>\ndei server discusso sopra), i nodi interni della LAN sono automaticamente<br \/>\nprotetti da accessi non autorizzati provenienti dall&#8217;esterno. Il router<br \/>\nsvolge quindi anche, parzialmente, una funzione di tipo &#8220;firewall&#8221;.<br \/>\n<\/font><\/p>\n<\/p>\n<hr\/>\n<p>\n<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><a name=\"note\"><br \/>\n<b>Note<\/b><\/a><br \/>\n<\/font><\/p>\n<\/p>\n<ol><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><\/p>\n<li> Pi\u00f9 precisamente: il numero IP identifica l&#8217;interfaccia<br \/>\ndi rete. Nel caso dei router, che hanno due o pi\u00f9 interfaccie verso<br \/>\nla rete, occorre un numero per ogni interfaccia.<\/p>\n<\/li>\n<li>Il protocollo TCP\/IP prevede 65535 differenti port.\n<\/p>\n<\/li>\n<li> Quindi l&#8217;assegnazione del blocco di indirizzi da usare all&#8217;interno di<br \/>\nuna LAN con NAT non \u00e8 arbitraria, ma conviene utilizzare uno dei<br \/>\nblocchi riservati.<\/p>\n<\/li>\n<li> Anche i numeri di port assegnati a particolari servizi sono<br \/>\nstabiliti a priori. Ad esempio ai server Web viene assegnato<br \/>\nil numero di port 80.<\/p>\n<\/li>\n<li> In questo caso, ovviamente il numero di port non pu\u00f2 essere<br \/>\nassegnato in modo arbitrario e l&#8217;indirizzo di destinazione<br \/>\nall&#8217;interno della LAN deve corrispondere al server,<br \/>\nper cui la funzione NAT consiste nel cambiare<br \/>\nil solo indirizzo IP usando una associazione statica (cio\u00e8 decisa una<br \/>\nvolta per tutte).<\/p>\n<\/li>\n<p><\/font><\/ol>\n<p>\u00a0 <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[&#8230;]<\/p>\n","protected":false},"author":198,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62],"tags":[],"class_list":["post-833","post","type-post","status-publish","format-standard","hentry","category-software"],"_links":{"self":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts\/833","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/users\/198"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/comments?post=833"}],"version-history":[{"count":0,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts\/833\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/media?parent=833"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/categories?post=833"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/tags?post=833"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}