Image Hosted by ImageShack.us

Grande problema..piccola soluzione.
Ipotizziamo uno scenario, ad esempio in ambito universitario, dove tutti i computer all’interno della LAN debbano uscire in internet con il medesimo indirizzo IP tramite un solo computer con la funzione di server.

Naturalmente il NAT (Network Address Protocol) è la prima cosa che ci puo’ venire in mente..e queste semplici regole di iptables servono proprio ad impostare un meccanismo di NAT (molto basilare) per mettere in atto quello che vogliamo realizzare.

Iptables

Il kernel, di default, ha la sezione iptables attiva (compreso il packet mangling) quindi non dobbiamo far altro che eseguire, nel terminale del server..collegato verso l’esterno, i seguenti comandi:

iptables -F INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -P INPUT DROP
iptables -F FORWARD
iptables -P FORWARD ACCEPT
iptables -t nat -F
iptables -t nat -A POSTROUTING -j MASQUERADE

A questo punto dovrebbe essere tutto funzionante, permettendo cosi’ la navigazione internet da qualsiasi computer della rete locale.
Se abbiamo un ip statico, possiamo rimpiazzare l’ultimo comando con:

iptables -t nat -A POSTROUTING -o [interface] -j SNAT -to [ip-esterno]

Sostituiamo [interface] con la nostra interfaccia di rete che va verso l’esterno e [ip-esterno] con l’indirizzo ip in internet.
Per indirizzi ip assegnati dinamicamente usiamo questo comando:

iptables -t nat -A POSTROUTING -o [interface] -j MASQUERADE

Anche in questo caso [interface] corrisponde alla nostra interfaccia di rete.

Non sono certo un guru in questo genere di cose, non avendo avuto mai necessita’ di adottare delle regole particolari per iptables..basta “gughelare” (mamma mia) un po’ alla ricerca dei comandi giusti per il nostro scopo.
😉

Related Posts Plugin for WordPress, Blogger...

Il tuo indirizzo ip:
35.172.100.232

Valutazione 3.00 su 5
happy wheels 2 demo

Category:

Senza categoria

Tags:

, ,

Commenti via Facebook:

Leave a Reply

Your email address will not be published. Required fields are marked *

*

12 Comments

  • Pappice ITALY Mozilla Firefox Linux 11 anni ago

    Mi permetto di segnalare Zeroshell, distribuzione italiana creata from scratch per dispositivi embedded, che svolge egregiamente questo compito… la utilizzo – per l’appunto – in ambito universitario per fornire la rete a più PC con un solo ip.
    Ciao! 🙂

      Quota

  • @Pappice-> maè più semplice impostare una regola iptables, piuttosto che installare da capo una distro, soprattutto se il server occorre anche per altre cose!

    Bravo DiviLinux!

      Quota

  • Divilinux ITALY Mozilla Firefox Linux 11 anni ago

    ciao a tutti e grazie della visitina..
    😉

    completo comunque la segnalazione di Pappice con il link a questa distribuzione

    http://www.zeroshell.net/

    effettivamente bastano due regole di iptables.

      Quota

  • Pappice ITALY Mozilla Firefox Linux 11 anni ago

    Verissimo, non fraintendetemi, volevo solo segnalare quella distribuzione prendendo spunto dall’ottima dritta di divilinu…
    Mi è piaciuta particolarmente, e ovviamente non fa solo nat, ma un bel po’ di altre cose (tra l’altro ha un transparent proxy per il controllo e il filtro delle pagine internet che si basa su DansGuardian e ClamAV)… 😀

      Quota

  • pistolinux ITALY Opera Mini 11 anni ago

    Ottimo tutorial! Adesso piazzo un bel link alla pagina sul mio browser così non impazzisco ogni volta a cercare tutti i comandi o non perdo tempo con “guarddog” e “guidedog”

      Quota

  • LordKhain ITALY Mozilla Firefox Windows 11 anni ago

    Ciao Divi!!

    Ottima guida, ma mi permetto di aggiungere anche l’indispensabile

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

    altrimenti non dovrebbe funzionare nulla!! 🙂

    Un saluto!!

      Quota

  • Divilinux ITALY Mozilla Firefox Linux 11 anni ago

    @LordKhain
    Non sono molto sicuro di questo
    Anche se non e’ il massimo della sicurezza dovrebbe bastare

    iptables -P FORWARD ACCEPT

    ..se fosse necessario il forward, come dici tu, bisognerebbe comunque rendere permanente quell’opzione

    sudo sysctl -a 2>&1 | grep ip | grep forward

    cosi’ vedi dove agire..
    😉

      Quota

  • LordKhain ITALY Mozilla Firefox Windows 11 anni ago

    Divi, in realtà non è così, la policy ACCEPT sulla chain FORWARD è settata di default, ma per ottenere il forwarding dei pacchetti occorre comunque abilitarlo sul kernel.

    La soluzione che ho scritto prima serve per abilitare il forwarding temporaneamente, se lo si vuole abilitare di defalut occorre farlo nel sysctl (oppure aggiungere il comando di prima in rc.local, assieme ai comandi di iptables, che sono anche loro “temporanei” e si perdono con il riavvio…). 🙂

    Naturalmente anche le istruzioni di iptables vanno date con il sudo!! 😉

    Ciao!!

      Quota

  • Ma sui PC client, per raggiungere internet, posso impostare come server DNS il PC server?

      Quota

  • Mi rispondo da solo: no. Si può fare se installiamo un server DNS sul pc server, come Bind per esempio.

    Allora, posso dirvi con certezza che abilitare l’ip_forward del kernel è fondamentale, ho alternato 0/1 su una connessione funzionante e anche il funzionamento era alternante =).

    Ah, con -P INPUT DROP, credo di aver capito leggendo il man, si specifica che tutti i pacchetti in ingresso sul server per default vengono ignorati, TRANNE quelli che sottostanno alle regole specificate. Non so come mai, ma questo esclude i ping, quindi il server non si farà pingare (quindi dovrebbe essere normale se non ce la fate, ma il routing funziona comunque). con -P INPUT ACCEPT i ping funzionano, anche se a ben vedere state accettanto qualsiasi cosa.

      Quota

  • Divilinux ITALY Mozilla Firefox Linux 11 anni ago

    @Stefanauss
    si perche’ i “ping” non sono altro che pacchetti ICMP , con -input drop ignori anche quelli

      Quota

  • Grazie, vedo se riesco con l’opzione -p ad abilitarli (mi pare di aver visto un filtro ICMP nel kernel….).

      Quota