如何在 kvm 上使用特定主机 ip 地址?

如何在 kvm 上使用特定主机 ip 地址?

拥有一个专用的 Ubuntu Server 主机,该主机具有单个网络接口但两个 IP 地址:

root@server:~# cat /etc/netplan/50-cloud-init.yaml 
network:
    version: 2
    ethernets:
        eno3:
            dhcp4: true
            match:
                macaddress: 00:00:00:00:00:00
            set-name: eno3
            addresses: [IP-A/24, IP-B/32]

何时IP-A分配给服务器的本机 ip 地址以及IP-B我已签约的附加 ip 地址。 使用配置时,netplan apply一切都运行良好,WEB 服务器通过 IP 地址退出IP-A,从 curl 我可以看到如何从 访问互联网IP-B

wget -qO- http://checkip.dyndns.com/ --bind-address IP-A
... Current IP Address: IP-A
wget -qO- http://checkip.dyndns.com/ --bind-address IP-B
... Current IP Address: IP-B

问题是我也有一个带有kvm( )的虚拟机,我怎样才能让虚拟机使用而不是像默认的那样virsh访问互联网?IP-BIP-A

我的网络接口:

root@yhojann:~# 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: eno3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 11:11:11:11:11:11 brd ff:ff:ff:ff:ff:ff
    inet IP-A/24 brd x.x.x.255 scope global dynamic eno3
       valid_lft 63801sec preferred_lft 63801sec
    inet IP-B/32 scope global eno3
       valid_lft forever preferred_lft forever
    inet6 ffff::fff:ffff:ffff:ffff/64 scope link 
       valid_lft forever preferred_lft forever
3: eno4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 22:22:22:22:22:22 brd ff:ff:ff:ff:ff:ff
17: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 33:33:33:33:33:33 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
18: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 44:44:44:44:44:44 brd ff:ff:ff:ff:ff:ff
20: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UNKNOWN group default qlen 1000
    link/ether 44:44:44:44:44:44 brd ff:ff:ff:ff:ff:ff

我尝试找出是否可以使用配置 kvm 网络virsh net-edit default

但是我没有找到任何参考资料允许使用主机的特定出口 IP 地址,而无需使用新的虚拟接口并使用 iptables 重定向数据包,因为这会导致连接的巨大延迟。

有没有更“本地”的方式来告诉 kvm 使用特定的 IP?

显示的 ip 地址和 mac 地址仅供参考。我使用 ufw 来管理连接。

答案1

要将 IP-B 分配给虚拟机:

  • 创建桥接接口。

  • 移至eno3桥上。

    请注意,这可能会导致网络连接丢失,因此您需要确保通过某种带外连接(如串行控制台或图形控制台)执行这些更改。

    如何以持久的方式执行这些步骤因发行版而异;无论您使用什么,我相信您都可以找到适当的文档。

  • 将IP-A分配给桥接设备。

  • 将您的虚拟机连接到网桥。

    如果您使用 创建虚拟机virt-install,则可能看起来像:

    virt-install --network bridge=br0 ...
    

    如果您手动创建域 XML,则意味着<interface>如下节:

    <interface type="bridge">
      <source bridge="br0"/>
      <model type="virtio"/>
    </interface>
    
  • 分配eth0(或任何接口名称)里面虚拟机IP-B

这将为您提供:

在此处输入图片描述

您的主机和虚拟机都连接到同一个网络。

相关内容