web-dev-qa-db-fra.com

Comment configurer la métrique de route par défaut avec dhcp et netplan?

Mon problème est assez similaire à cette question . Ma machine vagabonde ne configure pas correctement la métrique de route par défaut.

Voici la configuration de netplan.

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: true
      match:
        macaddress: 02:70:4e:c8:68:e9
    enp0s8:
      dhcp4: false
      addresses: [192.168.33.10/24]
      gateway4: 192.168.33.1
      routes:
        - to: 192.168.33.0/24
          via: 192.168.33.1
          metric: 0

Et table de route.

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.33.1    0.0.0.0         UG    0      0        0 enp0s8
0.0.0.0         10.0.2.2        0.0.0.0         UG    100    0        0 enp0s3
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 enp0s3
10.0.2.2        0.0.0.0         255.255.255.255 UH    100    0        0 enp0s3
192.168.33.0    0.0.0.0         255.255.255.0   U     0      0        0 enp0s8
192.168.33.0    192.168.33.1    255.255.255.0   UG    0      0        0 enp0s8

enp0s3 est NAT interface et la connexion Internet doit l'utiliser. Sudo route del default enp0s8 résout ce problème, mais l'ajout d'itinéraires à yaml n'a pas permis de résoudre le problème et a la limite d'une passerelle fixe.

Quelle configuration dois-je utiliser pour réorganiser les métriques automatiquement?

4
jeiea

Pour les systèmes dotés de plusieurs interfaces, seule l'interface devant obtenir la passerelle par défaut doit avoir "gateway4:" défini; en gardant à l'esprit qu'il est fort probable que DHCP définisse également la passerelle par défaut:

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: true
      match:
        macaddress: 02:70:4e:c8:68:e9
    enp0s8:
      dhcp4: false
      addresses: [192.168.33.10/24]

Notez que la route supplémentaire que vous avez définie est généralement inutile: 192.168.33.0/24 est déjà accessible, car elle est directement connectée à l'interface enp0s8 dans ce cas (lorsque addresses: répertorie déjà le sous-réseau). Le fait de définir metric: sur 0 peut encore perturber le noyau.

Si vous avez besoin d'une interface avec une adresse IP statique (dans ce cas, enp0s8 doit disposer de la passerelle par défaut au lieu de l'interface utilisant DHCP, vous pouvez définir une route avec une valeur métrique inférieure à 100; est choisi avant la passerelle par défaut définie via DHCP par systemd-networkd . Par exemple:

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: true
      match:
        macaddress: 02:70:4e:c8:68:e9
    enp0s8:
      dhcp4: false
      addresses: [192.168.33.10/24]
      routes:
        - to: 0.0.0.0/0
          via: 192.168.33.1
          metric: 50