Route différente suivant adresse de destination ET port

Bonjour à tous,

J’ai plusieurs connexions à internet : 2 ADSL et une SDSL. La sdsl sert à envoyer un flux de 3 webradios sur un serveur icecast. les ADSL pour internet en général. le problème c’est que mon serveur smtp est sur la même machine que le serveur icecast, du coup quand on envoie un mail volumineux, ça fait sauter les webradios…

Donc je voudrais utiliser la connexion SDSL (passerelle : 192.168.1.251) uniquement pour le port 8000 et l’adresse 111.222.333.444, dans tous les autres cas, une passerelle ADSL.

J’ai oublié de préciser que j’ai déjà un routeur sous debian qui gère tout ce petit monde.

J’ai voulu m’orienter vers les règles de routage avancées (avec les tables et tout ca), mais j’y comprends rien :shifty:

Merci à vous :wink:

Salut,

Pour avoir une réponse, tu devrais poser une question :smiley:

Les règles de routage avancé (iproute) sont la bonne direction à suivre. Le LARTC HOWTO contient des explications, il faut trouver le bon chapitre. Comme le port ne fait pas partie des clés de routage, on doit passer par un intermédiaire : le marquage des paquets par iptables. Ensuite on peut utiliser la marque des paquets comme clé de routage.

Le principe de base :

iptables -t mangle -A OUTPUT -p <protocole> --dport <port> -j MARK --set-mark <marque> ip rule add fwmark <marque> table <table> ip route add default via <passerelle> table <table>
où est tcp ou udp selon l’application, est un entier non nul et

un numéro de table de routage entre 1 et 252. La règle iptables est dans la chaîne OUTPUT pour les paquets générés par un processus local (cas de la machine émettrice), ou dans la chaîne PREROUTING pour les paquets retransmis provenant d’une autre machine (cas d’un routeur).

Néanmoins il y a d’autres moyens plus simples si le critère n’est pas obligatoirement le port. Pour une adresse de destination spécifique (par exemple celle du serveur icecast), il suffit d’une simple route classique dans la table de routage principale :

Si on peut faire en sorte que les paquets soient émis avec une adresse source spécifique (certains programmes le permettent) définie comme alias IP sur la machine émettrice, on peut créer une règle de routage basée sur cette adresse, évitant le recours au marquage par iptables :

ip rule add from <adresse_src> table <table> ip route add default via <passerelle> table <table>

Il gère quoi exactement au juste ?

Merci pour ta réponse rapide ^^

je travaille dans une radio et j’ai, du coup, plusieurs façons d’accéder aux émetteurs pour leurs amener le son.

Pour ça j’ai plusieurs connexions et suivant les destinations je dois utiliser telle ou telle connexion. J’ai un modem satellite, un modem SDSL, deux modems ADSL, un faisceau hertzien.

les modems ADSL ne servent qu’a accéder à internet en général (pour les journalistes et tout le personnel de la radio), on est loin de tout et les deux connexions ADSL dépassent très rarement 1Mb en réception. Je veux donc faire de la balance de charge entre les deux mais j’ai un problème avec une des box qui n’est absolument pas configurable (bbox) mais c’est une autre histoire :wink:

le modem SDSL sert aux webradios et à accéder à deux émetteurs, cependant comme j’ai expliqué plus haut, le serveur des webradios sers aussi de serveur de mails et lors de la réception ou l’envoie de gros mails, tout saute.

le modem sat et le faisceau hertzien ne sont pas raccordés à internet, donc aucun soucis de ce coté là.

donc tout arrive sur le routeur et tout est dispatché sur les connexions pour économiser du matériel d’encodage du son.

Tu veux dire que le serveur de webradio/mail et les postes de travail utilisent comme passerelle par défaut le routeur qui aiguille les flux vers les différents modems ?

le serveur webradio/mail n’est pas hébergé chez nous, il est chez ovh. mais sinon en effet tous les postes et serveur locaux utilise le routeur comme passerelle qui redirige les flux

Bonjour,
J’ai le même problème, avec ça :

iptables -t mangle -A OUTPUT -p <protocole> --dport <port> -j MARK --set-mark <marque>

Ca fonctionne tres bien depuis le routeur, mais pour en faire de même sur les paquets du réseau local, j’ai essayé des trucs du genre :

iptables -t mangle -A PREROUTING -p <protocole> ! -d 192.168.1.0/24 --dport <port> -j MARK --set-mark <marque>

mais je dois oublier quelque chose, ça ne fonctionne pas.
Une petite idée ?

si je ne me trompe pas, on doit marquer les paquets en PREROUTING avec mangle plus c’est la règle FORWARD qui doit accepter et POSTROUTING qui doit faire la masquerade, non ?