ESXi里的FreeBSD装bhyve Ubuntu子系统,外网不通,子系统里无法ping通外面(使用NAT解决)
ESXi里的FreeBSD装bhyve Ubuntu子系统,子系统里无法ping通外面,除了宿主机,其它ip都ping不通。(另一台FreeBSD物理机同样的bhyve ubuntu子系统,网络就是通的,但是TrinityCore服务lag延时很大)
比如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
还是不行....
准备看看ESXi是否把网卡设为混杂模式了
设为混杂模式,还是不通。设置文档:ESXi中设置网卡为混杂模式-CSDN博客
问题总结
在做了大量实验后,问题还是没有解决。不过现在已经定位了问题和迂回的解决办法。
问题定位:
有一台ESXi服务器里的FreeBSD系统,使用Bhyve虚拟Ubuntu子系统,以太网走Bridge桥的时候,网络不通,也就是除了能跟宿主通信,跟局域网的其它pc不通,大家都是192.168.1.0/24网段的。
同样的系统下,如果虚拟子系统走VALE和vether虚拟子接口,使用10.0.0.0/8网段,NAT出去,那么网络就是通的。
也就是bridge不通,NAT通。
但是几乎同样的配置,另一台FreeBSD物理主机就没有这样的问题,Bridge也是通的。不知道是不是ESXi和物理机不同导致的。但是那台物理机的问题也很大,它的TrinityCore服务lag延时很大,而且时不时会卡一下,不知道是不是硬件有问题。
问题解决
ESXi服务器里的FreeBSD系统那个,暂时先用走VALE和vether虚拟子接口NAT的方式,网络就联通了。TrinityCore服务也相当好,没有lag和卡顿。
FreeBSD物理机那个,还没定位到问题,感觉无从下手。
相关文章:
ESXi里的FreeBSD装bhyve Ubuntu子系统,外网不通,子系统里无法ping通外面(使用NAT解决)
ESXi里的FreeBSD装bhyve Ubuntu子系统,子系统里无法ping通外面,除了宿主机,其它ip都ping不通。(另一台FreeBSD物理机同样的bhyve ubuntu子系统,网络就是通的,但是TrinityCore服务lag延时很大) …...
Connectionist Logic Systems and Hybrid Systems by Translation
Connectionist Logic Systems Definition: Connectionist Logic Systems (CLS) are computational models that combine elements of connectionism (neural networks) with symbolic logic. These systems aim to leverage the strengths of both paradigms—connectionism’…...

盘点数据摆渡的8种常用方式 最推荐哪一种?
跨网数据摆渡是很多企业面临的一种传输场景,因为大部分企业为了保护核心数据,都会做不同级别的网络隔离,所以数据摆渡会涉及不同网络之间的数据传输和整合。这种情况下,数据需要从一个组织或地理位置传输到另一个组织或地理位置&a…...

仿照ContentLoadingProgressBar 的特点在Android项目中自定义Loading对话框
ContentLoadingProgressBar 是 Android 中的一个控件,继承自 ProgressBar。它在 ProgressBar 的基础上添加了一些特殊功能,主要用于在加载内容时显示进度。它的一些主要特点如下: 自动隐藏和显示:ContentLoadingProgressBar 会在…...

基于数据复杂度的数据库选型
数据模型的选择对于 IT 系统的开发至关重要,它不仅决定了数据存储和处理的方式,影响系统的性能、扩展性以及维护性等。本质上来说,不同的数据模型反映了我们对业务问题的不同思考和抽象程度。 今天我们从不同数据模型对于复杂数据和关系的支…...

QT基础知识5
思维导图 client.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), socket(new QTcpSocket(this))//给客户端实例化分配空间 {ui->setupUi(this);//初始化界面ui->msgEdit-&…...

C++中vector存放内置数据类型
#include<iostream> using namespace std; #include<vector> #include<algorithm>//迭代器先理解为指针 void MyPrint(int val) {cout << val << endl; } void test01() {vector<int> v;v.push_back(1);v.push_back(2);vector<int>:…...
shell编程:安装部署前常见环境检查
脚本任务 监测主机是否联通正常 检查安装操作系统版本是否和需求一致 检查CPU是否满足规格要求 检查内存是否满足规格要求 检查数据磁盘是否满足规格要求 检查操作系统分区目录大小是否满足需求 检查集群主机时间是否一致 0.配置文件准备及脚本变量初始化 编写config.i…...

