<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NAT &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/tag/nat/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.smsoft.it</link>
	<description>consigli settimanali su MacOS, GNU/Linux ed Open Source</description>
	<lastBuildDate>Thu, 23 Feb 2023 15:37:58 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=78414</generator>
	<item>
		<title>Raspberry: come raggiungerlo se non ha un IP pubblico statico</title>
		<link>https://blog.smsoft.it/2016/10/25/raspberry-raggiungerlo-non-un-ip-pubblico-statico/</link>
					<comments>https://blog.smsoft.it/2016/10/25/raspberry-raggiungerlo-non-un-ip-pubblico-statico/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 25 Oct 2016 08:30:56 +0000</pubDate>
				<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[autossh]]></category>
		<category><![CDATA[forward]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[raspberry]]></category>
		<category><![CDATA[remote port forwarding]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tunnel]]></category>
		<guid isPermaLink="false">http://blog.smsoft.it/?p=3545</guid>

					<description><![CDATA[Mi si è presentata una situazione in cui il raspberry (ma potrebbe essere benissimo una linux box GNU/Debian) era in una rete locale non raggiungibile direttamente dall&#8217;esterno e non potendo attivare un port forwarding sul router, non c&#8217;era molto da fare per poterlo rendere raggiungibile dall&#8217;esterno. In questo caso, l&#8217;uso di un tunnel SSH è ... <a title="Raspberry: come raggiungerlo se non ha un IP pubblico statico" class="read-more" href="https://blog.smsoft.it/2016/10/25/raspberry-raggiungerlo-non-un-ip-pubblico-statico/" aria-label="Per saperne di più su Raspberry: come raggiungerlo se non ha un IP pubblico statico">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[<p>Mi si è presentata una situazione in cui il <strong>raspberry</strong> (ma potrebbe essere benissimo una linux box GNU/Debian) era in una rete locale non raggiungibile direttamente dall&#8217;esterno e non potendo attivare un port forwarding sul router, non c&#8217;era molto da fare per poterlo rendere raggiungibile dall&#8217;esterno.</p>
<p>In questo caso, l&#8217;uso di un <strong>tunnel SSH</strong> è l&#8217;ideale, sempre che si disponga di un server linux con IP pubblico da usare.</p>
<p>In pratica la situazione è questa:</p>
<p>raspberry 192.168.1.10<br>router/AP (doppio IP) 192.168.1.1/192.168.10.20<br>router/gateway pubblico 192.168.10.1/61.24.35.76</p>
<p>Pertanto, il raspberry per &#8220;navigare&#8221; passa attraverso il router/AP che a sua volta passa attraverso il router/gateway pubblico.</p>
<p>Raggiungere il raspberry da internet con questa configurazione non è possibile, a meno che non si possa configurare il router/gateway e poi il router/AP per inoltrare i pacchetti diretti verso una determinata porta del router/gateway verso il raspberry.</p>
<p>Abbiamo a disposizione un server linux con IP pubblico, ad esempio il 60.60.60.60.</p>
<p>Cosa possiamo fare?<br>Dal raspberry possiamo avviare un tunnel ssh verso il server linux e &#8220;dirgli&#8221; che se dovessero arrivargli pacchetti su una determinata porta, li deve girare verso il raspberry, tramite il tunnel ssh.</p>
<p>Questa cosa può essere fatta nativamente da SSH attivando un remote port forwarding.</p>
<p>Innanzitutto bisogna <a href="https://blog.smsoft.it/2017/09/19/ssh-aggiornare-la-propria-chiave-rsa/" target="_blank" rel="noopener noreferrer">creare una chiave pubblica SSH sul raspberry</a> e caricarla sul server linux. Non mi dilungo su questa parte.</p>
<p>Sul server linux bisogna inserire nel file <strong>/etc/ssh/sshd_config</strong> la seguente direttiva:<br><code lang="bash">GatewayPorts yes</code></p>
<p>Successivamente, sul raspberry, dovremo lanciare il seguente comando:</p>
<p><code lang="bash">ssh -R 2203:localhost:22 utente@60.60.60.60</code></p>
<p>dove 2203 e la porta da aprire sul server linux, 22 è la porta del raspberry che vogliamo risponda, utente@60.60.60.60 è l&#8217;utente e l&#8217;IP/FQDN del server linux</p>
<p>Cosi&#8217; facendo, sarà possible collegarsi alla porta 2203 del server linux 60.60.60.60 tramite il client ssh e vedremo rispondere il servizio ssh del raspberry.</p>
<p>Ovviamente possiamo girare non solo la porta 22, ma anche altre porte, ad esempio la 80 se vogliamo rendere pubblico un servizio web su internet.</p>
<p>Riavviando il raspberry, purtroppo, il tunnel verrà interrotto. Per mantenerlo sempre attivo ed avviarlo in automatico in caso di reboot del raspberry, consiglio l&#8217;installazione del pacchetto <strong>autossh</strong>:<br><code lang="bash">apt-get install autossh</code></p>
<p>e poi l&#8217;inserimento della seguente riga come penultima (prima di exit 0) del file <strong>/etc/rc.local</strong>:<br><code lang="bash">autossh -2 -fN -M 20000 -R 2203:localhost:22 utente@60.60.60.60</code></p>


<p class="wp-block-paragraph">In alternativa è possibile creare un file Systemd service per autossh. Creare il file <strong>/etc/systemd/system/autossh-tunnel.service</strong> con dentro:</p>



<pre class="wp-block-preformatted">[Unit]
Description=AutoSSH tunnel service
After=network.target

[Service]
Environment="AUTOSSH_GATETIME=0"
#-p [PORT]
#-l [user]
#-M 0 --&gt; no monitoring
#-N Just open the connection and do nothing (not interactive)
# LOCALPORT:IP_ON_EXAMPLE_COM:PORT_ON_EXAMPLE_COM
ExecStart=/usr/bin/autossh -2 -fN -M 20000 -R 2203:localhost:22 utente@60.60.60.60
ExecStop=/bin/kill -9 autossh

[Install]
WantedBy=multi-user.target</pre>



<p class="wp-block-paragraph">Poi abitiliamo:</p>



<pre class="wp-block-preformatted">systemctl daemon-reload
systemctl enable autossh-tunnel.service
systemctl start autossh-tunnel.service</pre>



<p class="wp-block-paragraph">Per verificare:</p>



<pre class="wp-block-preformatted">journalctl | grep autossh</pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2016/10/25/raspberry-raggiungerlo-non-un-ip-pubblico-statico/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come funziona la rete su VirtualBox</title>
		<link>https://blog.smsoft.it/2012/10/16/come-funziona-la-rete-su-virtualbox/</link>
					<comments>https://blog.smsoft.it/2012/10/16/come-funziona-la-rete-su-virtualbox/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 16 Oct 2012 09:46:51 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Bridge]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<guid isPermaLink="false">http://blog.smsoft.it/?p=2005</guid>

					<description><![CDATA[Le modalità di gestione della rete su VirtualBox sono quattro: Network Address Translation (NAT) Bridged networking Internal networking Host-only networking NAT con Port-forwarding Network Address Translation (NAT) Questa è la modalità predefinita per le nuove VM ed è da preferire nella maggior parte delle situazioni in cui il guest è di tipo &#8220;client&#8221; (nel senso ... <a title="Come funziona la rete su VirtualBox" class="read-more" href="https://blog.smsoft.it/2012/10/16/come-funziona-la-rete-su-virtualbox/" aria-label="Per saperne di più su Come funziona la rete su VirtualBox">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[<p>Le modalità di gestione della rete su VirtualBox sono quattro:</p>
<ol>
<li>Network Address Translation (NAT)</li>
<li>Bridged networking</li>
<li>Internal networking</li>
<li>Host-only networking</li>
<li><em>NAT con  Port-forwarding</em></li>
</ol>
<h3>Network Address Translation (NAT)</h3>
<p>Questa è la modalità predefinita per le nuove VM ed è da preferire nella maggior parte delle situazioni in cui il guest è di tipo &#8220;client&#8221; (nel senso che il guest fa generalmente richieste in uscita e non in entrata). Ecco come funziona:<br />
           
            <div class="onp-locker-call" style="display: none;" data-lock-id="onpLock243115">
                <p><a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-dn68k55pai5macifgd38gke6yu.png"><img fetchpriority="high" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-dn68k55pai5macifgd38gke6yu.png" alt="" title="20120608-dn68k55pai5macifgd38gke6yu" width="503" height="378" class="aligncenter size-full wp-image-2022" /></a></p>
            </div>
         

        </p>
<p>Quando il SO guest viene avviato, in genere utilizza il il server DHCP di VirtualBox per ottenere un indirizzo IP. VirtualBox gestirà questa richiesta DHCP e darà al sistema operativo guest l&#8217;indirizzo IP e l&#8217;indirizzo del gateway per instradare le connessioni in uscita.<br />
In questa modalità, ad ogni vm viene assegnato lo stesso indirizzo IP (10.0.2.15) perché ogni vm è su una rete isolata. Quando invia traffico attraverso il gateway (10.0.2.2) VirtualBox riscrive i pacchetti per farli apparire come se fossero originati dall&#8217; Host, piuttosto che dal guest (in esecuzione all&#8217;interno dell&#8217;Host).</p>
<p>Ciò significa che il client funzionerà anche se l&#8217;host si sposta da una rete all&#8217;altra (ad esempio, computer portatile in movimento da un luogo all&#8217;altro).</p>
<p>Tuttavia, come fa un altro computer per avviare una connessione verso il Guest? Ad esempio la connessione al server Web in esecuzione nel Guest. Questo non è (normalmente) possibile utilizzare la modalità NAT. Per questo motivo i server che eseguono VM che necessitano di connessioni dall&#8217;esterno, preferiscono una diversa modalità di rete.</p>
<h3>Bridged Networking</h3>
<p>Bridged Networking viene utilizzato quando si desidera che la vm debba essere un componente della rete a tutti gli effetti, ovvero di essere esposto sulla rete come l&#8217;host o come un qualsiasi altro PC sulla rete.</p>
<p>In questa modalità, una scheda di rete virtuale è il &#8220;ponte&#8221; per la scheda di rete fisica sul vostro host, in questo modo:<br />
<a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-gpwbaktye3nji2iph1qjqdma8a.png"><img decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-gpwbaktye3nji2iph1qjqdma8a.png" alt="" title="20120608-gpwbaktye3nji2iph1qjqdma8a" width="682" height="584" class="aligncenter size-full wp-image-2029" /></a><br />
Grazie a questo, ogni VM ha accesso alla rete fisica nello stesso modo dell&#8217;host. Si può accedere a qualsiasi servizio sulla rete come, ad esempio, i servizi DHCP, servizi di ricerca, le informazioni di routing allo stesso modo in cui lo fa l&#8217;host fa. Quindi, la rete è simile a:<br />
           
            <div class="onp-locker-call" style="display: none;" data-lock-id="onpLock597825">
                <p><a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-ktma7pnemi7kn7etmamt5ikex1.png"><img decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-ktma7pnemi7kn7etmamt5ikex1.png" alt="" title="20120608-ktma7pnemi7kn7etmamt5ikex1" width="672" height="287" class="aligncenter size-full wp-image-2030" /></a></p>
            </div>
         

        <br />
L&#8217;aspetto negativo di questa modalità è che se si eseguono molte VM si può restare rapidamente a corto di indirizzi IP. Inoltre, se l&#8217;host dispone di più schede di rete fisiche (ad esempio, wireless e via cavo), oppure se ci si sposta da una rete all&#8217;altra (nel caso di portatili è una cosa frequente) sarà necessario riconfigurare le VM.</p>
<h3>Internal Networking</h3>
<p>Quando si configurano una o più macchine virtuali per stare su una rete interna, VirtualBox fa si che tutto il traffico su tale rete sia visibile alle sole vm su quella rete virtuale. Una configurazione simile a questa:<br />
<a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-fje2i3q6suqjbajififu2g98j.png"><img loading="lazy" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-fje2i3q6suqjbajififu2g98j.png" alt="" title="20120608-fje2i3q6suqjbajififu2g98j" width="682" height="584" class="aligncenter size-full wp-image-2033" /></a><br />
La rete interna (in questo esempio &#8220;INTNET&#8221;) è una rete totalmente isolata. Questa è una buona soluzione per i test quando si ha bisogno di creare sofisticate reti interne con vm che forniscono i loro servizi alla sola rete interna (ad esempio di Active Directory, DHCP, ecc.) Da notare che nemmeno il Guest è un membro della rete interna, ma questa modalità permette alle VM di funzionare anche quando l&#8217;host non è connesso a una rete (ad esempio su un aereo).<br />
           
            <div class="onp-locker-call" style="display: none;" data-lock-id="onpLock938160">
                <p><a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-x6q5csasa7gmgdjb3qd3i5ujwf.png"><img loading="lazy" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-x6q5csasa7gmgdjb3qd3i5ujwf.png" alt="" title="20120608-x6q5csasa7gmgdjb3qd3i5ujwf" width="529" height="377" class="aligncenter size-full wp-image-2034" /></a></p>
            </div>
         

        <br />
Si noti che in questa modalità, VirtualBox non fornisce alcun servizio (es DHCP), e quindi le VM devono essere configurato staticamente oppure una delle VM deve gestire un server DHCP..</p>
<p>E&#8217; possibile creare/gestire diverse reti interne ed è possibile configurare le VM per avere più schede di rete di cui una interna ed una di tipologia diversa.</p>
<p>Che cosa succede se si vuole una rete interna dove l&#8217;host VirtualBox fornisca gli indirizzi IP ai suoi ospiti? Per questa esigenza, si potrebbe prendere in considerazione la successiva modalità.</p>
<h3>Host-only Networking</h3>
<p>Rete di soli host è come una rete interna in cui si indica che la rete dei Guest sia su, in questo caso, &#8220;vboxnet0&#8221;:<br />
<a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-me7kpr7etx34hp9u1ak13d2g3e.png"><img loading="lazy" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-me7kpr7etx34hp9u1ak13d2g3e.png" alt="" title="20120608-me7kpr7etx34hp9u1ak13d2g3e" width="596" height="500" class="aligncenter size-full wp-image-2037" /></a><br />
Tutte le vm sono attive sulla rete &#8220;vboxnet0&#8221; e, inoltre, l&#8217;host può vedere anche le VM. Tuttavia, altre macchine esterne non possono vedere i Guest di questa rete, da qui il nome &#8220;Host-only&#8221;.</p>
<p>Logicamente, la rete è simile alla seguente:<br />
           
            <div class="onp-locker-call" style="display: none;" data-lock-id="onpLock701335">
                <p><a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-fyp8f21it6g7y17h2jsjh3b335.png"><img loading="lazy" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-fyp8f21it6g7y17h2jsjh3b335.png" alt="" title="20120608-fyp8f21it6g7y17h2jsjh3b335" width="537" height="380" class="aligncenter size-full wp-image-2038" /></a></p>
            </div>
         

        <br />
Questo sembra molto simile alla configurazione di rete interna, ma l&#8217;host è ora in &#8220;vboxnet0&#8221; e in grado di fornire i servizi DHCP. Per configurare la modalità di un host a sola rete, bisogna accedere alle Preferenze di VirtualBox &#8230; Network:<br />
<a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-bdwc7m83srwn77nhkgs82ece8f.png"><img loading="lazy" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-bdwc7m83srwn77nhkgs82ece8f.png" alt="" title="20120608-bdwc7m83srwn77nhkgs82ece8f" width="578" height="451" class="aligncenter size-full wp-image-2039" /></a><br />
<a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-d7iex9cjeyc26mcwtpeeamqgm.png"><img loading="lazy" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-d7iex9cjeyc26mcwtpeeamqgm.png" alt="" title="20120608-d7iex9cjeyc26mcwtpeeamqgm" width="582" height="286" class="aligncenter size-full wp-image-2040" /></a></p>
<h3>Port-Forwarding with NAT Networking</h3>
<p>Abbiamo scritto prima che &#8220;normalmente&#8221; non è possibile con la modalità NAT, fare una connessione da un computer esterno verso il Guest.</p>
<p>Che cosa succede se VirtualBox è, ad esempio, su un computer portatile e si vuole che una o più macchine virtuali possano essere raggiungibili dall&#8217;esterno? Ovviamente con un computer portatile è sottointesto che si passerà da una rete all&#8217;alltra abbastanza frequentemente.</p>
<p>In questo caso:</p>
<p><strong>NAT </strong>&#8211; non funzionerà perché le macchine esterne non possono connettersi al Guest<br />
<strong>Bridged </strong>&#8211; probabilmente si, ma il client necessita di IP della rete in cui si è connetti e quindi bisogna ogni volta aggiornare gli IP sui Guests<br />
<strong>Interno</strong> &#8211; avendo bisogno che le VM siano visibili sulla rete (a computer esterni), questa modalità non va bene<br />
<strong>Host-only</strong> &#8211; stesso problema di sopra, perché vogliamo che macchine esterne effettuino la connessione alle VM</p>
<p>Bene, in questo caso si può usare la modalità NAT e creare dei Port-forwarding! Basterà infatti:<br />
1 &#8211; Configurare la VM per l&#8217;utilizzo delle reti NAT;<br />
2 &#8211; Aggiungere regole di invio porta;</p>
<p>Le macchine esterne dovranno collegasi all&#8217;IP dell&#8217;host ed alla porta configurata per il forwarding  e le connessioni vengono inoltrate da VirtualBox al Guest.</p>
<p>Ad esempio, se la vm gestisce un server web sulla porta 80, è possibile impostare le regole in questo modo:<br />
<a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-cy6u6jpgaamfh882bwmr7f49k7.png"><img loading="lazy" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-cy6u6jpgaamfh882bwmr7f49k7.png" alt="" title="20120608-cy6u6jpgaamfh882bwmr7f49k7" width="596" height="500" class="aligncenter size-full wp-image-2024" /></a><br />
<a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-g8cthjns838u4yqp6w26mfkx1e.png"><img loading="lazy" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-g8cthjns838u4yqp6w26mfkx1e.png" alt="" title="20120608-g8cthjns838u4yqp6w26mfkx1e" width="614" height="314" class="aligncenter size-full wp-image-2025" /></a><br />
che significa: &#8220;le connessioni sulla porta 8080 nell&#8217;host devono essere trasmesse sulla porta 80 della VM&#8221;.<br />
           
            <div class="onp-locker-call" style="display: none;" data-lock-id="onpLock868964">
                <p><a href="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-mhcxu3k98ss1wq3y2ctg7fsidp.png"><img loading="lazy" decoding="async" src="http://blog.smsoft.it/wp-content/uploads/2012/10/20120608-mhcxu3k98ss1wq3y2ctg7fsidp.png" alt="" title="20120608-mhcxu3k98ss1wq3y2ctg7fsidp" width="507" height="367" class="aligncenter size-full wp-image-2027" /></a></p>
            </div>
         

        <br />
(<a href="https://blogs.oracle.com/fatbloke/entry/networking_in_virtualbox1" target="_blank" rel="noopener noreferrer">fonte</a>)</p>
<p>enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2012/10/16/come-funziona-la-rete-su-virtualbox/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
