hello
on peux aussi faire un scripte qui ouvre les connections a la demande, le problème c’est que sa mange un peux de cpu,(puisqu’il faut qu’il recherche en permanence). mai de ce faite on peux choisir qu’elle processus a le droit et ver ou routage etc. ce que fait le script ci-dessou
Il n’est pas pour diriger les paquets sur une interface spécifique. Cela doit pouvoir ce faire de cette manière
en le modifiant
c’est pas la solution nikel mai c’est celle qui a mon avis est la plus souples, le prix les resources cpu note que c’était pas gourmand sur ma machine m’en-fin tout est relatif puis que ma config est un cpu 2,5 ghz 
et tu peux gérer la fréquance du scan ce qui mange du cpu, c’est a chaque passage, sinon il ne fait rien
tu peux t’en inspirer, seulement j’ai pas trop creuser il est probable que des commande son a revoir ce script date de 2007 a mes débuts (sorry pour les fautes)
#!/bin/sh
DAEMON="Firewall 0.3"
NAME="Firewall"
ID=$$
DESC="Firwall 0.3"
#programe autoriser
ProgAuto=(ruby wget nexuiz-li weechat-curse firefox-b ntop evolution http ssh wish underware poker-interfac poker3d)
#performance et securiter
# PauseForBreak=0.1
# PauseForClose=0.1
PauseWhile=0.5
#protocole -i4 =ipv4 -i6 = ipv6 -i=tous
protocol="-i"
# votre interface reseaux
ETH="eth1"
#Fichier temporaire pour les appelles lsof
File="/home/tnt/volatile/lsof_auto"
# si vous voulez que sa scan en permance laisser sure true et i = 1 et boucledesortie = 0
# si vous voulez que cela soie juste pour le démarrage régler a
# une valeur qui vous convienne environ 300
#toute foit avant de rectiver le par feux vous devrez l'a appler de cette manière:
#/etc/init.d/firewall stop && /etc/init.d/firewall start
boucleinfinie="true"
boucledesortie="0"
i="1"
#log des prog,port fermer (ON : OFF)
LOG="ON"
#permet de loguer avec iptables (ici avec ulog) (ON : OFF)
LOGIP="OFF"
prefix="LOGIP-ON"
#fichier permettant facilment de savoir si un port est fermer
pathlog="/home/tnt/volatile/close.log"
#Repertoire qui ser aux montage d'un volume en ram
ddvol="/home/tnt/volatile"
# cela represente une faille
Restricted="0755"
#Contien le PID en cour
PID="/home/tnt/volatile/pid"
echo "Configuration des règles de base"
#root interdi en sortie sauf sur le port 53 !
idroot="0"
#state input
DROPSTATE="-m state --state NEW,INVALID"
#Mise a zero des regle (par précaution)
#
# On remet la police par défaut à ACCEPT
#
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#
# On remet les polices par défaut pour la table NAT
#
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#
# On vide (flush) toutes les règles existantes
#
iptables -F
iptables -t nat -F
#
# Et enfin, on efface toutes les chaînes qui ne
# sont pas à defaut dans la table filter et nat
iptables -X
iptables -t nat -X
#==============================================
# on autorise tout ce qui est en local
#règle de filtrage pour rejeter les paquets en prioriter et pour proteger les service par defaut qui son ouvert
iptables -A INPUT -f -j DROP
iptables -A INPUT -p tcp -m length --length 0:20 -j DROP
iptables -A INPUT -p udp -m length --length 0:20 -j DROP
iptables -A INPUT -i $ETH $DROPSTATE -j DROP
iptables -A INPUT -i $ETH -s 192.168.1.0/24 -j ACCEPT
#loopack
iptables -A INPUT -i lo -j ACCEPT
#iptables -t filter -A INPUT -i $ETH -m limit --limit 24/h --limit-burst 1 -p all -j ULOG --ulog-prefix="USER INPUT Final"
#==============================================
#==============================================
#le loopack
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p TCP --dport 53 -m owner --uid-owner $idroot -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -p UDP --dport 53 -m owner --uid-owner $idroot -j ACCEPT
iptables -A OUTPUT -o $ETH -m owner --uid-owner $idroot -j DROP
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o $ETH -d 192.168.1.0/24 -j ACCEPT
#iptables -t filter -A OUTPUT -o $ETH -m limit --limit 24/h --limit-burst 1 -p all -j ULOG --ulog-prefix="USER OUTPUT Final"
#===============================================
set -m
case "$1" in
start)
echo "montage du disque virtuel"
mount -t tmpfs -o size=5m,nr_inodes=10k,mode=$Restricted tmpfs "$ddvol"
echo "montage du disque terminer"
echo "$$" > "$PID"
while $boucleinfinie ;do
lsof $protocol -P > $File
while read line ;do
n1=`echo $line | cut -d":" -f2 | cut -d"(" -f1 | cut -d"-" -f1`
n2=`echo $line | cut -d" " -f1`
Found="FALSE"
if [ "COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME" != "$n1" ] ;then
for TB in ${ProgAuto[*]} ;do
if [ "$TB" = "$n2" ] ;then
#echo "affichage " $n2 "===" $TB "sure le port" $n1
Found="TRUE"
#sleep $PauseForBreak
break
fi
done
#if [ "$Found" = "TRUE" ] ;then
# echo "app auto $n2 sur le port $n1"
if [ ! -n "${PortClose["$n1"]}" -a "$Found" != "TRUE" ] ;then
echo "app interdi $n2 sur le port $n1"
PortClose[$n1]="TRUE"
if [ "$LOGIP" = "ON" ] ;then
iptables -t filter -A INPUT -i $ETH -m limit --limit 24/h --limit-burst 1 -p tcp --dport $n1 -j ULOG --ulog-prefix="$prefix"
iptables -t filter -A INPUT -i $ETH -m limit --limit 24/h --limit-burst 1 -p tcp --sport $n1 -j ULOG --ulog-prefix="$prefix"
iptables -t filter -A INPUT -i $ETH -m limit --limit 24/h --limit-burst 1 -p udp --dport $n1 -j ULOG --ulog-prefix="$prefix"
iptables -t filter -A INPUT -i $ETH -m limit --limit 24/h --limit-burst 1 -p udp --dport $n1 -j ULOG --ulog-prefix="$prefix"
iptables -t filter -A OUTPUT -o $ETH -m limit --limit 24/h --limit-burst 1 -p tcp --dport $n1 -j ULOG --ulog-prefix="$prefix"
iptables -t filter -A OUTPUT -o $ETH -m limit --limit 24/h --limit-burst 1 -p tcp --sport $n1 -j ULOG --ulog-prefix="$prefix"
iptables -t filter -A OUTPUT -o $ETH -m limit --limit 24/h --limit-burst 1 -p udp --dport $n1 -j ULOG --ulog-prefix="$prefix"
iptables -t filter -A OUTPUT -o $ETH -m limit --limit 24/h --limit-burst 1 -p udp --dport $n1 -j ULOG --ulog-prefix="$prefix"
iptables -A INPUT -i $ETH -p tcp --dport $n1 -j DROP
iptables -A INPUT -i $ETH -p tcp --sport $n1 -j DROP
iptables -A INPUT -i $ETH -p udp --dport $n1 -j DROP
iptables -A INPUT -i $ETH -p udp --sport $n1 -j DROP
iptables -A OUTPUT -o $ETH -p tcp --dport $n1 -j DROP
iptables -A OUTPUT -o $ETH -p tcp --sport $n1 -j DROP
iptables -A OUTPUT -o $ETH -p udp --dport $n1 -j DROP
iptables -A OUTPUT -o $ETH -p udp --sport $n1 -j DROP
else
iptables -A INPUT -i $ETH -p tcp --dport $n1 -j DROP
iptables -A INPUT -i $ETH -p tcp --sport $n1 -j DROP
iptables -A INPUT -i $ETH -p udp --dport $n1 -j DROP
iptables -A INPUT -i $ETH -p udp --sport $n1 -j DROP
iptables -A OUTPUT -o $ETH -p tcp --dport $n1 -j DROP
iptables -A OUTPUT -o $ETH -p tcp --sport $n1 -j DROP
iptables -A OUTPUT -o $ETH -p udp --dport $n1 -j DROP
iptables -A OUTPUT -o $ETH -p udp --sport $n1 -j DROP
fi
#sleep $PauseForClose
if [ "$LOG" = "ON" ] ;then
echo "$n2 >=======> $n1" >> $pathlog
fi
# elif [ "${PortClose["$n1"]}" = "TRUE" ] ;then
# echo "port déjà fermer : " $n1
# else
# echo "ERREUR inconnue : " ${PortClose[$n1]}
fi
fi
done < $File
sleep $PauseWhile
i=$(($i+1))
if [ "$i" = "$boucledesortie" ] ;then
boucleinfinie="false"
echo "Le contrôle des programes est terminer le: " `date` >> $pathstop
fi
done
;;
stop)
PID="/home/tnt/volatile/pid"
ddvol="/home/tnt/volatile"
kill -n 9 $(cat $PID) 2>/dev/null
echo "Demontage du volume"
sleep 2
umount -t tmpfs "/home/tnt/volatile"
# umount -t tmpfs "$ddvol"
echo "Demontage terminer"
echo "Mise a zero des regles d'iptables"
#
# On remet la police par défaut à ACCEPT
#
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#
# On remet les polices par défaut pour la table NAT
#
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#
# On vide (flush) toutes les règles existantes
#
iptables -F
iptables -t nat -F
#
# Et enfin, on efface toutes les chaînes qui ne
# sont pas à defaut dans la table filter et nat
iptables -X
iptables -t nat -X
echo "$DAEMON est terminer"
;;
*)
N=/etc/init.d/$NAME
echo "Ne pas utiliser /etc/init.d/iptable_auto {start} OR news {start}=stop " $DAEMON >&2
echo "Usage /etc/init.d/firewall stop && (OR) /etc/init.d/firewall start"
exit 1
;;
esac
exit 0
Donc en gros tu ferais deux tableaux 1 pour chaque interface et le tour est jouer pour les règles iptable/iproutes c’est a toi d’adapter 