Po po téměř roce vývoje od vydání verze 5.38 byla vydána nová stabilní verze 5.40 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 75 vývojářů. Změněno bylo přibližně 160 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.
Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.
Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).
Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.
Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.
Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.
NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.
IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.
Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.
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
'?