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.
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.
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.
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í.
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.
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.
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í.
Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 141 (pdf) a HackSpace 78 (pdf).
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.
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.
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 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ů.
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í.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.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.
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).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.
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.
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
.
Nástroje: Tisk bez diskuse
Tiskni Sdílej:
[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
'?