当前位置: 首页 > news >正文

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子系统&#xff0c;子系统里无法ping通外面&#xff0c;除了宿主机&#xff0c;其它ip都ping不通。&#xff08;另一台FreeBSD物理机同样的bhyve ubuntu子系统&#xff0c;网络就是通的&#xff0c;但是TrinityCore服务lag延时很大&#xff09; …...

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种常用方式 最推荐哪一种?

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

仿照ContentLoadingProgressBar 的特点在Android项目中自定义Loading对话框

ContentLoadingProgressBar 是 Android 中的一个控件&#xff0c;继承自 ProgressBar。它在 ProgressBar 的基础上添加了一些特殊功能&#xff0c;主要用于在加载内容时显示进度。它的一些主要特点如下&#xff1a; 自动隐藏和显示&#xff1a;ContentLoadingProgressBar 会在…...

基于数据复杂度的数据库选型

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

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      思特科技为“国家宝藏数字体验展”提供“数字技术”支持&#xff0c;带来国宝的数字化演绎。以《国家宝藏》顶级IP为基础&#xff0c;打造的全新沉浸文化项目“国宝数字体验展“&#xff0c;借由文物的视角、站在历史的星河中&#xff0c;探寻时间长河中不变的智慧…...

ES6笔记总结(Xmind格式):第二天

Xmind鸟瞰图&#xff1a; 简单文字总结&#xff1a; ES6知识总结 Proxy&#xff08;代理&#xff09;&#xff1a; 1.作用&#xff1a;实现数据的私有化处理 2.target 目标对象 handler处理函数 3.处理函数中有两个方法&#xff1a;get,set 4.读取数据会触发g…...

Kotlin 流flow、ShareFlow、StateFlow、Channel的解释与使用

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

【个人学习】JVM(7):方法区概述、方法区内部结构、垃圾回收等

方法区 栈、堆、方法区的交互关系 从线程共享与否的角度来看 ThreadLocal:如何保证多个线程在并发环境下的安全性?典型场景就是数据库连接管理,以及会话管理。 栈、堆、方法区的交互关系 下面涉及了对象的访问定位 Person 类的 .class 信息存放在方法区中person 变量存放…...

@Scheduled 定时任务自定义

简介 Scheduled 定时任务自定义可以通过SchedulingConfigurer实现。 SchedulingConfigurer 是 Spring Framework 中的一个接口&#xff0c;用于配置定时任务。当你需要对定时任务进行更高级别的定制时&#xff0c;这个接口就显得非常有用。 可以通过SchedulingConfigurer 接口…...

一种新颖的面试方式

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…...

【Linux】生产消费模型实践 --- 基于信号量的环形队列

你送出去的每颗糖都去了该去的地方&#xff0c; 其实地球是圆的&#xff0c; 你做的好事终会回到你身上。 --- 何炅 --- 基于信号量的环形队列 1 信号量2 框架构建3 代码实现4 测试运行 1 信号量 信号量本质是一个计数器&#xff0c;可以在初始化时对设置资源数量&#xf…...

Science Robotics 与蜜蜂群互动的蜂窝型机器人系统

蜜蜂&#xff0c;如黄蜂&#xff0c;蚂蚁和其他社会昆虫&#xff0c;建立大型自组织群体&#xff0c;通常被解释为自我调节的“超有机体”。这些超生物是生态系统的重要稳定剂&#xff0c;因此被认为是“关键物种”。例如&#xff0c;蜜蜂群落通过觅食授粉服务的生态效应对陆地…...

Vue 计算属性:优雅地处理数据逻辑

在 Vue.js 中&#xff0c;计算属性&#xff08;Computed Properties&#xff09;是一种非常实用的功能&#xff0c;它允许我们根据组件的响应式依赖进行缓存和派生状态。计算属性可以让我们以声明式的方式编写复杂的逻辑&#xff0c;而不必担心性能问题。 什么是计算属性&…...

C++中`union`

文章目录 C中的union什么是union&#xff1f;定义union示例一输出结果&#xff1a; 示例二修正后的代码解释输出结果结论 union的特性匿名union示例 union和struct的区别1. 内存布局2. 同时访问3. 用途 union和class的区别1. 数据成员2. 功能性3. 适用场景 在C编程中&#xff0…...

Linux——网络(1)

一、IPC&#xff08;进程间通信方式&#xff09; IPC&#xff1a;Inter Process Communication 共享内存&#xff08;最高效的进程间通信方式&#xff09; 虚拟地址 mmu(memory management unit ) 共享内存: 1.是一块&#xff0c;内核预留的空间 2.最高效的…...

