Am configurat interfața de conectare și atingere pe freebsd 13 pentru că vreau să pornesc și să folosesc o mașină virtuală bhyve bazată pe Ubuntu 21.04 și Windows 10, dar, din păcate, după mai multe citiri și solicitări de ajutor privind:
reddit: https://www.reddit.com/r/Ubuntu/comments/p38ru1/ubuntu_2104_cant_connect_to_internet_when_it_is/
forumurile freebsd:
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#post-527355
https://forums.freebsd.org/threads/ubuntu-budgie-emulated-with-bhyve-doesnt-connect-to-internet-because-the-error-network-unreachable-n-2.81340/#post-524303
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/#post-517845
askubuntu: https://askubuntu.com/questions/1357670/ubuntu-21-04-cant-connect-to-internet-when-it-is-emulated-with-bhyve-on-my-free
unix stackexchange: https://unix.stackexchange.com/questions/664466/ubuntu-21-04-cant-connect-to-internet-when-it-is-emulated-with-bhyve-on-my-free?noredirect=1# comentariu1250440_664466
Nu am reușit să înțeleg de ce Ubuntu și Windows 10 VM nu se pot conecta la internet, în timp ce, dacă folosesc vm-bhyve, configurează rețeaua într-un mod diferit, iar vm-ul se poate conecta la internet. Deoarece nu sunt un programator, nu pot să mă uit în interiorul codului vm-bhyve și nu pot înțelege care este cheia secretă. Mai jos vreau să vă ofer câteva informații utile pentru a înțelege cum am configurat bridge-ul și interfața tap pe FreeBSD și pe Ubuntu.
/etc/resolv.conf
caută homenet.telecomitalia.it
serverul de nume 127.0.0.1
opțiuni edns0
/etc/rc.conf meu este așa:
hostname="marietto"
keymap="it.kbd"
ifconfig_em0="DHCP"
local_unbound_enable="DA"
sshd_enable="DA"
powerd_enable="DA"
ntpdate_enable="DA"
ntpd_enable="DA"
ntpd_sync_on_start="DA"
dumpdev="NU"
dbus_enable="DA"
slim_enable="NU"
libvirt_enable="DA"
linux_enable="DA"
linux_mounts_enable="DA"
gateway_enable="DA"
kld_list="fusefs"
lightdm_enable="NU"
sendmail_enable="NU"
microcode_update_enable="DA"
fsck_y_enable="DA"
tcp_drop_synfin="NU"
telnet_enable="NU"
cupsd_enable="NU"
portmap_enable="NU"
rlogin_enable="NU"
inetd_enable="NU"
webcamd_enable="NU"
samba_enable="NU"
lpd_enable="NU"
winbindd_enable="NU"
nfs_server_enable="NU"
nfs_client_enable="NU"
vm_enable="DA"
vm_dir="/mnt/da1p1/vms/os/"
/boot/loader.conf meu este așa:
vmm_load="DA"
nmdm_load="DA"
if_tap_load="DA"
if_bridge_load="DA"
fusefs_load="DA"
linprocfs_load="DA"
linsysfs_load="DA"
tmpfs_load="DA"
verbose_loading="DA"
vboxdrv_load="DA"
console=vga,com1
boot_multicons="DA"
boot_serial="DA"
console="comconsole,vidconsole"
fișierul meu /etc/sysctl.conf este așa:
net.link.tap.up_on_open=1
net.inet.ip.forwarding=1
Am citit aici pentru a obține o orientare despre ce să fac: https://wiki.freebsd.org/bhyve/UEFI, în special in special in aceasta sectiune:
kldload vmm
ifconfig tap0 create up
ifconfig bridge0 create up
ifconfig bridge0 addm em0
Ca o primă încercare, cu sugestiile lui Vasily Postnicov, am încercat să configurez interfețele de rețea ale freebsd și ale linux într-un mod diferit, pentru a putea da conexiunea la internet la ubuntu emulată cu bhyve. Asta am facut:
root@marietto:/home/marietto # ifconfig em0 delete
root@marietto:/home/marietto # dhclient bridge0
DHCPDISCOVER pe bridge0 la 255.255.255.255 portul 67 intervalul 4
DHCPOFFER de la 192.168.1.1
DHCPREQUEST pe bridge0 la 255.255.255.255 portul 67
DHCPACK de la 192.168.1.1
legat la 192.168.1.2 -- reînnoire în 10800 de secunde.
root@marietto:/home/marietto # ifconfig tap0 create up
root@marietto:/home/marietto # ifconfig bridge0 addm tap0
root@marietto:/usr/home/marietto # ifconfig
em0: flags=8963<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metrica 0 mtu 1500
options=4810099<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
eter e0:d5:5e:e2:1f:22
inet 0.0.0.0 netmask 0xff000000 difuzare 255.255.255.255
media: selecție automată Ethernet (1000baseT <full-duplex>)
stare: activ
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metrica 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
grupuri: uite
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metrica 0 mtu 1500
eter 58:9c:fc:10:ff:b7
inet 192.168.1.2 netmask 0xffffff00 difuzat 192.168.1.255
id 00:00:00:00:00:00 prioritate 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
ID rădăcină 00:00:00:00:00:00 prioritate 32768 ifcost 0 portul 0
membru: tap0 flags=143<LEARNING, DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 5 prioritate 128 calea cost 2000000
membru: em0 flags=143<LEARNING, DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 1 prioritate 128 calea cost 2000000
grupe: pod
nd6 options=9<PERFORMNUD,IFDISABLED>
vm-public: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metrica 0 mtu 1500
eter b6:74:ff:a8:4d:4e
id 00:00:00:00:00:00 prioritate 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
ID rădăcină 00:00:00:00:00:00 prioritate 32768 ifcost 0 portul 0
grupuri: bridge vm-switch viid-4c918@
nd6 options=9<PERFORMNUD,IFDISABLED>
tap0: flags=8903<UP,BROADCAST,PROMISC,SIMPLEX,MULTICAST> metrica 0 mtu 1500
options=80000<LINKSTATE>
eter 58:9c:fc:10:ff:8e
grupuri: atingeți
media: autoselectare Ethernet
stare: fără transportator
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
Din păcate, de îndată ce vm-ul pornește, interfața em0 de pe freebsd primește din nou vechiul număr IP: 192.168.1.6 și pierd conexiunea la net pe FreeBSD.
Ca o încercare ulterioară, iată ce am făcut: (luați în considerare că încerc să fac o configurație de rețea paralelă pe Freebsd, deoarece vreau să păstrez vm-bhyve instalat. Oricum, am eliminat vm-bhyve de mai multe ori și Am incercat sa configurez reteaua bridge pentru bhyve,dar nici in acest caz nu a mers.Pe scurt,a functionat doar prima data,dar nu am mai reusit sa repet pasii cu succes.Functioneaza doar daca L-am lăsat pe vm-bhyve să configureze rețeaua de la sine.Aceasta este starea inițială a configurației rețelei / pod pe FreeBSD-ul meu cu vm-bhyve instalat, dar fără a porni o mașină virtuală.
marietto@marietto:~ $ ifconfig
em0: flags=8963<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metrica 0 mtu 1500
opțiuni=481009b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
eter e0:d5:5e:e2:1f:22
inet 192.168.1.6 netmask 0xffffff00 difuzat 192.168.1.255
media: selecție automată Ethernet (1000baseT <full-duplex>)
stare: activ
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metrica 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
grupuri: uite
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
vm-public: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metrica 0 mtu 1500
eter 0a:77:93:94:d5:77
id 00:00:00:00:00:00 prioritate 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
ID rădăcină 00:00:00:00:00:00 prioritate 32768 ifcost 0 portul 0
membru: em0 flags=143<LEARNING, DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 1 prioritate 128 calea cost 20000
grupuri: bridge vm-switch viid-4c918@
nd6 options=9<PERFORMNUD,IFDISABLED>
Deoarece am deja o interfață cu punte (vm-public) nu are sens să creez alta (bridge0), așa că pe terminal fac:
root@marietto:/home/marietto # kldload vmm
kldload: nu se poate încărca vmm: modul deja încărcat sau în kernel
root@marietto:/home/marietto # ifconfig tap0 create up
root@marietto:/home/marietto # ifconfig vm-public addm tap0
deci, așa apare configurația rețelei pe FreeBSD după ce ați configurat-o ca mai sus:
root@marietto:/home/marietto # ifconfig
em0: flags=8963<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metrica 0 mtu 1500
options=4810099<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER,NOMAP>
eter e0:d5:5e:e2:1f:22
inet 192.168.1.6 netmask 0xffffff00 difuzat 192.168.1.255
media: autoselectare Ethernet
stare: fără transportator
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metrica 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
grupuri: uite
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
vm-public: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metrica 0 mtu 1500
eter 0a:77:93:94:d5:77
id 00:00:00:00:00:00 prioritate 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
ID rădăcină 00:00:00:00:00:00 prioritate 32768 ifcost 0 portul 0
membru: tap0 flags=143<LEARNING, DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 4 priority 128 path cost 2000000
membru: em0 flags=143<LEARNING, DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 1 prioritate 128 calea cost 20000
grupuri: bridge vm-switch viid-4c918@
nd6 options=9<PERFORMNUD,IFDISABLED>
tap0: flags=8903<UP,BROADCAST,PROMISC,SIMPLEX,MULTICAST> metrica 0 mtu 1500
options=80000<LINKSTATE>
eter 58:9c:fc:10:ff:8e
grupuri: atingeți
media: autoselectare Ethernet
stare: fără transportator
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
Apoi, lansez VM bhyve cu aceste comenzi:
bhyve -c 4 -m 8G -w -H \
-s 0,hostbridge \
-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, așteptați \
-s 30,xhci,tabletă \
-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
După cum am spus, Ubuntu VM nu se poate conecta la internet. Mai jos vreau să vă arăt cum am configurat Ubuntu. Pe Ubuntu fișierul meu /etc/resolv.conf este așa:
serverul de nume 127.0.0.53
opțiuni edns0 trust-ad
caută homenet.telecomitalia.it
În plus, am creat un fișier netplan în folderul /etc/netplan, cu acest conținut în interior:
reţea
versiunea: 2
redator: NetworkManager
ethernet:
enp0s5:
adrese:
- 192.168.1.7/24
gateway4: 192.168.1.1
servere de nume:
căutare: [homenet.telecomitalia.it]
adrese: 192.168.1.1
netplan se aplică și iată ce se întâmplă:
interfața de rețea enp0s5 primește numărul IP 192.168.1.7
ping 192.168.1.7 : OK
ping 192.168.1.6 (IP FreeBSD) = gazdă destinație inaccesabilă
ping 192.168.1.1: gazda destinație inaccesibilă
PING google.it (172.217.21.67): gazda inaccesibilă
tcpdump:
ascultare pe enp0s5, link-type EN10MB (Ethernet), dimensiunea capturii 262144 bytes
20:58:04:688913 ARP, cere cine-are 192.168.1.1 spune 192.168.1.7, lungime 28
traseul -n
gateway destinație genmask steaguri metric ref folosește 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
lista de rute ip
implicit prin 192.168.1.1 dev enp0s5 proto metric static 100
169.254.0.0/16 dev enp0s5 scope link metric 100
192.168.1.0/24 dev enp0s5 proto kernel scope link src 192.168.1.7 metric 100
ping google.it = eroare temporară în rezoluția numelui
firewall pe ubuntu = nu este instalat
firewall pe router = jos
în schimb, de la freebsd la ubuntu:
ping 192.168.1.7: gazda este oprită
netstar -r
tabele de rutare
Internet:
gateway-ul de destinație semnalează Netif Expire
modemtim implicit UGS em0
localhost link#2 UH lo0
192.168.1.0/24 link#1 U em0
192.168.1.6 link#1 UHS lo0
Am uitat. Iată ce se întâmplă dacă elimin fișierul netplan conf și las ubuntu să aleagă IP-ul prin DHCP:
/etc/netplan.conf
reţea:
versiunea: 2
redator: în rețea
ethernet:
enp3s0:
dhcp4: adevărat
ping PING google.it (172.217.21.67): rețea inaccesabilă. ce altceva ?
PS: Deoarece nu sunt un administrator de sistem adevărat, dar o fac ca un hobby, nu-mi da sugestii generice pentru că probabil nu voi înțelege ce să fac.Dacă vrei să fii o persoană bună, încearcă să fii exhaustiv și precis. Mă vei ajuta foarte mult să înțeleg cum să rezolv problema. Mulțumiri.