Multiple IPV4 avec plusieurs Interfaces réseaux

Tags: #<Tag:0x00007f50a2277c80> #<Tag:0x00007f50a2277b18> #<Tag:0x00007f50a2277938>

Uniquement avec ma configuration squid

# Squid normally listens to port 3128
http_port 192.168.5.57:3128 name=3128
http_port 192.168.8.100:3129 name=3129
 
acl tasty3128 myportname 3128 src 192.168.0.0/24
http_access allow tasty3128
tcp_outgoing_address 192.168.5.57 tasty3128
 
acl tasty3129 myportname 3129 src 192.168.0.0/24
http_access allow tasty3129
tcp_outgoing_address 192.168.8.100 tasty3129

Ce n’est pas suffisant. Ce n’est pas du routage avancé, seulement le préalable.

Je vois, effectivement j’étais tombé sur ce post forum.

Mais étant débutant en réseau je n’avais pas essayé de l’adapter a mon problème par peur de cassé l’existant.

Poste la sortie de

ip -4 addr
ip -4 route
ip -4 rule

La voici

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    altname enp0s25
    inet 192.168.5.62/24 brd 192.168.5.255 scope global dynamic noprefixroute eno1
       valid_lft 85065sec preferred_lft 85065sec
9: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    inet 192.168.8.110/24 brd 192.168.8.255 scope global dynamic eth1
       valid_lft 86342sec preferred_lft 86342sec
default via 192.168.8.1 dev eth1
default via 192.168.5.1 dev eno1 proto dhcp metric 101
192.168.5.0/24 dev eno1 proto kernel scope link src 192.168.5.62 metric 101
192.168.8.0/24 dev eth1 proto kernel scope link src 192.168.8.110
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

Je ne vois qu’une seule connexion 4G et elle a une route par défaut, ce qu’il faut éviter.
Pour commencer, connecter et configurer toutes les clés 4G sans passerelle par défaut, en statique s’il le faut. Quand ce sera bon, remets la sortie des deux premières commandes.

J’en profite poste le contenu de : /etc/network/interfaces

Re !
Tout d’abord @Clochette voici mon interface après l’avoir reconfigurer

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback


allow-hotplug eno1
        iface eno inet static
        address 192.168.5.62
        netmask 255.255.255.0
	gateway 192.168.5.254

allow-hotplug enx001e101f0000
        iface enx001e101f0000 inet static
        address 192.168.8.101
        netmask 255.255.255.0

allow-hotplug eth1
        iface eth1 inet static
        address 192.68.8.102
        netmask 255.255.255.0

@PascalHambourg J’ai également changer ma route par défaut. Voici ce que ca donne en sortie avec les deux commandes :

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    altname enp0s25
    inet 192.168.5.62/24 brd 192.168.5.255 scope global dynamic noprefixroute eno1
       valid_lft 84672sec preferred_lft 84672sec
9: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    inet 192.68.8.102/24 brd 192.68.8.255 scope global eth1
       valid_lft forever preferred_lft forever
11: enx001e101f0000: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.8.101/24 brd 192.168.8.255 scope global enx001e101f0000
       valid_lft forever preferred_lft forever
default via 192.168.5.62 dev eno1
default via 192.168.5.1 dev eno1 proto dhcp metric 101
192.68.8.0/24 dev eth1 proto kernel scope link src 192.68.8.102
192.168.5.0/24 dev eno1 proto kernel scope link src 192.168.5.62 metric 101
192.168.8.0/24 dev enx001e101f0000 proto kernel scope link src 192.168.8.101

Merci pour votre aide

Faute de frappe sur le nom de l’interface → eno1 n’est pas configurée en statique par /etc/network/interface mais en DHCP par autre chose, peut-être NetworkManager. Pas grave, le routage avancé ne concerne pas cette interface.

Cette route par défaut n’a pas lieu d’être, je voudrais bien savoir comment elle est arrivée là.
Au moins la route par défaut sur eth1 a disparu.

