AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1412503
Accepted
Cas
Cas
Asked: 2022-06-07 03:06:35 +0800 CST2022-06-07 03:06:35 +0800 CST 2022-06-07 03:06:35 +0800 CST

为主机和虚拟机设置网桥

  • 772

我在为我的主机和我的虚拟机设置网桥时遇到了很多问题。

主机(服务器的操作系统)是 Ubuntu 20.04.4 LTS。VM(使用 KVM 和 virt-manager)是 TrueNAS Core (FreeBSD)。我的服务器(主板上)有一个以太网端口,我想同时用于我的操作系统和虚拟机。os 需要获取 192.168.2.15 的 ip,dns 设置为 1.1.1.1,vm 需要获取 192.168.2.16 的 ip。它们都需要从“外部”访问。所以,据我了解,我需要设置一个网桥。

好吧,这一切都出错了。我从这个视频开始,但没有成功。然后我尝试了这个视频,但也没有成功。然后我尝试了本指南,但再次没有成功。然后我转向 SO 并尝试了这些(1、2),但都没有成功。

每次都出事。大多数时候 DNS 不工作,或者 IP 地址混乱(完全不同的子网),或者操作系统具有正确的 IP 但无法 ping 任何其他设备(不是 1.1.1.1,也不是 192.168.2.79,即我的静态 ip-ed win10 计算机)或 /etc/network/interfaces 被忽略(该文件还不存在)。大多数时候人们建议使用sudo /etc/init.d/networking restartsystemd 或类似使用 systemd,但每次我收到networking不存在的消息时,我觉得这很奇怪,因为其他人都拥有它。

这只是一团糟,我无法让它工作。我真的很感激一些帮助!

该文件/etc/network/interfaces当前不存在。 ifconfig -a输出:

enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.15  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::8506:f97f:df7c:f66b  prefixlen 64  scopeid 0x20<link>
        ether 18:c0:4d:9b:3c:12  txqueuelen 1000  (Ethernet)
        RX packets 10390  bytes 3524106 (3.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2534  bytes 330756 (330.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xfc600000-fc61ffff  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 7172  bytes 712208 (712.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7172  bytes 712208 (712.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:06:8d:b0  txqueuelen 1000  (Ethernet)
        RX packets 142  bytes 12152 (12.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 40  bytes 4136 (4.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0-nic: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 52:54:00:06:8d:b0  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::fc54:ff:fee6:a823  prefixlen 64  scopeid 0x20<link>
        ether fe:54:00:e6:a8:23  txqueuelen 1000  (Ethernet)
        RX packets 142  bytes 14140 (14.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 939  bytes 55015 (55.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

编辑:里面/etc/netplan,有一个文件:01-network-manager-all.yaml. 内容:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

我不关心网络管理员。如果有一些解决方案有效但破坏了网络管理器,我完全可以接受。

networking
  • 1 1 个回答
  • 597 Views

1 个回答

  • Voted
  1. Best Answer
    Doug Smythies
    2022-06-09T07:18:50+08:002022-06-09T07:18:50+08:00

    我只有使用网络作为渲染器而不是 NetManager 的经验,所以我不知道这个答案的价值。

    保存/etc/netplan/01-network-manager-all.yaml在某个地方,以便在事情不起作用时可以恢复。

    创建/etc/netplan/01-netcfg.yaml(假定网关地址):

    # This file describes the network interfaces available on your system
    # For more information, see netplan(5).
    network:
      version: 2
      renderer: networkd
      ethernets:
        enp4s0:
          dhcp4: no
      bridges:
        br0:
          interfaces: [ enp4s0 ]
          dhcp4: no
          addresses: [192.168.2.15/24]
          gateway4: 192.168.2.1
          nameservers:
            addresses: [1.1.1.1]
          dhcp6: no
          link-local: [ ]
          parameters:
            stp: true
            forward-delay: 4
    

    做:

    sudo netplan apply
    

    去/etc/libvirt/qemu/networks。应该有一个host-bridge.xml文件。保存副本:

    sudo cp host-bridge.xml host-bridge.xml.original
    

    如果您没有host-bridge.xml文件,我的原件是:

    doug@s19:~/config/etc/libvirt/qemu/networks$ cat host-bridge.xml.original
    <network>
        <name>host-bridge</name>
        <bridge name='br0'/>
        <forward mode="bridge"/>
    </network>
    

    运行这些命令:

    virsh net-define host-bridge.xml
    virsh net-autostart host-bridge
    virsh net-start host-bridge
    virsh net-list --all
    

    如果出现问题并需要撤消,请注意:

    virsh net-destroy br0
    virsh net-undefine br0
    

    例子:

    doug@s19:~/config/etc/libvirt/qemu/networks$ virsh net-list --all
     Name          State    Autostart   Persistent
    ------------------------------------------------
     host-bridge   active   yes         yes
    

    例子:

    doug@s19:~/config/etc/libvirt/qemu/networks$ sudo cat /etc/libvirt/qemu/networks/host-bridge.xml
    <!--
    WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
    OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
      virsh net-edit host-bridge
    or other application using the libvirt API.
    -->
    
    <network>
      <name>host-bridge</name>
      <uuid>d474d859-8448-4055-9fc0-bb0b6cb83c34</uuid>
      <forward mode='bridge'/>
      <bridge name='br0'/>
    </network>
    

    现在,修改任何现有的虚拟机以使用网桥:

    注意:可能有一种方法可以使用 来执行此步骤virt-manager,但是我不使用它也不知道如何使用。

    使用virsh edit并更改您的接口定义行以使用桥接而不是当前使用的内容。像这样的东西:

    前:

    <interface type='network'>
      <mac address='52:54:00:06:8d:b0'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    

    后:

    <interface type='bridge'>
      <mac address='52:54:00:06:8d:b0'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    

    对于创建一个新的虚拟机,根据你的方法,比如:

    virt-install -n serv-jj -r 8192 \
    --disk path=/home/doug/vm/serv-jj.img,bus=virtio,size=50 \
    -c jammy-live-server-amd64-2022-04-21.iso \
    --network bridge=br0,model=virtio,mac=52:54:00:27:1c:6e \
    --graphics vnc,listen=0.0.0.0 --noautoconsole -v --vcpus=4 --cpu SandyBridge 
    

    运行 3 个 VM 的示例:

    doug@s19:~$ ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
        link/ether 3c:7c:3f:0d:99:83 brd ff:ff:ff:ff:ff:ff
    3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 3c:7c:3f:0d:99:83 brd ff:ff:ff:ff:ff:ff
        inet 192.168.111.136/24 brd 192.168.111.255 scope global dynamic br0
           valid_lft 81610sec preferred_lft 81610sec
    4: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
        link/ether fe:54:00:22:2f:dc brd ff:ff:ff:ff:ff:ff
    5: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
        link/ether fe:54:00:60:ea:3e brd ff:ff:ff:ff:ff:ff
    6: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
        link/ether fe:54:00:60:ea:5e brd ff:ff:ff:ff:ff:ff
    doug@s19:~$ networkctl
    IDX LINK   TYPE     OPERATIONAL SETUP
      1 lo     loopback carrier     unmanaged
      2 enp3s0 ether    enslaved    configured
      3 br0    bridge   routable    configured
      4 vnet0  ether    carrier     unmanaged
      5 vnet1  ether    carrier     unmanaged
      6 vnet2  ether    carrier     unmanaged
    doug@s19:~$ brctl show
    bridge name     bridge id               STP enabled     interfaces
    br0             8000.3c7c3f0d9983       no              enp3s0
                                                            vnet0
                                                            vnet1
                                                            vnet2
    

    此处未涉及:如何在VM上设置192.168.2.16的静态地址,因为VM被声明为FreeBSD,我不知道如何。

    参考:
    https ://netplan.io/examples/#configuring-network-bridges
    KVM网桥分配静态IP

    • 0

相关问题

  • 如何设置 VLAN 转发?

  • 如何将主机 Ubuntu 上的 VPN (tun0) 网络适配器映射到 VirtualBox 来宾 Windows?

  • 如何限制下载/上传带宽?

  • 如何通过 Windows 网络共享文件?

  • 面板小程序以文本形式显示当前网络流量?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve