Déterminer passerelle pour routage - Réseaux - Systèmes & Réseaux Pro
MarshPosté le 04-11-2010 à 14:41:53
Salut à tous,
Je développe une appli en C++ pour Windows permettant de faire du forwarding d'IP en utilisant un driver NDIS. Sans rentrer dans les détails de cette application, je suis confronté à la problématique suivante : J'ai besoin de faire du SNAT sur des paquets, mais l'adresse que je vais choisir pour remplacer la source dépend de l'adresse de destination. Par exemple, je suis connecté à deux réseaux différents : - connexion wifi - connexion ethernet
Les deux interfaces me permettent d'accéder à l'extérieur ; ainsi si je fais du SNAT en utilisant l'adresse de l'interface filaire, ça va fonctionner pour un accès à internet. Par contre, si je veux accéder à une machine se trouvant sur le réseau wifi, il va falloir que je SNAT avec mon adresse Wifi.
En gros, ce que je cherche à faire, c'est à déterminer avec quelle adresse sortir (donc quelle route utiliser) pour atteindre une certaine destination. Je dois pouvoir le faire dans mon code.
A la main, c'est simple : si je veux contacter l'ip 192.168.0.2 par exemple, je lance un route print, et je vois :
Marsh Posté le 04-11-2010 à 14:41:53
Salut à tous,
Je développe une appli en C++ pour Windows permettant de faire du forwarding d'IP en utilisant un driver NDIS. Sans rentrer dans les détails de cette application, je suis confronté à la problématique suivante :
J'ai besoin de faire du SNAT sur des paquets, mais l'adresse que je vais choisir pour remplacer la source dépend de l'adresse de destination.
Par exemple, je suis connecté à deux réseaux différents :
- connexion wifi
- connexion ethernet
Les deux interfaces me permettent d'accéder à l'extérieur ; ainsi si je fais du SNAT en utilisant l'adresse de l'interface filaire, ça va fonctionner pour un accès à internet. Par contre, si je veux accéder à une machine se trouvant sur le réseau wifi, il va falloir que je SNAT avec mon adresse Wifi.
En gros, ce que je cherche à faire, c'est à déterminer avec quelle adresse sortir (donc quelle route utiliser) pour atteindre une certaine destination. Je dois pouvoir le faire dans mon code.
A la main, c'est simple : si je veux contacter l'ip 192.168.0.2 par exemple, je lance un route print, et je vois :
192.168.0.0 255.255.255.0 On-link 192.168.0.3 4501
donc, je vois que je sors avec l'ip 192.168.0.3
Mais comment faire faire cette manipulation par mon programme ? Merci à vous.