Routage NAT : switcher l'interface d'accès internet

Bonjour à tous,

Je possède des VMs de développement que je souhaite isoler sur un réseau privé, j’aimerais que ma machine hôte soit le routeur de ce réseau, j’ai donc configuré une interface virtuelle eth0:1 avec une adresse réseau différent de mon routeur d’accès à internet.

Habituellement pour faire la translation d’adresse je mets la règle iptables suivante :

Cependant ma machine hôte est un ordinateur portable, je peux donc avoir une connexion ethernet sur eth0 ou une connexion wifi sur wlan0.

J’aimerais que la translation d’adresse pointe automatiquement sur l’interface connectée à internet. Savez-vous si il y a un moyen de le faire ?

En vous remerciant :slightly_smiling:

Utiliser, en plus, la même ligne, mais avec wlan0 ?

Certainement.
Par contre je ne comprends pas la finalité de l’alias eth0:1 (qui n’est pas une interface virtuelle mais un mécanisme obsolète pour affecter une adresse IP supplémentaire à eth0).

Oh je n’ai même pas pensé à ça… Si je fais comme ceci, les paquets seront redirigés vers les 2 interfaces à chaque fois ?

Je ne savais pas pour l’interface eth0:1, en faisant des recherches sur internet il est dit que c’est une interface virtuelle mais ça ne fonctionne pas comme je le souhaite en effet.
Ce que je recherche c’est de créer une interface virtuelle à pointer avec virtualbox qui serait le point d’accès à mon réseau privé, mais je me demande si c’est possible, peut-on créer une interface sans avoir de carte physique ?

En tout cas merci pour vos réponses :slightly_smiling:

Non. Un paquet ne peut être routé (et non redirigé) que sur une seule interface à la fois.
La cible MASQUERADE ne redirige rien du tout. Elle ne décide pas non plus du routage des paquets sur telle ou telle interface. Elle se limite à remplacer l’adresse source des paquets sortants par l’adresse de l’interface de sortie, et à faire la réciproque pour les paquets entrants correspondants.

Avec ces règles, si les paquets sortent pas eth0, ils auront l’adresse source d’eth0, et s’il sortent par wlan0 ils auront l’adresse source de wlan0. C’est aussi bête.

On lit beaucoup de bêtises sur internet.

Bien sûr c’est possible. De nombreux types d’interface sont dans ce cas : ppp, tun, tap, veth, bridge…

Normalement c’est virtualbox qui crée les interfaces virtuelles sur l’hôte pour communiquer avec les machines virtuelles, à condition d’avoir sélectionné le bon type de réseau.

[quote=“PascalHambourg”]La cible MASQUERADE ne redirige rien du tout. Elle ne décide pas non plus du routage des paquets sur telle ou telle interface. Elle se limite à remplacer l’adresse source des paquets sortants par l’adresse de l’interface de sortie, et à faire la réciproque pour les paquets entrants correspondants.
Avec ces règles, si les paquets sortent pas eth0, ils auront l’adresse source d’eth0, et s’il sortent par wlan0 ils auront l’adresse source de wlan0. C’est aussi bête.[/quote]
Ok je crois comprendre, j’ai du m’embrouiller avec cette règle, pour reprendre si je fais ceci :

-A FORWARD -i eth1 -o eth0 -j ACCEPT -A FORWARD -i eth1 -o wlan0 -j ACCEPT
Les paquets de mon interface eth1 seront redirigé à la fois sur eth0 et sur wlan0, pour l’interface non connectée, les paquets seraient perdus, c’est bien cela ? Bon j’avoue c’est un peu bourrin.

Oui en effet… Et c’est parfois difficile de savoir ce qui est bêtise et ce qui ne l’est pas :confused:

Ok je te remercie pour ces pistes, je vais faire quelques recherche à propos de ces types d’interfaces pour voir ce que ça donne, d’ailleurs si vous connaissez un bon article sur le sujet je suis preneur :slightly_smiling:

C’est ce que j’avais fais au début, mais j’aimerais bien pouvoir créer mes interface manuellement et rendre transparent le réseau mis en place par virtualbox afin de me familiariser avec la gestion réseau (aucun intérêt c’est just for fun ^^).

En tout cas merci pour ces éclaircissements ! :slightly_smiling:

C’est une obsession de voir des redirections partout, ou quoi ?
L’action sur un paquet est déterminée par la cible. La cible ACCEPT ne redirige rien du tout non plus, elle ne fait qu’accepter les paquets qui passent.
Les seules cibles iptables qui redirigent sont DNAT et REDIRECT dans la chaîne PREROUTING ou OUTPUT, avant la décision de (re)routage. Dans la chaîne FORWARD ou POSTROUTING il est trop tard pour rediriger, la décision de routage via telle interface a déjà été prise.

Et comment diable comptes-tu communiquer avec une machine virtuelle si ce n’est pas virtualbox qui crée l’interface réseau ?
Je ne vois pas ce que tu veux dire par “rendre transparent”.

[quote=“PascalHambourg”]Et comment diable comptes-tu communiquer avec une machine virtuelle si ce n’est pas virtualbox qui crée l’interface réseau ?
Je ne vois pas ce que tu veux dire par “rendre transparent”.[/quote]
En effet je me rends compte que le schéma que j’avais en tête n’est juste pas cohérent, je souhaitais que mon hôte soit reconnu comme une passerelle par ma vm (d’où la création d’interface).

[quote=“PascalHambourg”]C’est une obsession de voir des redirections partout, ou quoi ?
L’action sur un paquet est déterminée par la cible. La cible ACCEPT ne redirige rien du tout non plus, elle ne fait qu’accepter les paquets qui passent.
Les seules cibles iptables qui redirigent sont DNAT et REDIRECT dans la chaîne PREROUTING ou OUTPUT, avant la décision de (re)routage. Dans la chaîne FORWARD ou POSTROUTING il est trop tard pour rediriger, la décision de routage via telle interface a déjà été prise.[/quote]
haha désolé je suis vraiment néophyte dans ce domaine, du coup j’aurais 2 petites question sur le sujet pour ma culture personnelle :
Quelle règle dois-je utiliser pour router les paquets arrivant d’une interface (eth0 : LAN) vers une autre interface (eth1 : WAN) afin de faire office de passerelle ?
Dans ce cas est-ce qu’on parle de redirection ?

Aucune. Le routage est défini dans la table de routage : une route associe une destination à une interface de sortie et éventuellement une adresse de “nexthop” (routeur suivant, passerelle).
La table de routage est manipulée par des commandes comme [mono]route[/mono] ou [mono]ip route[/mono]. Dans ton cas, tu n’auras probablement rien à ajouter, toutes les routes nécessaires devraient déjà être présentes.

Certes, iptables peut influer sur le routage de diverses façons, mais tu n’en as pas besoin.

Pour le fonctionnement dit “routeur IPv4” qui permet de renvoyer les paquets non destinés à la machine, il faut aussi régler net.ipv4.ip_forward (/proc/sys/net/ipv4/ip_forward) à 1.

Non. De routage. La redirection, c’est quand on modifie la destination.

Ok merci pour tout :slightly_smiling: