PDA

View Full Version : Prolema Debian


ecnx82
05-04-2008, 14:29
Ciao ragazzi, spero che qualcuno di voi possa dare risposta ai miei problemi.

Io ho installato la distro debian 4.0 su un pc della mia LAN, e vorrei fargli fare da gateway usando due schede di rete.

Il problema è proprio questo che, nonostante abbia seguito altri thread qui presenti, non sono riuscito a far girare tutto come si deve.

Per prima cosa ho settato in maniera statica le due schede di rete, una con indirizzo IP 172.16.10.3/24(eth0 per la lan) e una con indirizzo 10.0.0.75/24(eth1 per internet visto che uso un router).

Ho aggiunto tramite il comando route delle route statiche, una per la destinazione 172.16.10.0 sull'interfaccia eth0(lan), una per la destinazione 10.0.0.0 sull'interfaccia eth1 e poi ho aggiunto come gateway di default l'ip dl router 10.0.0.2 con destination default come solitamente dovrebbe essere.

Poi ho abilitato l'ip forwarding tramite il comando ech > 1 sul file /proc/sys/net/ipv4/ip_forward.

Successivamente ho installato anche il pacchetto resolvconf per impostare nel file resolv.conf i DNS del mio ISP come suggerito sull'howto di debian ma tuttavia se setto come gateway l'ip dell'eth0 i client non riescono a uscire e non riesco nemmeno a pingare il router (10.0.0.2).

Come posso fare? Dove sbaglio?

Grazie mille in anticipo

Ciao

Gollum63
05-04-2008, 16:19
Hai controllato il routing col comando
sudo route x controllare le interfacce attive o meno

ecnx82
05-04-2008, 18:09
Grazie per la risposta.

Allora lanciando il comando route vedevo quello che specificavo nelle route statiche cioè:

172.16.10.0 Default 255.255.255.0 eth0
10.0.0.0 default 255.255.255.0 eth1
default 10.0.0.2 0.0.0.0

In teoria dovrebbe essere corretto. L'ultima voce inneggia al gateway di default, mentre le altre due specificano che scheda di rete usare per le varie destinazioni. In teoria abilitando l'ip forwarding dovrebbe funzionare.

Non è che sia un problema del masquerading? Con shorewall si può riuscire a fare queste configurazioni oppure lo devo solo usare per impostare le regole sui pacchetti?

Gimli[2BV!2B]
05-04-2008, 18:49
Io uso una Debian come router/firewall, ma una maledizione vuole che ogni volta che cerco di spiegare a qualcuno come faccio/ho fatto finisce che non funziona... vediamo se anche stavolta sarà così.

Intanto non tocco route, ma uso solo comandi iptables per impostare il nat:
modprobe ipt_MASQUERADE # a volte è inutile

# questo si può sostituire con l'impostazione definitiva in /etc/sysctl.conf
echo 1 > /proc/sys/net/ipv4/ip_forward

# pulizia preliminare
iptables -F; iptables -t nat -F; iptables -t mangle -F

# di default droppa
iptables -P FORWARD DROP

# snat di tutte le comunicazioni sull'indirizzo dell'interfaccia esterna
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 10.0.0.75

# accettiamo comunicazioni forward nuove dalla rete interna
iptables -A FORWARD -m state --state NEW -s 172.16.10.0/24 -j ACCEPT

# permettiamo tutto il traffico una volta che la comunicazione è stata instaurata
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Se per caso non ho capito bene la tua topologia di rete ti posto uno script generico con variabili al posto dei valori:
# $EXTERNAL_INTERFACE $EXTERNAL_IP: interfaccia su internet/router
# $NET_INTERNAL: rete interna ip/maschera
modprobe ipt_MASQUERADE
iptables -F; iptables -t nat -F; iptables -t mangle -F
iptables -t nat -A POSTROUTING -o $EXTERNAL_INTERFACE -j SNAT --to $EXTERNAL_IP
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state NEW -s $NET_INTERNAL -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

La maledizione sarà sconfitta?

ecnx82
05-04-2008, 20:04
Ora la macchina l'ho reinstallata perciò posso fare questa tua prova al volo se ci riesco tra un pochino.

Intanto grazie mille per la risposta.

