Portál AbcLinuxu, 2. května 2025 00:15
Poslední tři dny probíhala v Brně konference DevConf 2016, a byla to obrovsky povedená akce s velmi našlápnutým programem. Rozsah programu v pouhých třech dnech vlastně považuji za jedinou nevýhodu akce – člověk by potřeboval být na třech místech současně, aby shlédl všechno, co chtěl. Ještě že existuje záznam skoro celého programu, tak se to dá doposlechnout dodatečně. Extrémně populárním tématem na konferenci byl Docker (což dále úzce souvisí i s OpenShift apod.), a byla to i jedna z hlavních věcí, kvůli které jsem tam šel. Z prvotního obrovského nadšení jsem ale nyní ve fázi deprese: buď něco přehlížím (a budu moc rád, pokud to tak je a v diskusi pod zápiskem mi to vysvětlíte), nebo se všichni totálně zbláznili a bezpečnost typického uživatele Dockeru/OpenShiftu je na úrovni BFU, který nadšeně a bez nejmenšího zamyšlení a zaváhání spustí každý .EXE a .COM soubor, který mu přijde e-mailem.
DovConf 2016 jsem absolvoval od začátku do konce a vážně si to užil. Když skončil první den, tak jsem Docker miloval (mám zrovna teď jednu věc, na kterou je použití Dockeru jako dělané). Člověk nainstaluje z balíčku své linuxové distribuce Docker, přidá svůj účet to systémové skupiny docker
, provede
$ docker pull debian:wheezy wheezy: Pulling from library/debian cba48ac2c991: Pull complete e9e824eeee9d: Pull complete Digest: sha256:6ec0cac04bb4934af0e9bf959ae6ccb55fb70d6a47a8aed9b30dd0ed7a03bcbe Status: Downloaded newer image for debian:wheezy $ docker run -it --name wheezy-container-test debian:wheezy bash root@ccf083847f49:/#a voilà, během okamžiku mám Bash běžící uvnitř Debianu 7, kde si můžu např. otestovat svou aplikaci na Debianu, i když právě používám openSUSE. Řekněte Wow! A obdobně snadno můžu vyrobit i okamžitě použitelný předkonfigurovaný samoobsažný balíček s aplikací samotnou – žádné řešení závislostí a složitá instalace a shánění software a knihoven, které nejsou v repositářích distribuce na cílovém stroji – tam jen spustím lehký kontejner z předkonfigurovaného obrazu, kde jsou všechny potřebné knihovny a soubory přibalené.
Už druhý den ráno mne z toho ale začala trošku bolet hlava, když jsem začal přemýšlet a zjišťovat, kde vlastně vzít důvěryhodný základní obraz, na kterém svůj Docker image postavit. Docker hub (tedy místo, odkud docker pull
implicitně stahuje data, pokud se mu neřekne jinak) sice obsahuje i takzvané oficiální repositáře, např. pro Debian (který mne nyní zajímá primárně, a začal jsem tedy pátrání u něj), ale když se podíváte na wiki Debinanu, tak zjistíte, že je to vlastně spíše semi-oficiální repositář a není moc důvod tam publikovaným obrazům věřit, vlastně spíše naopak. :-/
No, moc na důvěře mi to nedodalo, ale OK, zrovna u Debianu by mělo snad jít relativně lehce vyrobit si svůj Docker image na zelené louce pomocí debootstrap, který není problém spustit i na jiné linuxové distribuci než na Debianu samotném. Jen si člověk bude asi muset dodat vlastní klíčenku s veřejnými klíči (jejichž pravosti si nějak ověří), kterými jsou podepisované balíčky v Debian repositářích. A např. RPM distribuce Fedora zase poskytuje základní tar archiv s minimálním „cloudovým“ systémem, který se dá použít pro ubalení iniciálního Docker obrazu, přímo na svém webu včetně GPG podpisů.
No jo, ale na celém DevConfu všichni vesele používali jako základ pro hrátky s Dockerem obrazy z Docker Hubu. Co se pamatuji, tak jen v jedné prezentaci se objevil odkaz na vlastní RedHat repositář Docker obrazů. A když jsem se zeptal, kde vzít důvěryhodný základní obraz, tak odpověď byla zhruba: „No, to je otázka za milion. Předpřipravené obrazy z Docker Hub na nic moc důležitého nepoužívejte. Případně si ubalte vlastní.“
A když si k tomu přidám poznámku jednoho člověka z RedHat (jméno ze mne nedostanete, ani když byste chtěli, protože ho sám nevím ) ze sobotní konferenční párty v tom smyslu, že nerozumí hypu kolem Dockeru, což je jen chroot na steroidech, a Docker v současné podobě tady stejně příliš dlouho nebude, protože za ním stojí šílení lidé, se kterými se nedá rozumně domluvit, myslí si, že budují vlastní operační systém a jsou ochotni zahodit šest patchů jen proto, že přišly z RedHat, tak to ve mne důvěru v Docker opět nezvýšilo.
V jiné přednášce zase zaznělo, že na OpenShiftu ve výchozí podobě nepovolují běh privilegovaných kontejnerů, protože dle nějakého průzkumu cca 40 % (doufám, že si to číslo pamatuji správně) obrazů z těch oficiálních repositářů na Docker Hubu má bezpečností díry. Jinde si zase stěžovali, že spousta předpřipravených obrazů nesmyslně vyžaduje běh v privilegovaném kontejneru. A o chvíli později se na jednom workshopu dozvídám, jak je to veselé, ha, ha, že celý OpenShift cloud stojí a padá s připojením k síti, protože když tam tuhle naši ukázkovou aplikaci teď nasadíme, tak se musí dotáhnout závislosti. Jaké a odkud – bázové obrazy použitého kontejneru, tj. cosi z Docker Hubu? :-/
OK, tohle bych snad celé překousl – prostě si člověk musí ubalit i výchozí kontejner sám a nevěřit ničemu předpřipravenému. Dobrá, když si vyrobím svůj image, kterému sám věřím, můžu si ho nějak podepsat (třeba pomocí GPG jako balíčky v repositářích linuxových distribucí), abych ho mohl uploadnout na svůj účet na Docker Hub a na cílovém stroji snadno stáhnout přes docker pull
a pak jen ověřit, že můj podpis sedí? No vypadá to, že tak jednoduché to nebude. Docker sice (až relativně nedávno! Jak je sakra možné, že něco takového tam nebylo od úplného začátku?) zavedl nějaké bezpečnostní mechanismy, ale celé mi to přijde nějaké podivné, psané horkou jehlou a amatérské (třeba ale jen něco přehlížím, věnoval jsem tomu jen pár minut):
Jak jsem byl z celé kontejnerové virtualizace pod Linuxem a Dockeru nadšený, tak teď mám skoro strach instalovat Docker mimo testovací virtuální stroj, protože čert ví, jak dobře napsaný a odladěný je ten systémový démon, a co všechno umožňují výchozí bezpečnostní politiky a takové veselé přepínače jako --privileged
.
Co si o Dockeru myslíte a jaké s ním máte zkušenosti?
Tiskni
Sdílej:
+1 Naprosto sdílím tvoje obavy a pochybnosti.
Osobně jdu radši „klasičtější“ cestou: debootstrap + LXC (libvirt) + Btrfs. Případně KVM + LVM. A k tomu oficiální obrazy stažené z důvěryhodných zdrojů.
Čeho? Používám víceméně standardní postupy + si občas na Internetu vyhledám řešení nějakého problému.
Přes debootstrap jsem si vytvořil základní obraz do Btrfs pododdílu, tenhle základ naklonoval a šablonu lehce upravil (přidal svoje SSH klíče rootovi, nainstaloval nějaké balíčky, nastavil síť…). A pak mám na pár řádek skript v Bashi, který tu šablonu naklonuje (btrfs subvolume snapshot
) a vytvoří v LXC virtuálku (nebo chceš-li: kontejner) a spustí. Skvělé na tom mj. je to, že jsou to všechno jen soubory, ne nějaká bloková zařízení, která by bylo potřeba připojovat – takže z hostitelského počítače můžeš procházet souborové systémy (i běžících) virtuálů a pracovat s jejich soubory, aniž bys musel používat nějaké speciální API nebo se přes SSH přihlašovat dovnitř virtuálu.
S KVM je to podobné, i když tam moc neklonuji obrazy, ale dělám normální instalaci, protože obvykle chci pokaždé trochu něco jiného (rozdělení disků, hraní si s různými distribucemi atd.), ale klonovat/kopírovat LVM oddíly se šablonou by tam šlo taky. Co virtuálka, to LVM oddíl. Stejně jako u LXC k tomu přistupuji přes libvirt (virsh na příkazové řádce a virt-manager v GUI), takže si člověk snadno naskriptuje, co potřebuje.
Následné využití je už dost individuální – např. můžeš po kompilaci vyvíjeného programu vytvořit virtuálku, nainstalovat do ní program, pustit testy a virtuálku zase smazat. V případě LXC jsou to řádově vteřiny nebo i méně. V případě KVM to je o něco málo pomalejší, ale zase máš plnou virtualizaci a prostředí lépe odpovídá reálnému hardwaru, kde se aplikace bude provozovat.
Čeho?
Toho kroku vytvoření LXC kontejneru ze souborů na disku.
Buď si přečteš dokumentaci nebo si první kontejner naklikáš ve virt-manageru, vyexportuješ si jeho XML (
virsh dumpxml
) a ten pak používáš jako šablonu pro další kontejery – má to pár řádek, stačí tam měnit jméno, UUID, MAC adresu a cestu k root adresáři (ten Btrfs pododdíl). Nový kontejner/virtuál vytvoříš pomocí virsh define
.
jsou ochotni zahodit šest pachů jen proto, že přišly z RedHatAle pár vteřin mi trvalo, než mi došlo co že to vlastně zahazují :))
Ono šlo spíš o tu formu než obsah.
Proč je mi Flattr sympatický jsem psal dříve. Bohužel se neujal, i když zájem o mikrotransakce by IMHO stále byl. :-/
Tlačítko jsem teď dal pryč, protože už jsem stejně před mnoha a mnoha měsíci ve svém Flattr účtu neodsouhlasil změnu jejich obchodních podmínek (a tudíž je asi nyní neaktivní), protože se Flattr nijak zvlášť neujal a neplánoval jsem ho tedy dále používat.
Ono šlo spíš o tu formu než obsah.
Forma byla naprosto adekvátní obsahu.
Proč je mi Flattr sympatický jsem psal dříve. Bohužel se neujal, i když zájem o mikrotransakce by IMHO stále byl. :-/
Flattr ať ti je klidně tisíckrát sympatický, ale proč kua musí při každém načtení tvého blogu jít požadavek na https://api.flattr.com/, chápeš? Pokud by sis uložil ten obrázek na abclinuxu / resp. někam na vlastní stránku a nechal ho stahovat odtam, tak neřeknu ani ň. Člověk by si myslel, že alespoň tady na abclinuxu tohle šílený špahování nebude, protože lidi narozdíl od BFU vědí, jak big-data fungují...
Tlačítko jsem teď dal pryč, protože už jsem stejně před mnoha a mnoha měsíci ve svém Flattr účtu neodsouhlasil změnu jejich obchodních podmínek (a tudíž je asi nyní neaktivní), protože se Flattr nijak zvlášť neujal a neplánoval jsem ho tedy dále používat.
V tom případě si tě zase odblokovávám. Ale jak píšu, samotný tlačítko mi nevadí, vadí, když se pokaždý načítá z Flattru...
Flattr ať ti je klidně tisíckrát sympatický, ale proč kua musí při každém načtení tvého blogu jít požadavek na https://api.flattr.com/, chápeš?
Tohle taky nemám rád. Tehdy jsem to řešil tak, že jsem nakopíroval jejich ikonu k sobě a nevkládal žádný JavaScript (ano, byl to jen obrázek s odkazem, ne aktivní tlačítko, které by ukazovalo počet kliknutí).
+1 , docker je pekna vec na vyvoj ... ale jinak.
presne sedi toto https://twitter.com/thegrugq/status/601974834138984448
To mi připomíná, jak někdo na jiné přednášce říkal zhruba toto: Když se na jedné konferenci přednášející ptal, kolik vývojářů používá Docker, tak šlo nahoru 90% rukou. Když pak chtěl vědět, kolik z těch lidí to používá na produkci, tak z nich šlo 90% zase dolů.
curl -sS https://getcomposer.org/installer | php
pochopitelně pod rootem.
Pokud srovnáváš pužívání náhodných imagů z Docker Hubu s příkazem výše, přijde mi to na srovnatelné úrovni, s tím, že Docker poskytuje nějaké výhody navíc. Na druhou stranu samotná firma Docker staví svou finanční budoucnost právě na řešení bezpečnosti (auditované trusted image) pro enterprise, takže si problém asi uvědomují. A myslím, že pro firmy typu RedHat tady vzniká velký prostor, jak to vyřešit líp v opensource prostředí.
curl|bash
potom nevnimaju ako nieco principialne zle - ono koniec koncov robia to iste s klasickymi instalatormi stiahnutymi od ktovie kadial. Osobne som ten trend spozoroval v dobe, ked zacalo byt ruby popularne, ludia proste sli cestou najmensieho odporu. Spustanie nahodnych docker imageov je v tomto este ako tak bezpecne, kedze vacsinou to vo vysledku bezi ako kontajner na boot2docker VM s minimom pristupu na samotny pocitac.
Problem je, ked si ludia tieto zlozvyky prenesu do produkcneho prostredia.
tak napíšme všetko from sratchKouzlo nechtěného? :)
Takze alternativa k hw virtualizaci s radou vyhod ale i radou nevyhod (o kterych se ale mlci - to je na tom to nejzajimavejsi).Můžeš pouštět docker ve virtuálce. :)
Btw. stejne prostredi to opravdu neni - pockej az budes hodiny/dny debugovat, proc ti neco, v nejake hrozne pofiderni situaci, pada a zjistis, ze zavislost zavislosti zavislosti gemu, ktery pouzivas, vyuziva nejake novejsi jaderne ABI, ktere na starsim jadre na produkci neni.To se ti asi jen tak nestane. A když, tak specifikuješ, na jaké verzi Atomic má docker jet (vím o tom málo, ale rámcovou představu jsem si udělal, s detailama holt nepomůžu), a máš konzistentní i kernel. :)
proc ti neco, v nejake hrozne pofiderni situaci, pada a zjistis, ze zavislost zavislosti zavislosti gemu, ktery pouzivas, vyuziva nejake novejsi jaderne ABI, ktere na starsim jadre na produkci neni.Neříkám, že jinde to nemůže být jinak, ale u nás je poměrně snadné (právě i díky Dockeru) zařídit, že všechny testovací i produkční stroje jedou na Ubuntu 14.04, takže jaderné ABI je stejné. Až budeme migrovat na novější verzi Ubuntu s jiným kernelem, otestujeme to v testovacím prostředí a šoupneme do produkce se stejnou verzí distribuce. Vzhledem k tomu, že veškeré aplikační závislosti jsou v Dockeru, na hostu zbývá jen pár věcí ohledně monitoringu, logování apod., které se mění podle potřeb operations, a není třeba udržovat nějaký server na starší verzi distribuce jen proto, že aplikace je zkompilovaná s nějakou verzí knihovny, apod.
Na tomto místě nemůžu nezmínit systemd-networkd. Je to zvláštní, ale linux, který na síti vyrostl a je tam jako doma nikdy neměl pořádné nastavení sítě. Různé distribuce to řešily různě, ale upřímně, málokterá z nich je připravená na to, že by server měl mít více síťovek a už vůbec ne na to, že by tam bylo více IP adres.To je nejaká prdel abo čo? Však Linux s Apache vďaka tejto feature porazil Windejsi pred rokmi na všetkých serveroch. Kurwa niekto mu hackol server
Heron sa zbláznil, inak si to neviem vysvetliť
Ještě ne
To je nejaká prdel abo čo?
No znáš nějaký systém na nastavení sítě, ve kterém se pohodlně dá nastavit 30 IP? Já ne. Staré network-scripts v rhelu nebo interfaces v Debianu to je prostě peklo. Při poslední instalaci CentOS 7 jsem se poctivě snažil sít nastavovat výhradně nástroji NetworkManageru (protože je to tam default) a při přidávání páté statické routy už to prostě přestalo fungovat (další routy se nepřidaly za běhu jako ty první - při bootu naštěstí jo).
networkd má (subjektivní názor) jednoduché, přehledné nastavení. Chápu, že se nemusí líbít všem.
Však Linux s Apache vďaka tejto feature porazil Windejsi pred rokmi na všetkých serveroch.
Jaké featuře? Určitě ne díky tomu, že admini nastavují síť pomocí serie příkazů ip a add; ip r add
v rc.local
apod.
No znáš nějaký systém na nastavení sítě, ve kterém se pohodlně dá nastavit 30 IP?
CentOS minimálně ve verzi 6? (Viz níže)
Gentoo?
Kromě Debianu už nic dalšího nepoužívám, takže jinak nemůžu sloužit...
Psal jsem pohodlně.V tom případě pardon, netušil jsem, že konfigurace typu
DEVICE=br0 TYPE=Bridge BOOTPROTO=static ONBOOT=yes MACADDR=00:9C:02:9F:63:E8 NM_CONTROLLED="no" DELAY=0 IPADDR=172.22.1.19 PREFIX=22 IPADDR2=192.168.1.64 PREFIX2=24je nepohodlná. Holt máme každý jiný vkus.
Mimochodem, stále ještě spoléhá na labely a pokud je tam nedáš, tak se ip sice nastaví (takže ifup funguje), to jo, ale potom ifdown eth0_30 nevyhodí pouze jednu ip (definovanou v souboru ifcfg-eth0_30), ale pro jistotu shodí celé eth0. S labely to funguje. Jenže kdo by je v době ip používal. Ty skripty zřejmě pocházejí z doby ifconfigu.Ať koukám, jak koukám, na počítači s výše uvedenou konfigurací nic s labely nevidím:
vzlf ~ # ifconfig br0 Link encap:Ethernet HWadr 00:9C:02:9F:63:E8 inet adr:172.22.1.19 Všesměr:172.22.3.255 Maska:255.255.252.0 AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1 RX packets:11919188 errors:0 dropped:0 overruns:0 frame:0 TX packets:8256128 errors:0 dropped:0 overruns:0 carrier:0 kolizí:0 délka odchozí fronty:0 RX bytes:2086288547 (1.9 GiB) TX bytes:2488852575 (2.3 GiB) eth0 Link encap:Ethernet HWadr 00:9C:02:9F:63:E8 AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1 RX packets:24962997 errors:0 dropped:0 overruns:0 frame:0 TX packets:21755739 errors:0 dropped:0 overruns:0 carrier:0 kolizí:0 délka odchozí fronty:1000 RX bytes:4105220936 (3.8 GiB) TX bytes:7823573802 (7.2 GiB) Přerušení:16 Paměť:fb9e0000-fba00000 lo Link encap:Místní smyčka inet adr:127.0.0.1 Maska:255.0.0.0 AKTIVOVÁNO SMYČKA BĚŽÍ MTU:65536 Metrika:1 RX packets:651 errors:0 dropped:0 overruns:0 frame:0 TX packets:651 errors:0 dropped:0 overruns:0 carrier:0 kolizí:0 délka odchozí fronty:0 RX bytes:55350 (54.0 KiB) TX bytes:55350 (54.0 KiB) vzlf ~ # ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:9c:02:9f:63:e8 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether 00:9c:02:9f:63:e9 brd ff:ff:ff:ff:ff:ff 4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 00:9c:02:9f:63:e8 brd ff:ff:ff:ff:ff:ff inet 172.22.1.19/22 brd 172.22.3.255 scope global br0 inet 192.168.1.64/24 brd 192.168.1.255 scope global br0Co dělám blbě? Nebo - píšeme oba o tom samém systému?
Ať koukám, jak koukám, na počítači s výše uvedenou konfigurací nic s labely nevidím:Ostatně ani nemohu, co tak koukám do ifup-eth, tak kód pro nastavení adresy je následující:
if ! ip addr add ${ipaddr[$idx]}/${prefix[$idx]} \ brd ${broadcast[$idx]:-+} dev ${REALDEVICE} ${SCOPE} label ${DEVICE}; then echo $"Error adding address ${ipaddr[$idx]} for ${DEVICE}." fi
label ${DEVICE}Pokud náš x souborů ifcfg-eth0:x, tak do každého z nich na řádek DEVICE musíš napsat eth0:x. Potom nastaví label jako eth0:0, eth0:1 atd.
[Match] Name=br0 [Network] Address=46.227.xx.xx/29 Gateway=46.227.xx.xx Address=192.168.42.17/24Ty labely, na CentOS 5 to vypadá takto:
inet 91.214.x.x/24 brd 91.214.192.255 scope global eth2 inet 91.214.x.x/24 brd 91.214.192.255 scope global secondary eth2:1 inet 91.214.x.x/24 brd 91.214.192.255 scope global secondary eth2:2 inet 91.214.x.x/24 brd 91.214.192.255 scope global secondary eth2:3Tam ifup ifdown funguje (ifdown eth2:3) skutečně shodí jen to co má, tedy odstraní IP k labelu eth2:3. Jak ve tvém případě vyhodíš IPADDR2? Odstraníš ji z konfigurace a restart? Což v případě network-scripts znamená vyhození všech adres a potom je tam postupně láduje a kontroluje kolize? Trvá to dost dlouho.
Nechci se pouštět do zbytečných rozepří. Pokud ti systém network-scripts vyhovuje, tak je vše v pořádku.Fajn.
Jak ve tvém případě vyhodíš IPADDR2? Odstraníš ji z konfigurace a restart? Což v případě network-scripts znamená vyhození všech adres a potom je tam postupně láduje a kontroluje kolize? Trvá to dost dlouho.Přiznám se, že takovouto operaci dělám opravdu hodně zřídka (navíc většinu věcí mám ve VPS, kde se stejně adresy upravují přes skripty OpenVZ), takže mi to prostě nevadí. Obvykle to řeším tak, že si upravím konfigurák, přes
ip addr
vyhodím co je potřeba a v noci si zkusím restart pro případ, že bych se někde uklepl. Chápu, že v jiném provozu to může být problém...
No zas zo skúseností môžem povedať, že keď niečo vychytáš v skripte, tak to ide roky, na čo by som so systemd nespoliehal.Ano. Můj vztah k systemd se nezměnil. To, že se mi konfigurace networkd líbí není ani tak dáno kvalitami systemd, jako spíš neutěšeným stavem v nastavení sítě v distribucích (můj osobní názor).
To samozrejme nič nemení na tom že ťa mám rádNejaký čas som ti neskenoval blog a budem ti tam asi musieť robiť cenzúru
Rád tě tam uvidím
.
Být lepší než Windows není až tak těžké
Ale k dokonalosti tomu ještě kus chybí. I když se mi vždycky hodně líbil způsob konfigurace sítě v Debianu, není to úplně 100% a něco jsou spíš dodatečné hacky než promyšlený návrh. Třeba těch víc adres na jednom rozhraní nebo konfigurace DNS. V Apachovi ty konfiguráky při složitějším uspořádání taky nedávají moc velký smysl a jsou tam různé rovnáky na ohýbáky. Celkem hezky má konfiguraci kolem rozhraní, virtuálů a aplikací řešenou GlassFish.
a už vůbec ne na to, že by tam bylo více IP adresDebian to řeší pomocí post-up, kde se pomocí "ip" další adresa přidá, CentOS 6 neuměl víc adres na interface vůbec (možná přes nějaký ekvivalent post-up) atd. Na druhou stranu mně se konfigurace pomocí "ip" líbí a vůbec by mi nevadilo, kdyby distribuce neměly konfiguraci sítě, ale jenom spouštěly skript, do kterého si "ip" a "dhclient" a "iptables" zadám. Sám to tak na notebooku mám, při přechodu mezi sítěmi spustím skript (pomocí párpísmenkového aliasu), který takto síť nastaví. Na tyhle nadstavby jsem nikdy nebyl a asi nebudu ani na networkd.
CentOS 6 neuměl víc adres na interface vůbec (možná přes nějaký ekvivalent post-up) atd.Nechci kverulovat, náčelníku, ale já v /etc/sysconfig/network-scripts/network-functions vidím tohle:
expand_config () { local i=0 val for idx in '' {0..255} ; do ipaddr[$i]=$(eval echo '$'IPADDR$idx) if [ -z "${ipaddr[$i]}" ]; then [ "$idx" ] && [ $idx -gt 2 ] && break continue fi prefix[$i]=$(eval echo '$'PREFIX$idx) netmask[$i]=$(eval echo '$'NETMASK$idx) broadcast[$i]=$(eval echo '$'BROADCAST$idx) arpcheck[$i]=$(eval echo '$'ARPCHECK$idx) if [ "${prefix[$i]}x" != "x" ]; then val=$(/bin/ipcalc --netmask "${ipaddr[$i]}/${prefix[$i]}") netmask[$i]=${val##NETMASK=} fi if [ "${netmask[$i]}x" = "x" ]; then val=$(/bin/ipcalc --netmask "${ipaddr[$i]}") netmask[$i]=${val##NETMASK=} fi if [ "${prefix[$i]}x" = "x" ]; then val=$(/bin/ipcalc --prefix ${ipaddr[$i]} ${netmask[$i]}) prefix[$i]=${val##PREFIX=} fi if [ "${broadcast[$i]}x" = "x" ]; then val=$(/bin/ipcalc --broadcast ${ipaddr[$i]} ${netmask[$i]}) broadcast[$i]=${val##BROADCAST=} fi if [ "${arpcheck[$i]}x" != "x" ]; then arpcheck[$i]=${arpcheck[$i]##ARPCHECK=} arpcheck[$i]=${arpcheck[$i],,*} fi i=$((i+1)) done if [ -z "${NETWORK}" ]; then eval $(/bin/ipcalc --network ${ipaddr[0]} ${netmask[0]}) fi }Čili by mělo jít nastavit až 255 adres pomocí direktivy typu
IPADRESS21=111.222.333.444
v /etc/sysconfig/network-scripts/ifcfg-ethX. Já teda mám ozkoušené maximálně dvě...
Na druhou stranu mně se konfigurace pomocí "ip" líbí a vůbec by mi nevadilo, kdyby distribuce neměly konfiguraci sítě, ale jenom spouštěly skript, do kterého si "ip" a "dhclient" a "iptables" zadám.+1 Bohužel situace je taková, že k vůli závislostem mezi init skripty tam ten start network být musí a někdy i dokonce i start konkrétní iface. Takže to potom vypadá tak, že první ip je nastavována přes distribuční systém správy sítě a zbytek v nějakém skriptu. Což přehlednosti konfigurace příliš nepomáhá.
[...] CentOS 6 neuměl víc adres na interface vůbec (možná přes nějaký ekvivalent post-up) atd. [...]
Tak o tom bych silně pochyboval, protože na jednom produkčním stroji s RHEL 6 (a nepředpokládám, že by to na CentOS 6 bylo jinak) na jedno rozhraní vesele používám tři IP adresy:
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet UUID=abcdefgh-0123-4567-8901-abcdef012348 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=w.x.y.23 PREFIX=24 GATEWAY=w.x.y.1 IPADDR2=w.x.y.24 PREFIX2=24 GATEWAY2=w.x.y.1 IPADDR3=w.x.y.25 PREFIX3=24 GATEWAY3=w.x.y.1 DNS1=a.b.c.d DNS2=e.f.g.h DNS3=i.j.k.l DOMAIN=example.cz DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" HWADDR=00:11:22:33:44:55
Elegance konfigurace je věc jiná, ale funguje to a stroj má na eth0 3 IP adresy w.x.y.23, w.x.y.24 a w.x.y.25.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.