KVM + netplan: отключить шлюзы по умолчанию DHCP на гостевой машине с несколькими сетевыми картами (cloud-init/netplan)

Я хотел бы настроить очень "простую" конфигурацию в гостевом Ubuntu Server 18.04 LTS под KVM:

  • сетевой интерфейс NIC, управляемый DHCP, способный получать некоторые статические правила маршрутизации от DHCP и некоторое локальное разрешение DNS в "локальном" домене

  • исходящий доступ NAT к Интернету через другой интерфейс, управляемый через DHCP, с открытым разрешением DNS

На хосте (Ubuntu Desktop) в KVM я определил две сети, обе из которых включены для DHCP:

  • "по умолчанию" как NAT
  • "public1" как маршрутизированный

На хосте доступ в Интернет настроен с помощью NetworkManager для подключения к Wi-Fi.

В гостевой системе я определил два сетевых адаптера, которые обрабатываются DHCP в обеих сетях.

При такой настройке гостевая ОС получает два шлюза"по умолчанию" с неоднозначностью маршрутизации, которая вызывает проблемы с подключением к Интернету.

# at guest
route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.122.1   0.0.0.0         UG    100    0        0 ens5
0.0.0.0         192.168.200.1   0.0.0.0         UG    100    0        0 ens4
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 ens5
192.168.122.1   0.0.0.0         255.255.255.255 UH    100    0        0 ens5
192.168.200.0   0.0.0.0         255.255.255.0   U     0      0        0 ens4
192.168.200.1   0.0.0.0         255.255.255.255 UH    100    0        0 ens4


На хосте конфигурация сети KVM:

<network>
  <name>default</name>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

<network>
  <name>public1</name>
  <forward mode='route'/>
  <bridge name='virbr2' stp='on' delay='0'/>
  <domain name='pub.local.net'/>
  <ip address='192.168.200.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.200.128' end='192.168.200.254'/>
    </dhcp>
  </ip>
  <route address='192.168.210.0' prefix='24' gateway='192.168.200.1' metric='3040'/>
</network>

в гостевой системе настроены значения по умолчанию "cloud-init", генерирующие конфигурацию netplan:

в /etc/netplan/50-cloud-init.yaml

# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        ens4:
            dhcp4: true
        ens5:
            dhcp4: true
    version: 2

Чтобы разрешить неоднозначность шлюза по умолчанию, я попытался вызвать определение метрики шлюза в гостевой системе, но безуспешно:

#/etc/netplan/99-config.yaml

network:
   version: 2
   ethernets:
#        ens4:
#            dhcp4: true
        ens5:
            dhcp4: true
#            dhcp4-overrides:
#                route-metric: 90
            routes:
                - to: 0.0.0.0/0
                  via: 192.168.122.1
                  metric: 90

0 ответов

Другие вопросы по тегам