Indice del libro

Gateway per una piccola LAN

modifica

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:

  1. "spiegare" ai client (i computer non-gateway) che per tutti i servizi di rete devono rivolgersi al gateway
  2. 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

modifica

Può 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.