思特科技:国家宝藏数字体验馆展现东方美学 让“文物活起来”
01 思特科技为“国家宝藏数字体验展”提供“数字技术”支持,带来国宝的数字化演绎。以《国家宝藏》顶级IP为基础,打造的全新沉浸文化项目“国宝数字体验展“,借由文物的视角、站在历史的星河中,探寻时间长河中不变的智慧…...

ES6笔记总结(Xmind格式):第二天
Xmind鸟瞰图: 简单文字总结: ES6知识总结 Proxy(代理): 1.作用:实现数据的私有化处理 2.target 目标对象 handler处理函数 3.处理函数中有两个方法:get,set 4.读取数据会触发g…...

Kotlin 流flow、ShareFlow、StateFlow、Channel的解释与使用
一、介绍 随着Android接入kotlin开发,Android之前好多模式也渐渐被kotlin替代。开发模式也在做渐进的转型,从MVC到MVP在到MVVP以及现在的MVI等。 流IO在java中和kotlin中使用率都是比较高的,场景很多。如Java的IO和NIO,再到我们现…...

【个人学习】JVM(7):方法区概述、方法区内部结构、垃圾回收等
方法区 栈、堆、方法区的交互关系 从线程共享与否的角度来看 ThreadLocal:如何保证多个线程在并发环境下的安全性?典型场景就是数据库连接管理,以及会话管理。 栈、堆、方法区的交互关系 下面涉及了对象的访问定位 Person 类的 .class 信息存放在方法区中person 变量存放…...
@Scheduled 定时任务自定义
简介 Scheduled 定时任务自定义可以通过SchedulingConfigurer实现。 SchedulingConfigurer 是 Spring Framework 中的一个接口,用于配置定时任务。当你需要对定时任务进行更高级别的定制时,这个接口就显得非常有用。 可以通过SchedulingConfigurer 接口…...
一种新颖的面试方式
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...

【Linux】生产消费模型实践 --- 基于信号量的环形队列
你送出去的每颗糖都去了该去的地方, 其实地球是圆的, 你做的好事终会回到你身上。 --- 何炅 --- 基于信号量的环形队列 1 信号量2 框架构建3 代码实现4 测试运行 1 信号量 信号量本质是一个计数器,可以在初始化时对设置资源数量…...
Science Robotics 与蜜蜂群互动的蜂窝型机器人系统
蜜蜂,如黄蜂,蚂蚁和其他社会昆虫,建立大型自组织群体,通常被解释为自我调节的“超有机体”。这些超生物是生态系统的重要稳定剂,因此被认为是“关键物种”。例如,蜜蜂群落通过觅食授粉服务的生态效应对陆地…...
Vue 计算属性:优雅地处理数据逻辑
在 Vue.js 中,计算属性(Computed Properties)是一种非常实用的功能,它允许我们根据组件的响应式依赖进行缓存和派生状态。计算属性可以让我们以声明式的方式编写复杂的逻辑,而不必担心性能问题。 什么是计算属性&…...
C++中`union`
文章目录 C中的union什么是union?定义union示例一输出结果: 示例二修正后的代码解释输出结果结论 union的特性匿名union示例 union和struct的区别1. 内存布局2. 同时访问3. 用途 union和class的区别1. 数据成员2. 功能性3. 适用场景 在C编程中࿰…...

Linux——网络(1)
一、IPC(进程间通信方式) IPC:Inter Process Communication 共享内存(最高效的进程间通信方式) 虚拟地址 mmu(memory management unit ) 共享内存: 1.是一块,内核预留的空间 2.最高效的…...

【五】阿伟开始学Kafka
阿伟开始学Kafka 概述 人生若只如初见,阿伟心里回想起了第一次和Kafka见面的场景,记忆虽然已经有些模糊,但是感觉初次见面是美好的。积累了一些实战经验之后,阿伟感觉不能再是面对百度开发了,于是决心系统的学习一下Ka…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...