1つのホストIPとマシン用の異なるサブネットを持つKVM

1つのホストIPとマシン用の異なるサブネットを持つKVM

適切な IP 構成で KVM ホストをセットアップしましたが、ホストから DHCP を作成し、それを使用してマシンに IP を割り当てるように指示されました。もっと簡単な方法 (またはより良い方法) があるかどうかを確認したいと思います。最初にこの作業を開始したとき、正しい方向を指し示すものは何も見つかりませんでした。Debian 6.0 x64 を新規インストールしたばかりなので、何もインストールされていません。ログインし、以下の情報を照会し、ホストで設定されたパスワードを変更しました。

私は、次のような初期ネットワーク構成の Debian 6.0 x64 システムを使用しています (実際の最初のオクターブの代わりに 255 を代入しています)。

# tail /etc/network/interfaces
auto  eth0
iface eth0 inet static
address   255.9.24.80
broadcast 255.9.24.95
netmask   255.255.255.224
gateway   255.9.24.65

# default route to access subnet
up route add -net 255.9.24.64 netmask 255.255.255.224 gw 255.9.24.65 eth0

ホストから仮想マシンが使用する /29 サブネットがあります。

IP: 255.46.187.152 /29
マスク: 255.255.255.248
ブロードキャスト: 255.46.187.159

使用可能なIPアドレス: 255.46.187.153~255.46.187.158

私は Cloudmin のインターフェースが好きなので、可能であればそれを使用してゲストを管理したいと思っています。

それで、私の質問は次のとおりです:

ゲストで追加のサブネット IP を使用し、インターネットからアクセスできるようにするために、ホスト システムでこれを最適に設定するにはどうすればよいですか?

DNS サーバーをホストする必要もあります。つまり、これらの VM の 1 つに 2 つの IP を割り当て、外部からアクセスできるようにする必要があります。Cloudmin を使用してこれを実行するにはどうすればよいですか? これについて、次の質問がありました。1 つの KVM VM に複数の IP アドレスが割り当てられるしかし、私はサーバー全体を再フォーマットしたばかりで、これを行うより良い方法を見つけようとしています。

マシン情報:

# ip route show
255.9.24.64/27 via 255.9.24.65 dev eth0
255.9.24.64/27 dev eth0  proto kernel  scope link  src 255.9.24.80
default via 255.9.24.65 dev eth0

brctl is empty

# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c8:60:00:54:b5:d8 brd ff:ff:ff:ff:ff:ff
inet 255.9.24.80/27 brd 255.9.24.95 scope global eth0
inet6 fe80::ca60:ff:fe54:b5d8/64 scope link
  valid_lft forever preferred_lft forever

ご協力いただければ幸いです。

編集: kvm と cloudmin をインストールしました:

aptitude install qemu-kvm libvirt-bin
wget http://cloudmin.virtualmin.com/gpl/scripts/cloudmin-kvm-debian-install.sh
./cloudmin-kvm-debian-install.sh

再起動すると、ネットワーク構成は次のようになります。

# device: eth0
iface eth0 inet manual

# default route to access subnet


iface br0 inet static
    address 255.9.24.80
    netmask 255.255.255.224
    broadcast 255.9.24.95
    network 255.9.24.64
    bridge_ports eth0
    gateway 255.9.24.65

Cloudmin で開始 IP を 255.46.187.153、終了 IP を 255.46.187.158 に設定しました。CIDR は 29、ゲートウェイは 255.46.187.152 です。

ubuntuserver 12.04 x64 でゲストをインストールしました。インストール中はインターネット リソースを取得および取得できましたが、現在は何もアクセスできず、何もアクセスできなくなりました。ネットワーク構成は次のとおりです。

iface eth0 inet static
 address 255.46.187.153
 netmask 255.255.255.224
 broadcast 255.46.187.159
 gateway 255.46.187.152
 dns-nameservers <host provided nameservers>

また、DNS または直接 IP 経由で google.com に ping できず、外部またはホストから VM に ping できません。何かアイデアはありますか?

答え1

ゲストに設定されているゲートウェイはホスト マシンの IP ではないため、ゲストで次の設定を試します。

auto eth0
iface eth0 inet static
       address 255.46.187.153
       netmask 255.255.255.255
       gateway 255.9.24.80
       pointopoint 255.9.24.80
       dns-nameservers <host provided nameservers>
       up ip addr add 255.46.187.154 dev eth0

ホスト上でも、ゲストへのルートを追加し、これを/etc/network/interfacesに追加してください。

iface eth0 inet static
       (...)
       up route add -host 255.46.187.153 dev br0
       up route add -host 255.46.187.154 dev br0

この方法では、ゲストにネットワーク アドレスとブロードキャスト アドレス (255.46.187.152 と 255.46.187.159) を使用できます。

いくつかのリソース(英語ではないのでご容赦ください):

http://www.ingent.net/ca/2012/03/server-virtualization-kvm-hetzner/(カタロニア語)

http://wiki.hetzner.de/index.php/KVM_mit_Nutzung_aller_IPs_-_the_easy_way(ドイツ人)

答え2

VM がホストと同じネットワーク上にない場合は、ホストを VM のルーターとして設定する必要がある場合があります。

iptables --table nat --append POSTROUTING --out-interface br0 -j MASQUERADE
iptables --append FORWARD --in-interface br0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

編集: 「マスカレード」については申し訳ありません。手元にあったスクリプトをコピーして貼り付けただけです。あなたの場合、それは必要ありません。ただし、VM にプライベート IP を割り当てたい場合など、別の場合には役立つことがあります。

関連情報