Ero sivun ”Virtuaalisen järjestelmän verkkosiltaus” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(muotoilu bugaa)
 
(muotoilua)
Rivi 13: Rivi 13:
Tästä eteenpäin seuraa gentoo-kohtaista testausjärjestelmän pystytystä. Järjestelmän qemu-system -binääri on viallinen. Käännetään qemu, kvm ja libvirt uudelleen. Gentoo-pohjaisessa järjestelmässä tämä käy helposti paketinhallinnan kautta.
Tästä eteenpäin seuraa gentoo-kohtaista testausjärjestelmän pystytystä. Järjestelmän qemu-system -binääri on viallinen. Käännetään qemu, kvm ja libvirt uudelleen. Gentoo-pohjaisessa järjestelmässä tämä käy helposti paketinhallinnan kautta.


libvirtError: internal error Cannot determine QEMU argv syntax /usr/bin/qemu-system-x86_64
libvirtError: internal error Cannot determine QEMU argv syntax /usr/bin/qemu-system-x86_64




System.map pitää linkittää jotta voi kääntää kernel-moduleja (bugi distrossa):
System.map pitää linkittää jotta voi kääntää kernel-moduleja (bugi distrossa):


ariloulaleelay ~ # ln -s /boot/System.map-genkernel-x86_64-2.6.27-sabayon /lib/modules/2.6.27-sabayon/build/System.map
ariloulaleelay ~ # ln -s /boot/System.map-genkernel-x86_64-2.6.27-sabayon /lib/modules/2.6.27-sabayon/build/System.map


Qemu täytyy kääntää gcc-3:lla!
Qemu täytyy kääntää gcc-3:lla!
 
  >>> Emerging (1 of 1) app-emulation/qemu-softmmu-0.9.1-r3
>>> Emerging (1 of 1) app-emulation/qemu-softmmu-0.9.1-r3
  * qemu-0.9.1.tar.gz RMD160 SHA1 SHA256 size ;-) ...                                                                                                [ ok ]
* qemu-0.9.1.tar.gz RMD160 SHA1 SHA256 size ;-) ...                                                                                                [ ok ]
  * checking ebuild checksums ;-) ...                                                                                                                [ ok ]
* checking ebuild checksums ;-) ...                                                                                                                [ ok ]
  * checking auxfile checksums ;-) ...                                                                                                                [ ok ]
* checking auxfile checksums ;-) ...                                                                                                                [ ok ]
  * checking miscfile checksums ;-) ...                                                                                                              [ ok ]
* checking miscfile checksums ;-) ...                                                                                                              [ ok ]
  * qemu requires gcc-3 in order to build and work correctly
* qemu requires gcc-3 in order to build and work correctly
  * please compile it switching to gcc-3.
* please compile it switching to gcc-3.
  * We are aware that qemu can guess a gcc-3 but this feature
* We are aware that qemu can guess a gcc-3 but this feature
  * could be harmful.
* could be harmful.
 


Qemu käännettiin versiolla 3.4.6, muilla kääntäjä on järjestelmän oletus: gcc-4.3.2. Tässä asennetut paketit:
Qemu käännettiin versiolla 3.4.6, muilla kääntäjä on järjestelmän oletus: gcc-4.3.2. Tässä asennetut paketit:


Wed Feb 25 16:46:08 2009 >>> sys-devel/gcc-3.4.6-r2
  Wed Feb 25 16:46:08 2009 >>> sys-devel/gcc-3.4.6-r2
Wed Feb 25 16:55:31 2009 >>> app-emulation/qemu-softmmu-0.9.1-r3
  Wed Feb 25 16:55:31 2009 >>> app-emulation/qemu-softmmu-0.9.1-r3
Wed Feb 25 17:05:27 2009 >>> app-emulation/qemu-0.9.1
  Wed Feb 25 17:05:27 2009 >>> app-emulation/qemu-0.9.1
Wed Feb 25 17:08:20 2009 >>> app-emulation/libvirt-0.5.1
  Wed Feb 25 17:08:20 2009 >>> app-emulation/libvirt-0.5.1
Wed Feb 25 17:13:01 2009 >>> app-emulation/kqemu-1.3.0_pre11
  Wed Feb 25 17:13:01 2009 >>> app-emulation/kqemu-1.3.0_pre11
Wed Feb 25 17:19:45 2009 >>> app-emulation/kvm-84
  Wed Feb 25 17:19:45 2009 >>> app-emulation/kvm-84
Wed Feb 25 17:22:20 2009 >>> app-emulation/virtinst-0.400.0
  Wed Feb 25 17:22:20 2009 >>> app-emulation/virtinst-0.400.0
