nev*_*ios 6 networking libvirt kvm-virtualization
有很多用于 Kvm-networking 的配置。但是我无法从主人或外面接触到客人。我正在 Ubuntu 11.04 上工作。在来宾上,我有一个带 dhcp 的 WindowsXp。
我希望来宾在主机的同一网络中。我试过使用 ip 别名
我已经在 /etc/network/interfaces 中设置了桥接网络
auto eth0
iface eth0 inet manual
auto eth0:1
iface eth0:1 inet static
address 192.168.0.11
netmask 255.255.255.0
auto br0
iface br0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Run Code Online (Sandbox Code Playgroud)
然后更改 /etc/libvirtd/qemu/network/default.xml 中的默认网络
<network>
<name>default</name>
<uuid>831a93e1-0b84-0b0e-9ca2-23c407983968</uuid>
<forward mode='route'/>
<bridge name='virbr0' stp='on' delay='0' />
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.100' end='192.168.122.254' />
<host mac='52:54:00:7c:df:88' name='vm' ip='192.168.122.99' />
</dhcp>
</ip>
</network>
Run Code Online (Sandbox Code Playgroud)
/etc/libvirt/qemu/vm.xml 中的网络
<interface type='network'>
<mac address='52:54:00:7c:df:88'/>
<source network='default'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
Run Code Online (Sandbox Code Playgroud)
来自 dhcp 的来宾获得正确的 IP。最终将来自外部接口的流量定向到内部和返回
sudo iptables -t nat -A PREROUTING -d 192.168.0.11 -j DNAT --to-destination 192.168.122.99
sudo iptables -t nat -A POSTROUTING -d 192.168.122.99 -j SNAT --to-source 192.168.0.11
Run Code Online (Sandbox Code Playgroud)
所以最后的配置是这样的:
$> brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0026b902076d no eth0
virbr0 8000.fe54007cdf88 yes vnet0
$> route
Tabella di routing IP del kernel
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 br0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
link-local * 255.255.0.0 U 1000 0 0 br0
default 192.168.0.1 0.0.0.0 UG 100 0 0 br0
$> ifconfig
br0 Link encap:Ethernet HWaddr 00:26:b9:02:07:6d
indirizzo inet:192.168.0.10 Bcast:192.168.0.255 Maschera:255.255.255.0
eth0 Link encap:Ethernet HWaddr 00:26:b9:02:07:6d
indirizzo inet6: fe80::226:b9ff:fe02:76d/64 Scope:Link
eth0:1 Link encap:Ethernet HWaddr 00:26:b9:02:07:6d
indirizzo inet:192.168.0.11 Bcast:192.168.0.255 Maschera:255.255.255.0
virbr0 Link encap:Ethernet HWaddr fe:54:00:7c:df:88
indirizzo inet:192.168.122.1 Bcast:192.168.122.255 Maschera:255.255.255.0
vnet0 Link encap:Ethernet HWaddr fe:54:00:7c:df:88
indirizzo inet6: fe80::fc54:ff:fe7c:df88/64 Scope:Link
Run Code Online (Sandbox Code Playgroud)
怎么了?或者我如何设置一个在主机外可见的访客?
我前段时间遇到了这个。但是似乎无法在别名接口上设置桥接器,例如eth0:1. 使用真实界面eth0。
auto eth0
iface eth0 inet static
auto br0
iface br0 inet static
bridge_ports eth0
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
broadcast 192.168.0.255
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Run Code Online (Sandbox Code Playgroud)
此外,address、netmask、gateway和broadcast值是接口应该具有的最小配置。它可能适用于较少的值,但可能会导致奇怪的网络行为。
我还记得,您根本不必编辑 default.xml。您只需要确保每个 KVM 来宾都有满足您需求的网络接口设置。
<interface type='bridge'>
<mac address='00:01:b4:02:00:db'/> # change per guest
<source bridge='br0'/> # the name of your source bridge
<target dev='vnet0'/> # the name, the network interface has for the guest
</interface>
Run Code Online (Sandbox Code Playgroud)
设置很复杂,无法涵盖此处的所有种类,例如 DHCP 与静态设置。您是否查看了KVM 上的 Ubuntu 文档?帮助我进入这个领域。
为什么不简单地设置来宾使用 br0?您可以使用“网桥”配置它并将 VM 附加到 br0,而不是使用“网络”配置它。例子:
<interface type='bridge'>
<source bridge='br0'/>
<mac address='00:16:3e:1a:b3:4a'/>
</interface>
Run Code Online (Sandbox Code Playgroud)
这样,来宾将从外部网络获得 IP,并可以通过它联系工作和主机。
注意: 但是,使用网桥的缺点是您看不到 VM 连接的客户端 IP 地址。取而代之的是,桥接主机的 IP 地址将记录在 linux 虚拟机上的 apache、auth.log 等中,类似地在 windows 虚拟机中。
| 归档时间: |
|
| 查看次数: |
15690 次 |
| 最近记录: |