【五】阿伟开始学Kafka

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

CircuitPython音频输出与PWM伺服电机控制实战指南

1. 项目概述与核心价值如果你正在用像Adafruit的Feather M0、ItsyBitsy或者Circuit Playground Express这类小巧的微控制器板子做项目&#xff0c;想让它们“开口说话”或者“动手干活”&#xff0c;那么音频输出和伺服电机控制就是你绕不开的两项核心技能。前者能让你的项目发…...

终极Cookie本地导出指南:如何安全获取cookies.txt文件

终极Cookie本地导出指南&#xff1a;如何安全获取cookies.txt文件 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在Web开发、API测试和自动化脚本…...

从Git历史到数据洞察:构建代码仓库统计分析工具的设计与实践

1. 项目概述&#xff1a;一个为开发者量身定制的代码统计工具 在软件开发的日常中&#xff0c;无论是个人复盘、团队汇报&#xff0c;还是项目交接&#xff0c;我们常常会遇到一个看似简单却颇为棘手的问题&#xff1a;如何客观、量化地评估一个代码仓库的“工作量”或“活跃度…...

Go语言json-repair库:高效修复LLM输出的非标准JSON

1. 项目概述&#xff1a;当LLM的JSON输出“不听话”时&#xff0c;我们怎么办&#xff1f; 如果你正在开发基于大语言模型&#xff08;LLM&#xff09;的应用&#xff0c;无论是智能客服、代码生成器&#xff0c;还是复杂的多智能体工作流&#xff0c;那么你肯定遇到过这个让人…...

脉动阵列架构与DNN加速:FORTALESA容错设计解析

1. 脉动阵列架构与DNN加速基础在深度学习硬件加速领域&#xff0c;脉动阵列(Systolic Array)因其规则的并行计算结构而成为主流选择。这种架构最早由H.T.Kung在1982年提出&#xff0c;其核心思想是通过数据的有节奏流动&#xff08;如同心脏的收缩舒张&#xff09;实现高效的矩…...

【C#vsPython·第一阶段】int、string、bool?Python 的类型世界有点不一样

在 C# 里&#xff0c;int 最大能表示 2,147,483,647&#xff08;约 21 亿&#xff09;。超过这个数&#xff1f;对不起&#xff0c;溢出了&#xff0c;你得用 long。在 Python 里&#xff1f;2 ** 100 直接算&#xff0c;连眼都不眨一下。Python 的 int 没有上限&#xff0c;想…...

数据结构--------单链表下

书接上回&#xff0c;本章主要讲的是单链表的头删&#xff0c;尾删&#xff0c;指定位置插入删除&#xff0c;链表的查找和链表的销毁&#xff1b;一.链表的操作1.头删文字描述如下&#xff1a;正所谓头删&#xff0c;删除的肯定是链表的头元素&#xff0c;但是我们要怎么样进行…...

别再手动汇总了!锐捷BGP路由聚合实战:用aggregate-address优化你的路由表(含as-set、suppress-map详解)

锐捷BGP路由聚合实战&#xff1a;优化网络架构的智能选择 在大型企业网络架构中&#xff0c;BGP路由表规模的膨胀常常成为网络工程师的噩梦。当路由条目突破十万级别时&#xff0c;设备内存占用激增、路由收敛速度下降、网络稳定性面临严峻挑战。传统的手工汇总方式不仅效率低下…...

保姆级避坑指南:用GGCNN源码搞定Cornell抓取数据集转换(附.mat/.tiff生成全流程)

保姆级避坑指南&#xff1a;用GGCNN源码搞定Cornell抓取数据集转换全流程 当你第一次尝试复现GGCNN这个经典的机器人抓取项目时&#xff0c;Cornell数据集的预处理往往会成为第一个拦路虎。作为一个曾经在这个环节卡了整整两天的过来人&#xff0c;我深知那些官方文档没写的细节…...

掌握PRML中的贝叶斯推断:MCMC采样实战指南

掌握PRML中的贝叶斯推断&#xff1a;MCMC采样实战指南 【免费下载链接】PRML PRML algorithms implemented in Python 项目地址: https://gitcode.com/gh_mirrors/pr/PRML 贝叶斯推断是机器学习中的核心技术之一&#xff0c;而马尔可夫链蒙特卡洛&#xff08;MCMC&#…...