Pour le routage avancé basé sur l’adresse source, il va te falloir à peu près ça :

ip rule add to 192.168.5.0/24 table main priority 32000
ip rule add from 192.168.8.101 table 101 priority 32001
ip route add default via 192.168.8.1 dev enx001e101f0000 table 101
ip rule add from 192.168.8.102 table 102 priority 32002
ip route add default via 192.168.8.1 dev eth1 table 102

Les deux routes par défaut ne peuvent être créées que si les interfaces concernées sont actives.

Bonsoir @PascalHambourg

Effectivement, j’ai corrigé cette erreur de frappe.

Je suis confronté a plusieurs problèmes.

Le premier est que mes « réseaux » sautent régulièrement, je suis obligé de refaire les commandes :

sudo systecmctl restart networking.service

Puis « ifup » chacune de mes cartes pour les revoir apparaitre avec la commande ip a
En sois très peu problématique pour le moment mais a terme ca risque de le devenir.

J’avais pensais que c’était une bonne idée pour remplacer la route par défaut. Mes excuses.

Egalement lorsque j’essaie d’appliquer les commandes que vous m’avez transmises j’ai cette erreur

image

Est-ce-que je dois remplacer le 192.168.5.0/24 par 191.168.5.62/24 ?

Merci a vous

Pas de copie d’écran sous forme d’image SVP, seulement en texte brut.

C’est-à-dire ? Comment cela se manifeste-t-il concrètement ? Qu’affichent les commandes ip addr et ip route ?

Qu’est-ce qui était une bonne idée ?

La commande n’aurait pas déjà été exécutée ? Vérifier si la règle est présente avec « ip rule ».

Non, ce n’est pas un préfixe valide et ça n’aurait aucun sens de faire du routage avancé pour une adresse de destination (to) locale puisque la table de routage « local » qui traite les adresses locales est prioritaire (règle 0). Le but est de router le préfixe du réseau local (de la box) selon la table de routage normale indépendamment de l’adresse source.

Lorsque je fais un ip -a il me reste plus que la ligne avec mon réseau « eno1 ». Je penserais a vous mettre en copie la prochaine fois les deux commandes.

J’avais changé la route par défaut

default via 192.168.5.62 dev eno1
root@debian:/home/debian#  ip rule
0:      from all lookup local
32000:  from all to 192.168.5.0/24 lookup main
32001:  from 192.168.8.101 lookup 101
32002:  from 192.168.8.102 lookup 102
32766:  from all lookup main
32767:  from all lookup default

Effectivement la route est déjà pris en compte. Excuse-moi, je vais voir pour excuter les commandes suivante.

Merci

Ça n’a pas de sens de se définir comme son propre routeur. La route par défaut signifie « je ne sais pas comment router ce paquet, alors je l’envoie à ce routeur »

La règle (rule). Et les deux autres règles le sont déjà aussi. Tu peux vérifier les deux tables de routage avec

ip route show table 101
ip route show table 102

Bonsoir @PascalHambourg

Très bien merci pour ton aide, j’arrive a mieux comprendre même si il reste quelques zones flou.

Toutefois pourquoi la commande

ip route show table 102

ne renvois rien ?

Merci a toi
Gigolito

Ça veut dire que la commande

ip route add default via 192.168.8.1 dev eth1 table 102

n’a pas été exécutée ou bien l’interface eth1 a été désactivée entretemps, ce qui a supprimé la route. Il faut la recréer avec la commande ci-dessus.

Il se passe des choses vraiment étrange :

1-

J’ai aucun accès internet

root@debian:~# ping google.fr
PING google.fr (142.250.179.67) 56(84) bytes of data.
From debian (192.168.5.62) icmp_seq=1 Destination Host Unreachable
From debian (192.168.5.62) icmp_seq=2 Destination Host Unreachable
From debian (192.168.5.62) icmp_seq=3 Destination Host Unreachable
^X^X^C
--- google.fr ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5453ms

2-

