Linux router + KVM

Jan Houstek Jan na houstek.net
Čtvrtek Únor 3 12:22:04 CET 2011


On Thu, 3 Feb 2011, Martin Tiršel wrote:
> Zdravim,
>
> mam Debian server s dvomi sietovkami, jedna do internetu (je tam /29 
> podsiet, takze realne 4 pouzitelne IP), druha lokalna siet. Budem tam 
> teraz musiet instalovat KVM a v ramci virtualneho servera pobezi 
> Asterisk.

Nejuniverzálnější způsob je přes bridge v hostitelském systému, guest 
síťovka je přes tap driver napojena na tap interface v hostiteli (qemu-kvm 
-net tap) a tam s ním lze dělat cokoliv standardními nástroji, nejčastěji 
zařazení do bridge.

Velmi nové verze KVM a kernelu pak mají řadu dalších možností vesměs 
motivovaných zlepšením výkonu a propustnosti. Např. neposílat data mezi 
tap driverem a guestem v userspace přes qemu, ale přímo v hostitelském 
kernelu přes vhost driver. Nebo lze přiřadit virtuálu dedikovanou fyzickou 
síťovku (je třeba podpora VT-d/IOMMU), pokud náhodou máte jednu z těch pár 
podporovaných, tak dokonce fyzickou síťovku rozdělit na více virtuálních 
pomocí SR-IOV. Pokud si to nechcete komplikovat, tak tento odstavec v 
klidu ignorujte.

> Asterisk vo virtuale by mal byt jednou stranou v internete, druhou v 
> lokalnej sieti (pokial viem, SIP sa velmi nema rad s NATom, tak ho 
> nechcem provokovat). Ako by mali spravne vyzerat interfejsy? Ak mam 
> teraz eth0 (von) a eth1 (lokalka), aky bude stav po tom, co pobezi 
> virtual a zaroven ostane zachovana funkcia routra na hostitelskom 
> severi? Staci mi vediet, ako ma vyzerat vysledok, preco je tomu tak a 
> ako sa k tomu dopracovat uz si nastudujem.

1) předělat hostitel (router) tak, aby místo eth0 a eth1 používal bridge 
br0, br1, ve kterých budou ty fyzické interfacy zařazení. Je třeba mít 
nainstalované bridge-utils. Debian už jsem nějaký čas neviděl, ale tuším 
že se to dělalo v /etc/network/interfaces nějak takto:

iface eth0 inet manual	# zabrani cokoliv nakonfigurovat primo na eth0

iface br0 inet static
   bridge_ports eth0
   address ...		# nastaveni co puvodne bylo u eth0
   netmask ...

2) upravit všude na hostiteli ethX -> brX (iptables, síťové služby, pokud 
mají v konfiguraci interface kde poslouchají ...)

3) KVM virtuálu vytvořit dvě síťovky a přiřadit je do br0 a br1 (konkrétní 
postup závisí na tom, jestli spouštíte qemu-kvm přímo, nebo přes nějakou 
nadstavbu typu libvirt).

Vypadat to bude tak, jako byste místo virtuálu měl fyzický stroj se dvěma 
síťovkami a přes switch jednu spojil s lokální a druhou s vnější sítí. 
Pokud na tom virtuálu bude jen asterisk, tak by asi nemusel routovat 
(net.ipv4.ip_forward=0  v /etc/sysctl.conf).

> Problem je, ze ohladom sieti sa zasa az tak nevyznam, iptables uz vobec 
> a aj to KVM bude pre mna novinka :)
[...]
> Rad by som sa teraz vyhol tomu, ze budem musiet dva tyzdne studovat 
> vsetko okolo nastavenia sieti v Linuxu, aby som bol schopny to navrhnut 
> sam.

Fakt vám do toho nechci kecat, ale znalost síťování a iptables by se
správci linuxového routeru občas mohla i hodit ...

-- HH


Další informace o konferenci Linux