Adaway
29-04-2008, 23:24
Quanto segue è nato a causa dei problemi che avevo col mio router, uno ZyXel P660HW + ADSL Telecom Flat.
Il problema era che da alcuni mesi, se usavo i programmi P2P, quando navigavo mi andava tutto in timeout.
Per fare un esempio concreto: perdevo il 30% dei ping che facevo su www.google.it
Dopo aver fatto prove varie (riconfigurare il router, cambiare firmware, ecc...) senza risolvere niente, ho optato per una soluzione radicale:
ho castrato il router, e lo faccio funzionare come se fosse un modem.
Poi ho installato un virtualPC (su VMWare Server) con M0n0wall, che mi fa da router, da NAT, da firewall e da DHCP server.
Ed ora funziona tutto a meraviglia, non perdo più nemmeno un pacchetto, e navigo più velocemente di prima, e senza timeout. :D :D :D
Ora, veniamo a noi: come facciamo a fare questa cosa?
Prima di tutto, vediamo cosa ci serve:
*) VMWare Server: http://www.vmware.com/products/server/
il VMWare Server è gratis, basta registrarsi.
Ci servirà perché faremo tutto con un unico computer.
Quindi useremo VMWare per creare un virtualPC su cui installeremo Monowall.
*) Il firewall, Monowall:
http://m0n0.ch/wall/ (sito generale)
http://m0n0.ch/wall/downloads.php (sezione download - io uso la generic-pc-1.233.img)
http://m0n0.ch/wall/documentation.php (manuali e quick start guide)
Monowall è un mini sistema operativo basato su BSD, è molto compatto, occupa solo qualche Mb, ed è pensato per essere molto efficiente su device poco potenti. Occupa solo 64Mb di ram, e si configura con interfaccia WEB.
*) Immagine di un vitualPC per VMWare con monowall già installato
http://chrisbuechler.com/m0n0wall/vmware/ (informazioni varie)
http://chrisbuechler.com/m0n0wall/downloads/vmware/m0n0wall-1.2-HD-VMware-5.zip
(immagine del virtual PC)
Ora, cosa dobbiamo fare?
1) installare VMware Server
2) decomprimere da qualche parte l'immagine di monowall già preparata per vmware (io ho una cartella C:\VirtualPC\VMWare\monowall)
3) dalla console di VMWare Server, aprire l'immagine del VPC (virtual PC) appena decompressa
4) avviare il VPC per verificare che parta
noterete che ha 3 schede di rete
la prima è la LAN
la seconda è la WAN
la terza è la OPT (ignoriamola, credo serva per i lWiFi o per le DMZ)
5) fare un po di esperimenti per capire come funziona monowall (VMware lo do già per assodato :-) (le prime due schede di rete le ho bridge-ate alla mia scheda di rete fisica; la scheda di rete OPT l'ho disattivata in monowall, credo serva per le DMZ)
leggete questo documento, vi spiega come è configurato monowall
http://chrisbuechler.com/m0n0wall/vmware/
fondamentalmente, la LAN è settata sulla classe 192.168.96.1/24
la WAN è in DHCP
Lo scopo è di fare esperimenti.
Con una configurazione di questo tipo, se bridgate la LAN e la WAN alla vostra singola scheda di rete fisica del vostro PC vero, otterrete che:
la WAN è in DHCP, e si becca un IP dal vostro router.
La LAN la ha sua classe a parte, e quindi se mettete un PC sulla classe 192.168.96.0/24, e gli date monowall come default GW e DNS (192.168.96.1) dovreste riuscire a navigare (in questo caso siete doppoio-nattati, da monowall e dal router, è poco efficiente, ma funziona)
Quando avete controllato che tutto funziona a dovere, ed avete fatto gli esperimenti del caso, potete procedere :cool:
6) upgradare monowall all'ultima versione tramite l'apposito comando nella webGui (gli si da in pasto il file generic-pc-1.233.img)
7) configurare la LAN di monowall nel modo opportuno, menu Interfaces\LAN (assegnare la classe di IP giusta e l'IP giusto, attivare il DHCP se necessario) io a monowall ho dato l'IP 192.168.1.2
8) configurare la WAN di monowall in PPPoE (menu Interfaces\WAN), ed inserire user e pwd (i soliti "aliceadsl/aliceadsl"), flaggare la "connection on demand" e lasciare il timeout a 0
Questo serve per dire a monowall che sarà lui ad acquisire (tramite PPPoE) l'indirizzo pubblico che ci assegnerà la telecom.
Se volete capire come funziona questa cosa, qui ve lo spiegano
http://en.wikipedia.org/wiki/Point-to-Point_Protocol_over_Ethernet
(il riassunto è che: monowall griderà in rete "Chi mi da l'ADSL?", il router opportunamente configurato risponderà "Sono io, macchettistrilli? tieni, ecco il mio MAC", e monowall "Ok, ci sto, io parlo e tu trasmetti; mi segno il tuo MAC",ed il router, "Ok, ci sto pure io perchè sei simpatico! :) ", ed a questo punto monowall ed il router hanno fatto amicizia :) , conoscono i rispettivi indirizzi MAC, e possono comunicare tra di loro)
9) configurare lo ZyXel come bridge.
Questo è importante, andiamo ad escludere le funzioni di routing/firewall/nat del router.
Ecco come risulta configurato ora il mio router:
LAN setup
DHCP -->NONE
TCP
IP 192.168.1.1 / 255.255.255.0
RIP Direction - none
RIP Version - N/A
Multicast - None
AnyIP Setup - NON Spuntato
WAN
Name: Telecom
Mode: Bridge
Encapsulation: RFC 1483
Multiplex: LLC
VPI/VCI: 8/35
ATM QoS Type: UBR
Cell Rate: 0/0/0
NAT
none
Firewall
Disabled
Time & Date
Use Protocol when Bootup: NTP (RFC-1305)
IP Address or URL: it.pool.ntp.org
Tima and dat: +1
Daylight Savings: Si
Remote Management Control
LAN ONLY su tutti
UPnP
Disattivato tutto
Dopo averlo messo in bridge ho dovuto spegnerlo e riaccenderlo.
10) Ora, configurate il vostro PC in modo che abbia monowall come default gateway (il mio PC ha IP fisso 192.168.1.20, e default gateay 192.168.1.2 (monowall), come DNS uso sempre monowall 192.168.1.2, che usa i DNS che gli indica la telecom)
11) Rullo di tamburi :sperem: .... provate a navigare!:cool:
A questo punto, dovreste essere on-line. :D
Note varie
*) notare che monowall va riavviato alcune volte nel mentre che si cambiano gli IP e cose simili (ma ve lo dice lui quando serve... :) ).
Cosa fare dopo?
1) disattivare la regola del firewall che consente di essere pingati (è l'unica regola che trovate già definita)
2) aggiungere gli "inbound NAT" per aprire le porte sul firewall e girarle sui pc che necessitano di ricevere connessioni dal mondo esterno
2/bis) quando impostate le regole del nat per fare i port forward flaggate anche la spunta "Auto-add a firewall rule to permit traffic through this NAT rule" così il firewall viene impostato automaticamente per aprire queste porte
3) verificare che tutto funzioni
4) (la torta sulla cigliegina) andare nel "traffic shape\Magic shaper wizard"
immettere i parametri, flaggare "Set P2P traffic to lowest priority" ed "installare" il traffic shape. Questo mette tutto il traffico p2p a priorità ridicola, così si naviga benissimo anche con i programmi p2p aperti... e finalmente non perdo più i ping! EUREKA! :D
5) dite a VMWare di accendere automaticamente il VPC di monowall quando accendete il PC (andate nei setting della virtual machine, andate nelle options, andate in startup/shutdown, selezionate il local system account, selezionate "Power on vitual machine" in "on host startup")
6) aggiungete i vostri DNS a monowall (system\general setup)
7) se ritenete opportuno, togliete la spunta da "Allow DNS server list to be overridden by DHCP/PPP on WAN"
8) controllate che tutte le porte siano chiuse con questo test on-line https://www.grc.com/x/ne.dll?bh0bkyd2
Alla fine di tutto cosa otteniamo?
*) un router che funziona come un modem, che SOLO ha un IP locale (non ha nessun IP publico) e che quindi NON funziona come gateway
*) un virtual PC che gira con monowall, che è un client PPPoE e che quindi ACQUISISCE l'IP pubblico, dispone inoltre di un IP locale sulla LAN, e funziona da gateway per navigare (oltre a nattare, e fare da firewall)
*) In pratica, con un solo PC ho un IP locale sulla scheda di rete che usa windows quando parte, poi parte vmware con monowall, che (sempre usando la stessa scheda di rete) acquisisce un ip pubblico, ed un altro IP locale
alla fine ho che
il mio PC ha ip 192.168.1.20
lo zyxel ha ip 192.168.1.1
monowall ha l'ip locale 192.168.1.2 + l'IP pubblico
il default gateway del mio pc è monowall (ip 192.168.1.2)
monowall ha 3 schede di rete, in VMWare le prime due sono entrambe bridged alla scheda di rete fisica del mio PC. la terza è scollegata (e disattivata in monowall, io non la uso)
Note varie ed eventuali:
*) Fate un backup della configurazione del router, e della vostra rete, PRIMA di fare delle modifiche. Così se qualcosa non va potete ripristinare tutto.
*) se non siete un po esperti di reti, firewall, e routing... è meglio che non vi imbarchiate in questo tipo di gestione della connessione
*) il wireless dello zyxel non l'ho mai usato... non so se essendo configurato come bridge ADSL, si può usare comunque anche il WiFi oppure no
*) ho usato questa configurazione sul mio ZyXel 660Hw sia con la PE10 che con la PE11, senza problemi
*) Ho provato ad usare il TCPOptimizer.exe per ottimizzare la connessione... col risultato che ho dimezzato :eek: la velocità di upload... quella di download non l'ho manco guardata, ho annullato tutto e basta (ma ci ho perso solo 10 minuti, magari con un po di esperienza si ottiene qualcosa di meglio)
Impressioni di utilizzo
*) Il firewall M0n0wall è molto efficiente, usa solo 64Mb di ram!
*) L'interfaccia di configurazione di monowall è in PHP, ed è estremamente veloce! (con lo zyxel a volte passavano diversi secondi per passare da una schermata di configurazione all'altra, monowall invece è quasi istantaneo)
*) l'ho già detto... non perdo più nemmeno un ping, ed i siti non vanno più in timeout :)
*) Inoltre, grazie al traffic shape che riduce la priorità del P2P, navigo più in fretta di prima (anche quando non avevo i timeout)
Sperando che quanto descritto possa essere utile a qualcuno... buon lavoro! :-)
(avendo VMWare già installato, in meno di 2 ore ho fatto tutto... :)
Il problema era che da alcuni mesi, se usavo i programmi P2P, quando navigavo mi andava tutto in timeout.
Per fare un esempio concreto: perdevo il 30% dei ping che facevo su www.google.it
Dopo aver fatto prove varie (riconfigurare il router, cambiare firmware, ecc...) senza risolvere niente, ho optato per una soluzione radicale:
ho castrato il router, e lo faccio funzionare come se fosse un modem.
Poi ho installato un virtualPC (su VMWare Server) con M0n0wall, che mi fa da router, da NAT, da firewall e da DHCP server.
Ed ora funziona tutto a meraviglia, non perdo più nemmeno un pacchetto, e navigo più velocemente di prima, e senza timeout. :D :D :D
Ora, veniamo a noi: come facciamo a fare questa cosa?
Prima di tutto, vediamo cosa ci serve:
*) VMWare Server: http://www.vmware.com/products/server/
il VMWare Server è gratis, basta registrarsi.
Ci servirà perché faremo tutto con un unico computer.
Quindi useremo VMWare per creare un virtualPC su cui installeremo Monowall.
*) Il firewall, Monowall:
http://m0n0.ch/wall/ (sito generale)
http://m0n0.ch/wall/downloads.php (sezione download - io uso la generic-pc-1.233.img)
http://m0n0.ch/wall/documentation.php (manuali e quick start guide)
Monowall è un mini sistema operativo basato su BSD, è molto compatto, occupa solo qualche Mb, ed è pensato per essere molto efficiente su device poco potenti. Occupa solo 64Mb di ram, e si configura con interfaccia WEB.
*) Immagine di un vitualPC per VMWare con monowall già installato
http://chrisbuechler.com/m0n0wall/vmware/ (informazioni varie)
http://chrisbuechler.com/m0n0wall/downloads/vmware/m0n0wall-1.2-HD-VMware-5.zip
(immagine del virtual PC)
Ora, cosa dobbiamo fare?
1) installare VMware Server
2) decomprimere da qualche parte l'immagine di monowall già preparata per vmware (io ho una cartella C:\VirtualPC\VMWare\monowall)
3) dalla console di VMWare Server, aprire l'immagine del VPC (virtual PC) appena decompressa
4) avviare il VPC per verificare che parta
noterete che ha 3 schede di rete
la prima è la LAN
la seconda è la WAN
la terza è la OPT (ignoriamola, credo serva per i lWiFi o per le DMZ)
5) fare un po di esperimenti per capire come funziona monowall (VMware lo do già per assodato :-) (le prime due schede di rete le ho bridge-ate alla mia scheda di rete fisica; la scheda di rete OPT l'ho disattivata in monowall, credo serva per le DMZ)
leggete questo documento, vi spiega come è configurato monowall
http://chrisbuechler.com/m0n0wall/vmware/
fondamentalmente, la LAN è settata sulla classe 192.168.96.1/24
la WAN è in DHCP
Lo scopo è di fare esperimenti.
Con una configurazione di questo tipo, se bridgate la LAN e la WAN alla vostra singola scheda di rete fisica del vostro PC vero, otterrete che:
la WAN è in DHCP, e si becca un IP dal vostro router.
La LAN la ha sua classe a parte, e quindi se mettete un PC sulla classe 192.168.96.0/24, e gli date monowall come default GW e DNS (192.168.96.1) dovreste riuscire a navigare (in questo caso siete doppoio-nattati, da monowall e dal router, è poco efficiente, ma funziona)
Quando avete controllato che tutto funziona a dovere, ed avete fatto gli esperimenti del caso, potete procedere :cool:
6) upgradare monowall all'ultima versione tramite l'apposito comando nella webGui (gli si da in pasto il file generic-pc-1.233.img)
7) configurare la LAN di monowall nel modo opportuno, menu Interfaces\LAN (assegnare la classe di IP giusta e l'IP giusto, attivare il DHCP se necessario) io a monowall ho dato l'IP 192.168.1.2
8) configurare la WAN di monowall in PPPoE (menu Interfaces\WAN), ed inserire user e pwd (i soliti "aliceadsl/aliceadsl"), flaggare la "connection on demand" e lasciare il timeout a 0
Questo serve per dire a monowall che sarà lui ad acquisire (tramite PPPoE) l'indirizzo pubblico che ci assegnerà la telecom.
Se volete capire come funziona questa cosa, qui ve lo spiegano
http://en.wikipedia.org/wiki/Point-to-Point_Protocol_over_Ethernet
(il riassunto è che: monowall griderà in rete "Chi mi da l'ADSL?", il router opportunamente configurato risponderà "Sono io, macchettistrilli? tieni, ecco il mio MAC", e monowall "Ok, ci sto, io parlo e tu trasmetti; mi segno il tuo MAC",ed il router, "Ok, ci sto pure io perchè sei simpatico! :) ", ed a questo punto monowall ed il router hanno fatto amicizia :) , conoscono i rispettivi indirizzi MAC, e possono comunicare tra di loro)
9) configurare lo ZyXel come bridge.
Questo è importante, andiamo ad escludere le funzioni di routing/firewall/nat del router.
Ecco come risulta configurato ora il mio router:
LAN setup
DHCP -->NONE
TCP
IP 192.168.1.1 / 255.255.255.0
RIP Direction - none
RIP Version - N/A
Multicast - None
AnyIP Setup - NON Spuntato
WAN
Name: Telecom
Mode: Bridge
Encapsulation: RFC 1483
Multiplex: LLC
VPI/VCI: 8/35
ATM QoS Type: UBR
Cell Rate: 0/0/0
NAT
none
Firewall
Disabled
Time & Date
Use Protocol when Bootup: NTP (RFC-1305)
IP Address or URL: it.pool.ntp.org
Tima and dat: +1
Daylight Savings: Si
Remote Management Control
LAN ONLY su tutti
UPnP
Disattivato tutto
Dopo averlo messo in bridge ho dovuto spegnerlo e riaccenderlo.
10) Ora, configurate il vostro PC in modo che abbia monowall come default gateway (il mio PC ha IP fisso 192.168.1.20, e default gateay 192.168.1.2 (monowall), come DNS uso sempre monowall 192.168.1.2, che usa i DNS che gli indica la telecom)
11) Rullo di tamburi :sperem: .... provate a navigare!:cool:
A questo punto, dovreste essere on-line. :D
Note varie
*) notare che monowall va riavviato alcune volte nel mentre che si cambiano gli IP e cose simili (ma ve lo dice lui quando serve... :) ).
Cosa fare dopo?
1) disattivare la regola del firewall che consente di essere pingati (è l'unica regola che trovate già definita)
2) aggiungere gli "inbound NAT" per aprire le porte sul firewall e girarle sui pc che necessitano di ricevere connessioni dal mondo esterno
2/bis) quando impostate le regole del nat per fare i port forward flaggate anche la spunta "Auto-add a firewall rule to permit traffic through this NAT rule" così il firewall viene impostato automaticamente per aprire queste porte
3) verificare che tutto funzioni
4) (la torta sulla cigliegina) andare nel "traffic shape\Magic shaper wizard"
immettere i parametri, flaggare "Set P2P traffic to lowest priority" ed "installare" il traffic shape. Questo mette tutto il traffico p2p a priorità ridicola, così si naviga benissimo anche con i programmi p2p aperti... e finalmente non perdo più i ping! EUREKA! :D
5) dite a VMWare di accendere automaticamente il VPC di monowall quando accendete il PC (andate nei setting della virtual machine, andate nelle options, andate in startup/shutdown, selezionate il local system account, selezionate "Power on vitual machine" in "on host startup")
6) aggiungete i vostri DNS a monowall (system\general setup)
7) se ritenete opportuno, togliete la spunta da "Allow DNS server list to be overridden by DHCP/PPP on WAN"
8) controllate che tutte le porte siano chiuse con questo test on-line https://www.grc.com/x/ne.dll?bh0bkyd2
Alla fine di tutto cosa otteniamo?
*) un router che funziona come un modem, che SOLO ha un IP locale (non ha nessun IP publico) e che quindi NON funziona come gateway
*) un virtual PC che gira con monowall, che è un client PPPoE e che quindi ACQUISISCE l'IP pubblico, dispone inoltre di un IP locale sulla LAN, e funziona da gateway per navigare (oltre a nattare, e fare da firewall)
*) In pratica, con un solo PC ho un IP locale sulla scheda di rete che usa windows quando parte, poi parte vmware con monowall, che (sempre usando la stessa scheda di rete) acquisisce un ip pubblico, ed un altro IP locale
alla fine ho che
il mio PC ha ip 192.168.1.20
lo zyxel ha ip 192.168.1.1
monowall ha l'ip locale 192.168.1.2 + l'IP pubblico
il default gateway del mio pc è monowall (ip 192.168.1.2)
monowall ha 3 schede di rete, in VMWare le prime due sono entrambe bridged alla scheda di rete fisica del mio PC. la terza è scollegata (e disattivata in monowall, io non la uso)
Note varie ed eventuali:
*) Fate un backup della configurazione del router, e della vostra rete, PRIMA di fare delle modifiche. Così se qualcosa non va potete ripristinare tutto.
*) se non siete un po esperti di reti, firewall, e routing... è meglio che non vi imbarchiate in questo tipo di gestione della connessione
*) il wireless dello zyxel non l'ho mai usato... non so se essendo configurato come bridge ADSL, si può usare comunque anche il WiFi oppure no
*) ho usato questa configurazione sul mio ZyXel 660Hw sia con la PE10 che con la PE11, senza problemi
*) Ho provato ad usare il TCPOptimizer.exe per ottimizzare la connessione... col risultato che ho dimezzato :eek: la velocità di upload... quella di download non l'ho manco guardata, ho annullato tutto e basta (ma ci ho perso solo 10 minuti, magari con un po di esperienza si ottiene qualcosa di meglio)
Impressioni di utilizzo
*) Il firewall M0n0wall è molto efficiente, usa solo 64Mb di ram!
*) L'interfaccia di configurazione di monowall è in PHP, ed è estremamente veloce! (con lo zyxel a volte passavano diversi secondi per passare da una schermata di configurazione all'altra, monowall invece è quasi istantaneo)
*) l'ho già detto... non perdo più nemmeno un ping, ed i siti non vanno più in timeout :)
*) Inoltre, grazie al traffic shape che riduce la priorità del P2P, navigo più in fretta di prima (anche quando non avevo i timeout)
Sperando che quanto descritto possa essere utile a qualcuno... buon lavoro! :-)
(avendo VMWare già installato, in meno di 2 ore ho fatto tutto... :)