Networking

kvm上的路由網路

  • September 10, 2020

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

然後更改 /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>

/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>

來自 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

所以最後的配置是這樣的:

$> 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

怎麼了?或者我如何設置在主機之外可見的客人?

前段時間我碰到過這個。但是似乎沒有辦法在別名介面上設置網橋,比如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

此外,地址網路遮罩網關廣播值是介面應具有的最低配置。它可能使用較少的值,但可能會導致奇怪的網路行為。

我還記得,您根本不必編輯 default.xml。您只需要確保每個 KVM Guest 都根據您的需要設置網路介面。

<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>

設置很複雜,無法涵蓋此處的所有類型,例如 DHCP 與靜態設置。你查看過 KVM 上的 Ubuntu 文件嗎?幫助我很多。

引用自:https://serverfault.com/questions/270931