Wed Feb 25 17:22:45 2009 >>> app-emulation/virt-viewer-0.0.3
  Wed Feb 25 17:22:45 2009 >>> app-emulation/virt-viewer-0.0.3
Wed Feb 25 17:23:21 2009 >>> app-emulation/virt-manager-0.6.0-r1
  Wed Feb 25 17:23:21 2009 >>> app-emulation/virt-manager-0.6.0-r1




Rivi 49: Rivi 47:


== Verkko ==
== Verkko ==
-------


eth0 on kytketty reitittimeen NAT1 192.168.1.0/24, joka on kytketty palomuurin kautta internetiin. Tämä simuloi sisäverkkoa, joka sillataan virtuaalikoneelle. Tällä liitännällä ei tule olla omaa ip-osoitetta isäntäjärjestelmässä.
eth0 on kytketty reitittimeen NAT1 192.168.1.0/24, joka on kytketty palomuurin kautta internetiin. Tämä simuloi sisäverkkoa, joka sillataan virtuaalikoneelle. Tällä liitännällä ei tule olla omaa ip-osoitetta isäntäjärjestelmässä.


eth0      Link encap:Ethernet  HWaddr 00:18:f3:16:aa:7f
eth0      Link encap:Ethernet  HWaddr 00:18:f3:16:aa:7f




eth1 on toinen verkko, joka on kytketty reittimeen NAT2 192.168.0.0/24. Tämä simuloi sisäverkkoa, mutta sen kautta ei ole pääsyä internetiin. Fyysisesti tämä on täysin erillinen verkosta NAT1.
eth1 on toinen verkko, joka on kytketty reittimeen NAT2 192.168.0.0/24. Tämä simuloi sisäverkkoa, mutta sen kautta ei ole pääsyä internetiin. Fyysisesti tämä on täysin erillinen verkosta NAT1.


eth1      Link encap:Ethernet  HWaddr 00:20:18:8e:43:32
eth1      Link encap:Ethernet  HWaddr 00:20:18:8e:43:32
inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0


Routet ovat vielä asetettu siten, että host on kytketty eth0:n kautta verkkoon NAT1, johon tullaan kytkemään bridge.
Routet ovat vielä asetettu siten, että host on kytketty eth0:n kautta verkkoon NAT1, johon tullaan kytkemään bridge.


$ route
  $ route
Kernel IP routing table
  Kernel IP routing table
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
  Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
192.168.1.0    *              255.255.255.0  U    0      0        0 eth0
  192.168.1.0    *              255.255.255.0  U    0      0        0 eth0
192.168.0.0    *              255.255.255.0  U    0      0        0 eth1
  192.168.0.0    *              255.255.255.0  U    0      0        0 eth1
192.168.122.0  *              255.255.255.0  U    0      0        0 virbr0
  192.168.122.0  *              255.255.255.0  U    0      0        0 virbr0
loopback        ariloulaleelay  255.0.0.0      UG    0      0        0 lo
  loopback        ariloulaleelay  255.0.0.0      UG    0      0        0 lo
default        192.168.1.1    0.0.0.0        UG    0      0        0 eth0
  default        192.168.1.1    0.0.0.0        UG    0      0        0 eth0




Rivi 82: Rivi 79:
The guest VM will have an associated tun device created with a name of vnetN, which can also be overridden with the <target> element. The tun device will be enslaved to the bridge. The IP range / network configuration is whatever is used on the LAN. This provides the guest VM full incoming & outgoing net access just like a physical machine.  
The guest VM will have an associated tun device created with a name of vnetN, which can also be overridden with the <target> element. The tun device will be enslaved to the bridge. The IP range / network configuration is whatever is used on the LAN. This provides the guest VM full incoming & outgoing net access just like a physical machine.  


Luotu bridge.xml ja sille UUID uuidgen:llä.
Luotu bridge.xml ja sille UUID <tt>uuidgen</tt>:llä.
 
  <network>
    <name>bridge</name>
    <uuid>4aa7bd44-302e-4bcd-896b-34c83be1dec0</uuid>
    <bridge name='br0' stp='on' forwardDelay='0' />
    <interface type='bridge'>
    <!-- tässä määritellään laite joka on kytketty haluttuun ulkoverkkoon -->
      <source bridge='eth0'/>
      <target dev='vnet0'/>
    </interface>
    <!-- tämä on ip jonka eth0 saa -->
    <ip address='192.168.1.100' netmask='255.255.255.0'>
    <!-- virtuaalikoneiden ip-määritykset, näitä ei käytetä mikäli verkossa on dhcp -->
      <dhcp>
        <range start='192.168.1.101' end='192.168.1.254' />
      </dhcp>
    </ip>
  </network>
 
 


