Ben voilà... félicitations, tu as tout compris! j'aurai juste deux ou trois commentaires, mais avant çà je réponds à tes questions:
tout marche bien sauf ma redirection de port ....
>>c'est normal... ta dernière ligne est de trop! (iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -d 192.168.1.253 -p tcp --dport 4662 -j SNAT --to-source 192.168.1.1 )
elle revient à dire au PC interne à ton réseau que tout ce qu'il reçoit vient du PC linux... c'est faux!!! justement, ce qui vient par ce port vient de l'extérieur. çà sera plus clair dans quelques instants... (NAT)
un moyen de pister un paquets qui rentre ?
>> tu peux utiliser la destination "-j LOG"... ainsi des messages apparaîtront dans les logs du serveur. Pour les lire, il te suffit de taper la commande "dmesg". Il te renverra tous les messages du serveur, pas que ceux d'iptables...
Donc pour faire le ménage, la première chose est de rajouter également un --log-prefix "iptables:" à la suite de la ligne contenant -j LOG.
ensuite, pour lire uniquement ces lignes là : "dmesg | grep iptables"
(note importante : une ligne dont la destination est "-j LOG" n'altère en rien le paquet! donc tu peux les intercaler là où tu veux)
192.168.1.0/24 .... c'est une adresse non routable ca, alors comment un paquets peu arrivé avec cette adresse la ????
>>ben.. justement tout est dans le NAT (Network Address Translation) en clair le but du NAT est justement de traduire les adresses non-routables pour qu'elles soient accessibles!
C'est le "-j MASQUERADE" qui active ce nat... en clair tu dis que tout ce qui sort par ppp0 doit sortir avec l'adresse source du linux (qui lui a une adresse publique sur ppp0).
Si tu veux, le "-j MASQUERADE" est équivalent au "-j SNAT". la seule différence, c'est que masquerade devine automatiquement l'adresse source (utile si ton provider te fournit une IP dynamiquement) alors que pour le "-j SNAT" tu spécifies toi même l'IP source (donc il te faut une IP fixe de ton provider!).
Bien entendu, le système est intelligent et retient toutes les connexions qui sortent "masqueradées" pour que les infos en retour d'internet soient redirigées vers le PC qui les a appelées!
Maintenant mes petites remarques...
> C'est nickel côté sécurité! et c'est bien propre! (au moins, là t'as bien tout compris).
Le truc, c'est que tu es un peu "extrémiste"! (notamment quand tu bloques le FORWARD et le OUTPUT). C'est très bien au niveau de la sécurité... j'dirais même que c'est l'idéal! Par contre, c'est très sensible à un défaut de configuration, donc si un jour tu as un problème avec un programme, que le traffic est interrompu ou peu fluide, pense à chercher du côté du firewall.
>"iptables -t filter -X " sert à virer une ligne à la fois et "iptables -t filter -F" vire tout d'un coup, donc "iptables -t filter -X" est inutile là où tu l'as mis... c'est pas une faute ou une erreur, c'est simplement inutile. (comme çà tu le sais quoi...)
>Une chose très importante qu'on oublie à tous les coups... l'option "-P" (pour les politiques par défaut) sont à appliquer tout à la fin, après avoir ouvert le reste.
Il ne faut pas oublier que l'effet des commandes iptables sont immédiates! Donc si tu interdis tout dès le début, tu bloques toutes les communications entre les programmes sur le poste lui-même! En clair, il faut éviter que les connexions liées à l'interface de loopback (lo) soient coupée à un quelconque moment! (sinon certain programmes ou services peuvent planter!!!)
99% du temps tout se passera bien car les règles une fois enregistrées sont executée très rapidement au démarrage... mais il reste 1%!!! (et en informatique, ça pardonne pas!) et crois moi, c'est dur de trouver le problème!!! (un iptables -L -v ne te donne pas cette information!)
Voilà voilà... j'espère que c'est un peu plus clair comme çà. En tt cas, t'as compris l'essentiel, et maintenant tu vas commencer à t'amuser à aller plus loin dans les détails!
A quand un mini-howto ou une page pour les débutants??? :-)
F.
PS: ça en vallait la peine, non?