拥有一个专用的 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-B
IP-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
这将为您提供:
您的主机和虚拟机都连接到同一个网络。