Ladataan määritykset
Ladataan määritykset


$ virsh net-define bridge.xml
  $ virsh net-define bridge.xml
Verkko bridge määritetty tiedostosta bridge.xml
  Verkko bridge määritetty tiedostosta bridge.xml
 
$ virsh net-start bridge
  $ virsh net-start bridge
Verkko bridge käynnistetty
  Verkko bridge käynnistetty
 
$ virsh net-list
  $ virsh net-list
Nimi                Tila      Automaattikäynnistys
  Nimi                Tila      Automaattikäynnistys
-----------------------------------------
  -----------------------------------------
bridge              aktiivinen no
  bridge              aktiivinen no
default              aktiivinen yes
  default              aktiivinen yes


Tämä luo automaattisesti sillan "br0".
Tämä luo automaattisesti sillan "br0".
Rivi 104: Rivi 121:
br0:aan yhdistetään eth0. libvirt yhdistää itse luomansa laitteen ”vnet0”.
br0:aan yhdistetään eth0. libvirt yhdistää itse luomansa laitteen ”vnet0”.


# brctl addif br0 eth0
# brctl addif br0 eth0






Määritetään sillan route:
Määritetään sillan route:
# route add -net 192.168.1.0 netmask 255.255.255.0 dev br0
  # route add -net 192.168.1.0 netmask 255.255.255.0 dev br0


Muut routet korjataan aiemmasta konfiguraatiosta, tässä niiden määritykset:
Muut routet korjataan aiemmasta konfiguraatiosta, tässä niiden määritykset:
# route del -net 192.168.1.0 netmask 255.255.255 dev eth0
  # route del -net 192.168.1.0 netmask 255.255.255 dev eth0
# route del default gw 192.168.1.1
  # route del default gw 192.168.1.1


# route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
  # route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
# route add default gw 192.168.0.1 netmask 255.255.255.0 dev eth1
  # route add default gw 192.168.0.1 netmask 255.255.255.0 dev eth1


# route
  # route
Kernel IP routing table
  Kernel IP routing table
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
  Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
default        192.168.0.1    255.255.255.0  UG    0      0        0 eth1
  default        192.168.0.1    255.255.255.0  UG    0      0        0 eth1
192.168.1.0    *              255.255.255.0  U    0      0        0 br0
  192.168.1.0    *              255.255.255.0  U    0      0        0 br0
192.168.0.0    *              255.255.255.0  U    0      0        0 eth1
  192.168.0.0    *              255.255.255.0  U    0      0        0 eth1
192.168.122.0  *              255.255.255.0  U    0      0        0 virbr0
  192.168.122.0  *              255.255.255.0  U    0      0        0 virbr0
loopback        ariloulaleelay  255.0.0.0      UG    0      0        0 lo
  loopback        ariloulaleelay  255.0.0.0      UG    0      0        0 lo






Sillä internet kulkee hostilla eth0:sta, sen ei pitäisi nyt toimia:
Sillä internet kulkee hostilla eth0:sta, sen ei pitäisi nyt toimia:
ariloulaleelay $ ping google.fi
ariloulaleelay $ ping google.fi
connect: Network is unreachable
connect: Network is unreachable


Kun virtuaalikone on päällä, pingaus sillan kautta pitäisi toimia:
Kun virtuaalikone on päällä, pingaus sillan kautta NAT1:een pitäisi toimia:


ariloulaleelay $ ping 192.168.1.14
ariloulaleelay $ ping 192.168.1.14
PING 192.168.1.14 (192.168.1.14) 56(84) bytes of data.
PING 192.168.1.14 (192.168.1.14) 56(84) bytes of data.
64 bytes from 192.168.1.14: icmp_seq=1 ttl=64 time=2.67 ms
64 bytes from 192.168.1.14: icmp_seq=1 ttl=64 time=2.67 ms


Samoin kuin ”sisäverkossa” olevien koneiden, joilla on eri route.
Samoin kuin NAT2:n ”sisäverkossa” olevien koneiden, joilla on eri route.


ariloulaleelay $ ping 192.168.0.101
ariloulaleelay $ ping 192.168.0.101
Rivi 147: Rivi 164:


Dnsmasq ei ole päällä. Jos se olisi, sen konfiguraation olisi lisättävä
Dnsmasq ei ole päällä. Jos se olisi, sen konfiguraation olisi lisättävä
except-interfaces=br0
except-interfaces=br0





