Я уже настроил хост KVM с правильными конфигурациями IP, но мой хост заставил меня создать 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-сервер, что означает, что одной из этих виртуальных машин должны быть назначены два IP-адреса, доступные из внешнего мира. Как это сделать с помощью Cloudmin? У меня возник вопрос по этому поводу здесь:Несколько IP-адресов, назначенных одной виртуальной машине KVMНо я только что переформатировал весь сервер и пытаюсь найти лучший способ сделать это.
Информация о машине:
# 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
Спасибо за любую помощь, которую вы можете мне оказать.
EDIT: Я установил 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>
И не могу пропинговать google.com через DNS или прямой IP, не могу пропинговать виртуальную машину извне или с хоста. Есть какие-нибудь идеи сейчас?
решение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
Если виртуальная машина и хост не находятся в той же сети, вам может потребоваться настроить хост в качестве маршрутизатора для виртуальных машин:
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
Редактировать: Извините за "МАСКАРАД", я просто скопировал-вставил скрипт, который у меня был. В вашем случае он вам не нужен. Но он может быть полезен в другом случае, например, когда вы хотите дать своим виртуальным машинам частные IP-адреса.