有一个专用的 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地址什么时候IP-A
分配给服务器,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 来管理连接。
要将 IP-B 分配给虚拟机:
创建桥接接口。
移动
eno3
到桥上。请注意,这可能会导致网络连接丢失,因此您需要确保通过某种带外连接(例如串行控制台或图形控制台)执行这些更改。
具体如何以持久的方式执行这些步骤因发行版而异;无论您使用什么,我相信您都能找到合适的文档。
将 IP-A 分配给桥接设备。
将您的虚拟机连接到网桥。
如果您使用创建虚拟机
virt-install
,则可能如下所示:如果您手动创建域 XML,则意味着
<interface>
像这样的节:在虚拟机 IP-B内部分配
eth0
(或任何接口名称)这给你:
您的主机和虚拟机都连接到同一网络。