Bonjour,
Pour plus de simplicité dans tes démarches je te conseille fortement les outils suivants :
iptables-save > un_fichier // pour sauver un travail dans un fichier
iptables-restore < un_fichier // pour restaurer ce même travail
Il manque des éléments essentiels dans ton approche : tu ne masquerade rien. Il te manque une règle pour cela (à la fin du code).
Ensuite ton approche du problème doit mieux passer si tu raisonnes en "flux" et en "interface réseau".
Une approche assez similaire à ton besoin faite en fin 2005/ début 2006, il s'agit d'un serveur linux Debian jouant le rôle de routeur. Deux carte réseaux, une branché sur le lan 10.0.1.x, l'autre à un modem routeur 192.168.0.x.L'idée c'etait de faire un pare feu logiciel assez léger pour de petite config, avec tout de meme des possibilités de log.
*filter
# 1ère étape on drop tout. On discute pas.
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
#ici on crée les règles qui vont servir par la suite à trier tout ça.
:Cid4288B349.0 - [0:0]
:Cid4288B349.1 - [0:0]
:Cid4288B353.0 - [0:0]
:Cid4288B35D.0 - [0:0]
:Cid4288B35D.1 - [0:0]
:Cid4288B372.0 - [0:0]
:Cid4288B372.1 - [0:0]
:RULE_5 - [0:0]
:RULE_8 - [0:0]
:eth1_In_RULE_0 - [0:0]
### en premier on veut traiter INPUT
# on respecte les connections déja établies
#ne pas faire cela cest une garantie de quelque bon sprint vers le local serveur ;-)
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# on fait en sorte que tout les flux locaux passe par la règle eth1_In_RULE_0
-A INPUT -s 192.168.0.11 -i eth1 -j eth1_In_RULE_0
-A INPUT -s 10.0.1.1 -i eth1 -j eth1_In_RULE_0
-A INPUT -s 10.0.1.0/255.255.255.0 -i eth1 -j eth1_In_RULE_0
#on accepte tout les connections sur le loopback.
-A INPUT -i lo -m state --state NEW -j ACCEPT
# tous les broadcasts sur toute les interfaces et vers toute les directions soient dirigés vers une règle
-A INPUT -d 255.255.255.255 -j Cid4288B349.1
#on accepte les nouvelles connections en provenance du lan et on les diriges dans une règle
-A INPUT -s 10.0.1.0/255.255.255.0 -m state --state NEW -j Cid4288B353.0
#on accepte les nouvelles connections en provenance de la carte réseau connecté au réseau modem routeur
-A INPUT -s 192.168.0.11 -m state --state NEW -j ACCEPT
#on accepte les nouvelles connections en provenance de la carte réseau connecté au lan
-A INPUT -s 10.0.1.1 -m state --state NEW -j ACCEPT
#on accepte les nouvelles connections à destination du modem routeur mais on les envoie dans une règle
-A INPUT -d 192.168.0.11 -m state --state NEW -j Cid4288B372.1
#on accepte les nouvelles connections à destination de la carte réseau connecté au lan mais on les envoie dans une règle
-A INPUT -d 10.0.1.1 -m state --state NEW -j Cid4288B372.1
#tout le reste à destination de la carte réseau connecté au modem routeur et
# et de la carte réseau connecté au lan fait l'objet d'un traitement dans une règle
-A INPUT -d 192.168.0.11 -j RULE_5
-A INPUT -d 10.0.1.1 -j RULE_5
#on laisse passer les messages port inacessible à destination du lan, c'est préférable pour un routeur ;-)
-A INPUT -d 10.0.1.0/255.255.255.0 -p icmp -m icmp --icmp-type 3 -m state --state NEW -j ACCEPT
#on accepte absolument toute nouvelle connection en provenance du lan
# c'est essentiel
-A INPUT -s 10.0.1.0/255.255.255.0 -m state --state NEW -j ACCEPT
#Si quelque chose n'a pas été filtré alors il y a un problème, un flux non géré en général, redirection de port et autre sucrerie.
-A INPUT -j RULE_8
### le bloc INPUT est terminé
### on attaque le bloc FORWARD
# même politique que précédement on est tolérant envers les connections déja établies.
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
#tout les paquets à transférer en provenance de l'interface connecté au réseau modem routeur sont traités dans une règle
-A FORWARD -s 192.168.0.11 -i eth1 -j eth1_In_RULE_0
#même chose pour ceux provenant de la carte réseau connecté au lan et passant bien par la bonne interface
-A FORWARD -s 10.0.1.1 -i eth1 -j eth1_In_RULE_0
#c'est la même chose que précedement sauf que cette fois ci ce sont les paquets en provenance du lan
-A FORWARD -s 10.0.1.0/255.255.255.0 -i eth1 -j eth1_In_RULE_0
# on laisse passer le code port inacessible à destination du lan
-A FORWARD -d 10.0.1.0/255.255.255.0 -p icmp -m icmp --icmp-type 3 -m state --state NEW -j ACCEPT
#toute nouvelle connection en provenance du lan est systématique accepté
-A FORWARD -s 10.0.1.0/255.255.255.0 -m state --state NEW -j ACCEPT
# une redirection particulière vers une IP précise du LAN
-A FORWARD -d 10.0.1.108 -i eth1 -o eth0 -p tcp -m tcp --dport 8100 -j ACCEPT
# si quelque chose n'est pas traité, il y a un problème, on envoie dans une règle.
-A FORWARD -j RULE_8
###le bloc FORWARD est terminé
### le bloc OUTPUT commence
# déja vu non ? en sortie cette fois
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# même chose pour le loopbak, oubliez ceci juste une fois pour voir :)
-A OUTPUT -o lo -m state --state NEW -j ACCEPT
#les broadcast vont dans une règle spéciale
-A OUTPUT -d 255.255.255.255 -j Cid4288B349.0
# les paquet à destination du lan passe aussi dans une règle
-A OUTPUT -d 10.0.1.0/255.255.255.0 -j Cid4288B35D.0
# on accepte toute nouvelle connection sortante provenant de la carte réseau connecté au modem routeur
-A OUTPUT -s 192.168.0.11 -m state --state NEW -j ACCEPT
#meme chose pour celle du lan
-A OUTPUT -s 10.0.1.1 -m state --state NEW -j ACCEPT
#tout paquet à destination de la carte réseau connecté au modem routeur est maintenant dirigé dans une règle.
-A OUTPUT -d 192.168.0.11 -m state --state NEW -j Cid4288B372.0
#meme chose pour la carte réseau connecté au lan
-A OUTPUT -d 10.0.1.1 -m state --state NEW -j Cid4288B372.0
#si quelque chose d'autre passe par la carte réseau connecté au modem routeur on envoie dans une règle.
-A OUTPUT -d 192.168.0.11 -j RULE_5
#meme chose pour la carte connecté au lan
-A OUTPUT -d 10.0.1.1 -j RULE_5
#on laisse passer le code 3 port inacessible à destination et en provenance du lan
-A OUTPUT -d 10.0.1.0/255.255.255.0 -p icmp -m icmp --icmp-type 3 -m state --state NEW -j ACCEPT
-A OUTPUT -s 10.0.1.0/255.255.255.0 -m state --state NEW -j ACCEPT
#si quelque chose d'autre passe on envoie dans une règle.
-A OUTPUT -j RULE_8
###le bloc OUTPUT est terminé
### le plus intéressant maintenant le TRAITEMENT à l'intérieur des règles
#on drop un vieux protocole , anciennement dhcp
-A Cid4288B349.0 -p udp -m udp -m multiport --dports 68,67 -j DROP
-A Cid4288B349.1 -p udp -m udp -m multiport --dports 68,67 -j DROP
#on accepte les connections à destination de la carte connecté au modem routeur
-A Cid4288B353.0 -d 192.168.0.11 -j ACCEPT
#pareil pour la carte connecté au lan
-A Cid4288B353.0 -d 10.0.1.1 -j ACCEPT
#on précise quel type de protocole on veut filtrer ici, la réponse ping et le TTL
-A Cid4288B35D.0 -p icmp -m icmp --icmp-type 0/0 -j Cid4288B35D.1
-A Cid4288B35D.0 -p icmp -m icmp --icmp-type 11/0 -j Cid4288B35D.1
-A Cid4288B35D.1 -s 192.168.0.11 -j ACCEPT
-A Cid4288B35D.1 -s 10.0.1.1 -j ACCEPT
# ici on définit les service qu'on laisse passer pop,smtp,ftp,http,ssh,wgs
-A Cid4288B372.0 -p tcp -m tcp -m multiport --dports 110,25,21,20,80,22,8100 -j ACCEPT
-A Cid4288B372.1 -p tcp -m tcp -m multiport --dports 110,25,21,20,80,22,8100 -j ACCEPT
### le bloc TRAITEMENT étant terminé
### on passe maintenant aux traitement des logs via syslog
#c'est simple on log et on drop
-A RULE_5 -j LOG --log-prefix "RULE 5 -- DENY " --log-level 6
-A RULE_5 -j DROP
-A RULE_8 -j LOG --log-prefix "RULE 8 -- DENY " --log-level 6
-A RULE_8 -j DROP
-A eth1_In_RULE_0 -j LOG --log-prefix "RULE 0 -- DENY " --log-level 6
-A eth1_In_RULE_0 -j DROP
COMMIT
*nat
### DNAT et SNAT
:PREROUTING ACCEPT [14120:1457190]
:POSTROUTING ACCEPT [24501:1885523]
:OUTPUT ACCEPT [24484:1884575]
### squid en mode prxy cache transparent nécessite cette règle
-A PREROUTING -s 10.0.1.0/255.255.255.0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.1.1:3128
### redirection de port pour wgs
-A PREROUTING -i eth1 -p tcp -m tcp --dport 8100 -j DNAT --to-destination 10.0.1.108
### et pour finir on fait le masquerading du réseau local
### c'est essentiel
-A POSTROUTING -s 10.0.1.0/255.255.255.0 -o eth1 -j MASQUERADE
COMMIT
Espérant t'avoir donné quelque pistes. Ho, j'allais oublier hésite pas à consulter des liens de ce type pour acquérir les notions de base de netfiler!
Par exemple :
http://www.linux-france.org/prj/edu/archinet/systeme/ch62.html