Рейтинг:2

моя конфигурация моста на freebsd 13 настроена неправильно, потому что любая виртуальная машина bhyve на базе Ubuntu 21.04 и Windows 10 не может подключиться к Интернету

флаг it

Я настроил мост и интерфейс tap на freebsd 13, потому что хочу загрузить и использовать виртуальную машину bhyve на базе Ubuntu 21.04 и Windows 10, но, к сожалению, после нескольких чтений и запросов на помощь:

Реддит: https://www.reddit.com/r/Ubuntu/comments/p38ru1/ubuntu_2104_cant_connect_to_internet_when_it_is/

форумы FreeBSD:

  1. https://forums.freebsd.org/threads/how-to-duplicate-the-tap0-interface-in-a-new-tap1-network-interface-that-it-is-not-used.81671/page- 2#пост-527355

  2. https://forums.freebsd.org/threads/ubuntu-budgie-emulated-with-bhyve-doesnt-connect-to-internet-because-the-error-network-unreachable-n-2.81340/#post-524303

  3. https://forums.freebsd.org/threads/im-tryng-to-emulate-ubuntu-budgie-with-bhyve-but-it-doesnt-connect-to-internet-because-the-error-network-unreachable. 80916/#пост-517845

аскубунту : https://askubuntu.com/questions/1357670/ubuntu-21-04-cant-connect-to-internet-when-it-is-emulated-with-bhyve-on-my-free

обмен стеками Unix: https://unix.stackexchange.com/questions/664466/ubuntu-21-04-cant-connect-to-internet-when-it-is-emulated-with-bhyve-on-my-free?noredirect=1# комментарий1250440_664466

Я не мог понять, почему виртуальная машина Ubuntu и Windows 10 не может подключиться к Интернету, а если я использую vm-bhyve, она настраивает сеть по-другому, и виртуальная машина может подключаться к Интернету. Поскольку я не кодер, я не могу заглянуть внутрь кода vm-bhyve и не могу понять, что такое секретный ключ. Ниже я хочу дать вам полезную информацию для понимания того, как я настроил мост и интерфейс tap во FreeBSD и в Ubuntu.

/etc/resolv.conf

поиск homenet.telecomitalia.it
сервер имен 127.0.0.1
опции edns0

мой /etc/rc.conf такой:

имя хоста = "мариетто"
keymap="it.kbd"
ifconfig_em0="DHCP"
local_unbound_enable="ДА"
sshd_enable="ДА"
powerd_enable="ДА"
ntpdate_enable="ДА"
ntpd_enable="ДА"
ntpd_sync_on_start="ДА"
дампдев = "НЕТ"
dbus_enable="ДА"
slim_enable="НЕТ"
libvirt_enable="ДА"
линукс_включить = "ДА"
linux_mounts_enable="ДА"
шлюз_включить = "ДА"
kld_list="предохранители"
lightdm_enable="НЕТ"
sendmail_enable="НЕТ"
микрокод_update_enable="ДА"
fsck_y_enable="ДА"
tcp_drop_synfin="НЕТ"
телнет_включить = "НЕТ"
cupsd_enable="НЕТ"
portmap_enable="НЕТ"
rlogin_enable = "НЕТ"
inetd_enable="НЕТ"
веб-камера_enable="НЕТ"
самба_включить = "НЕТ"
lpd_enable="НЕТ"
winbindd_enable = "НЕТ"
nfs_server_enable="НЕТ"
nfs_client_enable="НЕТ"
вм_включить = "ДА"
vm_dir="/mnt/da1p1/vms/os/"

мой /boot/loader.conf такой:

vmm_load="ДА"
nmdm_load="ДА"
if_tap_load="ДА"
if_bridge_load="ДА"
fusefs_load="ДА"
linprocfs_load="ДА"
linsysfs_load="ДА"
tmpfs_load="ДА"
verbose_loading="ДА"
vboxdrv_load = "ДА"
консоль=vga,com1
boot_multicons = "ДА"
boot_serial="ДА"
console="comconsole,vidconsole"

мой файл /etc/sysctl.conf выглядит так:

net.link.tap.up_on_open=1
net.inet.ip.forwarding=1

Я прочитал здесь, чтобы получить некоторое представление о том, что делать: https://wiki.freebsd.org/bhyve/UEFI, специально специально в этом разделе:

клдлоад вмм
ifconfig tap0 создать
ifconfig bridge0 создать
ifconfig bridge0 addm em0

В качестве первой попытки, с предложениями Василия Постникова, я попытался настроить сетевые интерфейсы freebsd и linux по-другому, чтобы иметь возможность дать интернет-соединение для ubuntu, эмулируемого с помощью bhyve. Вот что я сделал:

root@marietto:/home/marietto # ifconfig em0 удалить


root@marietto:/home/marietto # dhclient bridge0


DHCPDISCOVER от bridge0 до 255.255.255.255, порт 67, интервал 4
DHCPOFFER от 192.168.1.1
DHCPREQUEST на bridge0 на 255.255.255.255 порт 67
DHCPACK от 192.168.1.1
привязан к 192.168.1.2 -- обновление через 10800 секунд.


