FreeBSD装bhyve Ubuntu子系统,外网不通,子系统里无法ping通外面(未解决)

FreeBSD装bhyve Ubuntu子系统,子系统里无法ping通外面,除了宿主机,其它ip都ping不通。

比如Ubuntu子系统设为192.168.1.22 ,宿主系统是192.168.1.250, 网段里还有192.168.1.1 192.168.1.2 192.168.1.5等设备,但是除了能ping通1.250,其它都ping不通。

而且ping通1.250延时也要3-5ms,速度慢这一点跟以前的一台系统问题一样。

ping 192.168.1.1

from 192.168.1.13 Destination Host Unreachable

freebsd bhyve ping from 192.168.1.13 Destination Host Unreachable

尝试解决问题

先比较两台系统的rc.conf文件,发现新系统里有一句重复的

kld_list="nvidia-modeset vmm if_tuntap if_bridge nmdm"
kld_list="vmm if_tuntap if_bridge nmdm"

正好也已经把Nvidia显卡直通给去掉了,所以把上面那句注释掉,重启系统。

另外发现可以不用pf,所以把pf_enable="YES"也注释掉。

修改后问题照旧。手工关闭pf: service pf onestop ,关闭之后还是不行。

在宿主机上检查,发现自己能看到arp表:

? (192.168.1.22) at 00:a0:98:25:10:21 on vmx0 expires in 1178 seconds [ethernet]
192.168.1.22就是虚拟子系统的ip

查看/var/log/syslog文件,发现很多提示:

systemd-resolved Using degraded feature ste TCP instead of UDP for DNS server 192.168.1.1

使用cbsd新创建了一个bhyve虚拟机,发现在用光盘安装系统的时候,就dhcp拿不到ip,事实证明虚拟机网络就是不通的.....

跟另一台系统比较,发现uuid一样,修改成0自动获取。

改了之后,问题未解决。

修改net.link.tap.up_on_open参数

sysctl net.link.tap.up_on_open=1

没起作用。

 前期碰到过这个问题的,但是当时是jail ,没有注意bhyve是否正常:FreeBSD jail虚拟机突然全都不能上网了(无头绪、未解决)-CSDN博客

在宿主机使用netstat -rnl4查看网络情况

输出情况

netstat -rnl4
Routing tables

Internet:
Destination        Gateway            Flags   Nhop#    Mtu      Netif Expire
default            192.168.1.1        UGS         4   1500       igb0
10.0.0.1           link#2             UH          5  16384        lo0
127.0.0.1          link#2             UH          1  16384        lo0
192.168.1.0/24     link#1             U           2   1500       igb0
192.168.1.5        link#2             UHS         3  16384        lo0
192.168.1.15       link#2             UHS         3  16384        lo0
 

然后看到这个提示:Solved - bhyve host and guest cannot reach out to each other | The FreeBSD Forums

 I think it makes sense... assuming that the guest is also on 192.168.50.0/24, then the host is routing packets to it out ue0. So you'll need to add a static route to the guest IP to go to tap0 (or maybe vm-public would work).

我有点明白了,有台服务器,之所以能通,是因为它还有个192.168.1.15地址,做了周转。如果没有这个ip,它应该也不通。这也能解释为什么这台系统的网络有点慢,因为它绕路了。

但是我把1.12的jail停掉后,还是能通....

查看pf设置

正常机/usr/jail/etc/pf.conf文件

## include NAT rules
include "/usr/jails/etc/pfnat.conf"

# or:
# nat-anchor "/usr/jails/etc/pfnat.conf"


## include RDR rules
include "/usr/jails/etc/pfrdr.conf"
两者一样

pfnat.conf ,正常的:

nat on igb0 from 10.0.0.0/8 to ! 10.0.0.0/8 -> 192.168.1.5 # // Setup by CBSD NAT
nat on igb0 from 172.16.0.0/12 to ! 172.16.0.0/12 -> 192.168.1.5 # // Setup by CBSD NAT
 

不正常的:

