하나의 호스트 IP와 머신용 다른 서브넷이 있는 KVM

하나의 호스트 IP와 머신용 다른 서브넷이 있는 KVM

나는 이미 적절한 IP 구성으로 KVM 호스트를 설정했지만 내 호스트에서는 DHCP를 생성하고 이를 사용하여 IP를 컴퓨터에 할당하도록 했습니다. 더 쉬운(또는 더 나은) 방법이 있는지 알고 싶습니다. 처음 이 일을 시작했을 때 나는 올바른 방향을 가리키는 어떤 것도 찾지 못했습니다. Debian 6.0 x64를 새로 설치할 예정이므로 아무것도 설치되어 있지 않습니다. 로그인하여 아래 정보를 문의하고 호스트 설정 1의 비밀번호를 변경했습니다.

나는 다음과 같은 초기 네트워크 구성을 갖춘 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 중 하나에는 두 개의 IP가 할당되어 있어야 하고 외부에서 액세스할 수 있어야 합니다. Cloudmin을 사용하여 어떻게 할 수 있나요? 여기에 대해 질문이 있었습니다.하나의 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

편집: "MASQUERADE"에 대해 죄송합니다. 그냥 제가 가지고 있던 스크립트를 복사하여 붙여넣었습니다. 귀하의 경우에는 필요하지 않습니다. 그러나 VM에 비공개 IP를 제공하려는 경우와 같은 다른 경우에는 유용할 수 있습니다.

관련 정보