LennyでDebianLinuxサーバーを実行しています。その中で、KVMを使用して別のLennyインスタンスを実行しています。両方のサーバーは外部で利用可能であり、パブリックIPと、LANのプライベートIPを備えた2番目のインターフェイスがあります。 VMは、すべてのネットワークトラフィックがホストサーバーから発信されていると見なす以外は、すべて正常に機能します。これは、ホストで実行しているiptablesベースのファイアウォールと関係があると思われます。
私が理解したいのは、これらの要件がすべて満たされるようにホストのネットワークを適切に構成する方法です。
現在、ホストのネットワークインターフェイスはブリッジとして構成されています。 eth0とeth1にはIPアドレスが割り当てられていませんが、br0とbr1には割り当てられています。
/etc/network/interfaces
ホスト上:
# The primary network interface
auto br1
iface br1 inet static
address 24.123.138.34
netmask 255.255.255.248
network 24.123.138.32
broadcast 24.123.138.39
gateway 24.123.138.33
bridge_ports eth1
bridge_stp off
auto br1:0
iface br1:0 inet static
address 24.123.138.36
netmask 255.255.255.248
network 24.123.138.32
broadcast 24.123.138.39
# Internal network
auto br0
iface br0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
bridge_ports eth0
bridge_stp off
これは、VMのlibvirt/qemu構成ファイルです。
<domain type='kvm'>
<name>apps</name>
<uuid>636b6620-0949-bc88-3197-37153b88772e</uuid>
<memory>393216</memory>
<currentMemory>393216</currentMemory>
<vcpu>1</vcpu>
<os>
<type Arch='i686' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='cdrom'>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
<disk type='file' device='disk'>
<source file='/raid/kvm-images/apps.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='bridge'>
<mac address='54:52:00:27:5e:02'/>
<source bridge='br0'/>
<model type='virtio'/>
</interface>
<interface type='bridge'>
<mac address='54:52:00:40:cc:7f'/>
<source bridge='br1'/>
<model type='virtio'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>
</devices>
</domain>
残りのファイアウォールルールに加えて、ファイアウォールスクリプトには、KVMゲスト:
# Allow bridged packets to pass (for KVM guests).
iptables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT
(この質問には当てはまりませんが、ブリッジ設定の副作用として、正常にシャットダウンできないようです。カーネルは最終的に「unregister_netdevice:br1が解放されるのを待っています」と表示し、ハードリセットする必要があります。システム。たぶん私が何か馬鹿げたことをした兆候?)
VMを間違ったインターフェースにブリッジしました。それらは、外界に接続するネットワークインターフェースにブリッジする必要があります(br1
あなたの場合)。
各VMは、ゲストにIPアドレスを設定する必要があり、ホストではnotであることに注意してください。
なぜbr1:0にエイリアスが必要なのですか?これはそこの邪魔になるかもしれません
エイリアスの他に、次のスキームを使用することをお勧めします。
eth0-> br0 <-VMのタップデバイス
ホストはbr0をIFとして使用できる必要があり、VMは仮想スイッチに接続された仮想NICとしてタップデバイスを使用します(br0は事実上ここになります)
もちろん、すべてのネットワークに同じことが当てはまります。したがって、eth1の場合、br1をセットアップし、br1に接続するVMを起動する必要があります。
Lenny/Squeeze VM Lennyホスト内でlib-virtとvirtioブリッジを使用してbr0(br1もbr0:0もなし)で同じセットアップを行っています。特別なiptables構成がなくても正しく動作します。ホスト。各ゲストVM内ですべてのファイアウォール構成を行います。
ネットワークルートをチェックして、VMがホストをゲートウェイとして使用しているかどうかを確認することでメリットが得られると思います。鉱山は外部ルーターをゲートウェイとして使用するように構成されています。もちろん、my = VMとホストは同じ範囲内の異なるIPアドレスにあります。