Kvmネットワーキングに使用される多くの構成があります。ただし、ホストまたは外部からゲストにアクセスすることはできません。私は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
また、address、netmask、gatewayとbroadcastの値は、インターフェースが持つべき最低限の構成です。少ない値で機能する可能性がありますが、奇妙なネットワーク動作を引き起こす可能性があります。
さらに覚えているように、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ドキュメント ?これを理解するのに大いに役立ちました。
単にゲストにbr0を使用するように設定しないのはなぜですか? 「ネットワーク」で構成する代わりに、「ブリッジ」で構成して、VMをbr0にアタッチできます。例:
<interface type='bridge'>
<source bridge='br0'/>
<mac address='00:16:3e:1a:b3:4a'/>
</interface>
このようにして、ゲストは外部ネットからIPを取得し、それを介して仕事とホストに連絡できます。
注:ただし、ブリッジを使用することの欠点は、VMへの接続のクライアントIPアドレスが表示されないことです。代わりに、ブリッジホストのIPアドレスは、Linux上のApache、auth.logなどに記録されますVMおよび同様にWindows VMでも同様です。