Repository 32bit  Forum
Repository 64bit  Wiki

Linux gateway e programmi p2p

Da Slacky.eu.
Versione delle 17:15, 10 set 2006, autore: Gohanz (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Avendo a casa un vecchio pc inutilizzato, un pc nuovo che utilizzo per navigare e scaricare ed un modem ethernet mi sono detto: Come posso far navigare tutti i pc con la stesso collegamento? Il primo pensiero è andato alla mia amata Slackware!!!! Ed infatti non mi ha deluso Partiamo dalla configurazione Hardware che al momento sto utilizzando:

- 1 pc con Windows XP PRO con una scheda di rete
- 1 pc con Slackware 10 con 2 schede di rete
- 1 modem ADSL Ethernet
- 1 cavo di rete incrociato per collegare il pc al modem 
- 1 HUB 16 porte 10/100 ed un normale cavo di rete (se non avete un HUB fa lo stesso, basterà utilizzare
  un’altro cavo di rete incrociato per collegare i 2 pc tra di loro anziché uno normale)

OK ecco il nostro schema…

                                          PC LINUX 
                                      (con 2 schede di rete)
                                         |            |
                                       (eth0)       (eth1)


Per quel che riguarda la configurazione del PC LINUX come Gateway vi rimando all’HOW TO scritto da Valfe, valfe@slacky.it E che potete trovare qui. Io riporterò solo le stringhe di configurazione e qualche spiegazione, mi soffermerò più su quel che riguarda il Port Forwarding. Ricapitolando, il nostro PC LINUX avrà 2 schede di rete, eth0 ed eth1, la prima sarà collegata direttamente al modem ADSL tramite un cavo di rete incrociato, mentre la seconda sarà collegata all’ HUB o direttamente al pc che dovrà usufruire del collegamento ad internet. Una piccola parentesi per dire che nel caso si utilizzi un HUB come nella mia configurazione, tutti i pc collegati a questo potranno usufruire del collegamento ad internet. Mi raccomando tutte le configurazioni vanno eseguite come utente root.


Per la configurazione del collegamento ADSL vi basterà eseguire il tool di configurazione lanciando il comando

# adsl-setup

poi una volta configurato potrete avviare la connessione o chiuderla rispettivamente con i comandi

# adsl-start 
# adsl-stop

Vi ricordo inoltre che per le connessioni di questo tipo abbiamo bisogno del pacchetto rp-pppoe (di solito già presente). Nelle righe che seguiranno verrà utilizzata la tecnica di NAT (Network Address Translation) che ci permetterà di navigare con più pc utilizzando un unico indirizzo IP pubblico, mascherando quindi le macchine della LAN. Per maggiori dettagli vi consiglio di leggere la documentazione relativa al NAT.

N.B.: Nel mio caso ho solo un pc collegato al Gateway con indirizzo IO 192.168.0.2, quindi il forwarding
delle porte lo faccio sempre mirato al questo indirizzo.

Queste righe di codice potete scriverle in un file qualsiasi, rendendolo poi eseguibile con il comando

chmod +x nomefile (es se il file in cui lo salvate è (etc/rc.d/avvio il comando sarà # chmod +x etc/rc.d/avvio)

Per poi lanciarlo all’ occorrenza, oppure aggiungerle al file /etc/rc.d/rc.local rendendolo poi eseguibile, per fare sì che venga eseguito ad ogni avvio del sistema.

Configuro la connessione le periferiche di rete con degli indirizzi IP fissi

ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up #scheda a cui è collegato il modem
ifconfig eth1 192.168.0.1 netmask 255.255.255.0 up #scheda collegata alla LAN

Configuro i moduli da lanciare

modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_nat
modprobe ipt_MASQUERADE

Masquerading per tutto quello al di fuori della LAN

iptables -t nat -A POSTROUTING -d ! 192.168.0.0/24 -j MASQUERADE

Solo ai pc della LAN

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -j DROP

Qui viene il bello,le righe seguenti servono per utilizzare programmi che richiedono connessioni su determinate porte TCP e UDP, come ad esempio i programmi P2P (Emule ecc.)

Prendiamo l’esempio di Emule

Emule utilizza di default le porte TCP 4662 ed UDP 4672, senza le configurazioni seguenti emule non sarà in grado di connettersi ai server e nella rete KAD avrà uno stato Firewalled. In pratica diciamo al nostro gateway di prendere tutte le richieste che arrivano alla porta TCP 4662 e alla UDP 4672 da internet (ppp0 è la connessione dial-up) e girarle alle stesse porte del pc con indirizzo IP 192.168.0.2 (le porte potete tranquillamente cambiarle)

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 4662 -j DNAT --to-destination 192.168.0.2:4662
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 4672 -j DNAT --to-destination 192.168.0.2:4672

Queste sono le configurazioni per accettare le connessioni sulle porte specificate

iptables -A INPUT -p tcp --dport 4662 -j ACCEPT
iptables -A INPUT -p udp --dport 4672 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT
iptables -P OUTPUT ACCEPT

Avvio connessione questa se volete che ogni volta che lo script viene lanciato parta in automatico la connessione

adsl-start

Se altri programmi richiedono questo tipo di connessione non dovrete far altro che aggiungere una riga del tipo iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport XXXX -j DNAT --to-destination XXX.XXX.XXX.XXX:YYYY dove ppp0 è la connessione alla quale arrivano le richieste nel nostro caso è una connessione dial-up, tcp è il protocollo da utilizzare (tcp o udp), XXXX è la porta dal la quale il Gateway prenderà le richieste , XXX.XXX.XXX.XXX sarà l’indirizzo IP del pc al quale girare le richieste ed YYYY sarà la porta del pc alla quale girare le richieste (le porte non devono essere necessariamente uguali)

Spero di essere stato chiaro o almeno utile per qualcuno e perdonatemi se trovate qualche errore. Buon divertimento e buon download :-P

Paolo Turatti
pecanin@libero.it
Strumenti personali
Namespace

Varianti