Versio 27. helmikuuta 2009 kello 20.20

Muistiinpanoja verkkosillan rakentamisesta virtualisoituun asiakkaaseen.


Host A

Isäntäkoneen käyttöjärjestelmä on Sabayon linux 4.0. Tämä on gentoo-pohjainen ja sopii erinomaisesti mm. testailuun.

Linux ariloulaleelay 2.6.27-sabayon #1 SMP Sat Dec 20 16:15:56 UTC 2008 x86_64 Intel(R) Core(TM)2 CPU 4300 @ 1.80GHz GenuineIntel GNU/Linux

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2
                  ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good nopl pni monitor ds_cpl est tm2 ssse3 cx16 xtpr lahf_lm

Tästä eteenpäin seuraa gentoo-kohtaista testausjärjestelmän pystytystä. Järjestelmän qemu-system -binääri on viallinen. Käännetään qemu, kvm ja libvirt uudelleen. Gentoo-pohjaisessa järjestelmässä tämä käy helposti paketinhallinnan kautta.

libvirtError: internal error Cannot determine QEMU argv syntax /usr/bin/qemu-system-x86_64


System.map pitää linkittää jotta voi kääntää kernel-moduleja (bugi distrossa):

ariloulaleelay ~ # ln -s /boot/System.map-genkernel-x86_64-2.6.27-sabayon /lib/modules/2.6.27-sabayon/build/System.map

Qemu täytyy kääntää gcc-3:lla!

 >>> Emerging (1 of 1) app-emulation/qemu-softmmu-0.9.1-r3
 * qemu-0.9.1.tar.gz RMD160 SHA1 SHA256 size ;-) ...                                                                                                 [ ok ]
 * checking ebuild checksums ;-) ...                                                                                                                 [ ok ]
 * checking auxfile checksums ;-) ...                                                                                                                [ ok ]
 * checking miscfile checksums ;-) ...                                                                                                               [ ok ]
 * qemu requires gcc-3 in order to build and work correctly
 * please compile it switching to gcc-3.
 * We are aware that qemu can guess a gcc-3 but this feature
 * could be harmful.

Qemu käännettiin versiolla 3.4.6, muilla kääntäjä on järjestelmän oletus: gcc-4.3.2. Tässä asennetut paketit:

 Wed Feb 25 16:46:08 2009 >>> sys-devel/gcc-3.4.6-r2
 Wed Feb 25 16:55:31 2009 >>> app-emulation/qemu-softmmu-0.9.1-r3
 Wed Feb 25 17:05:27 2009 >>> app-emulation/qemu-0.9.1
 Wed Feb 25 17:08:20 2009 >>> app-emulation/libvirt-0.5.1
 Wed Feb 25 17:13:01 2009 >>> app-emulation/kqemu-1.3.0_pre11
 Wed Feb 25 17:19:45 2009 >>> app-emulation/kvm-84
 Wed Feb 25 17:22:20 2009 >>> app-emulation/virtinst-0.400.0
 Wed Feb 25 17:22:45 2009 >>> app-emulation/virt-viewer-0.0.3
 Wed Feb 25 17:23:21 2009 >>> app-emulation/virt-manager-0.6.0-r1



Verkko

eth0 on kytketty reitittimeen NAT1 192.168.1.0/24, joka on kytketty palomuurin kautta internetiin. Tämä simuloi sisäverkkoa, joka sillataan virtuaalikoneelle. Tällä liitännällä ei tule olla omaa ip-osoitetta isäntäjärjestelmässä.

	eth0      Link encap:Ethernet  HWaddr 00:18:f3:16:aa:7f


eth1 on toinen verkko, joka on kytketty reittimeen NAT2 192.168.0.0/24. Tämä simuloi sisäverkkoa, mutta sen kautta ei ole pääsyä internetiin. Fyysisesti tämä on täysin erillinen verkosta NAT1.

	eth1      Link encap:Ethernet  HWaddr 00:20:18:8e:43:32
		inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0

Routet ovat vielä asetettu siten, että host on kytketty eth0:n kautta verkkoon NAT1, johon tullaan kytkemään bridge.

 $ route
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
 192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
 192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0
 loopback        ariloulaleelay  255.0.0.0       UG    0      0        0 lo
 default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0


Luodaan uusi verkkoyhteys ”Bridge to to LAN”

Ks. myös [1]

”This is the recommended config for general guest connectivity on hosts with static wired networking configs. Provides a bridge from the VM directly onto the LAN. This assumes there is a bridge device on the host which has one or more of the hosts physical NICs enslaved.”

