Como posso configurar a métrica de rota padrão com dhcp e netplan?

4

Meu problema é bem parecido com esta questão . Minha máquina vagante define a métrica de rota padrão incorretamente.

O seguinte é a configuração do 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

e tabela de rotas.

# 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 é a interface NAT e a conexão com a Internet deve usar isso. sudo route del default enp0s8 resolve esse problema, mas adicionar rotas ao yaml não resolveu o problema e tem o limite de gateway fixo.

Qual configuração devo usar para reorganizar as métricas automaticamente?

    
por jeiea 22.02.2018 / 04:56

1 resposta

3

Para sistemas com várias interfaces, somente a interface que deve obter o gateway padrão deve ter "gateway4:" configurado; tendo em mente que o DHCP é bastante provável de configurar o gateway padrão também:

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

Observe que a rota adicional que você definiu normalmente é desnecessária: 192.168.33.0/24 já pode ser acessada, pois ela está diretamente conectada à interface enp0s8 neste caso (quando addresses: já lista a sub-rede). Ter um metric: definido como 0 pode confundir ainda mais o kernel.

Se você precisar da interface com IP estático (nesse caso, enp0s8 para ter o gateway padrão em vez da interface que faz DHCP, você pode definir uma rota com um valor de métrica menor do que 100; para que seja escolhido antes o gateway padrão definido via DHCP por systemd-networkd . Por exemplo:

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
    
por Mathieu Trudel-Lapierre 14.03.2018 / 03:51