Linux tips and tricks/Reti
Qui di seguito è spiegato come fare in modo che più computer possano accedere ad internet contemporaneamente e svolgere tutte le normali attività (navigazione web, posta, newsgroups, chat, filesharing...) mediante una piccola rete ("home LAN"), passando attraverso un computer connesso ad internet che funga da server, o meglio gateway.
Requisiti materiali: una scheda di rete per ogni pc; un cavo ethernet per ogni pc; un hub o switch. Si assume che un pc (chiamato gateway) sia già in grado di connettersi ad internet, ad esempio tramite modem, e abbia indirizzo ip 192.168.0.1
Montare le schede di rete e configurarle con indirizzi IP statici (ad esempio 192.168.0.1 per il server; 192.168.0.2-3-4 e così via per tutti gli altri). Assicurarsi che i pc si vedano tra di loro col comando "ping": da un pc diverso dal gateway digitare
ping 192.168.0.1
Le cose da fare sono due:
- "spiegare" ai client (i computer non-gateway) che per tutti i servizi di rete devono rivolgersi al gateway
- configurare il gateway in modo che accetti le richieste dei client, e le faccia passare attraverso di sé. È ciò che su Windows si chiama "Condividi la connessione"
Per fare il primo passo occorre lanciare, da root sui computer client, il comando
route add default gw 192.168.0.1
Per il secondo è preferibile creare uno script che lanci in automatico una serie di comandi: è più facile ricordare il nome dello script che una dozzina di righe di comando! Da root sul pc gateway, occorre creare un file di testo, da collocare nella directory "/sbin" (potrebbe essere "/sbin/fai_gateway"), e copincollarci dentro il seguente codice:
#!/bin/sh iptables="/sbin/iptables" # poco importante: indica solamente il percorso dell'eseguibile! echo '0' > /proc/sys/net/ipv4/ip_forward # Finché tutto non è in ordine, niente forwarding modprobe ip_tables modprobe ip_conntrack modprobe ip_conntrack_ftp ip_nat_ftp modprobe iptable_nat modprobe ipt_MASQUERADE # Carichiamo i moduli più importanti! (attenzione NAT e MASQUERADE sono essenziali x il nostro scopo) iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE # Aggiungiamo una regola alla catena di postrouting: # tutti i pacchetti in uscita attraverso l'interfaccia "ppp0" # dovranno essere mascherati iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # accettiamo tutti i pacchetti appartenenti a connessioni già iniziate o cmq correlati ad esse iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT # accettiamo il traffico generato dalla rete interna iptables -A FORWARD -j DROP # tutto il resto è scartato echo '1' > /proc/sys/net/ipv4/ip_forward # Adesso che siamo in sicurezza, abilitiamo il passaggio dei pacchetti (forwarding)
Può tornare utile, per comodità, trascrivere in uno script (ad esempio "/sbin/gateway_1") anche il comando precedente ("route add default gw 192.168.0.1"). Ricordarsi di rendere eseguibili entrambi gli script col comando:
chmod u+x /sbin/nomefile
D'ora in poi sarà possibile far funzionare la rete così creata lanciando "fai_gateway" da root sul gateway e "gateway_1" da root sui client.
Vedi anche: http://www.pluto.linux.it/journal/pj0301/linux_router.html o http://www.bpnets.org/linuxrouter.php
pppd e autenticazione
modificaPuò capitare che pppd (point to point protocol daemon) restituisca un messaggio d'errore come
pppd: The remote system is required to authenticate itself but I couldn't find any secret (password) which would let it use an IP address.
È un semplicissimo problema di configurazione: aprite con il vostro editor preferito il file etc/ppp/options e inserite la stringa noauth.