Multiple IPV4 avec plusieurs Interfaces réseaux

Tags: #<Tag:0x00007f63e40be6c8> #<Tag:0x00007f63e40be420> #<Tag:0x00007f63e40be2b8>

Bonjour,

J’ai actuellement un problème.

J’ai une machine sous debian 11. Sur cette machine j’ai 3 connexions internet.
Une par câble et 2 clés 4G (modèle : Huawei E3372).

J’aimerais faire de mes deux connexions des proxys. Il me faut pour ça 2 IPV4. Comme actuellement sur mon windows.

Seulement lorsque je branche mes clés a ma machine debian je n’obtiens qu’une seule IPV4

image

Celle ci se base, sur la connexion que je choisis par défaut (dans le menu en haut a droite sur debian). Lorsque je change de connexion j’obtiens mon adresse IPV4 mais impossible d’avoir une IPV4 en permanence sur chaque connexion.

Auriez-vous une solution ?

Merci a vous
Cordialement,
Gigolito

Peux-tu nous fournir pour commencer le retour de la commande (ifconfig est à oublier utilise plutôt la commande ip) :

ip a

Peux-tu aussi nous décrire ce que tu cherche exactement à faire car j’ai du mal à saisir, entre ton interface eno, enx et eth j’ai du mal à saisir comment Debian as t’il pu faire cette configuration …

Bonjour Clochette,

Excuse-moi dans un premier temps pour mon manque d’informations / connaissance sur le sujet. Je connais très peu linux de manière générale.

Voici une capture d’écran :
image

En faite dans la config squid il faut a un moment donné rentré les IPV4 utilisés comme ceci par exemple :

http_port 192.168.8.100:3128 name=3128
http_port 192.168.8.101:3129 name=3129

Le port n’a pas d’importance par contre l’ip elle doit correspondre a l’ip que l’on retrouve grâce a notre commande ifconfig.
Seulement comme j’ai pu l’expliquer dans mon post, je ne vois que l’ipV4 du réseau que j’ai sélectionné et que ma machine utilise.
Hors mes proxys doivent pouvoir utiliser toutes les interfaces réseaux (c’est pour cela qu’il me faut une IPV4 par interface et pas uniquement une sur celle que j’ai sélectionné)

Globalement ce que je souhaites c’est avoir une ligne « inet » par interface réseau disponible

Est-ce plus clair ?

Merci pour ton aide

Comment as-tu configuré le réseau ?

Par ailleurs, est-ce que tu peux éviter d’envoyer le texte sous forme de capture d’écran, s’il te plaît ?

Hello @Almtesh

Tout d’abord merci pour ton aide.

Etant une vraie bille en réseau, j’ai laissé probablement la config par défaut, il me semble que la seule modification que j’ai pu faire c’est supprimer la route par défaut (sans réel succès).

Evidemment, a l’avenir j’éviterais et mettrais ça sous format texte

Merci a toi

Voici un exemple de configuration d’une interface avec deux VIP :

# The loopback network interface

auto lo
iface lo inet loopback

# The primary network interface
auto ens18
    iface ens18 inet static
    address 10.0.128.120
    netmask 255.255.255.0
    gateway 10.0.128.254

# sql VIP
iface ens18:1 inet static
    address 10.0.128.200
    netmask 255.255.255.0

# redis VIP
iface ens18:2 inet static
    address 10.0.128.210
    netmask 255.255.255.0

En extrapolant tu modifie les deux VIP et tu renseigne correctement les interfaces et c’est prêt :

Genre un truc comme ça :

# The loopback network interface

auto lo
iface lo inet loopback

# The primary network interface
auto XXX1
    iface XXX1 inet static
    address XXX.XXX.XXX.XXX
    netmask 255.255.255.0
    gateway XXX.XXX.XXX.254

# The secondary network interface
auto XXX2
    iface XXX1 inet static
    address XXX.XXX.XXX.XXX
    netmask 255.255.255.0
    gateway XXX.XXX.XXX.254

# The third network interface
auto XXX3
    iface XXX1 inet static
    address XXX.XXX.XXX.XXX
    netmask 255.255.255.0
    gateway XXX.XXX.XXX.254

Maintenant tu refais à ta sauce avec le nom de tes interfaces et les IP de ton choix.

Petit rappel la passerelle n’est à renseigner que pour des réseau différents si tes trois interfaces sont dans le même réseaux une seule passerelle est utile (mais cela ne semble pas être ce que tu recherche à faire d’après ta capture d’écran précédente).

Peux-tu expliciter ces deux phrases ? Qu’entends-tu exactement par « faire de mes connexions des proxys » (entre quoi et quoi, pour quel(s) clients et/ou services) et pourquoi il faut plusieurs interfaces et adresses IP pour cela ?

Spécifier plusieurs routeurs (l’emploi du mot « passerelle » dans ce sens est déconseillé) par défaut actifs en même temps ne marche pas, ou du moins ne fait généralement pas ce qu’on attend : le système ne va en utiliser qu’un seul, toujours la même pour router tous les paquets sortants non destinés aux réseaux locaux.