Un'unica cosa. Lo script per renderlo automatico dove devo metterlo??? Che così mi configuro statiscamente le due interfacce fisiche e dopo lo setto come script bash giusto?

Gimli[2BV!2B]
05-04-2008, 20:43
Prima collauda i comandi, se funzioneranno si provvederà a salvare/creare uno script che entrerà in azione nel momento giusto.

Se anche per il collaudo preferisci lo script è sufficiente aggiungere lo shabang (http://it.wikipedia.org/wiki/Shebang) all'inizio del primo (hai controllato gli indirizzi, ecc?) e renderlo eseguibile.
shabang:
#!/bin/bash
modprobe ipt_MASQUERADE # a volte è inutile

# puliz...

Attributo eseguibile:
chmod +x NOME_SCRIPT

ecnx82
05-04-2008, 21:02
ora risetto le due schede ethernet con webmin e provo.

Ascolta non imposto nessu
n default gateway allora? Perchè in teoria dovrei metterlo per poter far uscire il traffico dalla LAN

ecnx82
05-04-2008, 21:07
Mi da errore sulla regola:

iptables -P FORWARD DROP

Mi dice Bad Built chain name

Provo ad andare avanti???

Gimli[2BV!2B]
05-04-2008, 21:10
Non ho mai avuto necessità di modificarle le route con quelle regole.

Imposta solo quelle regole, vediamo che succede.

Gimli[2BV!2B]
05-04-2008, 21:11
Hai provato
modprobe ipt_MASQUERADE

Gimli[2BV!2B]
05-04-2008, 21:15
Ok, ok, credo di aver capito, ho spostato l'echo copiando.

Esegui il comando echo 1 > /proc/sys/net/ipv4/ip_forward prima.

Ora correggo.

ecnx82
05-04-2008, 21:19
;21882455']Ok, ok, credo di aver capito, ho spostato l'echo copiando.

Esegui il comando echo 1 > /proc/sys/net/ipv4/ip_forward prima.

Ora correggo.

Allora intanto grazie mille. Io ho fatto così. Ho settato nella route le due destination, e il gateway di default. Poi ho settato con l'echo l'ip forwarding e finalmente, e sottolineo finalmente, usando le tue regole iptables(senza quella che dava errore) riesco ad andareeeeee.

Ho fatto delle prove con i client cancellando anche la cache DNS e riavviando i pc e tutto sembra funzionare.

Grandissimissimooooooooo

Ora resta. Come renderle effettive dopo ogni riavvio del gateway??

Gimli[2BV!2B]
05-04-2008, 21:35
Dava errore perché non era attivo il forwarding (l'echo), con l'attuale ordine dei comandi dovrebbe funzionare tutto quanto al primo colpo.

Intanto si può abilitare il forwarding di default: edita il file /etc/sysctl.conf e decommenta la riga net.ipv4.ip_forward=1 (se per caso il file non contiene più i commenti aggiungi semplicemente la riga).

Poi devi controllare se è necessario il modprobe.

Se il modprobe non serve puoi creare un firewall da manuale (http://www.debian-administration.org/articles/445), altrimenti devi editare il file ottenuto ed aggiungere il modprobe prima dell'iptables-restore.

ecnx82
05-04-2008, 21:37
;21882645']Dava errore perché non era attivo il forwarding (l'echo), con l'attuale ordine dei comandi dovrebbe funzionare tutto quanto al primo colpo.

Intanto si può abilitare il forwarding di default: edita il file /etc/sysctl.conf e decommenta la riga net.ipv4.ip_forward=1 (se per caso il file non contiene più i commenti aggiungi semplicemente la riga).

Poi devi controllare se è necessario il modprobe.

Se il modprobe non serve puoi creare un firewall da manuale (http://www.debian-administration.org/articles/445), altrimenti devi editare il file ottenuto ed aggiungere il modprobe prima dell'iptables-restore.

Gia decommentata la riga e funzia tutto. L'unica cosa non ho capito l'ultimo discorso sul modprobe. E sullo script

Gimli[2BV!2B]
05-04-2008, 21:41
Segui alla lettera quel che trovi nel link.

Se al riavvio non funzionerà dovrai modificare il file /etc/network/if-up.d/iptables in questo modo:#!/bin/sh
modprobe ipt_MASQUERADE
iptables-restore < /etc/firewall.conf

ecnx82
05-04-2008, 21:43
;21882706']Segui alla lettera quel che trovi nel link.

Se al riavvio non funzionerà dovrai modificare il file /etc/network/if-up.d/iptables in questo modo:#!/bin/sh
modprobe ipt_MASQUERADE
iptables-restore < /etc/firewall.conf


E se io non avessi il file iptables in quel path li?

Gimli[2BV!2B]
05-04-2008, 21:45
Infatti nella guida lo crea.

Fai come c'è scritto (da amministratore).

ecnx82
05-04-2008, 22:05
;21882746']Infatti nella guida lo crea.

Fai come c'è scritto (da amministratore).

Non funziona in automatico. devo cambiare i permessi a qualche script???

Gimli[2BV!2B]
05-04-2008, 22:20
Se lo esegui manualmente funziona? ( eseguilo con /etc/network/if-up.d/iptables )

/etc/firewall.conf contiene qualcosa, vero?

Hai settato il permesso eseguibile a /etc/network/if-up.d/iptables?

Hai detto che gli indirizzi delle interfacce sono statici, li hai impostati in /etc/network/interfaces, vero?

Se è tutto a posto e l'esecuzione manuale non da risulatati credo siano necessarie le tue route, aggiungile in /etc/network/if-up.d/iptables.

In tutti i casi c'è sempre il piano B a cui ricorreremo se non ci sono risultati.

ecnx82
05-04-2008, 22:25
;21883022']Se lo esegui manualmente funziona? ( eseguilo con /etc/network/if-up.d/iptables )

/etc/firewall.conf contiene qualcosa, vero?

Hai settato il permesso eseguibile a /etc/network/if-up.d/iptables?

Hai detto che gli indirizzi delle interfacce sono statici, li hai impostati in /etc/network/interfaces, vero?

Se è tutto a posto e l'esecuzione manuale non da risulatati credo siano necessarie le tue route, aggiungile in /etc/network/if-up.d/iptables.

In tutti i casi c'è sempre il piano B a cui ricorreremo se non ci sono risultati.

Allora ho capito erchè.

Bisogna settare chmod 777 per il file firewall.conf e il file iptables. E tutto funziona. ;)

Grazie mille.

Ho fatto un paio di riavvi del gateway e dei client e funziona. ;)

P.S > Le route non vanno settate nello script perchè basta impostarle static tramite webmin.

Mi resta solo una domanda. Ora per creare un vero e proprio firewall, anzi proxy, con squid e dansguardian??? Magari con uno scanner p3scan di posta in entrata??? Come potrei procedere???

Scusa se ti stresso ma io ho sempre usato ISA Server e mai Debian come gateway!! LOL

Gimli[2BV!2B]
05-04-2008, 22:39
Con chmod 777 hai dato l'eseguibilità più un'altra bella manata di permessi... se non hai particolari necessità di sicurezza puoi lasciare così...

Se vuoi lavorare sulle regole di firewalling puoi semplicemente aggiungere regole, toglierle, modificarle a piacimento, poi con iptables-save > /etc/firewall.conf il tuo firewall sarà pronto.
Ah, se però imposti regole di fiwall con webmin, se non sbaglio, finisce che si crea un suo script di firewalling separato che potrebbe interagire senza volere con quello che abbiamo appena fatto.

Se vuoi creare un proxy web e DNS quel che hai fatto fino ad adesso non serve più! Io ho paciugato un po' con squid ma son passati 2 anni come minimo... non ti sarei molto di aiuto.
Anche per quanto riguarda la posta le mie conoscenze sono scarse.
Per questi passi successivi ti consiglio di capire bene cosa vuoi fare, provare, ed eventualmente aprire nuovi thread appositi.

Ma webmin è ancora nei repository Debian? Personalmente ti consiglierei di abituarti anche all'ssh, webmin l'avevo provato ma non mi aveva convinto al 100%.

ecnx82
05-04-2008, 22:43
;21883151']Con chmod 777 hai dato l'eseguibilità più un'altra bella manata di permessi... se non hai particolari necessità di sicurezza puoi lasciare così...

Se vuoi lavorare sulle regole di firewalling puoi semplicemente aggiungere regole, toglierle, modificarle a piacimento, poi con iptables-save > /etc/firewall.conf il tuo firewall sarà pronto.
Ah, se però imposti regole di fiwall con webmin, se non sbaglio, finisce che si crea un suo script di firewalling separato che potrebbe interagire senza volere con quello che abbiamo appena fatto.

Se vuoi creare un proxy web e DNS quel che hai fatto fino ad adesso non serve più! Io ho paciugato un po' con squid ma son passati 2 anni come minimo... non ti sarei molto di aiuto.
Anche per quanto riguarda la posta le mie conoscenze sono scarse.
Per questi passi successivi ti consiglio di capire bene cosa vuoi fare, provare, ed eventualmente aprire nuovi thread appositi.

Ma webmin è ancora nei repository Debian? Personalmente ti consiglierei di abituarti anche all'ssh, webmin l'avevo provato ma non mi aveva convinto al 100%.

Scusa se intendo per esempio bloccare tutte le porte tranne le 3 o 4 che mi servono e tutto il traffico che viene dall'esterno come posso fare??

P.S > Per webim ho usato solo per imnpostare le route in modo semplice. Per il resto shorewall l'ho evitato perchè mi ha fatto solo casini con iptables

Gimli[2BV!2B]
05-04-2008, 23:18
Ok, ti butto giù un riassunto delle regole principali:
# di default non lasciar entrare nulla
iptables -P INPUT DROP

# accetta tutto dalle reti sicure
# $RETE_INTERNA = maschera di rete della rete da abilitare.
# ATTENZIONE: se si attiva il drop e non si ha accesso fisico al pc
# le regole successive devono garantire l'accesso dall'indirizzo
# da cui si sta lavorando e devono essere eseguite in automatico.
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -m state --state NEW -s $RETE_INTERNA -j ACCEPT
# accetta tutto il traffico stabilito
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# apertura porte
iptables -A INPUT -p tcp --dport $PORTA_TCP -j ACCEPT
iptables -A INPUT -p udp --dport $PORTA_UDP -j ACCEPT

# forwarding porte di pc della rete interna
# $SERVER_INTERNO = ip del pc la cui porta dovrà essere raggiungibile dall'esterno
# $INTERFACCIA_ESTERNA = interfaccia verso internet/router
# $IP_ESTERNO = ip dell'interfaccia esterna
# $PORTA_FW_xxx = porta da forwardare
# andata tcp
iptables -t nat -A PREROUTING -p tcp -i $INTERFACCIA_ESTERNA -d $IP_ESTERNO --dport $PORTA_FW_TCP -j DNAT --to $SERVER_INTERNO:$PORTA_FW_TCP
# ritorno tcp
iptables -A FORWARD -p tcp -i $INTERFACCIA_ESTERNA -d $SERVER_INTERNO --dport $PORTA_FW_TCP -j ACCEPT

# andata udp
iptables -t nat -A PREROUTING -p udp -i $INTERFACCIA_ESTERNA -d $IP_ESTERNO --dport $PORTA_FW_UDP -j DNAT --to $SERVER_INTERNO:$PORTA_FW_UDP
# ritorno udp
iptables -A FORWARD -p udp -i $INTERFACCIA_ESTERNA -d $SERVER_INTERNO --dport $PORTA_FW_UDP -j ACCEPT
Questo è un riassunto commentato delle mie regole di firewalling parametrizzate, potrei aver fatto errorini copiando riscrivendo in questa finestrella stretta.

Mancano regole riguardanti il blocco del traffico in uscita, poiché personalmente lo considero più che altro una scocciatura in pc che sono utilizzati in modo normale, ma se si vuole fare qualcosa di serio è necessario tenerne conto. Se ti interessa cerca in google.

ecnx82
05-04-2008, 23:27
Edited.

Ora ho riletto lo script. Scusa....;)

Se ho problemi ti ricontatto. Ora provo a settare il TOS dei pacchetti per velocizzare la navigazione e il DNS. Dopo studierò per squid e dansguardian!!!

ecnx82
05-04-2008, 23:33
Ho cambiato il chmod. Ho messo a 644 gli script e poi ho dato l'esecuzione con chmod +x ai due script. Ora come sicurezza dovremmo essere un passetto più avanti. ;)

ecnx82
06-04-2008, 11:27
Riscontro dei problemi con squid. Se inserisco i parametri di configurazione mi da fatal error.

Come posso procedere a configurarlo???