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