J’ai rallumé ma machine tout a l’heure (sans débrancher aucune carte).
Ce qui explique l’interface eth1 désactivé et la suppression de la route
L’interface eth1 est passé en eth0 et donc l’adresse IP a était set sur .109

Peut-on empêcher une interface a faire ce genre de chose ?

ip a

root@debian:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 4c:72:b9:66:ac:19 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet 192.168.5.62/24 brd 192.168.5.255 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::4e72:b9ff:fe66:ac19/64 scope link
       valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 00:1e:10:1f:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.109/24 brd 192.168.8.255 scope global dynamic noprefixroute eth0
       valid_lft 74244sec preferred_lft 74244sec
    inet6 fe80::21e:10ff:fe1f:0/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: enx001e101f0000: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 00:1e:10:1f:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.101/24 brd 192.168.8.255 scope global enx001e101f0000
       valid_lft forever preferred_lft forever
    inet6 fe80::21e:10ff:fe1f:0/64 scope link
       valid_lft forever preferred_lft forever

Route :

root@debian:~# ip -4 route
default via 192.168.5.254 dev eno1 onlink
default via 192.168.8.1 dev eth0 proto dhcp metric 100
192.168.5.0/24 dev eno1 proto kernel scope link src 192.168.5.62
192.168.8.0/24 dev enx001e101f0000 proto kernel scope link src 192.168.8.101
192.168.8.0/24 dev eth0 proto kernel scope link src 192.168.8.109 metric 100

Merci a toi

Il faut lui attribuer un nom persistant avec une règle udev /etc/udev/rules.d/.rules (cf. man udev) ou un fichier /etc/systemd/network/.link (cf. man systemd.link) car les noms eth* attribués par le noyau ne sont pas persistants. Normalement systemd-udev attribue par défaut des noms « prévisibles », comme on peut le voir avec eno1 (basé sur les informations du firmware de la carte mère) et enx001e101f0000 (basé sur l’adresse MAC car c’est un périphérique USB). Mais le problème ici est que les deux clés 4G ont la même adresse MAC donc auraient le même nom prévisible, ce qui explique pourquoi une des deux n’a pas pu être renommée par la politique par défaut et a gardé son nom d’origine en eth*.

Bref, il va falloir trouver un critère pour les différencier utilisable par udev ou systemd.link dans les informations affichées par

udevadm info /sys/class/net/eth* /sys/class/net/enx*

Peut-être un numéro de série (serial), ou à défaut le chemin (path) mais qui dépend du port USB sur lequel la clé est branchée.

1 J'aime

Merci effectivement je penses que ca serait pas mal, je vais me créer un petit Excel car a l’avenir je serais surement amener et a rajouter d’autres clés 4G. Merci beaucoup pour les explications et les conseils, ils vont mettre d’une grande utilité.

Auriez-vous une piste pour la résolution du problème internet ?

Bonne soirée

Gigolito

Si tu postes la sortie de la commande udevadm que j’ai indiquée, je pourrai l’analyser pour voir ce qui est utilisable.

D’après un message précédent, l’adresse IP du routeur par défaut obtenue par DHCP (la box je suppose) est 192.168.5.1 :

mais il semble que tu as défini 192.168.5.254 comme routeur par défaut pour la configuration statique de eno1 dans /etc/network/interfaces :

A vérifier.

Bonjour @PascalHambourg

Voici le résultat de la commande :

root@debian:/home/debian# udevadm info /sys/class/net/eth* /sys/class/net/enx*
P: /devices/pci0000:00/0000:00:01.1/0000:02:00.0/usb2/2-1/2-1:1.0/net/eth0
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:01.1/0000:02:00.0/usb2/2-1/2-1:1.0/net/eth0
E: INTERFACE=eth0
E: IFINDEX=3
E: SUBSYSTEM=net
E: ID_RENAMING=1