Bonsoir,

Merci pour vos réponses, je vais effectivement étudié ça.

Mon projet est assez simple (En tout cas pour la partie développement :sweat_smile:)
Je souhaite créer un logiciel permettant l’envoie de mail en simultané a partir de plusieurs IP.
J’ai donc dans un premier developpé le logiciel permettant d’envoyer les emails.

Puis j’ai ajouté la partie proxys, j’ai donc grâce a SQUID (http://www.squid-cache.org/) créer des proxys sur ma machine windows.
Dans la configuration SQUID il faut a un moment renseigner les IPV4 comme j’ai pu expliquer plus haut.

Sur ma machine Windows aucun soucis grâce a un ipconfig j’ai pu récupérer toutes mes IP sans problème.

Toutefois sous linux seul l’IPV4 de la carte réseau sélectionné est affiché (et disponible ?).

Je souhaite donc avoir une IPV4 sur chaque carte réseau

Merci encore pour votre aide

Je n’ai strictement rien compris à tes explications. Peut-être qu’en décrivant les flux réseau mis en oeuvre, ce sera plus clair.

Bonjour @PascalHambourg ,

Je vais tenter d’être plus clair, pardonne moi pour les éventuelles faute de français.

Ce que je souhaite c’est avoir cette ligne pour chacune de mes cartes réseaux


Explication :

Je vais tenter de faire un schéma pour que cela sois plus simple a comprendre.

image

Comme tu peux voir j’ai besoin a différents niveau d’avoir toutes les ips locals de mes « cartes réseaux ».
Je dois renseigner l’ip local dans mon API.
Puis pour chaque clé 4G renseigner l’ip local dans le fichier config de squid (le petit machin qui me sert a faire des proxys).

Hors actuellement comme tu peux voir sur le screen plus haut de ma commande « ip a » seul l’ip de la carte réseau sélectionné est affiché.

J’avais effectué des tests sur mon windows et comme tu peux voir sous windows pour chaque carte réseaux j’ai bien une adresse IPV4

Ce qui n’est pas le cas sous debian.

Est-ce plus clair ?

Merci a toi

Euh, ça ressemble à un cas typique de « problème XY » : pour résoudre X tu penses avoir besoin de Y alors tu demandes comment faire Y au lieu de X. Mauvaise démarche.

Ton schéma ne montre pas les flux réseau en jeu. Je ne vois toujours pas à quoi servent les clés 4G. Si c’est seulement pour avoir des adresses IP locales supplémentaires, pas besoin d’interfaces réseau ni de connexions internet pour ça.
D’un point de vue réseau, où est le PC Windows et comment communique-t-il avec le PC Debian ?
Qu’est-ce qui est censé utiliser les proxys ? Le PC Windows, ou un programme qui tourne sur le PC Debian ?
A quoi et comment ces proxys sont-ils censés se connecter à leur tour ?
Pourquoi parles-tu de proxys au pluriel ? Squid qui écoute sur plusieurs adresses IP ou ports, ça reste un seul et même proxy.

Excuse moi effectivement je me suis mal exprimer dans un premier temps.

Je penses que tout n’est pas encore clair.

Dans un premier temps tu peux mettre le PC windows de côté, j’ai mis un pc windows pour que sois plus clair mais en faite c’est un site web qui tape sur ma box internet puis est rediriger sur mon API. (Bref met ca de côté ca ne sert a rien je penses pour mon problème)

Pour ajoute plus de précisions et afin que tout sois clair voici un schéma par exemple de ce que je souhaites

image

les ips locales ne servent que dans la configuration de squid. l’api va envoyer mes infos sur mon ip locale et en fonction de l’ip locale squid va faire la redirection vers une clé 4G qui elle a une IP public.

Est-ce que tu comprends mieux ce que je souhaites faire ?

Si on reprends les infos que j’ai donné plus haut.

Voici ce que ca donne
image

Sous windows j’ai bien une IPV4 par carte réseau (par clé 4G donc). Je peux donc rentrer chaque IPV4 dans la configuration SQUID.
Sous debian j’ai une IPV4 uniquement sur le réseau sélectionné (le réseau que j’utilise par défaut sur ma debian).

Je souhaite donc avoir une IPV4 par carte réseau sous debian comme c’est le cas sous windows.

C’est plus clair. Les clés 4G ne vont servir que pour des connexions sortantes.
Deux remarques :

  • Je ne vois pas l’intérêt de faire écouter squid sur les adresses locales des clés 4G. Il suffit de le faire écouter sur différents ports d’une adresse de loopback (127.0.0.1 ou ::1) ou sur différentes adresses de loopback (il y a du choix dans 127.0.0.0/8).

  • Ce n’est pas squid qui décide du routage d’une connexion sortante via telle ou telle clé 4G, ce sont les règles et les tables de routage. Pour cela il faut mettre en place du routage avancé, et c’est probablement plus simple de partir d’une configuration IP statique définie dans /etc/network/interfaces (cf. second message de @Clochette) plutôt qu’en DHCP ou avec un gestionnaire de réseau complexe comme NetworkManager.

  • Ce serait également plus simple si les clés 4G étaient configurées avec des préfixes IP différents les unes des autres et pas toutes en 192.168.8.0/24.

J’ai la désagréable impression que la finalité de tout ça n’est pas très catholique…

Yes effectivemment.

  • En effet, sur le principe j’approuve tout a fait. Toutefois lorsque j’ai développé mon API, j’utilise des bibliothèques qui me contraigne a utiliser des proxys (notamment via SQUID ou un logiciel semblable).

  • Très bien, je ne comprends pas encore très bien comment fonctionne les gestionnaires de réseaux et notamment sous Debian. Mais je vais essayer de mettre en place la solution de @Clochette ce soir. Merci a vous deux

  • Tout a fait d’accord. Malheureusement le firmware de ma clé ne me permet pas de changer le 192.168.8.0/24 pour le moment. Mais je suis entrain de travailler sur le sujet pour résoudre le problème rapidement

J’avais une problématique d’envoie d’email qui me permet d’envoyer qu’un certains nombre d’emails a mes utilisateurs, notamment par exemple lorsque je souhaites envoyer des emails de promotions a ceux-ci. Cette solution me permet de « bypass » cette contrainte technique, bien que je conçois qu’elle sois peux recommandable et qu’une solution comme Sendiblue serait préférable

Comme l’a souligné @PascalHambourg il est inutile de renseigner pour les deux autres interfaces des passerelles, le routage devra de toute façon s’effectuer avec les règles de routages.

Si c’est en réponse à

je ne vois pas le rapport. Je ne remets pas en question l’utilité de squid mais de le faire écouter sur les adresses IP des clés 4G.
Question : comment comptes-tu indiquer à squid par quelle interface il doit faire passer une connexion sortante donnée ? En spécifiant l’adresses IP source ? Ce serait le critère le plus simple utilisable par le routage avancé.

Il y en a plusieurs qui peuvent être actifs en même temps et qui ont tendance à travailler chacun dans leur coin sans se soucier de ce que font les autres, donc potentiellement en interférant. NetworkManager a le bon goût de ne pas toucher par défaut aux interfaces spécifiées dans /etc/network/interfaces donc censées être gérées par ifupdown (service networking). Cf. man interfaces pour les détails sur ce dernier.

Ça ne devrait pas être bloquant, mais il faudra systématiquement indiquer l’interface de sortie dans les routes par défaut des tables de routage avancé, et pas seulement l’adresse IP du « routeur » ( l’appellation « passerelle » est à éviter).

Bonjour @PascalHambourg

Je reviens vers vous avec de bonne nouvelles, j’ai enfin réussi a avoir une IPV4 pour chaque réseau (toutefois uniquement en configurant mon interface en dhcp, j’ai encore une erreur quand j’essaie de rentrer mes ip avec la manière de @clochette)

Question : comment comptes-tu indiquer à squid par quelle interface il doit faire passer une connexion sortante donnée ? En spécifiant l’adresses IP source ? Ce serait le critère le plus simple utilisable par le routage avancé.

Effectivement j’avais prévu comme sous mon Windows de spécifié l’ip local dans ma config comme ceci.

Toutefois quand je test cette config (qui fonctionne bien avec mon windows). J’obtiens la même adresse IP public en sortie et ça peux importe le proxy testé.

Ce qui est étrange c’est que si je test l’ip de ma machine en allant directement sur mon-ip.fr j’obtiens ceci. (J’ai changé quelques chiffres pour protéger mon ip mais globalement vous comprenais le principe, c’est l’adresse ip public de mon FAI internet, celle de ma box).

92.188.14.23

Si maintenant je test mon proxy avec mon code avec l’ip local « 192.168.8.101:3101 » j’obtiens l’ip :

45.154.594.25

Maintenant si je test mon deuxieme proxy avec mon code avec l’ip local « 192.168.8.102:3102 » j’obtiens l’ip :

45.154.594.25

(Le morceau de code qui me permet de tester le proxy est fonctionnelle, je n’est jamais eut aucun soucis avec celui-ci).

Je jette une pierre dans l’eau. Mais étant donné que mes deux clés 4G sont sur le même réseau (192.168.8.x) est-ce que c’est pour cela que j’obtiens la même adresse ip public ?

voici également ma configuration fonctionnelle sur mon Windows si ca peux aidé

Je cherche dans l’idéal a reproduire le même système sur mon debian

(Je suis limité a un lien je posterais le résultat de mon ipconfig dans le post prochain)

Merci a vous pour votre aide

Le voici :

Configuration IP de Windows Nom de l'h“te . . . . . . . . . . : DESKTOP- - Pastebin.com

Au risque de dire une grosse bêtise, j’ai cru comprendre que windows créer des cartes réseaux virtuelles et que ce n’était pas le cas de debian nativement, cela pourrait expliquer mon problème ?

Bonne soirée a vous

Comment as-tu mis en place le routage avancé basé sur l’adresse IP source ?