abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:22 | Zajímavý software

    BreadboardOS je firmware pro Raspberry Pi Pico (RP2040) umožňující s tímto MCU komunikovat pomocí řádkového rozhraní (CLI). Využívá FreeRTOS a Microshell.

    Ladislav Hagara | Komentářů: 0
    včera 16:55 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 24.05. Přehled novinek i s náhledy a videi v oficiálním oznámení. Do balíku se dostalo 5 nových aplikací: Audex, Accessibility Inspector, Francis, Kalm a Skladnik.

    Ladislav Hagara | Komentářů: 1
    včera 12:55 | Nová verze

    Byla vydána (𝕏) nová verze 18.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    22.5. 23:44 | Pozvánky

    V neděli 26. května lze navštívit Maker Faire Rychnov nad Kněžnou, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    22.5. 16:33 | Nová verze

    Byla vydána nová stabilní verze 3.20.0, tj. první z nové řady 3.20, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Z novinek lze vypíchnou počáteční podporu 64bitové architektury RISC-V.

    Ladislav Hagara | Komentářů: 0
    22.5. 14:11 | IT novinky

    Společnost Jolla na akci s názvem Jolla Love Day 2 - The Jolla comeback představila telefon se Sailfish OS 5.0 Jolla Community Phone (ve spolupráci se společností Reeder) a počítač Jolla Mind2 Community Edition AI Computer.

    Ladislav Hagara | Komentářů: 5
    22.5. 12:33 | Nová verze

    LibreOffice 24.8 bude vydán jako finální v srpnu 2024, přičemž LibreOffice 24.8 Alpha1 je první předběžnou verzí od začátku vývoje verze 24.8 v prosinci 2023. Od té doby bylo do úložiště kódu odesláno 4448 commitů a více než 667 chyb bylo v Bugzille nastaveno jako opravené. Nové funkce obsažené v této verzi LibreOffice najdete v poznámkách k vydání.

    ZCR | Komentářů: 0
    21.5. 23:33 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 141 (pdf) a HackSpace 78 (pdf).

    Ladislav Hagara | Komentářů: 0
    21.5. 21:22 | Nová verze

    Byla vydána verze 2.0.0 programovacího jazyka Kotlin (Wikipedie, GitHub). Oficiálně bude představena ve čtvrtek na konferenci KotlinConf 2024 v Kodani. Livestream bude možné sledovat na YouTube.

    Ladislav Hagara | Komentářů: 2
    21.5. 12:55 | Nová verze

    Byla vydána nová major verze 27.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (82%)
     (4%)
     (7%)
     (7%)
    Celkem 517 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Linux-VServer a OpenVZ - síťová rozhraní

    5. 9. 2007 | Jaroslav Tomeček | Systém | 7313×

    Po úvodních dílech, které se zabývaly instalací systému a tvorbou serverů, se zaměříme na správu a konfiguraci. Začneme sítěmi.

    Virtualizace síťových rozhraní je implementačně jednou z nejproblematičtějších oblastí virtualizačních nástrojů. Virtualizovaná síť musí být rychlá a spolehlivá, ale přitom nesmí příliš zatěžovat procesor. Řešením může být virtuální síťový hardware simulující funkčnost skutečného zařízení nebo rozšíření funkcí a služeb jádra tak, aby bylo možné navázat určité IP adresy určitým procesům. To však s sebou přináší mnohé problémy jako je například adresace loopback a multicastu.

    Linux-VServer

    Linux-VServer pro síťové rozhraní rozšiřuje funkce a služby jádra, avšak pracuje pouze s IP vrstvou ISO-OSI modelu. Nelze tedy například udělit virtuálnímu serveru MAC adresu. Systém umožňuje prostřednictvím utility chbind navázat určitou IP adresu na proces a všechny jeho potomky. Stejná IP adresa virtuálního serveru je připojena ke všem procesům kontextu. Je možné, aby síťové zařízení mělo z pohledu přiřazeného serveru zvláštní jméno. Do Linux-VServeru není zatím implementována podpora IPv6. Současné verze nepodporují multicast ani loopback adresaci kontextů.

    Nastavení síťových rozhraní

    Nastavit síťová rozhraní můžeme už při vytváření virtuálního serveru přepínačem --interface utility vserver. Argumentem tohoto přepínače může být například guest0=eth0:10.0.0.19/32, kde guest0 je jméno virtuálního rozhraní, eth0 jemu odpovídající fyzické rozhraní, za dvojtečkou následuje IP adresa s délkou prefixu za lomítkem. Virtuální jméno, prefix a IP adresa nejsou povinné údaje a pokud je neuvedeme, použijí se standardní nastavení. Vynecháme-li například virtuální jméno, bude v kontextu pojmenováno stejně jako fyzické.

    Další přepínač je --netdev <dev>, jehož prostřednictvím určíme síťové zařízení, které bude kontext využívat. Argumentem --netbcast <broadcast> konfigurujeme broadcast adresu a jeden z dvojice přepínačů --netmask a --netprefix pro konfiguraci síťové masky, resp. síťového prefixu. Žádný z těchto přepínačů není povinný.

    Síťové nastavení kontextů se uchovává v adresářích /etc/vservers/<ID_of_vserver>/. Každému rozhraní odpovídá jeden podadresář pojmenovaný dvoumístným číslem, počínající adresářem 00. Adresáře mohou obsahovat tyto soubory:

    • bcast – Nastavuje broadcast adresu.
    • dev – Nastavuje přidělení fyzického síťového zařízení.
    • disabled – Pokud tento soubor existuje, nebude rozhraní aktivováno.
    • ip – IP adresa přiřazená k tomuto rozhraní.
    • mask – Nastavuje síťovou masku.
    • name – Pokud soubor existuje, bude rozhraní z pohledu kontextu pojmenováno podle obsahu tohoto souboru. Bez takového záznamu nebude IP zobrazena s ifconfig, pouze s ip_addr_ls. Toto pojmenování se označuje jako „alias“.
    • nodev – Existuje-li, převezme se IP adresa z jiného rozhraní. Využít jej můžeme pro připojení síťového rozhraní vytvořeného jiným virtuálním serverem nebo hostitelským systémem.
    • novlandev – Existuje-li, budou přeskočeny kroky pro vytváření a rušení VLAN rozhraní. Soubor má vyšší prioritu než soubor ./vlandev a soubor globálního nastavení /etc/vservers/.defaults/interfaces/vlandev.
    • prefix – Nastavuje síťový prefix.
    • vlandev a /etc/vservers/.defaults/interfaces/vlandev - Existuje-li, budou provedeny kroky pro vytváření a rušení VLAN rozhraní.

    Nastavení démonů, program chbind

    Linux-VServer ve své implementaci nevytváří virtuální síťové zařízení pro každý kontext. Z tohoto důvodu mohou mít některé démony problém s vázáním na IP adresu, pokud mají být spuštěny zvlášť v hostitelském i virtuálním serveru. K tomuto účelům je určen program systému Linux-VServer chbind.

    Pokud například budeme chtít provozovat démon httpd na hostitelském serveru s IP adresou 10.0.0.19 a zároveň na virtuálním serveru test, pak spustíme příkaz chbind na hostitelském serveru:

    # /usr/sbin/chbind --ip 10.0.0.19 /etc/rc.d/init.d/httpd \
    > restart

    Tím „navážeme“ démon httpd na hostitelském serveru na IP adresu 10.0.0.19. Poté restartujeme virtuální server test:

    # /usr/sbin/vserver test restart

    Nyní je démon httpd na obou serverech navázán na jinou IP adresou.

    Při instalaci Linux-VServeru jsou v hostitelském kontextu vytvořeny startovací skripty pro spuštění nejpoužívanějších démonů za pomoci programu chbind. Těmito skripty jsou:

    • /etc/rc.d/init.d/v_gated pro spuštění démona gated.
    • /etc/rc.d/init.d/v_named pro spuštění démona named.
    • /etc/rc.d/init.d/v_portmap pro spuštění démona portmap.
    • /etc/rc.d/init.d/v_sendmail pro spuštění démona sendmail.
    • /etc/rc.d/init.d/v_smb pro spuštění démona smb.
    • /etc/rc.d/init.d/v_sshd pro spuštění démona sshd.
    • /etc/rc.d/init.d/v_xined pro spuštění démona xined.

    chbind používáme pro navázání služeb na servery. Implicitně se totiž využívá IP adresa 0.0.0.0, což proces naváže na síťová rozhraní všech kontextů. To však může být nežádoucí. Navázání můžeme upravit například pouze na hostitelském systému.

    Volby programu chbind:

    chbind [--silent] [--ip ip_number/interface] \
     [--bcast broadcast_address] <command arguments>
    • --ip ip_number/interface – Váže proces k uvedené IP adrese, pokud je uvedeno síťové rozhraní (například eth0), pak je použita IP a broadcast adresa z nastavení tohoto rozhraní.
    • --bcast – Broadcast adresa, na kterou má být proces „navázán“.
    • --silent – Nebudou se vypisovat informace.

    OpenVZ

    Pro síťovou komunikaci mezi VPS navzájem a se serverem slouží virtuální síťová zařízení venet, které je starší a emuluje pouze komunikaci na IP vrstvě ISO-OSI modelu, a veth, které je prozatím pouze v testovacích verzích jádra a implementuje komplexní funkce síťového hardwaru. VPS tedy nekomunikuje přímo s fyzickým síťovým zařízením, i když systém OpenVZ k němu umožňuje nastavit exklusivní přístup. Můžeme tak přímo zpřístupnit například eth0 z určitého virtuálního serveru, avšak rozhraní poté není přístupné z jiných VPS a ani z hardwarového uzlu.

    Takovým „přesunem“ do VPS však ztrácíme bezpečnostní omezení, která platí pro virtuální zařízení. Lze například přímo z VE přidělit rozhraní libovolnou IP adresu nebo přepnout zařízení do promiskuitního režimu atd.

    Zařízení venet

    Zařízení venet umožňuje přidělení IPv4 adres danému VPS. Konfiguruje virtuální zařízení pro VPS a obsluhuje komunikaci virtuálních serverů. Na straně hostitelského uzlu přeposílá pakety podle IP adresy.

    Zpřístupnění zařízení eth0 ve VPS s číslem 101 provedeme příkazem:

    # vzctl set 101 --netdev_add eth0 --save

    Zařízení odebereme příkazem:

    # vzctl set 101 --netdev_del eth0 --save

    Nastavení síťového rozhraní provádíme pomocí utility vzctl s přepínačem set (s přepínačem --save pro uložení změn):

    • vzctl set VPS_ID --hostname hostname --save – Nastavuje síťové jméno hostname VPS.
    • vzctl set VPS_ID --ipadd addr --save – Přidává IP adresu addr pro VPS.
    • vzctl set VPS_ID --ipdel addr|all --save – Ruší přidělení dané/všech IP adres VPS.
    • vzctl set VPS_ID --nameserver addr --save – DNS server addr VPS (může být uvedeno více adres oddělených mezerou).
    • vzctl set VPS_ID --searchdomain domain --save – DNS search domény VPS (může být uvedeno více domén oddělených mezerou).

    Síťové zařízení veth

    Virtuální zařízení venet umožňuje přidělit VPS pouze IP adresu. V některých případech je však vyžadována vyšší míra virtualizace, kdy bychom chtěli mít plně virtualizované zařízení. V testovacích verzích jádra systému OpenVZ je implementováno zařízení veth. Toto zařízení má vlastní MAC adresu. Dovoluje také použití IPv6.

    OpenVZ vytváří virtuální bridge propojující zařízení VPS veth s fyzickým zařízením. Správce VE může konfigurovat síť podle svého přání včetně IP adres, gateway, ...

    Mechanismus je implementován jako dvě virtuální zařízení. Jedno v hostitelském uzlu a další ve VPS a obě jsou propojena. Pokud jej přijme jedna strana a je určený pro druhou, přeposílá se.

    Nakonfigurovat jej pro VPS můžeme následujícím způsobem:

    vzctl set VPS_ID --netif_add \
     <dev_name>,<dev_addr>,<ve_dev_name>,<ve_dev_addr>

    kde:

    • dev_name je ethernetové zařízení v hostitelském systému.
    • dev_addr je jeho MAC adresa.
    • ve_dev_name je jméno ethernetového zařízení VPS.
    • ve_dev_addr je MAC adresa z pohledu VPS.

    MAC adresy jsou uvedeny ve tvaru XX:XX:XX:XX:XX:XX. Volba je připojena do seznamu již existujících záznamů.

    Konkrétní natavení pak vypadá například takto:

    # vzctl set 101 --netif_add \
    > veth101.0,00:12:34:56:78:9A,eth0,00:12:34:56:78:9B --save

    Poté bude vytvořeno pro VPS 101 zařízení veth a jeho konfigurace se uloží. Z pohledu hostitelského sytému bude mít ethernetové zařízení jméno veth101.0 a uvedenou MAC adresu. Uvnitř VPS se zařízení bude jmenovat eth0 s MAC adresou 00:12:34:56:78:9B.

    Zařízení odebereme příkazem:

    vzctl set <VEID> --netif_del <dev_name>

    Utilita vzctl používala až do verze 3.0.14 (15. 1. 2007) přepínače --veth_add a --veth_del namísto současných --netif_add a --netif_del.

    Protože je nastavení síťového zařízení složitější, uvedu krátký příklad.

    Nejprve spustíme server s číslem 101:

    # vzctl start 101

    Přidělíme mu zařízení s názvem veth101.0 a MAC 00:12:34:56:78:9A z pohledu hostitelského serveru a eth0 s MAC 00:12:34:56:78:9B z pohledu virtuálního serveru a změnu v konfiguraci uložíme:

    # vzctl set 101 --veth_add \
     veth101.0,00:12:34:56:78:9A,eth0,00:12:34:56:78:9B --save

    Změníme nastavení rozhraní v hostitelském serveru, povolíme přeposílání paketů a proxy arp:

    [host-node]# ifconfig veth101.0 0
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/veth101.0/forwarding
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/veth101.0/proxy_arp
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

    Nakonfigurujeme síťové zařízení z pohledu VPS. Přidělíme mu adresu 192.168.0.101 a nastavíme směrovač.

    [host-node]# vzctl enter 101
    [vps-101]# /sbin/ifconfig eth0 0
    [vps-101]# /sbin/ip addr add 192.168.0.101 dev eth0
    [vps-101]# /sbin/ip route add default dev eth0

    Posledním krokem je přidání cesty z hostitele do VPS.

    [host-node]# ip route add 192.168.0.101 dev veth101.0

    Více o nastavení sítě a o konfiguraci protokolu IPv6 naleznete na wiki projektu OpenVZ.

    Shrnutí

    OpenVZ nabízí širší služby a umožňuje širší nastavení síťového rozhraní. Na rozdíl od Linux-VServeru umí pracovat s IPv6. Systém dosahuje funkcí za cenu vyšších režijních ztrát, které však nejsou příliš patrné. Postačuje-li nám pouze směrování na úrovni IP vrstvy ve verzi IPv4, pak Linux-VServer nabízí dostatečnou funkčnost, avšak je třeba vyřešit problém vázání aplikací na různé IP adresy při vícenásobném spuštění ve více virtuálních serverech. U virtuálního síťového zařízení OpenVZ tento problém nenastává.

    V Linux-VServer lze vázat procesy na IP adresy všech kontextů (IP 0.0.0.0). OpenVZ vytváří pro každý VPS virtuální síťový hardware, což podobné služby neumožňuje.

    Vývojová větev Linux-VServer nabízí upravenou implementaci navazování soketů na IP adresy pomocí bind(2). Nová verze bude umožňovat navázání soketu na množinu určitých IP adres nebo masek. V současnosti by mělo být podporováno až 16 IP adres/masek na virtuální server.

    Příště

    Naše servery již umí komunikovat se světem. Od příštího dílu se budeme zabývat především přidělením hardwarových zdrojů a jejich limity. Začneme diskovými kvótami a několik odstavců věnujeme také virtuálnímu souborovému systému proc-fs.

    Nejčtenější články posledního měsíce

    Událo se v týdnu 17/2024
    Distribuční novinky 10-15/2024
    Jaderné noviny – přehled za duben 2024

    Nejkomentovanější články posledního měsíce

    Týden na ScienceMag.cz: Kosmologové se opět zkouší vypořádat se s problémem Hubbleovy konstanty
    Týden na ITBiz: Platby výkupného za ransomware vzrostly za poslední rok na pětinásobek
    Týden na ScienceMag.cz: Upřesnili limity pro klidovou hmotnost neutrin
      všechny statistiky »

    Seriál Virtualizace na úrovni jádra (dílů: 8)

    Virtualizace na úrovni jádra operačního systému (první díl)
    <—« Linux-VServer a OpenVZ - speciál
    »—> Linux-VServer a OpenVZ - diskové limity
    Linux-VServer - správa výpočetních zdrojů (poslední díl)

    Související články

    Jaderné noviny: Souborové kvalifikace
    Jaderné noviny: KVM 15
    Jaderné noviny: Vývoj KVM
    Jaderné noviny: /dev/kvm
    Jaderné noviny: Patche Xen
    Jaderné noviny: Kontejnery procesů
    Jaderné noviny: Připojení Linuxu k hypervisorům
    Jaderné noviny: Virtualizační rozhraní VMI
    Jaderné noviny: Kontejnery a odlehčená virtualizace
    Jaderné noviny: API pro virtuální I/O: virtio
    Jaderné noviny: Virtuální čas
    Jaderné noviny: OpenVZ a checkpointing za běhu
    Jaderné noviny: Zdroje: má dáti, dal
    Chroot prostředí

    Odkazy a zdroje

    openvz.org
    Linux-VServer.org

    Další články z této rubriky

    Úvod do Dockeru (1)
    Paralelizace běžných činností v konzoli pomocí GNU Parallel
    Unixové nástroje – 26 (triky pro práci v Bashi)
    Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
    Linux: systémové volání splice()
           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    5.9.2007 07:02 hele
    Rozbalit Rozbalit vše Re: Linux-VServer a OpenVZ - síťová rozhraní
    Nejsem si uplne 100% jisty, ale od poslednich verzi linux-vserveru je problem s bindovanim jiz vyresen a neni treba specialne bindovat jen na danou ip, ale funguje i bindovani na 0.0.0.0 coz zpusobi nabindovani na vsechny ip v danem vserveru. jinak predtim stacilo mit dobre nastavene Listen (u http), nebo u ssh kam se ma nabindovat a nebylo nutne nic slozite takhle delat.
    5.9.2007 10:58 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Linux-VServer a OpenVZ - síťová rozhraní
    [host-node]# vzctl enter 101
    [vps-101]# /sbin/ifconfig eth0 0
    [vps-101]# /sbin/ip addr add 192.168.0.101 dev eth0
    [vps-101]# /sbin/ip route add default dev eth0
    

    K čemu tam je dobrý ten ifconfig? To je náhražka za 'ip addr flush dev eth0'?

    9.9.2007 22:16 Cunha
    Rozbalit Rozbalit vše Re: Linux-VServer a OpenVZ - síťová rozhraní
    Ano
    6.9.2007 10:39 Peter D.
    Rozbalit Rozbalit vše Re: Linux-VServer a OpenVZ - síťová rozhraní
    Mna by zaujimalo, co presne znamena tento parameter pri vserver:
    dev – Nastavuje přidělení fyzického síťového zařízení

    Ide o pridelenie fyzickeho sietoveho zariadenia z hostujuceho stroja do niektoreho virtualneho vservera? Napriklad budem mat v hostujucom stroji eth0 s IP adresou 62.10.10.10/24. Virtualny stroj si vytvorim so sietovym rozhranim, ktore sa bude volat takisto eth0 a dam mu samostatnu ip adresu 62.10.10.20/24. Potom 62.10.10.20 sa bude vlastne tvarit ako alias na fyzickom sietovom rozhrani eth0 hostujuceho stroja ?
    9.9.2007 22:15 Cunha
    Rozbalit Rozbalit vše Re: Linux-VServer a OpenVZ - síťová rozhraní
    V podstate ano
    17.9.2007 00:42 Josef Masek
    Rozbalit Rozbalit vše Re: Linux-VServer a OpenVZ - síťová rozhraní - IP vrstva ISO/OSI
    Jenom jeden malej detail - sitovy model ISO/OSI nema IP vrstvu, ale ma sitovou vrstvu (network layer), jiz v TCP/IP modelu/zasobniku odpovida IP vrstva.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.