root@marietto:/home/marietto # ifconfig tap0 создать

root@marietto:/home/marietto # ifconfig bridge0 addm tap0

root@marietto:/usr/home/marietto # ifconfig


em0: flags=8963<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> метрика 0 mtu 1500
options=4810099<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
эфир e0:d5:5e:e2:1f:22
инет 0.0.0.0 сетевая маска 0xff000000 широковещательная рассылка 255.255.255.255
среда: автоматический выбор Ethernet (1000baseT <полный дуплекс>)
статус: активен
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> метрика 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 префикслен 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
инет 127.0.0.1 сетевая маска 0xff000000
группы: вот
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>


bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> метрика 0 mtu 1500
эфир 58:9c:fc:10:ff:b7
инет 192.168.1.2 сетевая маска 0xffffff00 широковещательный 192.168.1.255
id 00:00:00:00:00:00 приоритет 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 тайм-аут 1200
корневой идентификатор 00:00:00:00:00:00 приоритет 32768 ifcost 0 порт 0
участник: tap0 flags=143<ОБУЧЕНИЕ, ОБНАРУЖЕНИЕ, AUTOEDGE, AUTOPTP>
ifmaxaddr 0 порт 5 приоритет 128 стоимость пути 2000000
член: em0 flags=143<ОБУЧЕНИЕ,ОБНАРУЖЕНИЕ,АВТОКРАМ,АВТОПТР>
ifmaxaddr 0 порт 1 приоритет 128 стоимость пути 2000000
группы: бридж
nd6 options=9<PERFORMNUD,IFDISABLED>


vm-public: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> метрика 0 mtu 1500
эфир b6:74:ff:a8:4d:4e
id 00:00:00:00:00:00 приоритет 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 тайм-аут 1200
корневой идентификатор 00:00:00:00:00:00 приоритет 32768 ifcost 0 порт 0
группы: мост vm-switch viid-4c918@
nd6 options=9<PERFORMNUD,IFDISABLED>



tap0: flags=8903<UP,BROADCAST,PROMISC,SIMPLEX,MULTICAST> метрика 0 mtu 1500
options=80000<СОСТОЯНИЕ ССЫЛКИ>
эфир 58:9c:fc:10:ff:8e
группы: нажмите
СМИ: автоматический выбор Ethernet
статус: нет перевозчика
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

К сожалению, как только виртуальная машина загружается, интерфейс em0 на FreeBSD снова получает старый IP-адрес: 192.168.1.6, и я теряю соединение с сетью на FreeBSD.

