[Linuxtrent] Re: Condivisione connessione a internet

  • From: Nivox <zito.andrea@xxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sun, 7 Dec 2003 23:17:47 +0100

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Per aiutare chi in futuro si troverà di fronte a questo problema,
posto come ho risolto i miei problemi.

Allora innanzitutto bisogna essere sicuri che dal gateway si riesco a
pingare un host in internet e che ci si riesca a pingare all' interno 
della LAN.

Una volta che ci si è accertati di questo, bisogna procedere a configurare
iptables.
Perchè si possa configurare il masquerading bisogna avere nel kernel queste
moduli:

Sotto "Networking Options"
        Network packet filtering (CONFIG_NETFILTER) 

Sotto "Networking Options->Netfilter Configuration"
        Connection tracking (CONFIG_IP_NF_CONNTRACK)
        FTP Protocol support (CONFIG_IP_NF_FTP)
        IP tables support (CONFIG_IP_NF_IPTABLES)
        Connection state match support (CONFIG_IP_NF_MATCH_STATE)
        Packet filtering (CONFIG_IP_NF_FILTER)
                REJECT target support (CONFIG_IP_NF_TARGET_REJECT) 
        Full NAT (CONFIG_IP_NF_NAT)
                MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE)
                REDIRECT target support (CONFIG_IP_NF_TARGET_REDIRECT) 
        Packet mangling (CONFIG_IP_NF_MANGLE)
        LOG target support (CONFIG_IP_NF_TARGET_LOG) 

Dopo aver ricompilato il kernel inserendo questi moduli ho avuto dei problemi,
otteneve una serie di unresolved symbols cercando di inserire i moduli nel
kernel. Per ovviare a questo problema ho inserito direttamente nel kernel
alcuni di questi e tenuto come moduli altri, fino a che depmod non mi ha 
mostrato più errori.

Per poter abilitare masquerading bisogna prima abilitare l'ip forwarding,
quindi eseguire:

$ echo 1 > /proc/sys/net/ipv4/ip_forward

Se si ha una connessione con ip dinamico è raccomandabile abiliare anche
dynaddr:

$ echo 1 > /proc/sys/net/ipv4/ip_dynaddr

Una volta fatta questa operazione bisogna passare alla effettiva 
configurazione di iptables.

Attivare masquerading è molto semplice, basta dare il seguente comando:

$ iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Ora bisogna configurare i client. Quindi su ogni client che deve
utilizzare la condivisione condivisa date:

$ route add default gw 192.168.0.1 

Sostituire 192.168.0.1 con l'indirizzo del vostro gateway (il computer con
la connessione ad internet che state configurando per fare masquerading)

Così facendo la connessione dovrebbe essere condivisa. Per provare pingate
un sito internet specificando il suo ip:

$ ping 216.239.33.100 (ip di Google)

Se questo funziona siete a cavallo!

Non rimane altro da fare che inserire nel file /etc/resolv.conf  i DNS forniti
dal provider.

Ora per vedere se tutto funziona riprovate a pingare un sito internet
(www.google.com).
Se questo funziona la condivisione è correttamente configurata.

Ora sarebbe il caso di mettere qualche paletto in modo che altri (al di
fuori della LAN locale) possano utilizzare il gateway. Per fare questo
potere utilizzare quanto segue:

$ iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$ iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
$ iptables -A FORWARD -j DROP

sostituendo a 192.168.0.0/24 la vostra network.

A questo punto non rimane altro che fare in modo che il nostro 
script venga avviato automaticamente quando si stabilisce una connessione.
Per fare questo inserire lo script all'interno della cartella
/etc/ppp/ip-up.d/, se poi volete eseguire automaticamente qualche operazione
alla chiusura della connessione inserite lo script all'interno di 
/etc/ppp/ip-down.d/

Allego lo script che utilizzo io per abilitare il masquerading

==================================================
#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -j DROP
===================================================

Spero di essere stato utile a qualcuno.

Ciao

- -- 
Nivox

Linux Registered User #290686   
Powered by: Debian Sid
JABBER: nivox@xxxxxxxxxxxxxxx
GPG Key ID: 0xC6A50D8D (info: www.gnupg.org)
GPG Keyserver: http://www.keyserver.net

La donna è un errata implementazione di un architettura corretta (Diaolin)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/06cQfhOftsalDY0RAnQTAJ48A99JbFtz//iuLzxNMF5iXtFVXwCfSCC/
+5EcadJ4lWepZFFpQF9udvE=
=DTaA
-----END PGP SIGNATURE-----

--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: