<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>VoIP and Hacking | Consulenza Documentazione</title>
	
	<link>http://www.voipandhack.it</link>
	<description />
	<pubDate>Fri, 23 Dec 2011 20:47:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/VoipHack" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="voiphack" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>War GPS Spoofing</title>
		<link>http://www.voipandhack.it/archives/sicurezza/war-gps-spoofing</link>
		<comments>http://www.voipandhack.it/archives/sicurezza/war-gps-spoofing#comments</comments>
		<pubDate>Fri, 23 Dec 2011 20:47:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Hacking]]></category>

		<category><![CDATA[Politica]]></category>

		<category><![CDATA[Sicurezza]]></category>

		<category><![CDATA[cyberwar]]></category>

		<category><![CDATA[gps]]></category>

		<category><![CDATA[spoofing]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1881</guid>
		<description><![CDATA[Gli scenziati iraniani affermano di essere stati in grado di indurre un drone USA ad atterrare dove desideravano tramite un hack GPS. La Televisione di stato sta trionfamente diffondendo le immagini dell&#8217;apparecchio catturato. Le immagini trasmesse ritraggono un drone intatto con nessun segno di danneggiamento. Gli Iraniani affermano di aver utilizzato un software che ha [...]]]></description>
			<content:encoded><![CDATA[<p>Gli scenziati iraniani affermano di essere stati in grado di indurre un drone USA ad atterrare dove desideravano tramite un hack GPS.<span id="more-1881"></span> La Televisione di stato sta trionfamente diffondendo le immagini dell&#8217;apparecchio catturato. Le immagini trasmesse ritraggono un drone intatto con nessun segno di danneggiamento. Gli Iraniani affermano di aver utilizzato un software che ha falsificato le coordinate GPS, e con questo trucco indotto il drone RQ-170 Sentinel ad atterrare di propria iniziativa senza doverne prendere il controllo.<br />
L&#8217;Iran avrebbe sviluppato un tipo di attacco mirato attack dopo un reverse-engineering effettuato su droni USA precedentemante catturati o abbattuti, ed avvantaggiandosi di una vulnerabilità inerente il sistema di navigazione GPS. </p>
<p>Gizmodo riporta che i militari erano a conoscenza dei rischi potenziali legati allo spoofing GPS con la conseguenza per un drone di venire costretto ad atterrere in maniera analoga a quanto successo sin dal 2003 e non avevano mai affrontato il problema.</p>
<p>Tuttavia, certi attacchi basati su GPS spoofing sono molto difficili da mettere in pratica, e gli analisti diffidano fortemente delle tesi iraniane, classificandola propaganda. Le autorità iranian avrebbero dovuto conoscere la localizzazione del drone entro una manciata di metri e colpirlo con un segnale GPS più forte delle trasmissioni satellitari. Nessuno di questi segnal è criptato cosicchè il segnale più forte l&#8217;avrebbe vinta, ma a questo punto sarebbe necessario introdurre gradualmente degli errori per guidare il velivolo al punto di atterraggio scelto.<br />
Gli USA controbattono infatti che il drone è andato perso durante una missione nell&#8217;Ovest dell&#8217;Afghanistan e portato in Iran in seguito ad una operazione spionistica.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="War GPS Spoofing"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/sicurezza/war-gps-spoofing"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-12-23 22:12:09"/>
<input type="hidden" name="postContent_0" value="&lt;p&gt;Gli scenziati iraniani affermano di essere stati in grado di indurre un drone USA ad atterrare dove desideravano tramite un hack GPS.&lt;span id=&quot;more-1881&quot;&gt;&lt;/span&gt; La Televisione di stato sta trionfamente diffondendo le immagini dell&amp;#8217;apparecchio catturato. Le immagini trasmesse ritraggono un drone intatto con nessun segno di danneggiamento. Gli Iraniani affermano di aver utilizzato un software che ha falsificato le coordinate GPS, e con questo trucco indotto il drone RQ-170 Sentinel ad atterrare di propria iniziativa senza doverne prendere il controllo.&lt;br /&gt;
L&amp;#8217;Iran avrebbe sviluppato un tipo di attacco mirato attack dopo un reverse-engineering effettuato su droni USA precedentemante catturati o abbattuti, ed avvantaggiandosi di una vulnerabilità inerente il sistema di navigazione GPS. &lt;/p&gt;
&lt;p&gt;Gizmodo riporta che i militari erano a conoscenza dei rischi potenziali legati allo spoofing GPS con la conseguenza per un drone di venire costretto ad atterrere in maniera analoga a quanto successo sin dal 2003 e non avevano mai affrontato il problema.&lt;/p&gt;
&lt;p&gt;Tuttavia, certi attacchi basati su GPS spoofing sono molto difficili da mettere in pratica, e gli analisti diffidano fortemente delle tesi iraniane, classificandola propaganda. Le autorità iranian avrebbero dovuto conoscere la localizzazione del drone entro una manciata di metri e colpirlo con un segnale GPS più forte delle trasmissioni satellitari. Nessuno di questi segnal è criptato cosicchè il segnale più forte l&amp;#8217;avrebbe vinta, ma a questo punto sarebbe necessario introdurre gradualmente degli errori per guidare il velivolo al punto di atterraggio scelto.&lt;br /&gt;
Gli USA controbattono infatti che il drone è andato perso durante una missione nell&amp;#8217;Ovest dell&amp;#8217;Afghanistan e portato in Iran in seguito ad una operazione spionistica.&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/sicurezza/war-gps-spoofing/feed</wfw:commentRss>
		</item>
		<item>
		<title>Asterisk 10</title>
		<link>http://www.voipandhack.it/archives/linux/asterisk-10</link>
		<comments>http://www.voipandhack.it/archives/linux/asterisk-10#comments</comments>
		<pubDate>Sun, 18 Dec 2011 14:42:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Telefonia]]></category>

		<category><![CDATA[VoIP]]></category>

		<category><![CDATA[asterisk pbx]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[sip]]></category>

		<category><![CDATA[t38]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1878</guid>
		<description><![CDATA[Poco più che un anno dopo quello di Asterisk 1.8 (che rimane la più recente Long Term Support (LTS) release, con quattro anni di supporto), Digium ha annunciato il rilascio di Asterisk 10 (la prima cifra della vecchia numerazione è semplicemente scomparsa), la versione più recente della notissima piattaforma di comunicazione open-source, che tra le [...]]]></description>
			<content:encoded><![CDATA[<p>Poco più che un anno dopo quello di Asterisk 1.8 (che rimane la più recente Long Term Support (LTS) release, con quattro anni di supporto), Digium ha annunciato il rilascio di Asterisk 10 (la prima cifra della vecchia numerazione è semplicemente scomparsa), la versione più recente della notissima piattaforma di comunicazione open-source, che tra le proprie nuove funzionalità include un media engine wide-band e migliorate capacità di conferencing.<span id="more-1878"></span></p>
<p>In Asterisk 10, è stato sostituito il media engine precedente, basato sugli standard telefonici, con uno in grado di supportare audio di alta qualità ed un pressoché illimitato numero di codecs. Nello specifico, oltre alle frequenze di campionamento a 8 e 16 kHz, Asterisk 10 ora supporta gli 8, 12, 16, 24, 32, 44.1, 48, 96 e 192 kHz per un audio a banda ultra larga. Supporta inoltre nativamente nuovi codecs, inclusi il codec di Skype, SILK, e lo Speex 32kHz. Tutto questo riguarda però esclusivamente il SIP channel driver. </p>
<p>Digium ha inoltre sostituito il MeetMe conferencing bridge di Asterisk con uno chiamato ConfBridge, che supporta tutti i codecs. Algoritmi intelligenti di mixing forniscono a ciascun participante la qualità audio ottimale, non la più bassa comune. ConfBridge comprende anche una applicazione leggera di video conferencing, che inoltra il video di uno speaker predefinito o dello speaker attuale agli altri participanti alla conference. Sono comunque richiesti SIP devices video che facciano uso dello stesso codec.</p>
<p>Asterisk 10 ora possiede capacità T.38 gateway che fanno in modo che fax in uscita provenienti da macchine fax analogiche siano connessi a T.38 fax endpoints su SIP e che chiamate fax T.38 siano inoltrate direttamente a macchine fax analogiche.</p>
<p>Infine, Asterisk 10 si sta avviando a divenire un text-message router, un bridge tra differenti protocolli di messaging, come SIP MESSAGE e XMPP.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="Asterisk 10"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/linux/asterisk-10"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-12-18 16:12:21"/>
<input type="hidden" name="postContent_0" value="&lt;p&gt;Poco più che un anno dopo quello di Asterisk 1.8 (che rimane la più recente Long Term Support (LTS) release, con quattro anni di supporto), Digium ha annunciato il rilascio di Asterisk 10 (la prima cifra della vecchia numerazione è semplicemente scomparsa), la versione più recente della notissima piattaforma di comunicazione open-source, che tra le proprie nuove funzionalità include un media engine wide-band e migliorate capacità di conferencing.&lt;span id=&quot;more-1878&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In Asterisk 10, è stato sostituito il media engine precedente, basato sugli standard telefonici, con uno in grado di supportare audio di alta qualità ed un pressoché illimitato numero di codecs. Nello specifico, oltre alle frequenze di campionamento a 8 e 16 kHz, Asterisk 10 ora supporta gli 8, 12, 16, 24, 32, 44.1, 48, 96 e 192 kHz per un audio a banda ultra larga. Supporta inoltre nativamente nuovi codecs, inclusi il codec di Skype, SILK, e lo Speex 32kHz. Tutto questo riguarda però esclusivamente il SIP channel driver. &lt;/p&gt;
&lt;p&gt;Digium ha inoltre sostituito il MeetMe conferencing bridge di Asterisk con uno chiamato ConfBridge, che supporta tutti i codecs. Algoritmi intelligenti di mixing forniscono a ciascun participante la qualità audio ottimale, non la più bassa comune. ConfBridge comprende anche una applicazione leggera di video conferencing, che inoltra il video di uno speaker predefinito o dello speaker attuale agli altri participanti alla conference. Sono comunque richiesti SIP devices video che facciano uso dello stesso codec.&lt;/p&gt;
&lt;p&gt;Asterisk 10 ora possiede capacità T.38 gateway che fanno in modo che fax in uscita provenienti da macchine fax analogiche siano connessi a T.38 fax endpoints su SIP e che chiamate fax T.38 siano inoltrate direttamente a macchine fax analogiche.&lt;/p&gt;
&lt;p&gt;Infine, Asterisk 10 si sta avviando a divenire un text-message router, un bridge tra differenti protocolli di messaging, come SIP MESSAGE e XMPP.&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/linux/asterisk-10/feed</wfw:commentRss>
		</item>
		<item>
		<title>Android come hotspot WiFi</title>
		<link>http://www.voipandhack.it/archives/networking/android-come-hotspot-wifi</link>
		<comments>http://www.voipandhack.it/archives/networking/android-come-hotspot-wifi#comments</comments>
		<pubDate>Wed, 09 Nov 2011 15:31:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Networking]]></category>

		<category><![CDATA[android]]></category>

		<category><![CDATA[hortspot]]></category>

		<category><![CDATA[smartphone]]></category>

		<category><![CDATA[tricks]]></category>

		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1876</guid>
		<description><![CDATA[Gli smartphones Android hanno la possibilità di svolgere la funzione di wireless hotspot. Rendono pertanto possibile una LAN wireless, rapidissima da realizzare, con una connessione (opzionale) ad Internet condivisa (tramite UMTS) coi computers/devices della stessa WLAN.
I passi da seguire sono semplicissimi, pertanto utilizzerò un modo molto schematico di rappresentarli.
Sullo smartphone
Impostazioni -> Controlli Wireless
Disattivare Wi-Fi se [...]]]></description>
			<content:encoded><![CDATA[<p>Gli smartphones Android hanno la possibilità di svolgere la funzione di wireless hotspot. Rendono pertanto possibile una LAN wireless, rapidissima da realizzare, con una connessione (opzionale) ad Internet condivisa (tramite UMTS) coi computers/devices della stessa WLAN.<span id="more-1876"></span></p>
<p>I passi da seguire sono semplicissimi, pertanto utilizzerò un modo molto schematico di rappresentarli.</p>
<p>Sullo smartphone<br />
<code>Impostazioni -> Controlli Wireless</code></p>
<p>Disattivare Wi-Fi se per caso fosse attivato</p>
<p><code>Tethering e hotspot portatile</code></p>
<p>Attivare Hotspot Wi-Fi portatile</p>
<p>A questo punto lo smartphone emette un messaggio di avvertimento che, con la funzione di Hotspot attivata, la batteria potrebbe esaurirsi rapidamente (putroppo è proprio così).</p>
<p>Ad ogni modo viene richiesta l&#8217;introduzione di una passphrase (8-64 caratteri) che sarà quella utilizzata per impostare la protezione WPA2 PSK.</p>
<p>Effettuata una prima volta questa operazione diverrà disponibile anche la voce di menu Configura Hotspot Wi-Fi, dalla quale sarà possibile reimpostare SSID di rete (che per default è AndroidAP) , password, e protezione (in questo caso, oltre a OPEN, risulta disponibile solo WPA2-PSK)</p>
<p>Da questo momento in poi ogni pc della rete potrà associarsi all&#8217; hotspot Android, come risulta dalla seguente porzione di kern.log: </p>
<p><code>... wlan0: authenticate with 5c:da:d4:7f:c0:5a (try 1)<br />
... wlan0: authenticated<br />
... wlan0: associate with 5c:da:d4:7f:c0:5a (try 1)<br />
... wlan0: RX AssocResp from 5c:da:d4:7f:c0:5a (capab=0x411 status=0 aid=1)<br />
... wlan0: associated</code></p>
<p>l&#8217;hotspot sarà inoltre in grado di operare da server DHCP (al mio laptop viene infatti attribuito un IP 192.168.43.102, mentre, abbastanza ovviamente l&#8217;Hotspot assume per se stesso un indirizzo IP 192.168.43.1)</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="Android come hotspot WiFi"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/networking/android-come-hotspot-wifi"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-11-09 17:11:21"/>
<input type="hidden" name="postContent_0" value="&lt;p&gt;Gli smartphones Android hanno la possibilità di svolgere la funzione di wireless hotspot. Rendono pertanto possibile una LAN wireless, rapidissima da realizzare, con una connessione (opzionale) ad Internet condivisa (tramite UMTS) coi computers/devices della stessa WLAN.&lt;span id=&quot;more-1876&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I passi da seguire sono semplicissimi, pertanto utilizzerò un modo molto schematico di rappresentarli.&lt;/p&gt;
&lt;p&gt;Sullo smartphone&lt;br /&gt;
&lt;code&gt;Impostazioni -&gt; Controlli Wireless&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Disattivare Wi-Fi se per caso fosse attivato&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Tethering e hotspot portatile&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Attivare Hotspot Wi-Fi portatile&lt;/p&gt;
&lt;p&gt;A questo punto lo smartphone emette un messaggio di avvertimento che, con la funzione di Hotspot attivata, la batteria potrebbe esaurirsi rapidamente (putroppo è proprio così).&lt;/p&gt;
&lt;p&gt;Ad ogni modo viene richiesta l&amp;#8217;introduzione di una passphrase (8-64 caratteri) che sarà quella utilizzata per impostare la protezione WPA2 PSK.&lt;/p&gt;
&lt;p&gt;Effettuata una prima volta questa operazione diverrà disponibile anche la voce di menu Configura Hotspot Wi-Fi, dalla quale sarà possibile reimpostare SSID di rete (che per default è AndroidAP) , password, e protezione (in questo caso, oltre a OPEN, risulta disponibile solo WPA2-PSK)&lt;/p&gt;
&lt;p&gt;Da questo momento in poi ogni pc della rete potrà associarsi all&amp;#8217; hotspot Android, come risulta dalla seguente porzione di kern.log: &lt;/p&gt;
&lt;p&gt;&lt;code&gt;... wlan0: authenticate with 5c:da:d4:7f:c0:5a (try 1)&lt;br /&gt;
... wlan0: authenticated&lt;br /&gt;
... wlan0: associate with 5c:da:d4:7f:c0:5a (try 1)&lt;br /&gt;
... wlan0: RX AssocResp from 5c:da:d4:7f:c0:5a (capab=0x411 status=0 aid=1)&lt;br /&gt;
... wlan0: associated&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;l&amp;#8217;hotspot sarà inoltre in grado di operare da server DHCP (al mio laptop viene infatti attribuito un IP 192.168.43.102, mentre, abbastanza ovviamente l&amp;#8217;Hotspot assume per se stesso un indirizzo IP 192.168.43.1)&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/networking/android-come-hotspot-wifi/feed</wfw:commentRss>
		</item>
		<item>
		<title>VoIPmonitor</title>
		<link>http://www.voipandhack.it/archives/linux/voipmonitor</link>
		<comments>http://www.voipandhack.it/archives/linux/voipmonitor#comments</comments>
		<pubDate>Wed, 19 Oct 2011 14:52:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[Hacking]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Telefonia]]></category>

		<category><![CDATA[Tools]]></category>

		<category><![CDATA[VoIP]]></category>

		<category><![CDATA[asterisk pbx]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[sip]]></category>

		<category><![CDATA[VoIPmonitor]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1872</guid>
		<description><![CDATA[VoIPmonitor è un network packet sniffer open source, per linux o Unix/POSIX, dedicato al voip monitoring, in grado di analizzare velocemente i protocolli SIP ed RTP. Oltre ad essere eseguito (tipicamente) come daemon è in grado di analizzare pcap files precedentemente archiviati.
Per ciascuna chiamata VoIP rilevata voipmonitor calcola una serie di statistiche su perdita, latenza, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.voipmonitor.org/index.html">VoIPmonitor</a> è un network packet sniffer open source, per linux o Unix/POSIX, dedicato al voip monitoring, in grado di analizzare velocemente i protocolli SIP ed RTP. Oltre ad essere eseguito (tipicamente) come daemon è in grado di analizzare pcap files precedentemente archiviati.<span id="more-1872"></span><br />
Per ciascuna chiamata VoIP rilevata voipmonitor calcola una serie di statistiche su perdita, latenza, ed altri fattori, ed è inoltre in grado di predirre il cosidetto MOS (Meaning Opinion Score) in conformità al modello ITU-T G.107, allo scopo di definire la qualità di una chiamata. Le statistiche vengono archiviate in un database MySQL, inoltre ciascuna chiamata viene salvata come un file pcap dump ed opzionalmente in un file audio WAV oppure OGG.<br />
La versione Free di VoIPmonitor è in grado di decodificare solamente il codec G.711. Quella commerciale può invece decodificare G.729/G.723/GSM/Speex/iLBC. Una delle funzionalità più notevoli di VoIPmonitor è la sua capacità di decodificare chiamate vocali che cambino i codecs utilizzati durante la chiamata.</p>
<p>Il software, può venire scaricato da <a href="https://sourceforge.net/projects/voipmonitor/files/3.0/voipmonitor-3.0.1.tar.gz/download">SourceForge</a></p>
<p>Supposto di averlo archiviato in /opt/</p>
<p>e soddisfatti i prerequisiti:</p>
<p><code># apt-get install libmysql++-dev libvorbis-dev libpcap-dev apache2 php5-mysql php5-gd</code></p>
<p><code># mkdir /var/spool/voipmonitor<br />
# cd /opt<br />
# tar xvzf voipmonitor-3.0.1.tar.gz<br />
# cd voipmonitor-3.0.1<br />
# make<br />
# make install<br />
# mysqladmin -u root -p create voipmonitor<br />
password:<br />
#<br />
# cat cdrtable.sql | mysql voipmonitor -p<br />
password:<br />
#</code></p>
<p>A questo punto, allo scopo di testare la cattura di una chiamata VoIP in ingresso (tramite il provider Messagenet) su un server Asterisk che la tratti come segue nel relativo context:</p>
<p><code>[incoming]<br />
exten => 04371956065,1,Ringing(5)<br />
exten => 04371956065,n,Answer<br />
exten => 04371956065,n,Wait(5)<br />
exten => 04371956065,n,MusiconHold()</code></p>
<p>si può avviare il programma così:  </p>
<p><code># ./voipmonitor -k -SRG -W -i eth0 -p password -v<br />
Capturing on interface: eth0</p>
<p>Total calls [0] calls in queue[0]<br />
voipmonitor: calls[0]<br />
&#8230;<br />
Total calls [0] calls in queue[0]<br />
voipmonitor: calls[1]<br />
&#8230;<br />
Total calls [1] calls in queue[0]<br />
&#8230;<br />
storing to MySQL. Queue[1]<br />
INSERT INTO `cdr` SET caller = &#8216;+390437xxxxxx&#8217;,  callername = &#8216;+390437xxxxxx&#8217;, sipcallerip = 3563141964, sipcalledip = 3232235788, called = &#8216;04371956065&#8242;, duration = 21, progress_time = 0, first_rtp_time = 6, connect_duration = 21, calldate = FROM_UNIXTIME(1319031659), fbasename = &#8216;769284ca58464edc4b9770f53faeee04@sip.messagenet.it&#8217;, sighup = 0, lastSIPresponse = &#8216;200 OK&#8217;, lastSIPresponseNum = 200, bye = 3 , whohanged = &#8216;caller&#8217; , a_ua = &#8221; , b_ua = &#8216;foxtrot&#8217; , a_index = 1 , a_received = 742 , a_lost = 0 , a_avgjitter = 1 , a_maxjitter = 1 , a_payload = 8 , a_sl1 = 0 , a_sl2 = 0 , a_sl3 = 0 , a_sl4 = 0 , a_sl5 = 0 , a_sl6 = 0 , a_sl7 = 0 , a_sl8 = 0 , a_sl9 = 0 , a_sl10 = 0 , a_d50 = 0 , a_d70 = 0 , a_d90 = 0 , a_d120 = 0 , a_d150 = 0 , a_d200 = 0 , a_d300 = 0 , a_saddr = 3252906024 , a_lossr_f1 = 0 , a_burstr_f1 = 0 , a_mos_f1 = 4.5 , a_lossr_f2 = 0 , a_burstr_f2 = 0 , a_mos_f2 = 4.5 , a_lossr_adapt = 0.00135135 , a_burstr_adapt = 0.998649 , a_mos_adapt = 4.2670996286306941 , b_index = 0 , b_received = 745 , b_lost = 0 , b_avgjitter = 1 , b_maxjitter = 2 , b_payload = 8 , b_sl1 = 0 , b_sl2 = 0 , b_sl3 = 0 , b_sl4 = 0 , b_sl5 = 0 , b_sl6 = 0 , b_sl7 = 0 , b_sl8 = 0 , b_sl9 = 0 , b_sl10 = 0 , b_d50 = 0 , b_d70 = 0 , b_d90 = 0 , b_d120 = 0 , b_d150 = 0 , b_d200 = 0 , b_d300 = 0 , b_saddr = 3232235788 , b_lossr_f1 = 0 , b_burstr_f1 = 0 , b_mos_f1 = 4.5 , b_lossr_f2 = 0 , b_burstr_f2 = 0 , b_mos_f2 = 4.5 , b_lossr_adapt = 0 , b_burstr_adapt = 0 , b_mos_adapt = 4.5<br />
converting RAW file to WAV Queue[1]<br />
voipmonitor: calls[1]<br />
&#8230;<br />
Total calls [0] calls in queue[0]<br />
&#8230;<br />
^Cvoipmonitor: SIGINT received, terminating</code></p>
<p>E&#8217; evidente, dallo stesso output del programma, la creazione di un record relativo alla chiamata nel database MySQL<br />
A questo punto, risulta inoltre presente in /var/spool/voipmonitor una directory corrispondente alla data/ora corrente (2011-10-19/) e contenente i seguenti file:</p>
<pre>
-rw-rw-rw- 1 root root 1235746 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.pcap
-rw-rw-rw- 1 root root  856364 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.wav
-rw-rw-rw- 1 root root   40704 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.1.graph
-rw-rw-rw- 1 root root   45295 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.0.graph
</pre>
<p>Se il significato dei primi due è inequivocabile, gli altri due sono file ASCII contenenti liste di coordinate. Esiste infatti, a cura dello stesso produttore, una applicazione web PHP (che però non è compresa nel package open source) che filtra i dati presenti nel database e graficizza la distribuzione di latenza e perdita di pacchetti.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="VoIPmonitor"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/linux/voipmonitor"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-10-19 16:10:57"/>
<input type="hidden" name="postContent_0" value="&lt;p&gt;&lt;a href=&quot;http://www.voipmonitor.org/index.html&quot;&gt;VoIPmonitor&lt;/a&gt; è un network packet sniffer open source, per linux o Unix/POSIX, dedicato al voip monitoring, in grado di analizzare velocemente i protocolli SIP ed RTP. Oltre ad essere eseguito (tipicamente) come daemon è in grado di analizzare pcap files precedentemente archiviati.&lt;span id=&quot;more-1872&quot;&gt;&lt;/span&gt;&lt;br /&gt;
Per ciascuna chiamata VoIP rilevata voipmonitor calcola una serie di statistiche su perdita, latenza, ed altri fattori, ed è inoltre in grado di predirre il cosidetto MOS (Meaning Opinion Score) in conformità al modello ITU-T G.107, allo scopo di definire la qualità di una chiamata. Le statistiche vengono archiviate in un database MySQL, inoltre ciascuna chiamata viene salvata come un file pcap dump ed opzionalmente in un file audio WAV oppure OGG.&lt;br /&gt;
La versione Free di VoIPmonitor è in grado di decodificare solamente il codec G.711. Quella commerciale può invece decodificare G.729/G.723/GSM/Speex/iLBC. Una delle funzionalità più notevoli di VoIPmonitor è la sua capacità di decodificare chiamate vocali che cambino i codecs utilizzati durante la chiamata.&lt;/p&gt;
&lt;p&gt;Il software, può venire scaricato da &lt;a href=&quot;https://sourceforge.net/projects/voipmonitor/files/3.0/voipmonitor-3.0.1.tar.gz/download&quot;&gt;SourceForge&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Supposto di averlo archiviato in /opt/&lt;/p&gt;
&lt;p&gt;e soddisfatti i prerequisiti:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# apt-get install libmysql++-dev libvorbis-dev libpcap-dev apache2 php5-mysql php5-gd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# mkdir /var/spool/voipmonitor&lt;br /&gt;
# cd /opt&lt;br /&gt;
# tar xvzf voipmonitor-3.0.1.tar.gz&lt;br /&gt;
# cd voipmonitor-3.0.1&lt;br /&gt;
# make&lt;br /&gt;
# make install&lt;br /&gt;
# mysqladmin -u root -p create voipmonitor&lt;br /&gt;
password:&lt;br /&gt;
#&lt;br /&gt;
# cat cdrtable.sql | mysql voipmonitor -p&lt;br /&gt;
password:&lt;br /&gt;
#&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A questo punto, allo scopo di testare la cattura di una chiamata VoIP in ingresso (tramite il provider Messagenet) su un server Asterisk che la tratti come segue nel relativo context:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[incoming]&lt;br /&gt;
exten =&gt; 04371956065,1,Ringing(5)&lt;br /&gt;
exten =&gt; 04371956065,n,Answer&lt;br /&gt;
exten =&gt; 04371956065,n,Wait(5)&lt;br /&gt;
exten =&gt; 04371956065,n,MusiconHold()&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;si può avviare il programma così:  &lt;/p&gt;
&lt;p&gt;&lt;code&gt;# ./voipmonitor -k -SRG -W -i eth0 -p password -v&lt;br /&gt;
Capturing on interface: eth0&lt;/p&gt;
&lt;p&gt;Total calls [0] calls in queue[0]&lt;br /&gt;
voipmonitor: calls[0]&lt;br /&gt;
&amp;#8230;&lt;br /&gt;
Total calls [0] calls in queue[0]&lt;br /&gt;
voipmonitor: calls[1]&lt;br /&gt;
&amp;#8230;&lt;br /&gt;
Total calls [1] calls in queue[0]&lt;br /&gt;
&amp;#8230;&lt;br /&gt;
storing to MySQL. Queue[1]&lt;br /&gt;
INSERT INTO `cdr` SET caller = &amp;#8216;+390437xxxxxx&amp;#8217;,  callername = &amp;#8216;+390437xxxxxx&amp;#8217;, sipcallerip = 3563141964, sipcalledip = 3232235788, called = &amp;#8216;04371956065&amp;#8242;, duration = 21, progress_time = 0, first_rtp_time = 6, connect_duration = 21, calldate = FROM_UNIXTIME(1319031659), fbasename = &amp;#8216;769284ca58464edc4b9770f53faeee04@sip.messagenet.it&amp;#8217;, sighup = 0, lastSIPresponse = &amp;#8216;200 OK&amp;#8217;, lastSIPresponseNum = 200, bye = 3 , whohanged = &amp;#8216;caller&amp;#8217; , a_ua = &amp;#8221; , b_ua = &amp;#8216;foxtrot&amp;#8217; , a_index = 1 , a_received = 742 , a_lost = 0 , a_avgjitter = 1 , a_maxjitter = 1 , a_payload = 8 , a_sl1 = 0 , a_sl2 = 0 , a_sl3 = 0 , a_sl4 = 0 , a_sl5 = 0 , a_sl6 = 0 , a_sl7 = 0 , a_sl8 = 0 , a_sl9 = 0 , a_sl10 = 0 , a_d50 = 0 , a_d70 = 0 , a_d90 = 0 , a_d120 = 0 , a_d150 = 0 , a_d200 = 0 , a_d300 = 0 , a_saddr = 3252906024 , a_lossr_f1 = 0 , a_burstr_f1 = 0 , a_mos_f1 = 4.5 , a_lossr_f2 = 0 , a_burstr_f2 = 0 , a_mos_f2 = 4.5 , a_lossr_adapt = 0.00135135 , a_burstr_adapt = 0.998649 , a_mos_adapt = 4.2670996286306941 , b_index = 0 , b_received = 745 , b_lost = 0 , b_avgjitter = 1 , b_maxjitter = 2 , b_payload = 8 , b_sl1 = 0 , b_sl2 = 0 , b_sl3 = 0 , b_sl4 = 0 , b_sl5 = 0 , b_sl6 = 0 , b_sl7 = 0 , b_sl8 = 0 , b_sl9 = 0 , b_sl10 = 0 , b_d50 = 0 , b_d70 = 0 , b_d90 = 0 , b_d120 = 0 , b_d150 = 0 , b_d200 = 0 , b_d300 = 0 , b_saddr = 3232235788 , b_lossr_f1 = 0 , b_burstr_f1 = 0 , b_mos_f1 = 4.5 , b_lossr_f2 = 0 , b_burstr_f2 = 0 , b_mos_f2 = 4.5 , b_lossr_adapt = 0 , b_burstr_adapt = 0 , b_mos_adapt = 4.5&lt;br /&gt;
converting RAW file to WAV Queue[1]&lt;br /&gt;
voipmonitor: calls[1]&lt;br /&gt;
&amp;#8230;&lt;br /&gt;
Total calls [0] calls in queue[0]&lt;br /&gt;
&amp;#8230;&lt;br /&gt;
^Cvoipmonitor: SIGINT received, terminating&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;E&amp;#8217; evidente, dallo stesso output del programma, la creazione di un record relativo alla chiamata nel database MySQL&lt;br /&gt;
A questo punto, risulta inoltre presente in /var/spool/voipmonitor una directory corrispondente alla data/ora corrente (2011-10-19/) e contenente i seguenti file:&lt;/p&gt;
&lt;pre&gt;
-rw-rw-rw- 1 root root 1235746 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.pcap
-rw-rw-rw- 1 root root  856364 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.wav
-rw-rw-rw- 1 root root   40704 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.1.graph
-rw-rw-rw- 1 root root   45295 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.0.graph
&lt;/pre&gt;
&lt;p&gt;Se il significato dei primi due è inequivocabile, gli altri due sono file ASCII contenenti liste di coordinate. Esiste infatti, a cura dello stesso produttore, una applicazione web PHP (che però non è compresa nel package open source) che filtra i dati presenti nel database e graficizza la distribuzione di latenza e perdita di pacchetti.&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/linux/voipmonitor/feed</wfw:commentRss>
		</item>
		<item>
		<title>Goodbye Dennis</title>
		<link>http://www.voipandhack.it/archives/linux/goodbye-dennis</link>
		<comments>http://www.voipandhack.it/archives/linux/goodbye-dennis#comments</comments>
		<pubDate>Thu, 13 Oct 2011 17:33:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[brevi]]></category>

		<category><![CDATA[Dennis Ritchie]]></category>

		<category><![CDATA[Ken Thompson]]></category>

		<category><![CDATA[linguaggio C]]></category>

		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1866</guid>
		<description><![CDATA[Nei giorni della beatificazione di Steve Jobs è quantomeno doveroso tributare un omaggio a Dennis Ritchie, morto sabato scorso, inventore del linguaggio C e coautore di Unix, senza il quale non esisterebbero nè Linux nè Mac OS X.
Dennis Ritchie (in piedi) e Ken Thompson al lavoro sul mitico PDP-11










Send post as PDF to  ]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Nei giorni della beatificazione di Steve Jobs è quantomeno doveroso tributare un omaggio a Dennis Ritchie, morto sabato scorso, inventore del linguaggio C e coautore di Unix, senza il quale non esisterebbero nè Linux nè Mac OS X.</p>
<p style="text-align: center;"><span id="more-1866"></span><img class="aligncenter size-full wp-image-1867" title="ken-and-den" src="http://www.voipandhack.it/wp-content/uploads/2011/10/ken-and-den.jpg" alt="ken-and-den" width="412" height="330" />Dennis Ritchie (in piedi) e Ken Thompson al lavoro sul mitico PDP-11</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="Goodbye Dennis"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/linux/goodbye-dennis"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-10-13 19:10:52"/>
<input type="hidden" name="postContent_0" value="&lt;p style=&quot;text-align: left;&quot;&gt;Nei giorni della beatificazione di Steve Jobs è quantomeno doveroso tributare un omaggio a Dennis Ritchie, morto sabato scorso, inventore del linguaggio C e coautore di Unix, senza il quale non esisterebbero nè Linux nè Mac OS X.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span id=&quot;more-1866&quot;&gt;&lt;/span&gt;&lt;img class=&quot;aligncenter size-full wp-image-1867&quot; title=&quot;ken-and-den&quot; src=&quot;http://www.voipandhack.it/wp-content/uploads/2011/10/ken-and-den.jpg&quot; alt=&quot;ken-and-den&quot; width=&quot;412&quot; height=&quot;330&quot; /&gt;Dennis Ritchie (in piedi) e Ken Thompson al lavoro sul mitico PDP-11&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/linux/goodbye-dennis/feed</wfw:commentRss>
		</item>
		<item>
		<title>Routing differenziato per il VoIP</title>
		<link>http://www.voipandhack.it/archives/linux/routing-differenziato-per-il-voip</link>
		<comments>http://www.voipandhack.it/archives/linux/routing-differenziato-per-il-voip#comments</comments>
		<pubDate>Fri, 07 Oct 2011 12:23:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[Telefonia]]></category>

		<category><![CDATA[Tools]]></category>

		<category><![CDATA[VoIP]]></category>

		<category><![CDATA[asterisk pbx]]></category>

		<category><![CDATA[internet]]></category>

		<category><![CDATA[iproute2]]></category>

		<category><![CDATA[routing]]></category>

		<category><![CDATA[tcp-ip]]></category>

		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1864</guid>
		<description><![CDATA[Realizzare una soluzione telefonica, basata su Asterisk e puramente VoIP, e che si possa definire pienamente soddisfacente, è sempre una operazione delicata, ed uno dei suoi prerequisiti essenziali consiste certamente nel poter contare su una connettività Internet stabile e adeguatamente dimensionata. Questo è tanto più vero e l&#8217;obiettivo difficile da raggiungere quando il numero delle [...]]]></description>
			<content:encoded><![CDATA[<p>Realizzare una soluzione telefonica, basata su Asterisk e puramente VoIP, e che si possa definire pienamente soddisfacente, è sempre una operazione delicata, ed uno dei suoi prerequisiti essenziali consiste certamente nel poter contare su una connettività Internet stabile e adeguatamente dimensionata. Questo è tanto più vero e l&#8217;obiettivo difficile da raggiungere quando il numero delle utenze della LAN locale diventa elevato, come tipicamente avviene in ambito aziendale.<span id="more-1864"></span><br />
La forzata (ed infelice) convivenza di traffico VoIP e traffico molto eterogeneo destinati a condividere la stessa connettività esterna spingono spesso a comportamenti drastici.</p>
<p>Ho notato, ad esempio, in più occasioni che i responsabili IT, almeno quelli già consapevoli del problema, tendono a far predisporre collegamenti di tipo SHDSL, talora in sostituzione di semplici ADSL che fino a quel momento avevano ben lavorato, pensando (giustamente per la verità) che sia importante per il VoIP avere una capacità di upstream pari a quella di downstream. Il problema, con questa adozione, è che il downstream, che costituisce la maggior parte del traffico non VoIP, viene fortemente limitato, e di conseguenza la competizione tra traffico realtime e traffico eterogeneo diviene ancora più critica, e il malcontento degli utenti, diffuso.<br />
La soluzione classica consiste nell&#8217;implementare qualche forma di QoS o almeno traffic-shaping per priorizzare (ma in questo caso funziona solo in EGRESS) il traffico VoIP. In genere così la qualità della telefonia migliora (più o meno) ma il malcontento, riguardo alla peggiorata efficienza delle altre tecnologie, è semmai destinato ad aumentare.</p>
<p>Personalmente ritengo che un approccio alternativo possa essere preferibile.</p>
<p>Facciamo l&#8217;ipotesi che la azienda Pinco Pallino, (potrebbe trattarsi di un concessionario di auto o di un grossista di alimentari), abbia una decina di persone, tra impiegati, venditori e magazzino, abilitati ad accedere ad Internet. Ipotizziamo anche che chi si occupa dell&#8217; IT sia una persona competente e magari, avendo implementato un cache dns server e un proxy tipo Squid, sia sempre riuscito a garantire un buon livello di accesso ad Internet tramite una normale ADSL aziendale. Coerentemente, progetti poi di implementare un sistema di telefonia VoIP basato su Asterisk.</p>
<p>Se adottare il modo visto sopra, probabilmente si troverebbe nei guai, ma potrebbe pure adottare una soluzione alternativa, anche discretamente più economica, semplicemente richiedendo l&#8217;installazione di una seconda ADSL aziendale, dedicata esclusivamente al traffico VoIP gestito dal server Asterisk, fondamentalmente quello scambiato con il VoIP Service Provider che si sarà scelto.<br />
Un possibile schema è quello riportato qui sotto:</p>
<pre>                                       +-----------------+
                                       |      gw 1       | ADSL1 provider1
                            +----------+   (default)     +------+
                            |          | NNN.NNN.NNN.NNN |      |
                     +------+-------+  +-----------------+      |
+-------------+      |     eth1     |                           |
|             |  eth0|              |                           |
| Rete Locale +-+----+ Linux router |                           | Internet
|             | |    |              |                           |
+-------------+ |    |     eth2     |                           |
+---------------+-+  +------+-------+  +-----------------+      |
|                 |         |          |      gw 2       |      |
| Asterisk Server |         +----------+     (VOIP)      +------+
|                 |                    | ZZZ.ZZZ.ZZZ.ZZZ | ADSL2 provider2
+-----------------+                    +-----------------+</pre>
<p>Il server Asterisk è semplicemente un elemento della rete locale, nello stesso spazio di indirizzamento IP. La connettività Internet è filtrata da un router Linux. La eth1 di quest&#8217;ultimo è connessa tramite gw1 all&#8217; ADSL provider1, mentre la eth2, tramite gw2, con l&#8217;ADSL2 provider2.</p>
<p>Il problema del router è solo quello di fornire appunto un semplicissimo routing differenziato.<br />
Ipotizzando che il default gateway originale fosse gw1, dovremo ora fare in modo che qualsiasi traffico in ingresso su eth2 ottenga risposta sempre tramite eth2, e non tramite eth1, come invece avverrebbe normalmente.</p>
<p>Bisogna per prima cosa essere certi che il kernel Linux del router fornisca il supporto al “policy routing”.<br />
Ad esempio, durante un eventuale ricompilazione del kernel, occorrerebbe effettuare le scelte sottostanti:</p>
<p><code># cd /usr/src/linux<br />
# make menuconfig<br />
Selezionare "Networking ---&gt;"<br />
Selezionare "Networking options ---&gt;"<br />
[*] TCP/IP networking<br />
[*] IP: advanced router<br />
Scegliere IP: FIB lookup algorithm (FIB_HASH)<br />
[*] IP: policy routing<br />
[*] IP: use netfilter MARK value as routing key</code></p>
<p>A questo punto viene in soccorso il tool iproute2</p>
<p>Occorre innanzitutto creare una nuova voce nella policy routing table definita in /etc/iproute2/rt_tables.<br />
Numerandola #1, chiamiamola &#8220;VOIP&#8221; (servirà proprio al routing del traffico VoIP attraverso eth2).</p>
<p>Dal prompt di root:</p>
<p><code># echo 1 VOIP &gt;&gt; /etc/iproute2/rt_tables</code></p>
<p>Il passo successivo sarà quello di impostare una route con una singola regola per la table VOIP:</p>
<p><code># ip route add default via ZZZ.ZZZ.ZZZ.ZZZ dev eth2 table VOIP<br />
# ip rule add from  table VOIP</code></p>
<p>Da ora in avanti i pacchetti in arrivo dal server Asterisk verranno sottoposti alla routing table VoIP dove, essendo presente una default route, verranno passati al gateway gw2. mentre i pacchetti che arrivano da tutti gli altri nodi locali continueranno ad utilizzare la main routing table.<br />
E tutti vissero felici e contenti</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="Routing differenziato per il VoIP"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/linux/routing-differenziato-per-il-voip"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-10-07 14:10:11"/>
<input type="hidden" name="postContent_0" value="&lt;p&gt;Realizzare una soluzione telefonica, basata su Asterisk e puramente VoIP, e che si possa definire pienamente soddisfacente, è sempre una operazione delicata, ed uno dei suoi prerequisiti essenziali consiste certamente nel poter contare su una connettività Internet stabile e adeguatamente dimensionata. Questo è tanto più vero e l&amp;#8217;obiettivo difficile da raggiungere quando il numero delle utenze della LAN locale diventa elevato, come tipicamente avviene in ambito aziendale.&lt;span id=&quot;more-1864&quot;&gt;&lt;/span&gt;&lt;br /&gt;
La forzata (ed infelice) convivenza di traffico VoIP e traffico molto eterogeneo destinati a condividere la stessa connettività esterna spingono spesso a comportamenti drastici.&lt;/p&gt;
&lt;p&gt;Ho notato, ad esempio, in più occasioni che i responsabili IT, almeno quelli già consapevoli del problema, tendono a far predisporre collegamenti di tipo SHDSL, talora in sostituzione di semplici ADSL che fino a quel momento avevano ben lavorato, pensando (giustamente per la verità) che sia importante per il VoIP avere una capacità di upstream pari a quella di downstream. Il problema, con questa adozione, è che il downstream, che costituisce la maggior parte del traffico non VoIP, viene fortemente limitato, e di conseguenza la competizione tra traffico realtime e traffico eterogeneo diviene ancora più critica, e il malcontento degli utenti, diffuso.&lt;br /&gt;
La soluzione classica consiste nell&amp;#8217;implementare qualche forma di QoS o almeno traffic-shaping per priorizzare (ma in questo caso funziona solo in EGRESS) il traffico VoIP. In genere così la qualità della telefonia migliora (più o meno) ma il malcontento, riguardo alla peggiorata efficienza delle altre tecnologie, è semmai destinato ad aumentare.&lt;/p&gt;
&lt;p&gt;Personalmente ritengo che un approccio alternativo possa essere preferibile.&lt;/p&gt;
&lt;p&gt;Facciamo l&amp;#8217;ipotesi che la azienda Pinco Pallino, (potrebbe trattarsi di un concessionario di auto o di un grossista di alimentari), abbia una decina di persone, tra impiegati, venditori e magazzino, abilitati ad accedere ad Internet. Ipotizziamo anche che chi si occupa dell&amp;#8217; IT sia una persona competente e magari, avendo implementato un cache dns server e un proxy tipo Squid, sia sempre riuscito a garantire un buon livello di accesso ad Internet tramite una normale ADSL aziendale. Coerentemente, progetti poi di implementare un sistema di telefonia VoIP basato su Asterisk.&lt;/p&gt;
&lt;p&gt;Se adottare il modo visto sopra, probabilmente si troverebbe nei guai, ma potrebbe pure adottare una soluzione alternativa, anche discretamente più economica, semplicemente richiedendo l&amp;#8217;installazione di una seconda ADSL aziendale, dedicata esclusivamente al traffico VoIP gestito dal server Asterisk, fondamentalmente quello scambiato con il VoIP Service Provider che si sarà scelto.&lt;br /&gt;
Un possibile schema è quello riportato qui sotto:&lt;/p&gt;
&lt;pre&gt;                                       +-----------------+
                                       |      gw 1       | ADSL1 provider1
                            +----------+   (default)     +------+
                            |          | NNN.NNN.NNN.NNN |      |
                     +------+-------+  +-----------------+      |
+-------------+      |     eth1     |                           |
|             |  eth0|              |                           |
| Rete Locale +-+----+ Linux router |                           | Internet
|             | |    |              |                           |
+-------------+ |    |     eth2     |                           |
+---------------+-+  +------+-------+  +-----------------+      |
|                 |         |          |      gw 2       |      |
| Asterisk Server |         +----------+     (VOIP)      +------+
|                 |                    | ZZZ.ZZZ.ZZZ.ZZZ | ADSL2 provider2
+-----------------+                    +-----------------+&lt;/pre&gt;
&lt;p&gt;Il server Asterisk è semplicemente un elemento della rete locale, nello stesso spazio di indirizzamento IP. La connettività Internet è filtrata da un router Linux. La eth1 di quest&amp;#8217;ultimo è connessa tramite gw1 all&amp;#8217; ADSL provider1, mentre la eth2, tramite gw2, con l&amp;#8217;ADSL2 provider2.&lt;/p&gt;
&lt;p&gt;Il problema del router è solo quello di fornire appunto un semplicissimo routing differenziato.&lt;br /&gt;
Ipotizzando che il default gateway originale fosse gw1, dovremo ora fare in modo che qualsiasi traffico in ingresso su eth2 ottenga risposta sempre tramite eth2, e non tramite eth1, come invece avverrebbe normalmente.&lt;/p&gt;
&lt;p&gt;Bisogna per prima cosa essere certi che il kernel Linux del router fornisca il supporto al “policy routing”.&lt;br /&gt;
Ad esempio, durante un eventuale ricompilazione del kernel, occorrerebbe effettuare le scelte sottostanti:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# cd /usr/src/linux&lt;br /&gt;
# make menuconfig&lt;br /&gt;
Selezionare &quot;Networking ---&amp;gt;&quot;&lt;br /&gt;
Selezionare &quot;Networking options ---&amp;gt;&quot;&lt;br /&gt;
[*] TCP/IP networking&lt;br /&gt;
[*] IP: advanced router&lt;br /&gt;
Scegliere IP: FIB lookup algorithm (FIB_HASH)&lt;br /&gt;
[*] IP: policy routing&lt;br /&gt;
[*] IP: use netfilter MARK value as routing key&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A questo punto viene in soccorso il tool iproute2&lt;/p&gt;
&lt;p&gt;Occorre innanzitutto creare una nuova voce nella policy routing table definita in /etc/iproute2/rt_tables.&lt;br /&gt;
Numerandola #1, chiamiamola &amp;#8220;VOIP&amp;#8221; (servirà proprio al routing del traffico VoIP attraverso eth2).&lt;/p&gt;
&lt;p&gt;Dal prompt di root:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# echo 1 VOIP &amp;gt;&amp;gt; /etc/iproute2/rt_tables&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Il passo successivo sarà quello di impostare una route con una singola regola per la table VOIP:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# ip route add default via ZZZ.ZZZ.ZZZ.ZZZ dev eth2 table VOIP&lt;br /&gt;
# ip rule add from  table VOIP&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Da ora in avanti i pacchetti in arrivo dal server Asterisk verranno sottoposti alla routing table VoIP dove, essendo presente una default route, verranno passati al gateway gw2. mentre i pacchetti che arrivano da tutti gli altri nodi locali continueranno ad utilizzare la main routing table.&lt;br /&gt;
E tutti vissero felici e contenti&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/linux/routing-differenziato-per-il-voip/feed</wfw:commentRss>
		</item>
		<item>
		<title>OpenSSH tunneling (Layer2 VPN)</title>
		<link>http://www.voipandhack.it/archives/linux/openssh-tunneling-layer2-vpn</link>
		<comments>http://www.voipandhack.it/archives/linux/openssh-tunneling-layer2-vpn#comments</comments>
		<pubDate>Thu, 29 Sep 2011 00:08:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[bridge]]></category>

		<category><![CDATA[ethernet]]></category>

		<category><![CDATA[ssh]]></category>

		<category><![CDATA[tunnel]]></category>

		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1861</guid>
		<description><![CDATA[Come anticipato, oltre che il reale tunneling di livello-3 (IP sopra SSH) visto (in precedenza), OpenSSH mette a disposizione la funzionalità di tunneling per il bridging ethernet ovvero una VPN basata su un tunneling di Livello-2.
Per metterlo in pratica occorre avere installato, come prerequisito, il package bridge-utils e procedere esattamente come gia visto nel post [...]]]></description>
			<content:encoded><![CDATA[<p>Come anticipato, oltre che il reale tunneling di livello-3 (IP sopra SSH) visto (<a href="http://www.voipandhack.it/archives/linux/vpn-tunneling-con-openssh">in precedenza</a>), OpenSSH mette a disposizione la funzionalità di tunneling per il bridging ethernet ovvero una VPN basata su un tunneling di Livello-2.<span id="more-1861"></span></p>
<p>Per metterlo in pratica occorre avere installato, come prerequisito, il package bridge-utils e procedere esattamente come gia visto nel post precedente, ma invocare l&#8217;iniziale comando ssh lato client in questa maniera: </p>
<p><code># ssh -o Tunnel=ethernet -f -w 0:0 <IP remoto> true</code></p>
<p>Con lo switch -o  viene specificato il tipo di tunnel come ethernet (bridge) anziché point-to-point, mentre lo switch -f  invia ssh in background in modo da ritornare , dopo l&#8217;autenticazione, immediatamente alla linea di comando locale e non a quella remota, e prima dell&#8217;esecuzione del comando finale (true). questo switch si aspetta un comando remoto di qualche tipo, motivo per cui va bene specificare &#8220;true&#8221;, che effettivamente non fa niente se non restituire 0 (success). Lo switch -w 0:0 serve a fare in modo che vengano generati i devices tap in entrambi i nodi come tap0. Se specificassimo -w 0:1, ad esempio, otterremmo tap0 localmente e tap1 in remoto, ecc.</p>
<p>Consideriamo di voler attuare questo bridging tra una lan locale ed una lan remota, entrambe affacciate su Internet, ciascuna tramite un router Linux avente due interfacce, una (eth0) collegata ad Internet con indirizzo IP pubblico e l&#8217;altra (eth1) collegata fisicamente alla propria LAN. Per comodità ipotizziamo che gli indirizzamenti IP delle due LAN siano 172.16.1.0/16 il primo e 172.16.2.0/16 (in pratica due sottoinsiemi facilmente distinguibili della stessa sottorete).</p>
<p>Su entrambi i router dovrebbe essere a questo punto possibile (via ifconfig -a) sia eth0 che eth1 che tap0. Ora che entrambi sono connessi l&#8217;uno con l&#8217;altro tramite Internet via SSH, occorre infine impostare l&#8217;interfaccia bridge. Qui tornano necessarie le bridge-utils per creare una bridge interface br0, impartendo i comandi (su entrambi i nodi!):</p>
<p><code>brctl addbr br0<br />
brctl addif br0 eth1<br />
brctl addif br0 tap0</code></p>
<p>quindi attivarle, se già non lo fossero:</p>
<p><code>ifconfig tap0 up<br />
ifconfig br0 up</code></p>
<p>Ciò ha generato la interfaccia br0, quindi messo in bridge eth1 con tap0.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="OpenSSH tunneling (Layer2 VPN)"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/linux/openssh-tunneling-layer2-vpn"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-09-29 02:09:57"/>
<input type="hidden" name="postContent_0" value="&lt;p&gt;Come anticipato, oltre che il reale tunneling di livello-3 (IP sopra SSH) visto (&lt;a href=&quot;http://www.voipandhack.it/archives/linux/vpn-tunneling-con-openssh&quot;&gt;in precedenza&lt;/a&gt;), OpenSSH mette a disposizione la funzionalità di tunneling per il bridging ethernet ovvero una VPN basata su un tunneling di Livello-2.&lt;span id=&quot;more-1861&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Per metterlo in pratica occorre avere installato, come prerequisito, il package bridge-utils e procedere esattamente come gia visto nel post precedente, ma invocare l&amp;#8217;iniziale comando ssh lato client in questa maniera: &lt;/p&gt;
&lt;p&gt;&lt;code&gt;# ssh -o Tunnel=ethernet -f -w 0:0 &lt;IP remoto&gt; true&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Con lo switch -o  viene specificato il tipo di tunnel come ethernet (bridge) anziché point-to-point, mentre lo switch -f  invia ssh in background in modo da ritornare , dopo l&amp;#8217;autenticazione, immediatamente alla linea di comando locale e non a quella remota, e prima dell&amp;#8217;esecuzione del comando finale (true). questo switch si aspetta un comando remoto di qualche tipo, motivo per cui va bene specificare &amp;#8220;true&amp;#8221;, che effettivamente non fa niente se non restituire 0 (success). Lo switch -w 0:0 serve a fare in modo che vengano generati i devices tap in entrambi i nodi come tap0. Se specificassimo -w 0:1, ad esempio, otterremmo tap0 localmente e tap1 in remoto, ecc.&lt;/p&gt;
&lt;p&gt;Consideriamo di voler attuare questo bridging tra una lan locale ed una lan remota, entrambe affacciate su Internet, ciascuna tramite un router Linux avente due interfacce, una (eth0) collegata ad Internet con indirizzo IP pubblico e l&amp;#8217;altra (eth1) collegata fisicamente alla propria LAN. Per comodità ipotizziamo che gli indirizzamenti IP delle due LAN siano 172.16.1.0/16 il primo e 172.16.2.0/16 (in pratica due sottoinsiemi facilmente distinguibili della stessa sottorete).&lt;/p&gt;
&lt;p&gt;Su entrambi i router dovrebbe essere a questo punto possibile (via ifconfig -a) sia eth0 che eth1 che tap0. Ora che entrambi sono connessi l&amp;#8217;uno con l&amp;#8217;altro tramite Internet via SSH, occorre infine impostare l&amp;#8217;interfaccia bridge. Qui tornano necessarie le bridge-utils per creare una bridge interface br0, impartendo i comandi (su entrambi i nodi!):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;brctl addbr br0&lt;br /&gt;
brctl addif br0 eth1&lt;br /&gt;
brctl addif br0 tap0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;quindi attivarle, se già non lo fossero:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ifconfig tap0 up&lt;br /&gt;
ifconfig br0 up&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ciò ha generato la interfaccia br0, quindi messo in bridge eth1 con tap0.&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/linux/openssh-tunneling-layer2-vpn/feed</wfw:commentRss>
		</item>
		<item>
		<title>DNS e DHCP facili ed efficienti con Dnsmasq</title>
		<link>http://www.voipandhack.it/archives/linux/dns-e-dhcp-facili-ed-efficienti-con-dnsmasq</link>
		<comments>http://www.voipandhack.it/archives/linux/dns-e-dhcp-facili-ed-efficienti-con-dnsmasq#comments</comments>
		<pubDate>Mon, 26 Sep 2011 13:27:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[android]]></category>

		<category><![CDATA[dhcp]]></category>

		<category><![CDATA[dns]]></category>

		<category><![CDATA[dnsmasq]]></category>

		<category><![CDATA[internet]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1858</guid>
		<description><![CDATA[Per gestire i nomi in una rete domestica di solito è sufficiente configurare manualmente il file /etc/hosts sulle varie macchine. Questo va bene in una rete con 3 o 4 host, ma quando fra server e postazioni fisse, laptop e smartphones, la rete inizia a superare la decina unità, la modifica del file dei nomi [...]]]></description>
			<content:encoded><![CDATA[<p>Per gestire i nomi in una rete domestica di solito è sufficiente configurare manualmente il file /etc/hosts sulle varie macchine. Questo va bene in una rete con 3 o 4 host, ma quando fra server e postazioni fisse, laptop e smartphones, la rete inizia a superare la decina unità, la modifica del file dei nomi su ogni singolo host diventerebbe già decisamente impraticabile. <span id="more-1858"></span>La soluzione classica per fornire la risoluzione dei nomi e la configurazione automatica dei parametri di rete consiste nell&#8217;uso abbinato di due storici programmi/protocolli: BIND e DHCP, entrambi infatti reperibili all’indirizzo <a href="http://www.isc.org">www.isc.org</a>.<br />
BIND è un server DNS completo. Questa caratteristica, tuttavia, comporta una configurazione complessa, basata prevalentemente su file di testo decisamente criptici (almeno per un neofita) relativi alla definizione delle diverse zone (hostnames, domini o sezioni di domini) ed una altrettanto complessa configurazione di base.</p>
<p>DHCP, invece, è un sistema client/server che si occupa della configurazione automatica dei parametri di rete delle varie postazioni collegate alla stessa quando queste la richiedono. Il server DHCP accoglie la richiesta e, in base al MAC address del client, agli IP disponibili e alla propria configurazione, fornisce loro i parametri di rete necessari per utilizzare la rete locale e Internet, parametri che in genere sono: l’IP locale, la netmask, l’indirizzo del gateway di rete e quello dei server DNS. L’IP locale può anche essere univocamente associato ad un MAC address. In questo modo l’utente (la macchina) avrà sempre lo stesso indirizzo al posto di uno scelto tra quelli disponibili. Inoltre, il server DHCP può essere configurato per comunicare a BIND l’hostname e l’indirizzo delle macchine a cui ha fornito i parametri di connessione in modo da aggiornare automaticamente il file di zona relativo alla rete locale. Tuttavia, ripeto, la configurazione di un tale sistema non è banale e si rivela spesso inopportuna per reti casalinghe o anche aziendali di piccole dimensioni.</p>
<p>Una valida alternativa al binomio BIND e DHCP, per rendere più semplice e coerente l’accesso sia alla LAN che a Internet in un contesto del genere, è però costituita dal software dnsmasq, che permette di ottenere gli stessi risultati con una complessità di configurazione e gestione decisamente minore.<br />
Anziché usare i file di zona, decisamente complessi da creare e aggiornare, Dnsmasq fa uso del solo file di sistema &#8220;/etc/hosts&#8221; presente nella macchina su cui gira il servizio.</p>
<p>L’installazione su sistemi Debian e Debian-like, come Ubuntu, è semplicissima:</p>
<p><code># sudo apt-get install dnsmasq-base<br />
# sudo apt-get install dnsmasq</code></p>
<p>Il primo package contiene l&#8217;eseguibile dnsmasq (e la relativa documentazione), mentre il secondo l&#8217; infrastruttura necessaria perché possa venire eseguito come system daemon.</p>
<p>La configurazione di default è già funzionale: imposta un server DNS che, per prima cosa, tenta di risolvere i nomi esaminando il proprio file /etc/hosts, e se così non fosse possibile, inoltra la richiesta ai server elencati in /etc/resolv.conf. Così è sufficiente mantenere aggiornato l’elenco degli host della propria rete locale solo sulla macchina server su cui è installato dnsmasq.</p>
<p>Per fare una semplice verifica:</p>
<p><code># dig ubuntu.com @localhost<br />
</code><br />
<code>; &lt;&lt;&gt;&gt; DiG 9.7.1-P2 &lt;&lt;&gt;&gt; ubuntu.com @localhost<br />
;; global options: +cmd<br />
;; Got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 10350<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0</code></p>
<p><code>;; QUESTION SECTION:<br />
;ubuntu.com.			IN	A</code></p>
<p><code>;; ANSWER SECTION:<br />
ubuntu.com.		202	IN	A	91.189.94.156<br />
</code><br />
<code>;; Query time: 29 msec<br />
;; SERVER: 127.0.0.1#53(127.0.0.1)<br />
;; WHEN: Sun Sep 25 23:12:06 2011<br />
;; MSG SIZE  rcvd: 44</code></p>
<p>Per configurare dnsmasq ad agire come cache per l&#8217; host sul quale è in esecuzione basta che la lista dei nameservers in /etc/resolv.conf contenga la linea</p>
<p><code>nameserver 127.0.0.1</code></p>
<p>come prima linea.</p>
<p>Di conseguenza, impartendo una seconda volta il comando precedente il Query time si riduce a 0 msec, a testimonianza che la cache DNS conteneva già la risposta.</p>
<p>L&#8217;ideale sarebbe disporre di un resolver così strutturato:</p>
<p><code>nameserver 127.0.0.1<br />
nameserver 208.67.222.222<br />
nameserver 208.67.220.220</code></p>
<p>nel quale, oltre al nameserver locale, vengono utilizzati i server unicast di OpenDNS, consigliati per la loro velocità, per l’efficienza dei filtri e perché capaci di aggirare le restrizioni sui DNS operate da provider presenti in Italia, Cina e altri paesi non esattamente paladini delle libertà civili.</p>
<p>Desiderando inoltre che il DNS server risolva i nomi locali, basta semplicemente aggiungerli al file /etc/hosts:</p>
<p><code># echo 192.168.1.3 blackstar &gt;&gt;/etc/hosts</code></p>
<p>e riavviare il servizio:</p>
<p><code># /etc/init.d/dnsmasq restart                          [ OK ]<br />
* Restarting DNS forwarder and DHCP server dnsmasq<br />
</code><br />
quindi:</p>
<p><code># nslookup blackstar localhost<br />
Server:		localhost<br />
Address:	127.0.0.1#53</code></p>
<p><code>Name:	blackstar<br />
Address: 192.168.1.3</code></p>
<p>Nel file degli host è possibile tuttavia elencare solamente postazioni con ip statico. Per tutti quei dispositivi (laptop, smartphone, ecc.) cui è preferibile assegnare l’indirizzo dinamicamente, dnsmasq mette a disposizione il server DHCP integrato: in tal modo, quando un dispositivo ottiene l’ip, dnsmasq lo aggiunge all’elenco degli host noti di cui è in grado di risolvere il nome. Per attivare il DHCP (che per default è disattivato), facendo contemporaneamente attenzione a disattivare qualsiasi altro servizio analogo eventualmente presente sulla LAN, per evitare conflitti, basta aggiungere un paio di righe al file di configurazione /etc/dnsmasq.conf, ad esempio:</p>
<p><code>dhcp-range=192.168.1.50,192.168.1.150,12h<br />
dhcp-option=option:router,192.168.1.1<br />
</code><br />
La prima definisce il range degli indirizzi assegnabili, con un “lease time” di 12 ore; la seconda indica l’indirizzo del gateway di default. Come server DNS viene assegnato automaticamente quello sui cui gira dnsmasq.</p>
<p>Il modo più semplice di effettuare la risoluzione dei nomi negli indirizzi assegnati dinamicamente dal DHCP server in Dnsmasq consiste nell&#8217;impostare correttamente gli hostnames in ciascun host della LAN.<br />
Ad esempio, nella maggior parte dei sistemi Linux, basta editare /etc/hostname, che imposta appunto l&#8217; hostname.<br />
Per i dispositivi mobili il discorso si fa più complesso.<br />
Per fare un esempio pratico entrambi gli smartphone android che possediamo in famiglia presentano lo stesso hostname, tra l&#8217;altro decisamente poco memorizzabile:</p>
<p><code>android_9774d56d682e549c</code></p>
<p>ma ciascuno, ovviamente un MAC diverso, e nella fattispecie 5C:DA:D4:7F:C0:5A il mio personale, e 5C:DA:D4:42:AD:EB quello della mia compagna.</p>
<p>E&#8217; certamente possibile modificare all&#8217;origine l&#8217;hostname dopo aver avviato lo smartphone in recovery mode, oppure tramite l&#8217;Android SDK, ma si può anche intraprendere una strada alternativa, anche per evitare discussioni e patemi d&#8217;animo al proprietario dell&#8217;apparecchio.<br />
Si può infatti impostare una nuova riga in /etc/dnsmasq.conf contenente:</p>
<p><code>dhcp-host=5C:DA:D4:7F:C0:5A,smartphone1</code></p>
<p>e una volta riavviato il servizio dnsmasq ottenere, come desiderato, la corretta risoluzione del nome appena assegnato:</p>
<p><code># cat /var/lib/miscdnsmasq.leases<br />
1317075600 5c:da:d4:7f:c0:5a 192.168.1.88 smartphone1 *<br />
</code><br />
<code># nslookup smartphone1<br />
Server:		127.0.0.1<br />
Address:	127.0.0.1#53</code></p>
<p><code>Name:	smartphone1<br />
Address: 192.168.1.88</code></p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="DNS e DHCP facili ed efficienti con Dnsmasq"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/linux/dns-e-dhcp-facili-ed-efficienti-con-dnsmasq"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-09-26 15:09:25"/>
<input type="hidden" name="postContent_0" value="&lt;p&gt;Per gestire i nomi in una rete domestica di solito è sufficiente configurare manualmente il file /etc/hosts sulle varie macchine. Questo va bene in una rete con 3 o 4 host, ma quando fra server e postazioni fisse, laptop e smartphones, la rete inizia a superare la decina unità, la modifica del file dei nomi su ogni singolo host diventerebbe già decisamente impraticabile. &lt;span id=&quot;more-1858&quot;&gt;&lt;/span&gt;La soluzione classica per fornire la risoluzione dei nomi e la configurazione automatica dei parametri di rete consiste nell&amp;#8217;uso abbinato di due storici programmi/protocolli: BIND e DHCP, entrambi infatti reperibili all’indirizzo &lt;a href=&quot;http://www.isc.org&quot;&gt;www.isc.org&lt;/a&gt;.&lt;br /&gt;
BIND è un server DNS completo. Questa caratteristica, tuttavia, comporta una configurazione complessa, basata prevalentemente su file di testo decisamente criptici (almeno per un neofita) relativi alla definizione delle diverse zone (hostnames, domini o sezioni di domini) ed una altrettanto complessa configurazione di base.&lt;/p&gt;
&lt;p&gt;DHCP, invece, è un sistema client/server che si occupa della configurazione automatica dei parametri di rete delle varie postazioni collegate alla stessa quando queste la richiedono. Il server DHCP accoglie la richiesta e, in base al MAC address del client, agli IP disponibili e alla propria configurazione, fornisce loro i parametri di rete necessari per utilizzare la rete locale e Internet, parametri che in genere sono: l’IP locale, la netmask, l’indirizzo del gateway di rete e quello dei server DNS. L’IP locale può anche essere univocamente associato ad un MAC address. In questo modo l’utente (la macchina) avrà sempre lo stesso indirizzo al posto di uno scelto tra quelli disponibili. Inoltre, il server DHCP può essere configurato per comunicare a BIND l’hostname e l’indirizzo delle macchine a cui ha fornito i parametri di connessione in modo da aggiornare automaticamente il file di zona relativo alla rete locale. Tuttavia, ripeto, la configurazione di un tale sistema non è banale e si rivela spesso inopportuna per reti casalinghe o anche aziendali di piccole dimensioni.&lt;/p&gt;
&lt;p&gt;Una valida alternativa al binomio BIND e DHCP, per rendere più semplice e coerente l’accesso sia alla LAN che a Internet in un contesto del genere, è però costituita dal software dnsmasq, che permette di ottenere gli stessi risultati con una complessità di configurazione e gestione decisamente minore.&lt;br /&gt;
Anziché usare i file di zona, decisamente complessi da creare e aggiornare, Dnsmasq fa uso del solo file di sistema &amp;#8220;/etc/hosts&amp;#8221; presente nella macchina su cui gira il servizio.&lt;/p&gt;
&lt;p&gt;L’installazione su sistemi Debian e Debian-like, come Ubuntu, è semplicissima:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# sudo apt-get install dnsmasq-base&lt;br /&gt;
# sudo apt-get install dnsmasq&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Il primo package contiene l&amp;#8217;eseguibile dnsmasq (e la relativa documentazione), mentre il secondo l&amp;#8217; infrastruttura necessaria perché possa venire eseguito come system daemon.&lt;/p&gt;
&lt;p&gt;La configurazione di default è già funzionale: imposta un server DNS che, per prima cosa, tenta di risolvere i nomi esaminando il proprio file /etc/hosts, e se così non fosse possibile, inoltra la richiesta ai server elencati in /etc/resolv.conf. Così è sufficiente mantenere aggiornato l’elenco degli host della propria rete locale solo sulla macchina server su cui è installato dnsmasq.&lt;/p&gt;
&lt;p&gt;Per fare una semplice verifica:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# dig ubuntu.com @localhost&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.7.1-P2 &amp;lt;&amp;lt;&amp;gt;&amp;gt; ubuntu.com @localhost&lt;br /&gt;
;; global options: +cmd&lt;br /&gt;
;; Got answer:&lt;br /&gt;
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 10350&lt;br /&gt;
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;;; QUESTION SECTION:&lt;br /&gt;
;ubuntu.com.			IN	A&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;;; ANSWER SECTION:&lt;br /&gt;
ubuntu.com.		202	IN	A	91.189.94.156&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;;; Query time: 29 msec&lt;br /&gt;
;; SERVER: 127.0.0.1#53(127.0.0.1)&lt;br /&gt;
;; WHEN: Sun Sep 25 23:12:06 2011&lt;br /&gt;
;; MSG SIZE  rcvd: 44&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Per configurare dnsmasq ad agire come cache per l&amp;#8217; host sul quale è in esecuzione basta che la lista dei nameservers in /etc/resolv.conf contenga la linea&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nameserver 127.0.0.1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;come prima linea.&lt;/p&gt;
&lt;p&gt;Di conseguenza, impartendo una seconda volta il comando precedente il Query time si riduce a 0 msec, a testimonianza che la cache DNS conteneva già la risposta.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;ideale sarebbe disporre di un resolver così strutturato:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nameserver 127.0.0.1&lt;br /&gt;
nameserver 208.67.222.222&lt;br /&gt;
nameserver 208.67.220.220&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;nel quale, oltre al nameserver locale, vengono utilizzati i server unicast di OpenDNS, consigliati per la loro velocità, per l’efficienza dei filtri e perché capaci di aggirare le restrizioni sui DNS operate da provider presenti in Italia, Cina e altri paesi non esattamente paladini delle libertà civili.&lt;/p&gt;
&lt;p&gt;Desiderando inoltre che il DNS server risolva i nomi locali, basta semplicemente aggiungerli al file /etc/hosts:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# echo 192.168.1.3 blackstar &amp;gt;&amp;gt;/etc/hosts&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;e riavviare il servizio:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# /etc/init.d/dnsmasq restart                          [ OK ]&lt;br /&gt;
* Restarting DNS forwarder and DHCP server dnsmasq&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
quindi:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# nslookup blackstar localhost&lt;br /&gt;
Server:		localhost&lt;br /&gt;
Address:	127.0.0.1#53&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Name:	blackstar&lt;br /&gt;
Address: 192.168.1.3&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Nel file degli host è possibile tuttavia elencare solamente postazioni con ip statico. Per tutti quei dispositivi (laptop, smartphone, ecc.) cui è preferibile assegnare l’indirizzo dinamicamente, dnsmasq mette a disposizione il server DHCP integrato: in tal modo, quando un dispositivo ottiene l’ip, dnsmasq lo aggiunge all’elenco degli host noti di cui è in grado di risolvere il nome. Per attivare il DHCP (che per default è disattivato), facendo contemporaneamente attenzione a disattivare qualsiasi altro servizio analogo eventualmente presente sulla LAN, per evitare conflitti, basta aggiungere un paio di righe al file di configurazione /etc/dnsmasq.conf, ad esempio:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dhcp-range=192.168.1.50,192.168.1.150,12h&lt;br /&gt;
dhcp-option=option:router,192.168.1.1&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
La prima definisce il range degli indirizzi assegnabili, con un “lease time” di 12 ore; la seconda indica l’indirizzo del gateway di default. Come server DNS viene assegnato automaticamente quello sui cui gira dnsmasq.&lt;/p&gt;
&lt;p&gt;Il modo più semplice di effettuare la risoluzione dei nomi negli indirizzi assegnati dinamicamente dal DHCP server in Dnsmasq consiste nell&amp;#8217;impostare correttamente gli hostnames in ciascun host della LAN.&lt;br /&gt;
Ad esempio, nella maggior parte dei sistemi Linux, basta editare /etc/hostname, che imposta appunto l&amp;#8217; hostname.&lt;br /&gt;
Per i dispositivi mobili il discorso si fa più complesso.&lt;br /&gt;
Per fare un esempio pratico entrambi gli smartphone android che possediamo in famiglia presentano lo stesso hostname, tra l&amp;#8217;altro decisamente poco memorizzabile:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;android_9774d56d682e549c&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;ma ciascuno, ovviamente un MAC diverso, e nella fattispecie 5C:DA:D4:7F:C0:5A il mio personale, e 5C:DA:D4:42:AD:EB quello della mia compagna.&lt;/p&gt;
&lt;p&gt;E&amp;#8217; certamente possibile modificare all&amp;#8217;origine l&amp;#8217;hostname dopo aver avviato lo smartphone in recovery mode, oppure tramite l&amp;#8217;Android SDK, ma si può anche intraprendere una strada alternativa, anche per evitare discussioni e patemi d&amp;#8217;animo al proprietario dell&amp;#8217;apparecchio.&lt;br /&gt;
Si può infatti impostare una nuova riga in /etc/dnsmasq.conf contenente:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dhcp-host=5C:DA:D4:7F:C0:5A,smartphone1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;e una volta riavviato il servizio dnsmasq ottenere, come desiderato, la corretta risoluzione del nome appena assegnato:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# cat /var/lib/miscdnsmasq.leases&lt;br /&gt;
1317075600 5c:da:d4:7f:c0:5a 192.168.1.88 smartphone1 *&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;# nslookup smartphone1&lt;br /&gt;
Server:		127.0.0.1&lt;br /&gt;
Address:	127.0.0.1#53&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Name:	smartphone1&lt;br /&gt;
Address: 192.168.1.88&lt;/code&gt;&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/linux/dns-e-dhcp-facili-ed-efficienti-con-dnsmasq/feed</wfw:commentRss>
		</item>
		<item>
		<title>VPN tunneling con openssh</title>
		<link>http://www.voipandhack.it/archives/linux/vpn-tunneling-con-openssh</link>
		<comments>http://www.voipandhack.it/archives/linux/vpn-tunneling-con-openssh#comments</comments>
		<pubDate>Sat, 24 Sep 2011 19:49:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[ssh]]></category>

		<category><![CDATA[tunnel]]></category>

		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1779</guid>
		<description><![CDATA[Una relativamente poco conosciuta feature da tempo presente in openssh è la sua capacità di creare un tunnel VPN.
In questo contesto, con tunneling si vuole intendere un reale tunneling di livello-3 (IP sopra SSH), e non l&#8217; SSH forwarding cui spesso ci si riferisce impropriamente come SSH tunneling. 
In questo caso viene creata una nuova [...]]]></description>
			<content:encoded><![CDATA[<p>Una relativamente poco conosciuta feature da tempo presente in openssh è la sua capacità di creare un tunnel VPN.</p>
<p>In questo contesto, con tunneling si vuole intendere un reale tunneling di livello-3 (IP sopra SSH), e non l&#8217; SSH forwarding cui spesso ci si riferisce impropriamente come SSH tunneling. <span id="more-1779"></span><br />
In questo caso viene creata una nuova interfaccia di rete virtuale, utilizzabile al pari di qualsiasi altra.<br />
Questo meccanismo è decisamente più potente e flessible del semplice forwarding e può venire sfruttato oltre che per TCP, anche per UDP e ICMP.<br />
Una volta stabilita, tale VPN permette l&#8217;i inoltro di traffico tra due network remote, o quantomeno distinte, tramite una connessione SSH.<br />
Impostarla è realmente molto semplice:</p>
<p>Sulla macchina server occorre abilitare il tunneling e permettere l&#8217;accesso come root, modificando /etc/ssh/sshd_config:</p>
<p><code>PermitTunnel yes<br />
PermitRootlogin yes</code></p>
<p>quindi riavviare il server:</p>
<p><code># /etc/init.d/sshd restart</code></p>
<p>Sulla macchina client, e già come utente root (altrimenti non sarebbe possibile la creazione dei  necessari network devices) si può quindi effettuare il login al server.</p>
<p><code># ssh -w any:any server</code></p>
<p>In seguito a cio, sia sul server che sul client, sarà presente un nuovo tun device:</p>
<pre>
tun0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          POINTOPOINT NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
</pre>
<p>Per configurarli, dato che si tratta di devices di tipo point-to-point, su ciascuno dei due andrà impostato il corrispondente peer.<br />
Rispettivamente, sul client:</p>
<p><code># ifconfig tun0 172.16.0.1 pointopoint 172.16.0.2<br />
</code><br />
e sul server:</p>
<p><code># ifconfig tun0 172.16.0.2 pointopoint 172.16.0.1</code></p>
<p>Da ultimo, ovviamente, sarà necessario impostare un routing coerente tra le due reti appena aggregate.</p>
<p>Vi è modo, pure, di impostare il tunneling a layer 2, con devices ethernet virtuali. Tutto ciò che occorre fare in tal caso è impostare il device type nel file di configurazione del client (/etc/ssh/ssh_config) con la direttiva:</p>
<p><code>TunnelDevice ethernet</code></p>
<p>dopodiche i nuovi network devices saranno di tipo tap anziché tun.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="VPN tunneling con openssh"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/linux/vpn-tunneling-con-openssh"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-09-24 21:09:37"/>
<input type="hidden" name="postContent_0" value="&lt;p&gt;Una relativamente poco conosciuta feature da tempo presente in openssh è la sua capacità di creare un tunnel VPN.&lt;/p&gt;
&lt;p&gt;In questo contesto, con tunneling si vuole intendere un reale tunneling di livello-3 (IP sopra SSH), e non l&amp;#8217; SSH forwarding cui spesso ci si riferisce impropriamente come SSH tunneling. &lt;span id=&quot;more-1779&quot;&gt;&lt;/span&gt;&lt;br /&gt;
In questo caso viene creata una nuova interfaccia di rete virtuale, utilizzabile al pari di qualsiasi altra.&lt;br /&gt;
Questo meccanismo è decisamente più potente e flessible del semplice forwarding e può venire sfruttato oltre che per TCP, anche per UDP e ICMP.&lt;br /&gt;
Una volta stabilita, tale VPN permette l&amp;#8217;i inoltro di traffico tra due network remote, o quantomeno distinte, tramite una connessione SSH.&lt;br /&gt;
Impostarla è realmente molto semplice:&lt;/p&gt;
&lt;p&gt;Sulla macchina server occorre abilitare il tunneling e permettere l&amp;#8217;accesso come root, modificando /etc/ssh/sshd_config:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PermitTunnel yes&lt;br /&gt;
PermitRootlogin yes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;quindi riavviare il server:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# /etc/init.d/sshd restart&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Sulla macchina client, e già come utente root (altrimenti non sarebbe possibile la creazione dei  necessari network devices) si può quindi effettuare il login al server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# ssh -w any:any server&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In seguito a cio, sia sul server che sul client, sarà presente un nuovo tun device:&lt;/p&gt;
&lt;pre&gt;
tun0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          POINTOPOINT NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
&lt;/pre&gt;
&lt;p&gt;Per configurarli, dato che si tratta di devices di tipo point-to-point, su ciascuno dei due andrà impostato il corrispondente peer.&lt;br /&gt;
Rispettivamente, sul client:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# ifconfig tun0 172.16.0.1 pointopoint 172.16.0.2&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
e sul server:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# ifconfig tun0 172.16.0.2 pointopoint 172.16.0.1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Da ultimo, ovviamente, sarà necessario impostare un routing coerente tra le due reti appena aggregate.&lt;/p&gt;
&lt;p&gt;Vi è modo, pure, di impostare il tunneling a layer 2, con devices ethernet virtuali. Tutto ciò che occorre fare in tal caso è impostare il device type nel file di configurazione del client (/etc/ssh/ssh_config) con la direttiva:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TunnelDevice ethernet&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;dopodiche i nuovi network devices saranno di tipo tap anziché tun.&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/linux/vpn-tunneling-con-openssh/feed</wfw:commentRss>
		</item>
		<item>
		<title>Download tramite Bash</title>
		<link>http://www.voipandhack.it/archives/linux/download-tramite-bash</link>
		<comments>http://www.voipandhack.it/archives/linux/download-tramite-bash#comments</comments>
		<pubDate>Sat, 24 Sep 2011 08:29:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[bash]]></category>

		<category><![CDATA[socket]]></category>

		<category><![CDATA[TCP]]></category>

		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.voipandhack.it/?p=1775</guid>
		<description><![CDATA[Nel post intitolato &#8220;Bash Socket Programming&#8221; avevo trattato l&#8217;argomento relativo alla possibilità, sotto bash e tramite i device /dev/tcp e /dev/udp, di aprire un socket e far passare dei dati attraverso di esso, affermando anche che in tal modo non è più necessario, ad esempio, avere a disposizione comandi come wget o curl o lynx [...]]]></description>
			<content:encoded><![CDATA[<p>Nel post intitolato &#8220;<a href="http://www.voipandhack.it/archives/linux/bash-socket-programming">Bash Socket Programming</a>&#8221; avevo trattato l&#8217;argomento relativo alla possibilità, sotto bash e tramite i device /dev/tcp e /dev/udp, di aprire un socket e far passare dei dati attraverso di esso, affermando anche che in tal modo non è più necessario, ad esempio, avere a disposizione comandi come wget o curl o lynx per ottenere i dati da un server remoto.<br />
Rivedendolo a distanza di tempo mi sono accorto che gli esempi a corredo non si estendevano ad includere una soluzione per una esigenza molto comune e pratica, cioè il download di files remoti via HTTP.<span id="more-1775"></span></p>
<p>Qui invece, vi è l&#8217;esempio di come un socket tcp gestito tramite bash possa venire usato a tale scopo.</p>
<p>Ipotizziamo, per comodità, di trovarci a dover scaricare l&#8217;ultima release di Asterisk da una macchina, priva di qualsiasi browser, e sprovvista degli abituali tools finalizzati al download.</p>
<p>Quanto basta è solamente:</p>
<pre># (echo -e "GET /pub/telephony/asterisk/releases/asterisk-1.8.7.0.tar.gz HTTP/1.0rnrn"
1&gt;&amp;3 &amp; cat 0&lt;&amp;3) 3&lt;&gt; /dev/tcp/downloads.asterisk.org/80
| (read i; while [ "$(echo $i | tr -d 'r')" != "" ];
do read i; done; cat) &gt; asterisk-1.8.7.0.tar.gz</pre>
<p>Appena lanciato il comando è possibile verificare da un altro terminale che è effettivamente stata stabilita una connessione al server specificato:</p>
<pre># netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 silversurfer:46365      downloads.asterisk.:www ESTABLISHED</pre>
<p>mentre il file specificato si sta generando nella directory corrente fino a raggiungere le dimensioni originali:</p>
<pre># ls -lrt
-rw-r--r--  1 myuser mygroup    27828568 2011-09-24 00:42 asterisk-1.8.7.0.tar.gz</pre>
<p>successivamente potremo verificare che il file sia stato correttamente trasferito:</p>
<pre># sha1sum asterisk-1.8.7.0.tar.gz  |grep "e28ad2f52a227acc7ec6d6952f3fd41baecd6292"
e28ad2f52a227acc7ec6d6952f3fd41baecd6292  asterisk-1.8.7.0.tar.gz
</pre>
<p>Vediamo come opera il codice bash utilizzato per effettuane il download:</p>
<p>Per scaricare un file tramite HTTP, occorre connettersi al server, inviare una richiesta HTTP (in questo caso &#8220;GET / HTTP/1.0&#8243;) eventualmente seguita da qualsiasi altro HTTP headers sia opportuno specificare, e da una linea vuota. Il server HTTP dovrebbe replicare di conseguenza con uno status code e relativo significato (tipo &#8220;200 OK&#8221;), altri headers HTTP, una linea vuota, quindi il contenuto.</p>
<p>Sappiamo già che in bash, è possibile aprire network socket, tramite l&#8217; interface virtuale /dev/tcp/&lt;server&gt;/&lt;porta&gt;. Infatti reindirizziamo la richiesta HTTP a /dev/tcp/downloads.asterisk.org/80 proprio per contattare il server downloads.asterisk.org sulla porta 80. Tuttavia, dato che ogni singola operazione su /dev/tcp crea una nuova connessione e infine la chiude, dobbiamo riuscire a mantenere la stessa connessione e da essa ottenere il contenuto desiderato.<br />
Ciò si effettua creando una subshell, ed impostando il file descriptor 3 per leggere dal e scrivere sul socket:</p>
<pre># (echo -e "GET /pub/telephony/asterisk/releases/asterisk-1.8.7.0.tar.gz HTTP/1.0rnrn"
1&gt;&amp;3 &amp; cat 0&lt;&amp;3) 3&lt;&gt; /dev/tcp/downloads.asterisk.org/80</pre>
<p>I due comandi nella subshell vengono eseguiti in modo concorrente, pertanto il comando echo è seguito da un carattere di ampersand (&amp;) per procedere in background, mentre il suo output viene rediretto al file descriptor 3 (1&gt;&amp;3). Viene usato read per leggere l&#8217; input, tramite pipe, sempre dal file descriptor 3 (0&lt;&amp;3).<br />
Ciò avviene all&#8217;interno di un loop che legge tutti gli headers HTTP fino a trovare una linea vuota, quindi il resto viene passato a cat, ed infine rediretto su file.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="UTF-8"/>
<input type="hidden" name="blogPosts" value="1"/>
<input type="hidden" name="blogUrl" value="http://www.voipandhack.it"/>
<input type="hidden" name="blogName" value="VoIP and Hacking | Consulenza Documentazione"/>
<input type="hidden" name="blogValueEncoding" value="htmlSpecialChars"/>
<input type="hidden" name="postTitle_0" value="Download tramite Bash"/>
<input type="hidden" name="postLink_0" value="http://www.voipandhack.it/archives/linux/download-tramite-bash"/>
<input type="hidden" name="postAuthor_0" value="admin"/>
<input type="hidden" name="postDateTime_0" value="2011-09-24 10:09:21"/>
<input type="hidden" name="postContent_0" value="&lt;p&gt;Nel post intitolato &amp;#8220;&lt;a href=&quot;http://www.voipandhack.it/archives/linux/bash-socket-programming&quot;&gt;Bash Socket Programming&lt;/a&gt;&amp;#8221; avevo trattato l&amp;#8217;argomento relativo alla possibilità, sotto bash e tramite i device /dev/tcp e /dev/udp, di aprire un socket e far passare dei dati attraverso di esso, affermando anche che in tal modo non è più necessario, ad esempio, avere a disposizione comandi come wget o curl o lynx per ottenere i dati da un server remoto.&lt;br /&gt;
Rivedendolo a distanza di tempo mi sono accorto che gli esempi a corredo non si estendevano ad includere una soluzione per una esigenza molto comune e pratica, cioè il download di files remoti via HTTP.&lt;span id=&quot;more-1775&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Qui invece, vi è l&amp;#8217;esempio di come un socket tcp gestito tramite bash possa venire usato a tale scopo.&lt;/p&gt;
&lt;p&gt;Ipotizziamo, per comodità, di trovarci a dover scaricare l&amp;#8217;ultima release di Asterisk da una macchina, priva di qualsiasi browser, e sprovvista degli abituali tools finalizzati al download.&lt;/p&gt;
&lt;p&gt;Quanto basta è solamente:&lt;/p&gt;
&lt;pre&gt;# (echo -e &quot;GET /pub/telephony/asterisk/releases/asterisk-1.8.7.0.tar.gz HTTP/1.0rnrn&quot;
1&amp;gt;&amp;amp;3 &amp;amp; cat 0&amp;lt;&amp;amp;3) 3&amp;lt;&amp;gt; /dev/tcp/downloads.asterisk.org/80
| (read i; while [ &quot;$(echo $i | tr -d 'r')&quot; != &quot;&quot; ];
do read i; done; cat) &amp;gt; asterisk-1.8.7.0.tar.gz&lt;/pre&gt;
&lt;p&gt;Appena lanciato il comando è possibile verificare da un altro terminale che è effettivamente stata stabilita una connessione al server specificato:&lt;/p&gt;
&lt;pre&gt;# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 silversurfer:46365      downloads.asterisk.:www ESTABLISHED&lt;/pre&gt;
&lt;p&gt;mentre il file specificato si sta generando nella directory corrente fino a raggiungere le dimensioni originali:&lt;/p&gt;
&lt;pre&gt;# ls -lrt
-rw-r--r--  1 myuser mygroup    27828568 2011-09-24 00:42 asterisk-1.8.7.0.tar.gz&lt;/pre&gt;
&lt;p&gt;successivamente potremo verificare che il file sia stato correttamente trasferito:&lt;/p&gt;
&lt;pre&gt;# sha1sum asterisk-1.8.7.0.tar.gz  |grep &quot;e28ad2f52a227acc7ec6d6952f3fd41baecd6292&quot;
e28ad2f52a227acc7ec6d6952f3fd41baecd6292  asterisk-1.8.7.0.tar.gz
&lt;/pre&gt;
&lt;p&gt;Vediamo come opera il codice bash utilizzato per effettuane il download:&lt;/p&gt;
&lt;p&gt;Per scaricare un file tramite HTTP, occorre connettersi al server, inviare una richiesta HTTP (in questo caso &amp;#8220;GET / HTTP/1.0&amp;#8243;) eventualmente seguita da qualsiasi altro HTTP headers sia opportuno specificare, e da una linea vuota. Il server HTTP dovrebbe replicare di conseguenza con uno status code e relativo significato (tipo &amp;#8220;200 OK&amp;#8221;), altri headers HTTP, una linea vuota, quindi il contenuto.&lt;/p&gt;
&lt;p&gt;Sappiamo già che in bash, è possibile aprire network socket, tramite l&amp;#8217; interface virtuale /dev/tcp/&amp;lt;server&amp;gt;/&amp;lt;porta&amp;gt;. Infatti reindirizziamo la richiesta HTTP a /dev/tcp/downloads.asterisk.org/80 proprio per contattare il server downloads.asterisk.org sulla porta 80. Tuttavia, dato che ogni singola operazione su /dev/tcp crea una nuova connessione e infine la chiude, dobbiamo riuscire a mantenere la stessa connessione e da essa ottenere il contenuto desiderato.&lt;br /&gt;
Ciò si effettua creando una subshell, ed impostando il file descriptor 3 per leggere dal e scrivere sul socket:&lt;/p&gt;
&lt;pre&gt;# (echo -e &quot;GET /pub/telephony/asterisk/releases/asterisk-1.8.7.0.tar.gz HTTP/1.0rnrn&quot;
1&amp;gt;&amp;amp;3 &amp;amp; cat 0&amp;lt;&amp;amp;3) 3&amp;lt;&amp;gt; /dev/tcp/downloads.asterisk.org/80&lt;/pre&gt;
&lt;p&gt;I due comandi nella subshell vengono eseguiti in modo concorrente, pertanto il comando echo è seguito da un carattere di ampersand (&amp;amp;) per procedere in background, mentre il suo output viene rediretto al file descriptor 3 (1&amp;gt;&amp;amp;3). Viene usato read per leggere l&amp;#8217; input, tramite pipe, sempre dal file descriptor 3 (0&amp;lt;&amp;amp;3).&lt;br /&gt;
Ciò avviene all&amp;#8217;interno di un loop che legge tutti gli headers HTTP fino a trovare una linea vuota, quindi il resto viene passato a cat, ed infine rediretto su file.&lt;/p&gt;
"/>
<table cellspacing="0" cellpadding="0" border="0" width="100%" ><tr><td align="left">Send post as <a href="http://en.pdf24.org" target="_blank">PDF</a> to <input class="pdf24Plugin-cp-input" type="text" name="sendEmailTo" value="Enter email address" onMouseDown="this.value = '';"/> <input class="pdf24Plugin-cp-submit" type="submit" value="Send"/></td><td align="right"><a href="http://en.pdf24.org" target="_blank" title="PDF | PDF Creator | PDF Converter"><img src="http://www.pdf24.org/images/sheep_16x16.gif" alt="PDF | PDF Creator | PDF Converter" border="0"/></a></td></tr></table></form></div>]]></content:encoded>
			<wfw:commentRss>http://www.voipandhack.it/archives/linux/download-tramite-bash/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