nat on vmx0 from 10.0.0.0/8 to ! 10.0.0.0/8 -> 192.168.1.250 # // Setup by CBSD NAT
nat on vmx0 from 172.16.0.0/12 to ! 172.16.0.0/12 -> 192.168.1.250 # // Setup by CBSD NAT
 

可见两者也是一致的,况且本次用的桥接,也不涉及nat部分

两者cbsd的版本也一样:

cbsd --version
14.1.0
 

查看/etc/rc.conf /boot/loader.conf文件

两台系统也一样 。

发现两台系统一台14.1beta ,一台14.0,不会是因为FreeBSD版本不同导致的吧 

另外正常机器没有在/etc/rc.conf 设置pf_load="YES",而是在/boot/loader.conf文件中设置的:

pf_load="YES"

查看/usr/jails/jails-system/ub12 目录里的配置

bhyve.conf文件

网卡配置:

正常的:

nic_args=' -s 5,virtio-net,tap2,mtu=1500,mac=00:a0:98:31:84:3b'
uefi_boot_args='-s 1,ahci-cd,/usr/local/cbsd/upgrade/patch/efirefd.fd,ro'
dsk_args='-s 4,virtio-blk,/usr/jails/vm/ub12/dsk1.vhd,sectorsize=512/4096'
 

不正常的:

nic_args=' -s 5,virtio-net,tap3,mtu=1500,mac=00:a0:98:25:10:21 -s 4,virtio-net,tap4,mtu=15
00,mac=00:a0:98:f7:e5:f5'
uefi_boot_args='-s 1,ahci-cd,/usr/local/cbsd/upgrade/patch/efirefd.fd,ro'
dsk_args='-s 7,virtio-blk,/usr/jails/jails-data/ub12-data/dsk1.vhd,sectorsize=512/4096'
 

不明白为什么这里多出来 -s 4,virtio-net,tap4,mtu=15
00,mac=00:a0:98:f7:e5:f5' 这一段

最后部分正常的:

mytap_tap2_members="bridge1"
 

不正常的:

mytap_tap3_members="bridge1"
mytap_tap4_members="bridge1"
 

问题是正常的有tap1和tap2 

tap1: flags=8903<UP,BROADCAST,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
    description: CBSDSYSTEM0
    options=80000<LINKSTATE>
    ether 58:9c:fc:10:ff:89
    groups: tap
    media: Ethernet 1000baseT <full-duplex>
    status: no carrier
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
tap2: flags=1008943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
    description: ub12-nic0
    options=80000<LINKSTATE>
    ether 58:9c:fc:10:ff:d9
    groups: tap vm-port
    media: Ethernet 1000baseT <full-duplex>
    status: active
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    Opened by PID 90163
 

而不正常的没有tap3和tap4啊!这是怎么回事呢? 

修改,将不正常的参照正常的进行修改,也就是这两句

nic_args=' -s 5,virtio-net,tap3,mtu=1500,mac=00:a0:98:25:10:21'

mytap_tap2_members="bridge1"

问题照旧

峰回路转,看到pf里这一句

# See pf.conf(5) and /usr/share/examples/pf for syntax and examples.
# Remember to set gateway_enable="YES" and/or ipv6_gateway_enable="YES"
# in /etc/rc.conf if packets are to be forwarded between interfaces.
在rc里面加上

手工创建bhyve测试

Chapter 24. Virtualization | FreeBSD Documentation Portal

 

truncate -s 16G guest.img

wget https://mirrors.ustc.edu.cn/freebsd/releases/ISO-IMAGES/14.1/FreeBSD-14.1-RELEASE-amd64-bootonly.iso

 

sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 1024M -t tap0 -d guest.img \
     -i -I FreeBSD-14.1-RELEASE-amd64-bootonly.iso guestname

结果安装系统的时候网络就是不通的。

完全参考手册,创建网络端口

哦哦,发现没有创建tap0 ,而且也没有把tap0和vmx0放入bridge0 中,现在准备用tap1口来启动,所以命令应该是:

sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 1024M -t tap1 -d guest.img \
     -i -I FreeBSD-14.1-RELEASE-amd64-bootonly.iso guestname

还是不行....

 

最终问题未解决,先留档。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值