Newsgroup: it.comp.os.linux.sys
Titolo: Firewall ed emule

Ciao a tutti.
Sto provando a rendere accessibile Emule su client Winxp dietro firewall 
con iptables.
Ho una normale rete con firewall linux che esegue nat su indirizzo IP 
statico.
Vorrei attivare l'accesso solo verso il client con indirizzo 192.168.1.10
Però così non funziona.
#Porte per eMule
$IPTABLES -t nat -A PREROUTING -p tcp -i eth1 -d 85.18.254.2 --dport 
43882 -j DNAT --to 
192.168.1.10:43882
$IPTABLES -t nat -A PREROUTING -p udp -i eth1 -d 85.18.254.2 --dport 
32509 -j DNAT --to 
192.168.1.10:32509
##
##
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state 
ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
#$IPTABLES -A FORWARD -j LOG
#
echo "   Enabling SNAT (MASQUERADE) functionality on $EXTIF"
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
E' mai possibile che non riesco proprio a capire come ragiona iptables?
Come devo impostare la connessione.
Grazie per l'aiuto,
Giulio

 E' mai possibile che non riesco proprio a capire come ragiona iptables?
In linea di massima, basta leggere the fine manual e un po' di howto.
Vuoi sapere perchè non funziona?
Te lo spiego io.
Prendiamo un pacchetto destinato all'indirizzo 85.18.254.2, protocollo
tcp, porta 43882, flag SYN, supponendo che un client della rete edonkey
stia provando ad aprire una connessione verso il tuo client.
Consideriamo l'immagine
http://plog.longwin.com.tw/files/nfk-traversal.png
per aiutarci a capire cosa accade.
Essendo il conntracking attivo, il primo evento generato da tale
pacchetto, per quanto ci interessa, è la creazione di uno stato, NEW,
nella fattispecie.
Il pacchetto passa "indenne" attraverso la tabella di mangling, visto
che non c'è alcuna regola e passa a quella di nat, dove subisce la
trasformazione prevista dalla tua regola di DNAT.
Non essendoci regole di filter nella catena di PREROUTING, si passa alle
decisioni di instradamento.
A seguito di quella trasformazione, il pacchetto risulterà destinato ad
un host che non è la linux box e quindi dovrà attraversare la catena di
FORWARD.
In tale catena, nella tabella di filtering, cosa troviamo?
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state \
ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
Il pacchetto in questione entra da $EXTIF e dovrebbe uscire, per quanto
indicato dal routing, dalla $INTIF.
Il punto è che lo stato del pacchetto è NEW, quindi non c'è
corrispondenza con alcuna delle regole presenti nella catena di FORWARD,
per cui il destino di tale pacchetto è quello previsto dalla policy di
catena, che assumo essere un bel DROP, come in ogni firewall che si
rispetti.
Per far passare quel pacchetto occorre quindi una bella regola del genere:
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -d 192.168.1.10 -p tcp \
--dport 43882 -m state --state NEW -j ACCEPT
(a voler esagerare, ci potremmo piazzare un bel --syn per non far
passare pacchetti in stato NEW che non siano SYN)
Ripetendo lo stesso ragionamento per l'udp, scriveremo la seguente regola:
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -d 192.168.1.10 -p udp \
--dport 32509 -m state --state NEW -j ACCEPT

 Te lo spiego io.
Grazie
Grazie
Grazie

Ovviamente ora funziona, mi puoi indicare qualche lettura migliore di 
quelle che ho fatto?
Qualche link...
Grazie
Giulio

 quelle che ho fatto?
Uhm, ti dirò: ho imparato tutto da solo anche io, parecchi anni fa, ed
è quindi da *tanto* che non leggo più howto sull'argomento. :-)
Anni fa (2004, credo) scrissi una presentazione per un linux day, ma il
sito , da dove era scaricabile, è cambiato.
Se la trovo mi autorizzi a spedirtela via email?

whiplash ha scritto:

lui non so, ma io ti autorizzo di sicuro :D grazie in anticipo :)

whiplash ha scritto:

Certo che si!
Grazie
G

hk3project ha scritto:

Mi hai fregato sul tempo! :-)
Ciao
G

 Certo che si!
Niente da fare; inoltre era molto introduttiva e poco pratica.
Ad ogni buon conto, di solito giro da queste parti e l'email è valida.