Tämä on br0, jolla on hallussa eth0.

The guest VM will have an associated tun device created with a name of vnetN, which can also be overridden with the <target> element. The tun device will be enslaved to the bridge. The IP range / network configuration is whatever is used on the LAN. This provides the guest VM full incoming & outgoing net access just like a physical machine.

Luotu bridge.xml ja sille UUID uuidgen:llä.

 <network>
   <name>bridge</name>
   <uuid>4aa7bd44-302e-4bcd-896b-34c83be1dec0</uuid>
   <bridge name='br0' stp='on' forwardDelay='0' />
   <interface type='bridge'>
     <target dev='vnet0'/>
   </interface>
   <ip address='192.168.1.100' netmask='255.255.255.0'>
     <dhcp>
       <range start='192.168.1.101' end='192.168.1.254' />
     </dhcp>
   </ip>
 </network>


Ladataan määritykset

 $ virsh net-define bridge.xml
 Verkko bridge määritetty tiedostosta bridge.xml
 $ virsh net-start bridge
 Verkko bridge käynnistetty
 $ virsh net-list
 Nimi                 Tila       Automaattikäynnistys
 -----------------------------------------
 bridge               aktiivinen no
 default              aktiivinen yes

Tämä luo automaattisesti sillan "br0".

”An ethernet bridge is a device commonly used to connect different networks of ethernets together, so that these ethernets will appear as one ethernet to the participants. Each of the ethernets being connected corresponds to one physical interface in the bridge.”

br0:aan yhdistetään eth0. libvirt yhdistää itse luomansa laitteen ”vnet0”.

	 # brctl addif br0 eth0


Määritetään sillan route:

 	# route add -net 192.168.1.0 netmask 255.255.255.0 dev br0

Muut routet korjataan aiemmasta konfiguraatiosta, tässä niiden määritykset:

 # route del -net 192.168.1.0 netmask 255.255.255 dev eth0
 # route del default gw 192.168.1.1
 # route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
 # route add default gw 192.168.0.1 netmask 255.255.255.0 dev eth1
 # route
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 default         192.168.0.1     255.255.255.0   UG    0      0        0 eth1
 192.168.1.0     *               255.255.255.0   U     0      0        0 br0
 192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
 192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0
 loopback        ariloulaleelay  255.0.0.0       UG    0      0        0 lo


Sillä internet kulkee hostilla eth0:sta, sen ei pitäisi nyt toimia:

	ariloulaleelay $ ping google.fi
	connect: Network is unreachable

Kun virtuaalikone on päällä, pingaus sillan kautta NAT1:een pitäisi toimia:

	ariloulaleelay $ ping 192.168.1.14
	PING 192.168.1.14 (192.168.1.14) 56(84) bytes of data.
	64 bytes from 192.168.1.14: icmp_seq=1 ttl=64 time=2.67 ms

Samoin kuin NAT2:n ”sisäverkossa” olevien koneiden, joilla on eri route.

ariloulaleelay $ ping 192.168.0.101 PING 192.168.0.101 (192.168.0.101) 56(84) bytes of data. 64 bytes from 192.168.0.101: icmp_seq=1 ttl=64 time=0.449 ms


Dnsmasq ei ole päällä. Jos se olisi, sen konfiguraation olisi lisättävä

	except-interfaces=br0



Guest A:


Gentoo 2008.0 x86 livecd, ei käynnistä X:ää ja on kevyt testaukseen. Livecd sisältää ssh-palvelimen.

Jotta guest voi kytkeytyä siltaan, tarvitaan 'tun'-moduli. Ladataan myös virtualisointimodulit.

modprobe tun modprobe kqemu modprobe kvm

Sitten käynnistetään guest:

$ virt-install --connect=qemu:///system \ --name=gentoo \ --nodisks \ --cdrom=var/iso/install-x86-minimal-2008.0.iso \ --ram=1024 \ --network bridge:br0

br0:lla on nyt eth0:n MAC-osoite ja siltaan on yhdistetty myös vnet0. Kun guest on käynnistynyt se hakee ip-osoitteen omaan virtuaaliliitäntäänsä eth0, mutta isännän vnet0 ei saa ipv4-osoitetta.

$ brctl show bridge name bridge id STP enabled interfaces br0 8000.0018f316aa7f yes eth0 vnet0 virbr0 8000.000000000000 yes


Samassa verkossa eth0:n kanssa olevat koneet voivat nyt liikennöidä virtuaalikoneen kanssa NATin/palomuurin sääntöjen mukaan.