P: /devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.5/3-1.5:1.0/net/enx001e101f0000
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.5/3-1.5:1.0/net/enx001e101f0000
E: INTERFACE=enx001e101f0000
E: IFINDEX=4
E: SUBSYSTEM=net
E: USEC_INITIALIZED=3831030
E: ID_NET_NAMING_SCHEME=v247
E: ID_NET_NAME_MAC=enx001e101f0000
E: ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
E: ID_NET_NAME_PATH=enp0s29u1u5
E: ID_VENDOR=HUAWEI_MOBILE
E: ID_VENDOR_ENC=HUAWEI_MOBILE
E: ID_VENDOR_ID=12d1
E: ID_MODEL=HUAWEI_MOBILE
E: ID_MODEL_ENC=HUAWEI_MOBILE
E: ID_MODEL_ID=14db
E: ID_REVISION=0102
E: ID_SERIAL=HUAWEI_MOBILE_HUAWEI_MOBILE
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:020600:0a0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=cdc_ether
E: ID_USB_CLASS_FROM_DATABASE=Communications
E: ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd.
E: ID_MODEL_FROM_DATABASE=E353/E3131
E: ID_MM_HUAWEI_NDISDUP_SUPPORTED=1
E: ID_MM_CANDIDATE=1
E: ID_PATH=pci-0000:00:1d.0-usb-0:1.5:1.0
E: ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_5_1_0
E: ID_NET_DRIVER=cdc_ether
E: ID_NET_LINK_FILE=/usr/lib/systemd/network/73-usb-net-by-mac.link
E: ID_NET_NAME=enx001e101f0000
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enx001e101f0000
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:

Effectivement en changeant la gateway j’ai bien accès a internet.

J’ai pu donc tester mon proxy :

root@debian:/home/debian/Bureau/DongleTest-master# node test.mjs
{ ip: '92.141.40.48' }

(Qui correspond bien a l’ip de ma box internet (j’ai changé quelques chiffres avant de poster le résultat)) :champagne: :champagne:

Maintenant lorsque je veux tester ma première clé 4G (192.168.8.101) que j’ai configurer de la même manière dans SQUID que mon ip 192.168.5.62. J’obtiens une erreur 503 :

