Probabilmente si stanno bloccando le ricerche DNS; alla fine andrà in timeout. Si provi a passare l'opzione `-n' a ipchains, che sopprime la risoluzione dei nomi.
Ci si assicuri che sia abilitato l'inoltro dei pacchetti (nei kernel recenti è disabilitato per default, il che significa che i pacchetti non proveranno mai ad attraversare la catena `forward'). Si può venirne a capo digitando (come root):
# echo 1 > /proc/sys/net/ipv4/ip_forward
#
Se funziona, lo si può mettere da qualche parte nei propri script di avvio così che sia abilitato ogni volta; ovviamente è meglio impostare il proprio firewall prima di lanciare questo comando, altrimenti c'è l'opportunità che scappino un po' di pacchetti.
Si devono permettere i pacchetti di inoltro (si veda sopra) affinché funzioni il dirottamento; diversamente il codice di instradamento scarterà i pacchetti. Quindi se si sta usando solamente il dirottamento e non si usa il forwarding, è bene essere consci di questa cosa.
Si noti che REDIR (sebbene sia nella catena input) non ha effetto sulle connessioni da un processo locale.
C'è un bug nelle versioni 2.1.102 e 2.1.103 del kernel (e in alcune
vecchie patch che ho prodotto) che faceva fallire i comandi ipchains
che utilizzavano caratteri jolly per specificare interfacce (ad
esempio -i ppp+
).
Ciò è stato corretto nei kernel recenti e nella patch per il 2.0.34 presente sul sito web. Può essere pure corretto a mano nei sorgenti del kernel modificando la riga 63 (più o meno) di include/linux/ip_fw.h:
#define IP_FW_F_MASK 0x002F /* All possible flag bits mask */
Dovrebbe essere ``0x003F''. Lo si corregga e si ricompili il kernel.
Questo è stato un mio errore: l'impostazione del campo Type of Service nei kernel dal 2.1.102 al 2.1.111 in realtà non faceva niente. Questo problema è stato corretto nel 2.1.112.
Per i 2.0.x, è vero; non ho il tempo per creare e mantenere una patch enorme per ipchains e ipautofw/ipportfw.
Per i 2.1.x, si scarichi l'ipmasqadm di Juan Ciarlante da
<htmlurl url="http://juanjox.linuxhq.com/" name="http://juanjox.linuxhq.com/">e lo si usi esattamente come si sarebbe usato
ipautofw
o
ipportfw
, tranne per il fatto che invece di ipportfw
si usa ipmasqadm portfw
, e invece di ipautofw
si usa
ipmasqadm autofw
.
Si aggiorni alla versione 1.6.0 o superiore, che non richiede nessuna regola firewall per i kernel 2.1.x. Sembra che anche la release 1.6.1 abbia questo problema; lo si segnali all'autore (non è un mio errore!).
Questo era un bug in ipchains versione 1.3.3. Si aggiorni.
Ciò è vero (per i kernel 2.1.x) fino al 2.1.123. Nel 2.1.124, il
tentativo di impostare i timeout del masquerading provoca un blocco
del kernel (si modifichi return
in ret =
nella riga
1328 di net/ipv4/ip_fw.c). Nel 2.1.125, funziona tutto.
E così molti altri, sembra. Il mio codice gestisce solo IP, sfortunatamente. D'altra parte c'è anche qualcosa di buono: le cose per scrivere un firewall IPX ci sono tutte! Basta semplicemente scrivere il codice; sarò felice di aiutare dove possibile.