В качестве еще одной попытки я сделал следующее: (учтите, что я пытаюсь настроить параллельную сеть на Freebsd, так как я хочу оставить установленным vm-bhyve. Во всяком случае, я удалял vm-bhyve несколько раз и Пытался настроить бридж-сеть для бхайве,но даже в этом случае не получилось.Короче говоря,сработало только с первого раза,но больше повторить успешно шаги не удалось.Работает только если Я позволяю vm-bhyve настроить сеть самостоятельно.Это начальное состояние конфигурации сети/моста на моей FreeBSD с установленным vm-bhyve, но без запуска виртуальной машины.

мариетто@мариетто:~ $ ifconfig

em0: flags=8963<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> метрика 0 mtu 1500
options=481009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
эфир e0:d5:5e:e2:1f:22
инет 192.168.1.6 сетевая маска 0xffffff00 широковещательный 192.168.1.255
среда: автоматический выбор Ethernet (1000baseT <полный дуплекс>)
статус: активен
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> метрика 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 префикслен 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
инет 127.0.0.1 сетевая маска 0xff000000
группы: вот
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

vm-public: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> метрика 0 mtu 1500
эфир 0a:77:93:94:d5:77
id 00:00:00:00:00:00 приоритет 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 тайм-аут 1200
корневой идентификатор 00:00:00:00:00:00 приоритет 32768 ifcost 0 порт 0
член: em0 flags=143<ОБУЧЕНИЕ,ОБНАРУЖЕНИЕ,АВТОКРАМ,АВТОПТР>
       ifmaxaddr 0 порт 1 приоритет 128 стоимость пути 20000
группы: мост vm-switch viid-4c918@
nd6 options=9<PERFORMNUD,IFDISABLED>

Поскольку у меня уже есть мостовой интерфейс (vm-public), нет смысла создавать еще один (bridge0), поэтому на терминале делаю:

root@marietto:/home/marietto # kldload vmm
kldload: не удается загрузить vmm: модуль уже загружен или находится в ядре

root@marietto:/home/marietto # ifconfig tap0 создать

root@marietto:/home/marietto # ifconfig vm-public addm tap0

Итак, вот как выглядит конфигурация сети во FreeBSD после настройки, как указано выше:

root@marietto:/home/marietto # ifconfig

em0: flags=8963<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> метрика 0 mtu 1500
options=4810099<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
эфир e0:d5:5e:e2:1f:22
инет 192.168.1.6 сетевая маска 0xffffff00 широковещательный 192.168.1.255
СМИ: автоматический выбор Ethernet
статус: нет перевозчика
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> метрика 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 префикслен 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
инет 127.0.0.1 сетевая маска 0xff000000
группы: вот
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

vm-public: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> метрика 0 mtu 1500
эфир 0a:77:93:94:d5:77
id 00:00:00:00:00:00 приоритет 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 тайм-аут 1200
корневой идентификатор 00:00:00:00:00:00 приоритет 32768 ifcost 0 порт 0
участник: tap0 flags=143<ОБУЧЕНИЕ, ОБНАРУЖЕНИЕ, AUTOEDGE, AUTOPTP>
       ifmaxaddr 0 порт 4 приоритет 128 стоимость пути 2000000
член: em0 flags=143<ОБУЧЕНИЕ,ОБНАРУЖЕНИЕ,АВТОКРАМ,АВТОПТР>
       ifmaxaddr 0 порт 1 приоритет 128 стоимость пути 20000
группы: мост vm-switch viid-4c918@
nd6 options=9<PERFORMNUD,IFDISABLED>

tap0: flags=8903<UP,BROADCAST,PROMISC,SIMPLEX,MULTICAST> метрика 0 mtu 1500
options=80000<СОСТОЯНИЕ ССЫЛКИ>
эфир 58:9c:fc:10:ff:8e
группы: нажмите
СМИ: автоматический выбор Ethernet
статус: нет перевозчика
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

Затем я запускаю виртуальную машину bhyve с помощью следующих команд:

bhyve -c 4 -m 8G -w -H \
-s 0, хост-мост \
-s 4,virtio-blk,/mnt/da1p1/vms/os/ubuntu-budgie-gpu/ubuntu-2104-gpu.img \
-s 5,virtio-net,tap0 \
-s 29,fbuf,tcp=0.0.0.0:5900,w=1440,h=900,ждать \
-s 30,xhci,планшет \
-s 31,lpc -l com1,stdio \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
-s 20,hda,play=/dev/dsp8,rec=/dev/dsp8 \
vm0

Как я уже сказал, виртуальная машина Ubuntu не может подключиться к Интернету. Ниже я хочу показать вам, как я вместо этого настроил Ubuntu. В Ubuntu мой файл /etc/resolv.conf выглядит так:

сервер имен 127.0.0.53
параметры edns0 траст-объявление
поиск homenet.telecomitalia.it

Кроме того, я создал файл netplan внутри папки /etc/netplan с этим содержимым внутри:

сеть
    версия: 2
    визуализатор: NetworkManager
    Ethernet:
       enp0s5:
           адреса:
                - 192.168.1.7/24
           шлюз4: 192.168.1.1
           серверы имен:
                     поиск: [homenet.telecomitalia.it]
                     адреса: 192.168.1.1

применяется netplan, и вот что происходит:

сетевой интерфейс enp0s5 получает IP-номер 192.168.1.7 пинг 192.168.1.7 : ОК ping 192.168.1.6 (IP-адрес FreeBSD) = целевой хост недоступен ping 192.168.1.1 : хост назначения недоступен PING google.it (172.217.21.67): хост недоступен

tcpdump:

прослушивание на enp0s5,тип канала EN10MB (Ethernet),размер захвата 262144 байт

20:58:04:688913 ARP, запросить у кого есть 192.168.1.1 сообщить 192.168.1.7,длина 28

маршрут -n

флаги генмаски шлюза назначения метрика ref использование iface

0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enp0s5
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s5
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s5

список IP-маршрутов

по умолчанию через 192.168.1.1 dev enp0s5 proto static metric 100
169.254.0.0/16 dev enp0s5 метрика ссылки области 100
192.168.1.0/24 dev enp0s5 ссылка на прото-ядро src 192.168.1.7 метрика 100

ping google.it = временная ошибка в разрешении имени

брандмауэр на ubuntu = не установлен брандмауэр на роутере = выключен

вместо этого с freebsd на ubuntu:

ping 192.168.1.7 : хост недоступен

нетстар -р

таблицы маршрутизации

Интернет:

флаги шлюза назначения Netif Expire

модем по умолчанию UGS em0
ссылка на локальный хост # 2 UH lo0
192.168.1.0/24 ссылка №1 U em0
192.168.1.6 ссылка №1 UHS lo0

Я забыл. Вот что произойдет, если я удалю файл конфигурации netplan и позволю Ubuntu выбрать IP-адрес через DHCP:

/etc/netplan.conf

сеть:
    версия: 2
    визуализатор: сетевой
    Ethernet:
        enp3s0:
            DHCP4: правда

ping PING google.it (172.217.21.67): сеть недоступна. что еще ?

PS: Поскольку я не настоящий системный администратор, но занимаюсь этим как хобби, не давайте мне общих советов, потому что, возможно, я не пойму, что делать.Если вы хотите быть добрым человеком, постарайтесь быть исчерпывающим и точным. Вы очень поможете мне понять, как решить проблему. Благодарю.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.