root@debian:/home/debian/Bureau/DongleTest-master# node test.mjs
Bad response: 503 RequestError: Bad response: 503
    at ClientRequest.<anonymous> (file:///home/debian/Bureau/DongleTest-master/node_modules/got/dist/source/core/index.js:789:107)
    at Object.onceWrapper (node:events:628:26)
    at ClientRequest.emit (node:events:525:35)
    at _destroy (node:_http_client:874:13)
    at onSocketNT (node:_http_client:891:5)
    at processTicksAndRejections (node:internal/process/task_queues:84:21)
    at ClientRequest.<anonymous> (/home/debian/Bureau/DongleTest-master/node_modules/hpagent/index.js:106:18)
    at Object.onceWrapper (node:events:628:26)
    at ClientRequest.emit (node:events:513:28)
    at Socket.socketOnData (node:_http_client:574:11)
    at Socket.emit (node:events:513:28)
    at addChunk (node:internal/streams/readable:315:12)
    at readableAddChunk (node:internal/streams/readable:289:9)
    at Socket.Readable.push (node:internal/streams/readable:228:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
  input: undefined,
  code: 'ERR_GOT_REQUEST_ERROR',
  timings: {
    start: 1673080723913,
    socket: undefined,
    lookup: undefined,
    connect: undefined,
    secureConnect: undefined,
    upload: undefined,
    response: undefined,
    end: undefined,
    error: 1673080903870,
    abort: undefined,
    phases: {
      wait: undefined,
      dns: undefined,
      tcp: undefined,
      tls: undefined,
      request: undefined,
      firstByte: undefined,
      download: undefined,
      total: 179957
    }
  },
  options: {
    request: undefined,
    agent: {
      http: undefined,
      https: HttpsProxyAgent {
        _events: [Object: null prototype],
        _eventsCount: 2,
        _maxListeners: undefined,
        defaultPort: 443,
        protocol: 'https:',
        options: [Object: null prototype],
        requests: [Object: null prototype] {},
        sockets: [Object: null prototype],
        freeSockets: [Object: null prototype] {},
        keepAliveMsecs: 1000,
        keepAlive: true,
        maxSockets: 256,
        maxFreeSockets: 256,
        scheduling: 'lifo',
        maxTotalSockets: Infinity,
        totalSocketCount: 0,
        maxCachedSessions: 100,
        _sessionCache: [Object],
        proxy: [URL],
        proxyRequestOptions: {},
        [Symbol(kCapture)]: false
      },
      http2: undefined
    },
    h2session: undefined,
    decompress: true,
    timeout: {
      connect: undefined,
      lookup: undefined,
      read: undefined,
      request: undefined,
      response: undefined,
      secureConnect: undefined,
      send: undefined,
      socket: undefined
    },
    prefixUrl: '',
    body: undefined,
    form: undefined,
    json: undefined,
    cookieJar: undefined,
    ignoreInvalidCookies: false,
    searchParams: undefined,
    dnsLookup: undefined,
    dnsCache: undefined,
    context: {},
    hooks: {
      init: [],
      beforeRequest: [],
      beforeError: [],
      beforeRedirect: [],
      beforeRetry: [],
      afterResponse: []
    },
    followRedirect: true,
    maxRedirects: 10,
    cache: undefined,
    throwHttpErrors: true,
    username: '',
    password: '',
    http2: false,
    allowGetBody: false,
    headers: {
      'user-agent': 'got (https://github.com/sindresorhus/got)',
      accept: 'application/json',
      'accept-encoding': 'gzip, deflate, br'
    },
    methodRewriting: false,
    dnsLookupIpVersion: undefined,
    parseJson: [Function: parse],
    stringifyJson: [Function: stringify],
    retry: {
      limit: 2,
      methods: [ 'GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE' ],
      statusCodes: [
        408, 413, 429, 500,
        502, 503, 504, 521,
        522, 524
      ],
      errorCodes: [
        'ETIMEDOUT',
        'ECONNRESET',
        'EADDRINUSE',
        'ECONNREFUSED',
        'EPIPE',
        'ENOTFOUND',
        'ENETUNREACH',
        'EAI_AGAIN'
      ],
      maxRetryAfter: undefined,
      calculateDelay: [Function: calculateDelay],
      backoffLimit: Infinity,
      noise: 100
    },
    localAddress: undefined,
    method: 'GET',
    createConnection: undefined,
    cacheOptions: {
      shared: undefined,
      cacheHeuristic: undefined,
      immutableMinTimeToLive: undefined,
      ignoreCargoCult: undefined
    },
    https: {
      alpnProtocols: undefined,
      rejectUnauthorized: undefined,
      checkServerIdentity: undefined,
      certificateAuthority: undefined,
      key: undefined,
      certificate: undefined,
      passphrase: undefined,
      pfx: undefined,
      ciphers: undefined,
      honorCipherOrder: undefined,
      minVersion: undefined,
      maxVersion: undefined,
      signatureAlgorithms: undefined,
      tlsSessionLifetime: undefined,
      dhparam: undefined,
      ecdhCurve: undefined,
      certificateRevocationLists: undefined
    },
    encoding: undefined,
    resolveBodyOnly: false,
    isStream: false,
    responseType: 'text',
    url: URL {
      href: 'https://api.ipify.org/?format=json',
      origin: 'https://api.ipify.org',
      protocol: 'https:',
      username: '',
      password: '',
      host: 'api.ipify.org',
      hostname: 'api.ipify.org',
      port: '',
      pathname: '/',
      search: '?format=json',
      searchParams: URLSearchParams { 'format' => 'json' },
      hash: ''
    },
    pagination: {
      transform: [Function: transform],
      paginate: [Function: paginate],
      filter: [Function: filter],
      shouldContinue: [Function: shouldContinue],
      countLimit: Infinity,
      backoff: 0,
      requestLimit: 10000,
      stackAllItems: false
    },
    setHost: true,
    maxHeaderSize: undefined,
    signal: undefined,
    enableUnixSockets: true
  }
}

Merci a toi