настройка netplan на виртуальной машине Ubuntu 17.04

13

Я использую VirtualBox с 2 сетевыми адаптерами: стандартный NAT (enp0s3) и адаптер только для хоста (enp0s8). Я использую NAT для доступа к Интернету и адаптера Host-Only к SSH с моего локального компьютера.

Коробка загружается с обоими адаптерами, оба имеют IP-адреса, все выглядит хорошо.

Ifconfig-вывода

Я могу SSH в эту коробку через адаптер только для хоста, никаких проблем там. Но я не могу войти в интернет с этим. Однако, если я отключу адаптер только для хоста, тогда я смогу получить доступ к Интернету (но, очевидно, я больше не могу подключиться к нему через локальный туннель).

Консоль-выход

И, наконец, вот мой конфиг netplan yaml:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
ethernets:
  enp0s3:
    dhcp4: yes
    dhcp6: yes
  enp0s8:
      dhcp4: no
    dhcp6: no
    addresses: [192.168.52.101/24]
    gateway4: 192.168.52.101

Есть идеи? Кажется, что, возможно, весь мой исходящий трафик как-то проходит через адаптер только для хоста.

Редактировать: прикрепление вывода ip route listв случае, если это помогает.

default via 192.168.52.101 dev enp0s8 proto static
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15
10.0.2.2 dev enp0s3 proto dhcp scope link src 10.0.2.15 metric 100
192.168.52.0/24 dev enp0s8 proto kernel scope link src 192.168.52.101
hellojason
источник
Забудьте об этом, я не мог понять netplan, поэтому вместо этого я отформатировал и установил Ubuntu 16.
hellojason

Ответы:

12

Я обнаружил, что эта проблема делает то же самое сегодня днем. Каким-то образом удалось выяснить это, и netplan наконец создал только 1 маршрут по умолчанию через интерфейс NAT моей виртуальной машины. В моем случае оба IP-адреса были 192.168.56.101 (только для хоста) и 10.0.3.x / 24 (NAT dhcp4). Я использую этот файл netplan:

    network:
      version: 2
      renderer: networkd
      ethernets:
        enp0s8:
          dhcp4: yes
          dhcp6: yes
          routes:
          - to: 0.0.0.0/0
            via: 10.0.3.2
            metric: 0
        enp0s3:
          dhcp4: no
          dhcp6: no
          addresses: [192.168.56.101/24]
          routes:
          - to: 192.168.56.1/24
            via: 192.168.56.1
            metric: 100

При этом у меня есть только один маршрут по умолчанию, и он использует NAT, чтобы он мог подключаться к Интернету через мой хост.

Выход из ip r

default via 10.0.3.2 dev enp0s8 proto dhcp src 10.0.3.15 metric 100
10.0.3.0/24 dev enp0s8 proto kernel scope link src 10.0.3.15
10.0.3.2 dev enp0s8 proto dhcp scope link src 10.0.3.15 metric 100
192.168.56.0/24 dev enp0s3 proto kernel scope link src 192.168.56.10
alfonso.ss
источник
2
Отличный ответ! Вам действительно нужно настроить свою собственную маршрутизацию в этом случае. Если оба устройства включают «шлюз по умолчанию» (т. Е. Они указывают «dhcp4» или «dhcp6», или задают «gateway4»), то система настроит оба устройства со шлюзом по умолчанию с одинаковой метрикой. Однако вам не нужен маршрут на enp0s3, поскольку «адреса» уже содержат ту же подсеть / 24, что и та, которая будет использоваться для доступа к 192.168.56.1. В качестве альтернативы, установите свой собственный маршрут везде, как вы делаете.
Матье Трюдел-Лапьер
12

Для меня удаление gateway4из конфигурации сделало свое дело. С его настройкой я тоже не смог пинговать интернет.

Вот мой конфиг netPlan, если он может помочь другим.

Примечание: enp0s3 для ssh через переадресацию портов и enp0s8 для статического ip

network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
            optional: true
        enp0s8:
            addresses: [192.168.10.20/24]
            dhcp4: no
            dhcp6: no
            nameservers:
              addresses: [8.8.8.8, 8.8.4.4]
    version: 2
Ahsan.Amin
источник
3
Да, удаление линии gateway4 единственное, что у меня сработало.
furman87
Снимите шлюз4, работающий на меня
Альберт Идальго
0

В качестве примечания, пока я боролся с этим и с VMware Fusion ... Если у вас есть какое-либо заданное значение 'gateway4', оно будет считать, что это значение по умолчанию для интерфейса, и, похоже, оно не учитывает параметр 'metric' или наличие нескольких файлов .yaml с последовательностью нумерации (01-netplan.yaml, 02-netplan.yaml и т. д.) в моем случае 02 оказалось «первым значением по умолчанию», но это моя внутренняя сеть, поэтому общедоступный Интернет был недостижим.

Майк Рой
источник
Привет Майк - добро пожаловать в Askubuntu. Это было бы лучше в качестве комментария под вопросом. Вы должны переместить текст туда и просто удалить его, так как он не предназначен для «ответа» на вопрос.
дпб