適切な 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 を割り当てたい場合など、別の場合には役立つことがあります。